diff --git a/CHANGELOG-rust.md b/CHANGELOG-rust.md new file mode 100644 index 0000000000..831bac4c0a --- /dev/null +++ b/CHANGELOG-rust.md @@ -0,0 +1,15 @@ +# Changelog + +## 1.3.0 (2026-07-01) + +### Features -- All Languages + +- **dafny:** Add bucket beacon support ([#1943](https://github.com/aws/aws-database-encryption-sdk-dynamodb/issues/1943)) ([5c53d59](https://github.com/aws/aws-database-encryption-sdk-dynamodb/commit/5c53d5983a90f93cf5d85d1399704eda0d16d63a)) + +### Fixes -- All Languages + +- validate attribute name length by UTF-8 byte count ([#2329](https://github.com/aws/aws-database-encryption-sdk-dynamodb/issues/2329)) ([1520838](https://github.com/aws/aws-database-encryption-sdk-dynamodb/commit/1520838e319868cdce363f30beca8a221cddc128)) + +### Maintenance -- All Languages + +- **dafny:** add length check validation for beacon key condition expressions ([#2348](https://github.com/aws/aws-database-encryption-sdk-dynamodb/issues/2348)) ([0b21d4b](https://github.com/aws/aws-database-encryption-sdk-dynamodb/commit/0b21d4b0115a09ce5159129b4f0b84faa1354764)) diff --git a/CHANGELOG.md b/CHANGELOG.md index e051144c6d..e1eb3f81e8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,7 @@ Note: Starting April 20, 2026, all runtime-specific changes are tracked in separ - Java: [CHANGELOG-java.md](https://github.com/aws/aws-database-encryption-sdk-dynamodb/blob/main/CHANGELOG-java.md) - .NET: [CHANGELOG-net.md](https://github.com/aws/aws-database-encryption-sdk-dynamodb/blob/main/CHANGELOG-net.md) +- Rust: [CHANGELOG-rust.md](https://github.com/aws/aws-database-encryption-sdk-dynamodb/blob/main/CHANGELOG-rust.md) If a runtime-specific changelog is not present, there has been no new release for that runtime after April 20, 2026. diff --git a/DynamoDbEncryption/runtimes/rust/Cargo.toml b/DynamoDbEncryption/runtimes/rust/Cargo.toml index 21e2acc338..dc405a2a49 100644 --- a/DynamoDbEncryption/runtimes/rust/Cargo.toml +++ b/DynamoDbEncryption/runtimes/rust/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "aws-db-esdk" -version = "1.2.4" +version = "1.3.0" edition = "2021" keywords = ["cryptography", "security", "dynamodb", "encryption", "client-side"] license = "ISC AND (Apache-2.0 OR ISC)" diff --git a/releases/rust/db_esdk/Cargo.toml b/releases/rust/db_esdk/Cargo.toml index 26197e5bc4..078993088c 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.2.4" +version = "1.3.0" edition = "2021" keywords = ["cryptography", "security", "dynamodb", "encryption", "client-side"] license = "ISC AND (Apache-2.0 OR ISC)" @@ -16,15 +16,16 @@ readme = "README.md" [dependencies] aws-config = "1.8.12" -aws-lc-rs = {version = "1.15.4"} -aws-lc-sys = { version = "0.39", optional = true } -aws-lc-fips-sys = { version = "0.13", optional = true } +aws-lc-rs = {version = "1.17.0"} +aws-lc-sys = { version = "0.42", optional = true } +aws-lc-fips-sys = { version = "0.13.1", optional = true } aws-sdk-dynamodb = "1.103.0" aws-sdk-kms = "1.98.0" aws-smithy-runtime-api = {version = "1.10.0", features = ["client"] } # aws-smithy-types has a coherence conflict (E0119) with time >= 0.3.37 on rustc >= 1.80. # time 0.3.37+ introduces ModifierValue associated type impls that conflict with # CanDisable's blanket `impl From`. Pin time until upstream fixes it. +# See: https://github.com/time-rs/time/issues/720 time = ">=0.3.0, <0.3.37" aws-smithy-types = "1.3.6" chrono = "0.4.43" diff --git a/releases/rust/db_esdk/examples/searchableencryption/basic_searchable_encryption.rs b/releases/rust/db_esdk/examples/searchableencryption/basic_searchable_encryption.rs index ff89bd578c..e6b8a901c6 100644 --- a/releases/rust/db_esdk/examples/searchableencryption/basic_searchable_encryption.rs +++ b/releases/rust/db_esdk/examples/searchableencryption/basic_searchable_encryption.rs @@ -72,10 +72,11 @@ pub async fn put_and_query_with_beacon(branch_key_id: &str) -> Result<(), crate: // values are uniformly distributed across its range of possible values. // In many use cases, the prefix of an identifier encodes some information // about that identifier (e.g. zipcode and SSN prefixes encode geographic - // information), while the suffix does not and is more uniformly distributed. + // information), while the suffix does not encode such structure and tends + // to be closer to uniformly distributed, though not perfectly uniform. // We will assume that the inspector ID field matches a similar use case. - // So for this example, we only store and use the last - // 4 digits of the inspector ID, which we assume is uniformly distributed. + // For this example, we use only the last four digits of the inspector ID and apply one partitions, + // assuming the suffix has sufficient uniformity for this purpose. // Since the full ID's range is divisible by the range of the last 4 digits, // then the last 4 digits of the inspector ID are uniformly distributed // over the range from 0 to 9,999. @@ -114,12 +115,14 @@ pub async fn put_and_query_with_beacon(branch_key_id: &str) -> Result<(), crate: let last4_beacon = StandardBeacon::builder() .name("inspector_id_last4") .length(10) + .number_of_partitions(1) .build()?; // The configured DDB table has a GSI on the `aws_dbe_b_unit` AttributeName. // This field holds a unit serial number. // For this example, this is a 12-digit integer from 0 to 999,999,999,999 (10^12 possible values). - // We will assume values for this attribute are uniformly distributed across this range. + // We will assume values for this attribute are uniformly distributed across this range + // using one partitions. // A single unit serial number may be assigned to multiple `work_id`s. // // This link provides guidance for choosing a beacon length: @@ -142,7 +145,11 @@ pub async fn put_and_query_with_beacon(branch_key_id: &str) -> Result<(), crate: // With a sufficiently large number of well-distributed inspector IDs, // for a particular beacon we expect (10^12/2^30) ~= 931.3 unit serial numbers // sharing that beacon value. - let unit_beacon = StandardBeacon::builder().name("unit").length(30).build()?; + let unit_beacon = StandardBeacon::builder() + .name("unit") + .length(30) + .number_of_partitions(1) + .build()?; let standard_beacon_list = vec![last4_beacon, unit_beacon]; @@ -169,6 +176,8 @@ pub async fn put_and_query_with_beacon(branch_key_id: &str) -> Result<(), crate: // 3. Create BeaconVersion. // The BeaconVersion inside the list holds the list of beacons on the table. // The BeaconVersion also stores information about the keystore. + // The BeaconVersion parameter specifies the maximumNumberOfPartitions associated with a given beacon configuration. + // "maximumNumberOfPartitions" must be greater than "numberOfPartitions"; we set it to 8 to allow room for future expansion. // BeaconVersion must be provided: // - keyStore: The keystore configured in step 2. // - keySource: A configuration for the key source. @@ -182,6 +191,8 @@ pub async fn put_and_query_with_beacon(branch_key_id: &str) -> Result<(), crate: let beacon_version = BeaconVersion::builder() .standard_beacons(standard_beacon_list) .version(1) // MUST be 1 + .maximum_number_of_partitions(8) + .default_number_of_partitions(1) //For beacons that do not require partitioning, only a single partition is used. .key_store(key_store.clone()) .key_source(BeaconKeySource::Single( SingleKeyStore::builder() @@ -305,54 +316,71 @@ pub async fn put_and_query_with_beacon(branch_key_id: &str) -> Result<(), crate: // This procedure is internal to the client and is abstracted away from the user; // e.g. the user will only see "123456789012" and never // "098765432109", though the actual query returned both. + + let mut all_results: Vec> = Vec::new(); + let expression_attributes_names = HashMap::from([ ("#last4".to_string(), "inspector_id_last4".to_string()), ("#unit".to_string(), "unit".to_string()), ]); - let expression_attribute_values = HashMap::from([ - (":last4".to_string(), AttributeValue::S("4321".to_string())), - ( - ":unit".to_string(), - AttributeValue::S("123456789012".to_string()), - ), - ]); + // In this simple example, we know there are one buckets, + // but in general the number can be obtained using transformClient.getNumberOfQueries(query) + let num_queries = 1; + + //We need to query for all possible parttions + + for partition in 0..num_queries { + let expression_attribute_values = HashMap::from([ + (":last4".to_string(), AttributeValue::S("4321".to_string())), + ( + ":unit".to_string(), + AttributeValue::S("123456789012".to_string()), + ), + ( + ":aws_dbe_partition".to_string(), + AttributeValue::N(partition.to_string()), + ), + ]); + + // GSIs do not update instantly + // so if the results come back empty + // we retry after a short sleep + for _i in 0..10 { + let query_response = ddb + .query() + .table_name(ddb_table_name) + .index_name(GSI_NAME) + .key_condition_expression("#last4 = :last4 and #unit = :unit") + .set_expression_attribute_names(Some(expression_attributes_names.clone())) + .set_expression_attribute_values(Some(expression_attribute_values.clone())) + .send() + .await?; + + if let Some(items) = query_response.items { + if !items.is_empty() { + all_results.extend(items.clone()); + break; + } + } - // GSIs do not update instantly - // so if the results come back empty - // we retry after a short sleep - for _i in 0..10 { - let query_response = ddb - .query() - .table_name(ddb_table_name) - .index_name(GSI_NAME) - .key_condition_expression("#last4 = :last4 and #unit = :unit") - .set_expression_attribute_names(Some(expression_attributes_names.clone())) - .set_expression_attribute_values(Some(expression_attribute_values.clone())) - .send() - .await?; - - // if no results, sleep and try again - if query_response.items.is_none() || query_response.items.as_ref().unwrap().is_empty() { std::thread::sleep(std::time::Duration::from_millis(20)); - continue; } - - let attribute_values = query_response.items.unwrap(); - // Validate only 1 item was returned: the item we just put - assert_eq!(attribute_values.len(), 1); - let returned_item = &attribute_values[0]; - // Validate the item has the expected attributes - assert_eq!( - returned_item["inspector_id_last4"], - AttributeValue::S("4321".to_string()) - ); - assert_eq!( - returned_item["unit"], - AttributeValue::S("123456789012".to_string()) - ); - break; } + let attribute_values = all_results; + // Validate only 1 item was returned: the item we just put + assert_eq!(attribute_values.len(), 1); + let returned_item = &attribute_values[0]; + // Validate the item has the expected attributes + assert_eq!( + returned_item["inspector_id_last4"], + AttributeValue::S("4321".to_string()) + ); + assert_eq!( + returned_item["unit"], + AttributeValue::S("123456789012".to_string()) + ); + println!("basic_searchable_encryption successful."); Ok(()) }; diff --git a/releases/rust/db_esdk/src/client.rs b/releases/rust/db_esdk/src/client.rs index 039eaf056e..88d31d1093 100644 --- a/releases/rust/db_esdk/src/client.rs +++ b/releases/rust/db_esdk/src/client.rs @@ -88,3 +88,5 @@ mod execute_transaction_input_transform; mod execute_transaction_output_transform; mod resolve_attributes; + +mod get_number_of_queries; diff --git a/releases/rust/db_esdk/src/client/get_number_of_queries.rs b/releases/rust/db_esdk/src/client/get_number_of_queries.rs new file mode 100644 index 0000000000..9b620ab96f --- /dev/null +++ b/releases/rust/db_esdk/src/client/get_number_of_queries.rs @@ -0,0 +1,19 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +impl crate::client::Client { + /// Constructs a fluent builder for the [`GetNumberOfQueries`](crate::operation::get_number_of_queries::builders::GetNumberOfQueriesFluentBuilder) operation. + /// + /// - The fluent builder is configurable: + /// - [`input(impl Into>)`](crate::operation::get_number_of_queries::builders::GetNumberOfQueriesFluentBuilder::input) / [`set_input(Option)`](crate::operation::get_number_of_queries::builders::GetNumberOfQueriesFluentBuilder::set_input): (undocumented)
+ /// - On success, responds with [`GetNumberOfQueriesOutput`](crate::operation::get_number_of_queries::GetNumberOfQueriesOutput) with field(s): + /// - [`number_of_queries(Option<::std::primitive::i32>)`](crate::operation::get_number_of_queries::GetNumberOfQueriesOutput::number_of_queries): (undocumented) + /// - On failure, responds with [`SdkError`](crate::operation::get_number_of_queries::GetNumberOfQueriesError) + pub fn get_number_of_queries( + &self, + ) -> crate::operation::get_number_of_queries::builders::GetNumberOfQueriesFluentBuilder { + crate::operation::get_number_of_queries::builders::GetNumberOfQueriesFluentBuilder::new( + self.clone(), + ) + } +} diff --git a/releases/rust/db_esdk/src/conversions.rs b/releases/rust/db_esdk/src/conversions.rs index 466bec2275..d215767cf9 100644 --- a/releases/rust/db_esdk/src/conversions.rs +++ b/releases/rust/db_esdk/src/conversions.rs @@ -89,6 +89,12 @@ pub mod get_item_output_transform_input; pub mod get_item_output_transform_output; +pub mod get_number_of_queries; + +pub mod get_number_of_queries_input; + +pub mod get_number_of_queries_output; + pub mod put_item_input_transform; pub mod put_item_input_transform_input; diff --git a/releases/rust/db_esdk/src/conversions/get_number_of_queries.rs b/releases/rust/db_esdk/src/conversions/get_number_of_queries.rs new file mode 100644 index 0000000000..ae86f46d38 --- /dev/null +++ b/releases/rust/db_esdk/src/conversions/get_number_of_queries.rs @@ -0,0 +1,7 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. + +pub mod _get_number_of_queries_input; + +pub mod _get_number_of_queries_output; diff --git a/releases/rust/db_esdk/src/conversions/get_number_of_queries/_get_number_of_queries_input.rs b/releases/rust/db_esdk/src/conversions/get_number_of_queries/_get_number_of_queries_input.rs new file mode 100644 index 0000000000..46ef753ace --- /dev/null +++ b/releases/rust/db_esdk/src/conversions/get_number_of_queries/_get_number_of_queries_input.rs @@ -0,0 +1,29 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +#[allow(dead_code)] +pub fn to_dafny( + value: crate::operation::get_number_of_queries::GetNumberOfQueriesInput, +) -> ::dafny_runtime::Rc< + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesInput, +>{ + ::dafny_runtime::Rc::new(crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesInput::GetNumberOfQueriesInput { + input: crate::deps::com_amazonaws_dynamodb::conversions::query::_query_request::to_dafny(&value.input.clone().unwrap()) +, + }) +} +#[allow(dead_code)] +pub fn from_dafny( + dafny_value: ::dafny_runtime::Rc< + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesInput, + >, +) -> crate::operation::get_number_of_queries::GetNumberOfQueriesInput { + crate::operation::get_number_of_queries::GetNumberOfQueriesInput::builder() + .set_input(Some( + crate::deps::com_amazonaws_dynamodb::conversions::query::_query_request::from_dafny( + dafny_value.input().clone(), + ), + )) + .build() + .unwrap() +} diff --git a/releases/rust/db_esdk/src/conversions/get_number_of_queries/_get_number_of_queries_output.rs b/releases/rust/db_esdk/src/conversions/get_number_of_queries/_get_number_of_queries_output.rs new file mode 100644 index 0000000000..7e934012a3 --- /dev/null +++ b/releases/rust/db_esdk/src/conversions/get_number_of_queries/_get_number_of_queries_output.rs @@ -0,0 +1,24 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +#[allow(dead_code)] +pub fn to_dafny( + value: crate::operation::get_number_of_queries::GetNumberOfQueriesOutput, +) -> ::dafny_runtime::Rc< + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesOutput, +>{ + ::dafny_runtime::Rc::new(crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesOutput::GetNumberOfQueriesOutput { + numberOfQueries: value.number_of_queries.clone().unwrap(), + }) +} +#[allow(dead_code)] +pub fn from_dafny( + dafny_value: ::dafny_runtime::Rc< + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesOutput, + >, +) -> crate::operation::get_number_of_queries::GetNumberOfQueriesOutput { + crate::operation::get_number_of_queries::GetNumberOfQueriesOutput::builder() + .set_number_of_queries(Some(dafny_value.numberOfQueries().clone())) + .build() + .unwrap() +} diff --git a/releases/rust/db_esdk/src/conversions/get_number_of_queries_input.rs b/releases/rust/db_esdk/src/conversions/get_number_of_queries_input.rs new file mode 100644 index 0000000000..480a65ec53 --- /dev/null +++ b/releases/rust/db_esdk/src/conversions/get_number_of_queries_input.rs @@ -0,0 +1,72 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +#[allow(dead_code)] +pub fn to_dafny( + value: &crate::types::GetNumberOfQueriesInput, +) -> ::dafny_runtime::Rc< + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesInput, +>{ + ::dafny_runtime::Rc::new(to_dafny_plain(value.clone())) +} + +#[allow(dead_code)] +pub fn to_dafny_plain( + value: crate::types::GetNumberOfQueriesInput, +) -> crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesInput{ + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesInput::GetNumberOfQueriesInput { + input: crate::deps::com_amazonaws_dynamodb::conversions::query::_query_request::to_dafny(&value.input.clone().unwrap()) +, + } +} + +#[allow(dead_code)] +pub fn option_to_dafny( + value: ::std::option::Option, +) -> ::dafny_runtime::Rc>>{ + ::dafny_runtime::Rc::new(match value { + ::std::option::Option::None => crate::_Wrappers_Compile::Option::None {}, + ::std::option::Option::Some(x) => crate::_Wrappers_Compile::Option::Some { + value: ::dafny_runtime::Rc::new(to_dafny_plain(x)), + }, + }) +} + +#[allow(dead_code)] +pub fn from_dafny( + dafny_value: ::dafny_runtime::Rc< + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesInput, + >, +) -> crate::types::GetNumberOfQueriesInput { + plain_from_dafny(&*dafny_value) +} + +#[allow(dead_code)] +pub fn plain_from_dafny( + dafny_value: &crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesInput, +) -> crate::types::GetNumberOfQueriesInput { + match dafny_value { + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesInput::GetNumberOfQueriesInput {..} => + crate::types::GetNumberOfQueriesInput::builder() + .set_input(Some( crate::deps::com_amazonaws_dynamodb::conversions::query::_query_request::from_dafny(dafny_value.input().clone()) + )) + .build() + .unwrap() + } +} + +#[allow(dead_code)] +pub fn option_from_dafny( + dafny_value: ::dafny_runtime::Rc>>, +) -> ::std::option::Option { + match &*dafny_value { + crate::_Wrappers_Compile::Option::Some { value } => { + ::std::option::Option::Some(plain_from_dafny(value)) + } + _ => ::std::option::Option::None, + } +} diff --git a/releases/rust/db_esdk/src/conversions/get_number_of_queries_output.rs b/releases/rust/db_esdk/src/conversions/get_number_of_queries_output.rs new file mode 100644 index 0000000000..16a5599915 --- /dev/null +++ b/releases/rust/db_esdk/src/conversions/get_number_of_queries_output.rs @@ -0,0 +1,70 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +#[allow(dead_code)] +pub fn to_dafny( + value: &crate::types::GetNumberOfQueriesOutput, +) -> ::dafny_runtime::Rc< + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesOutput, +>{ + ::dafny_runtime::Rc::new(to_dafny_plain(value.clone())) +} + +#[allow(dead_code)] +pub fn to_dafny_plain( + value: crate::types::GetNumberOfQueriesOutput, +) -> crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesOutput{ + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesOutput::GetNumberOfQueriesOutput { + numberOfQueries: value.number_of_queries.clone().unwrap(), + } +} + +#[allow(dead_code)] +pub fn option_to_dafny( + value: ::std::option::Option, +) -> ::dafny_runtime::Rc>>{ + ::dafny_runtime::Rc::new(match value { + ::std::option::Option::None => crate::_Wrappers_Compile::Option::None {}, + ::std::option::Option::Some(x) => crate::_Wrappers_Compile::Option::Some { + value: ::dafny_runtime::Rc::new(to_dafny_plain(x)), + }, + }) +} + +#[allow(dead_code)] +pub fn from_dafny( + dafny_value: ::dafny_runtime::Rc< + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesOutput, + >, +) -> crate::types::GetNumberOfQueriesOutput { + plain_from_dafny(&*dafny_value) +} + +#[allow(dead_code)] +pub fn plain_from_dafny( + dafny_value: &crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesOutput, +) -> crate::types::GetNumberOfQueriesOutput { + match dafny_value { + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesOutput::GetNumberOfQueriesOutput {..} => + crate::types::GetNumberOfQueriesOutput::builder() + .set_number_of_queries(Some( dafny_value.numberOfQueries() .clone() )) + .build() + .unwrap() + } +} + +#[allow(dead_code)] +pub fn option_from_dafny( + dafny_value: ::dafny_runtime::Rc>>, +) -> ::std::option::Option { + match &*dafny_value { + crate::_Wrappers_Compile::Option::Some { value } => { + ::std::option::Option::Some(plain_from_dafny(value)) + } + _ => ::std::option::Option::None, + } +} diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions.rs index 4b010f3149..2a3e5159ab 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions.rs @@ -49,6 +49,12 @@ pub mod get_encrypted_data_key_description_output; pub mod get_encrypted_data_key_description_union; +pub mod get_partition_number; + +pub mod get_partition_number_input; + +pub mod get_partition_number_output; + pub mod get_prefix; pub mod get_segment; @@ -73,6 +79,8 @@ pub mod multi_key_store; pub mod part_only; +pub mod partition_selector; + pub mod plaintext_override; pub mod search_config; diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/beacon_version.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/beacon_version.rs index 9491e016e3..046dcfbc70 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/beacon_version.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/beacon_version.rs @@ -64,6 +64,13 @@ pub fn to_dafny_plain( }, None => crate::r#_Wrappers_Compile::Option::None {} }) +, + maximumNumberOfPartitions: crate::standard_library_conversions::oint_to_dafny(value.maximum_number_of_partitions), + defaultNumberOfPartitions: crate::standard_library_conversions::oint_to_dafny(value.default_number_of_partitions), + partitionSelector: ::dafny_runtime::Rc::new(match &value.partition_selector { + Some(x) => crate::_Wrappers_Compile::Option::Some { value: crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::conversions::partition_selector::to_dafny(&x.clone()) }, + None => crate::_Wrappers_Compile::Option::None { } +}) , } } @@ -151,6 +158,14 @@ pub fn plain_from_dafny( ), _ => None } +) + .set_maximum_number_of_partitions(crate::standard_library_conversions::oint_from_dafny(dafny_value.maximumNumberOfPartitions().clone())) + .set_default_number_of_partitions(crate::standard_library_conversions::oint_from_dafny(dafny_value.defaultNumberOfPartitions().clone())) + .set_partition_selector(match (*dafny_value.partitionSelector()).as_ref() { + crate::r#_Wrappers_Compile::Option::Some { value } => + Some(crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::conversions::partition_selector::from_dafny(value.clone())), + _ => None, +} ) .build() .unwrap() diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/get_partition_number.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/get_partition_number.rs new file mode 100644 index 0000000000..fa6615480e --- /dev/null +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/get_partition_number.rs @@ -0,0 +1,7 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. + +pub mod _get_partition_number_input; + +pub mod _get_partition_number_output; diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/get_partition_number/_get_partition_number_input.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/get_partition_number/_get_partition_number_input.rs new file mode 100644 index 0000000000..d3142c181a --- /dev/null +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/get_partition_number/_get_partition_number_input.rs @@ -0,0 +1,38 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +#[allow(dead_code)] +pub fn to_dafny( + value: crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberInput, +) -> ::dafny_runtime::Rc< + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberInput, +>{ + ::dafny_runtime::Rc::new(crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberInput::GetPartitionNumberInput { + item: ::dafny_runtime::dafny_runtime_conversions::hashmap_to_dafny_map(&value.item.clone().unwrap(), + |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.clone()) +, +) +, + numberOfPartitions: value.number_of_partitions.clone().unwrap(), + logicalTableName: crate::standard_library_conversions::ostring_to_dafny(&value.logical_table_name) .Extract(), + }) +} +#[allow(dead_code)] +pub fn from_dafny( + dafny_value: ::dafny_runtime::Rc< + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberInput, + >, +) -> crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberInput{ + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberInput::builder() + .set_item(Some( ::dafny_runtime::dafny_runtime_conversions::dafny_map_to_hashmap(&dafny_value.item(), + |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()) +, +) + )) + .set_number_of_partitions(Some( dafny_value.numberOfPartitions() .clone() )) + .set_logical_table_name(Some( dafny_runtime::dafny_runtime_conversions::unicode_chars_false::dafny_string_to_string(dafny_value.logicalTableName()) )) + .build() + .unwrap() +} diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/get_partition_number/_get_partition_number_output.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/get_partition_number/_get_partition_number_output.rs new file mode 100644 index 0000000000..dbd8a00f06 --- /dev/null +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/get_partition_number/_get_partition_number_output.rs @@ -0,0 +1,24 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +#[allow(dead_code)] +pub fn to_dafny( + value: crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberOutput, +) -> ::dafny_runtime::Rc< + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberOutput, +>{ + ::dafny_runtime::Rc::new(crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberOutput::GetPartitionNumberOutput { + partitionNumber: value.partition_number.clone().unwrap(), + }) +} +#[allow(dead_code)] +pub fn from_dafny( + dafny_value: ::dafny_runtime::Rc< + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberOutput, + >, +) -> crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberOutput{ + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberOutput::builder() + .set_partition_number(Some( dafny_value.partitionNumber() .clone() )) + .build() + .unwrap() +} diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/get_partition_number_input.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/get_partition_number_input.rs new file mode 100644 index 0000000000..1314a97b47 --- /dev/null +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/get_partition_number_input.rs @@ -0,0 +1,86 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +#[allow(dead_code)] +pub fn to_dafny( + value: &crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberInput, +) -> ::dafny_runtime::Rc< + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberInput, +>{ + ::dafny_runtime::Rc::new(to_dafny_plain(value.clone())) +} + +#[allow(dead_code)] +pub fn to_dafny_plain( + value: crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberInput, +) -> crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberInput{ + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberInput::GetPartitionNumberInput { + item: ::dafny_runtime::dafny_runtime_conversions::hashmap_to_dafny_map(&value.item.clone().unwrap(), + |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.clone()) +, +) +, + numberOfPartitions: value.number_of_partitions.clone().unwrap(), + logicalTableName: crate::standard_library_conversions::ostring_to_dafny(&value.logical_table_name) .Extract(), + } +} + +#[allow(dead_code)] +pub fn option_to_dafny( + value: ::std::option::Option, +) -> ::dafny_runtime::Rc>>{ + ::dafny_runtime::Rc::new(match value { + ::std::option::Option::None => crate::_Wrappers_Compile::Option::None {}, + ::std::option::Option::Some(x) => crate::_Wrappers_Compile::Option::Some { + value: ::dafny_runtime::Rc::new(to_dafny_plain(x)), + }, + }) +} + +#[allow(dead_code)] +pub fn from_dafny( + dafny_value: ::dafny_runtime::Rc< + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberInput, + >, +) -> crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberInput { + plain_from_dafny(&*dafny_value) +} + +#[allow(dead_code)] +pub fn plain_from_dafny( + dafny_value: &crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberInput, +) -> crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberInput { + match dafny_value { + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberInput::GetPartitionNumberInput {..} => + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberInput::builder() + .set_item(Some( ::dafny_runtime::dafny_runtime_conversions::dafny_map_to_hashmap(&dafny_value.item(), + |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()) +, +) + )) + .set_number_of_partitions(Some( dafny_value.numberOfPartitions() .clone() )) + .set_logical_table_name(Some( dafny_runtime::dafny_runtime_conversions::unicode_chars_false::dafny_string_to_string(dafny_value.logicalTableName()) )) + .build() + .unwrap() + } +} + +#[allow(dead_code)] +pub fn option_from_dafny( + dafny_value: ::dafny_runtime::Rc>>, +) -> ::std::option::Option< + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberInput, +> { + match &*dafny_value { + crate::_Wrappers_Compile::Option::Some { value } => { + ::std::option::Option::Some(plain_from_dafny(value)) + } + _ => ::std::option::Option::None, + } +} diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/get_partition_number_output.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/get_partition_number_output.rs new file mode 100644 index 0000000000..d11cac719c --- /dev/null +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/get_partition_number_output.rs @@ -0,0 +1,72 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +#[allow(dead_code)] +pub fn to_dafny( + value: &crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberOutput, +) -> ::dafny_runtime::Rc< + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberOutput, +>{ + ::dafny_runtime::Rc::new(to_dafny_plain(value.clone())) +} + +#[allow(dead_code)] +pub fn to_dafny_plain( + value: crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberOutput, +) -> crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberOutput{ + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberOutput::GetPartitionNumberOutput { + partitionNumber: value.partition_number.clone().unwrap(), + } +} + +#[allow(dead_code)] +pub fn option_to_dafny( + value: ::std::option::Option, +) -> ::dafny_runtime::Rc>>{ + ::dafny_runtime::Rc::new(match value { + ::std::option::Option::None => crate::_Wrappers_Compile::Option::None {}, + ::std::option::Option::Some(x) => crate::_Wrappers_Compile::Option::Some { + value: ::dafny_runtime::Rc::new(to_dafny_plain(x)), + }, + }) +} + +#[allow(dead_code)] +pub fn from_dafny( + dafny_value: ::dafny_runtime::Rc< + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberOutput, + >, +) -> crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberOutput { + plain_from_dafny(&*dafny_value) +} + +#[allow(dead_code)] +pub fn plain_from_dafny( + dafny_value: &crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberOutput, +) -> crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberOutput { + match dafny_value { + crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberOutput::GetPartitionNumberOutput {..} => + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberOutput::builder() + .set_partition_number(Some( dafny_value.partitionNumber() .clone() )) + .build() + .unwrap() + } +} + +#[allow(dead_code)] +pub fn option_from_dafny( + dafny_value: ::dafny_runtime::Rc>>, +) -> ::std::option::Option< + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberOutput, +> { + match &*dafny_value { + crate::_Wrappers_Compile::Option::Some { value } => { + ::std::option::Option::Some(plain_from_dafny(value)) + } + _ => ::std::option::Option::None, + } +} diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/partition_selector.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/partition_selector.rs new file mode 100644 index 0000000000..fb17265578 --- /dev/null +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/partition_selector.rs @@ -0,0 +1,95 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +#[allow(dead_code)] +pub fn to_dafny( + value: &crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::partition_selector::PartitionSelectorRef, +) -> ::dafny_runtime::Object< + dyn crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::IPartitionSelector, +>{ + let wrap = PartitionSelectorWrapper { obj: value.clone() }; + let inner = ::dafny_runtime::Rc::new(::dafny_runtime::UnsafeCell::new(wrap)); + ::dafny_runtime::Object(Some(inner)) +} + +pub struct PartitionSelectorWrapper { + obj: crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::partition_selector::PartitionSelectorRef, +} + +impl ::dafny_runtime::UpcastObject<::dafny_runtime::DynAny> for PartitionSelectorWrapper { + ::dafny_runtime::UpcastObjectFn!(::dafny_runtime::DynAny); +} + +#[allow(dead_code)] +pub fn from_dafny( + dafny_value: ::dafny_runtime::Object< + dyn crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::IPartitionSelector, + >, +) -> crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::partition_selector::PartitionSelectorRef{ + let wrap = IPartitionSelectorDafnyWrapper { + obj: dafny_value.clone(), + }; + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::partition_selector::PartitionSelectorRef { + inner: ::dafny_runtime::Rc::new(::dafny_runtime::RefCell::new(wrap)) + } +} + +#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)] +pub struct IPartitionSelectorDafnyWrapper { + pub(crate) obj: ::dafny_runtime::Object< + dyn crate::r#software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::IPartitionSelector, + >, +} + +impl crate::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::IPartitionSelector + for PartitionSelectorWrapper +{ + fn r#_GetPartitionNumber_k( + &self, + input: &::dafny_runtime::Rc, +) -> ::dafny_runtime::Rc< + crate::r#_Wrappers_Compile::Result< + ::dafny_runtime::Rc, + ::dafny_runtime::Rc, + >, +> +{ + let inner_input = crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::conversions::get_partition_number::_get_partition_number_input::from_dafny(input.clone()); + let inner_result = self.obj.inner.lock().unwrap().get_partition_number(inner_input); + let result = match inner_result { + Ok(x) => crate::r#_Wrappers_Compile::Result::Success { + value: crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::conversions::get_partition_number::_get_partition_number_output::to_dafny(x.clone()), + }, + Err(x) => crate::r#_Wrappers_Compile::Result::Failure { + error: crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::conversions::error::to_dafny(x), + }, + }; + ::dafny_runtime::Rc::new(result) +} +} + +impl crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::partition_selector::PartitionSelector for IPartitionSelectorDafnyWrapper +{ + fn get_partition_number( + &self, + input: crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberInput, +) -> Result< + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberOutput, + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::error::Error, +> { + let inner_input = crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::conversions::get_partition_number::_get_partition_number_input::to_dafny(input); + let inner_result = ::dafny_runtime::md!(self.obj.clone()).GetPartitionNumber(&inner_input); + if matches!( + inner_result.as_ref(), + crate::r#_Wrappers_Compile::Result::Success { .. } + ) { + Ok( + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::conversions::get_partition_number::_get_partition_number_output::from_dafny(inner_result.value().clone()), + ) + } else { + Err(crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::conversions::error::from_dafny( + inner_result.error().clone(), + )) + } +} +} diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/standard_beacon.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/standard_beacon.rs index c4bf885c5d..9eb88720e2 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/standard_beacon.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/conversions/standard_beacon.rs @@ -23,6 +23,7 @@ pub fn to_dafny_plain( None => crate::_Wrappers_Compile::Option::None { } }) , + numberOfPartitions: crate::standard_library_conversions::oint_to_dafny(value.number_of_partitions), } } @@ -65,6 +66,7 @@ pub fn plain_from_dafny( _ => None, } ) + .set_number_of_partitions(crate::standard_library_conversions::oint_from_dafny(dafny_value.numberOfPartitions().clone())) .build() .unwrap() } diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/operation.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/operation.rs index 78f13264b6..c91f033491 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/operation.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/operation.rs @@ -9,3 +9,6 @@ pub mod get_branch_key_id_from_ddb_key; /// Types for the `GetEncryptedDataKeyDescription` operation. pub mod get_encrypted_data_key_description; + +/// Types for the `GetPartitionNumber` operation. +pub mod get_partition_number; diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/operation/get_partition_number.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/operation/get_partition_number.rs new file mode 100644 index 0000000000..bac5812491 --- /dev/null +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/operation/get_partition_number.rs @@ -0,0 +1,40 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +/// Orchestration and serialization glue logic for `GetPartitionNumber`. +#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)] +#[non_exhaustive] +pub struct GetPartitionNumber; +impl GetPartitionNumber { + /// Creates a new `GetPartitionNumber` + pub fn new() -> Self { + Self + } + + pub(crate) async fn send( + partition_selector: &crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::partition_selector::PartitionSelectorRef, + input: crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberInput, + ) -> ::std::result::Result< + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberOutput, + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::error::Error, + >{ + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::validation::validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetPartitionNumberInput_for_PartitionSelector_GetPartitionNumber(&input) + .map_err(crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::error::Error::wrap_validation_err)?; + partition_selector + .inner + .lock() + .unwrap() + .get_partition_number(input) + } +} + +pub use crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::_get_partition_number_output::GetPartitionNumberOutput; + +pub use crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::_get_partition_number_input::GetPartitionNumberInput; + +pub(crate) mod _get_partition_number_output; + +pub(crate) mod _get_partition_number_input; + +/// Builders +pub mod builders; diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/operation/get_partition_number/_get_partition_number_input.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/operation/get_partition_number/_get_partition_number_input.rs new file mode 100644 index 0000000000..4e5fe2a863 --- /dev/null +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/operation/get_partition_number/_get_partition_number_input.rs @@ -0,0 +1,142 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +#[non_exhaustive] +#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)] +#[allow(missing_docs)] +pub struct GetPartitionNumberInput { + #[allow(missing_docs)] + pub item: ::std::option::Option< + ::std::collections::HashMap<::std::string::String, aws_sdk_dynamodb::types::AttributeValue>, + >, + #[allow(missing_docs)] + pub logical_table_name: ::std::option::Option<::std::string::String>, + #[allow(missing_docs)] + pub number_of_partitions: ::std::option::Option<::std::primitive::i32>, +} +impl GetPartitionNumberInput { + #[allow(missing_docs)] + pub fn item( + &self, + ) -> &::std::option::Option< + ::std::collections::HashMap<::std::string::String, aws_sdk_dynamodb::types::AttributeValue>, + > { + &self.item + } + #[allow(missing_docs)] + pub fn logical_table_name(&self) -> &::std::option::Option<::std::string::String> { + &self.logical_table_name + } + #[allow(missing_docs)] + pub fn number_of_partitions(&self) -> &::std::option::Option<::std::primitive::i32> { + &self.number_of_partitions + } +} +impl GetPartitionNumberInput { + /// Creates a new builder-style object to manufacture [`GetPartitionNumberInput`](crate::operation::get_partition_number::builders::GetPartitionNumberInput). + pub fn builder() -> crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::builders::GetPartitionNumberInputBuilder{ + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::builders::GetPartitionNumberInputBuilder::default() + } +} + +/// A builder for [`GetPartitionNumberInput`](crate::operation::operation::GetPartitionNumberInput). +#[non_exhaustive] +#[derive( + ::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug, +)] +pub struct GetPartitionNumberInputBuilder { + pub(crate) item: ::std::option::Option< + ::std::collections::HashMap<::std::string::String, aws_sdk_dynamodb::types::AttributeValue>, + >, + pub(crate) logical_table_name: ::std::option::Option<::std::string::String>, + pub(crate) number_of_partitions: ::std::option::Option<::std::primitive::i32>, +} +impl GetPartitionNumberInputBuilder { + #[allow(missing_docs)] + pub fn item( + mut self, + input: impl ::std::convert::Into< + ::std::collections::HashMap< + ::std::string::String, + aws_sdk_dynamodb::types::AttributeValue, + >, + >, + ) -> Self { + self.item = ::std::option::Option::Some(input.into()); + self + } + #[allow(missing_docs)] + pub fn set_item( + mut self, + input: ::std::option::Option< + ::std::collections::HashMap< + ::std::string::String, + aws_sdk_dynamodb::types::AttributeValue, + >, + >, + ) -> Self { + self.item = input; + self + } + #[allow(missing_docs)] + pub fn get_item( + &self, + ) -> &::std::option::Option< + ::std::collections::HashMap<::std::string::String, aws_sdk_dynamodb::types::AttributeValue>, + > { + &self.item + } + #[allow(missing_docs)] + pub fn logical_table_name( + mut self, + input: impl ::std::convert::Into<::std::string::String>, + ) -> Self { + self.logical_table_name = ::std::option::Option::Some(input.into()); + self + } + #[allow(missing_docs)] + pub fn set_logical_table_name( + mut self, + input: ::std::option::Option<::std::string::String>, + ) -> Self { + self.logical_table_name = input; + self + } + #[allow(missing_docs)] + pub fn get_logical_table_name(&self) -> &::std::option::Option<::std::string::String> { + &self.logical_table_name + } + #[allow(missing_docs)] + pub fn number_of_partitions( + mut self, + input: impl ::std::convert::Into<::std::primitive::i32>, + ) -> Self { + self.number_of_partitions = ::std::option::Option::Some(input.into()); + self + } + #[allow(missing_docs)] + pub fn set_number_of_partitions( + mut self, + input: ::std::option::Option<::std::primitive::i32>, + ) -> Self { + self.number_of_partitions = input; + self + } + #[allow(missing_docs)] + pub fn get_number_of_partitions(&self) -> &::std::option::Option<::std::primitive::i32> { + &self.number_of_partitions + } + /// Consumes the builder and constructs a [`GetPartitionNumberInput`](crate::operation::operation::GetPartitionNumberInput). + pub fn build( + self, + ) -> ::std::result::Result< + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberInput, + ::aws_smithy_types::error::operation::BuildError, + >{ + ::std::result::Result::Ok(crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberInput { + item: self.item, +logical_table_name: self.logical_table_name, +number_of_partitions: self.number_of_partitions, + }) + } +} diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/operation/get_partition_number/_get_partition_number_output.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/operation/get_partition_number/_get_partition_number_output.rs new file mode 100644 index 0000000000..4ef12707e2 --- /dev/null +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/operation/get_partition_number/_get_partition_number_output.rs @@ -0,0 +1,64 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +#[non_exhaustive] +#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)] +#[allow(missing_docs)] +pub struct GetPartitionNumberOutput { + #[allow(missing_docs)] + pub partition_number: ::std::option::Option<::std::primitive::i32>, +} +impl GetPartitionNumberOutput { + #[allow(missing_docs)] + pub fn partition_number(&self) -> &::std::option::Option<::std::primitive::i32> { + &self.partition_number + } +} +impl GetPartitionNumberOutput { + /// Creates a new builder-style object to manufacture [`GetPartitionNumberOutput`](crate::operation::get_partition_number::builders::GetPartitionNumberOutput). + pub fn builder() -> crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::builders::GetPartitionNumberOutputBuilder{ + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::builders::GetPartitionNumberOutputBuilder::default() + } +} + +/// A builder for [`GetPartitionNumberOutput`](crate::operation::operation::GetPartitionNumberOutput). +#[non_exhaustive] +#[derive( + ::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug, +)] +pub struct GetPartitionNumberOutputBuilder { + pub(crate) partition_number: ::std::option::Option<::std::primitive::i32>, +} +impl GetPartitionNumberOutputBuilder { + #[allow(missing_docs)] + pub fn partition_number( + mut self, + input: impl ::std::convert::Into<::std::primitive::i32>, + ) -> Self { + self.partition_number = ::std::option::Option::Some(input.into()); + self + } + #[allow(missing_docs)] + pub fn set_partition_number( + mut self, + input: ::std::option::Option<::std::primitive::i32>, + ) -> Self { + self.partition_number = input; + self + } + #[allow(missing_docs)] + pub fn get_partition_number(&self) -> &::std::option::Option<::std::primitive::i32> { + &self.partition_number + } + /// Consumes the builder and constructs a [`GetPartitionNumberOutput`](crate::operation::operation::GetPartitionNumberOutput). + pub fn build( + self, + ) -> ::std::result::Result< + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberOutput, + ::aws_smithy_types::error::operation::BuildError, + >{ + ::std::result::Result::Ok(crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberOutput { + partition_number: self.partition_number, + }) + } +} diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/operation/get_partition_number/builders.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/operation/get_partition_number/builders.rs new file mode 100644 index 0000000000..76540fca48 --- /dev/null +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/operation/get_partition_number/builders.rs @@ -0,0 +1,140 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +pub use crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::_get_partition_number_output::GetPartitionNumberOutputBuilder; + +pub use crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::_get_partition_number_input::GetPartitionNumberInputBuilder; + +impl GetPartitionNumberInputBuilder { + /// Sends a request with this input using the given client. + pub async fn send_with( + self, + partition_selector: &crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::partition_selector::PartitionSelectorRef, + ) -> ::std::result::Result< + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberOutput, + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::error::Error, + >{ + let mut fluent_builder = partition_selector.get_partition_number(); + fluent_builder.inner = self; + fluent_builder.send().await + } +} +/// Fluent builder constructing a request to `GetPartitionNumber`. +/// +#[derive(::std::clone::Clone, ::std::fmt::Debug)] +pub struct GetPartitionNumberFluentBuilder { + partition_selector: crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::partition_selector::PartitionSelectorRef, + pub(crate) inner: crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::builders::GetPartitionNumberInputBuilder, +} +impl GetPartitionNumberFluentBuilder { + /// Creates a new `GetPartitionNumber`. + pub(crate) fn new( + partition_selector: crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::partition_selector::PartitionSelectorRef, + ) -> Self { + Self { + partition_selector, + inner: ::std::default::Default::default(), + } + } + /// Access the GetPartitionNumber as a reference. + pub fn as_input(&self) -> &crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::builders::GetPartitionNumberInputBuilder{ + &self.inner + } + /// Sends the request and returns the response. + pub async fn send( + self, + ) -> ::std::result::Result< + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberOutput, + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::error::Error, + >{ + let input = self + .inner + .build() + // Using Opaque since we don't have a validation-specific error yet. + // Operations' models don't declare their own validation error, + // and smithy-rs seems to not generate a ValidationError case unless there is. + // Vanilla smithy-rs uses SdkError::construction_failure, but we aren't using SdkError. + .map_err(|mut e| { + let msg = format!("{:?}", e); + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::error::Error::OpaqueWithText { + obj: ::dafny_runtime::Object::from_ref(&mut e as &mut ::dafny_runtime::DynAny), + objMessage: msg + }})?; + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumber::send(&self.partition_selector, input).await + } + + #[allow(missing_docs)] + pub fn item( + mut self, + input: impl ::std::convert::Into< + ::std::collections::HashMap< + ::std::string::String, + aws_sdk_dynamodb::types::AttributeValue, + >, + >, + ) -> Self { + self.inner = self.inner.item(input.into()); + self + } + #[allow(missing_docs)] + pub fn set_item( + mut self, + input: ::std::option::Option< + ::std::collections::HashMap< + ::std::string::String, + aws_sdk_dynamodb::types::AttributeValue, + >, + >, + ) -> Self { + self.inner = self.inner.set_item(input); + self + } + #[allow(missing_docs)] + pub fn get_item( + &self, + ) -> &::std::option::Option< + ::std::collections::HashMap<::std::string::String, aws_sdk_dynamodb::types::AttributeValue>, + > { + self.inner.get_item() + } + #[allow(missing_docs)] + pub fn logical_table_name( + mut self, + input: impl ::std::convert::Into<::std::string::String>, + ) -> Self { + self.inner = self.inner.logical_table_name(input.into()); + self + } + #[allow(missing_docs)] + pub fn set_logical_table_name( + mut self, + input: ::std::option::Option<::std::string::String>, + ) -> Self { + self.inner = self.inner.set_logical_table_name(input); + self + } + #[allow(missing_docs)] + pub fn get_logical_table_name(&self) -> &::std::option::Option<::std::string::String> { + self.inner.get_logical_table_name() + } + #[allow(missing_docs)] + pub fn number_of_partitions( + mut self, + input: impl ::std::convert::Into<::std::primitive::i32>, + ) -> Self { + self.inner = self.inner.number_of_partitions(input.into()); + self + } + #[allow(missing_docs)] + pub fn set_number_of_partitions( + mut self, + input: ::std::option::Option<::std::primitive::i32>, + ) -> Self { + self.inner = self.inner.set_number_of_partitions(input); + self + } + #[allow(missing_docs)] + pub fn get_number_of_partitions(&self) -> &::std::option::Option<::std::primitive::i32> { + self.inner.get_number_of_partitions() + } +} diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types.rs index d7e9a9eb66..fc5c3311e6 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types.rs @@ -11,6 +11,8 @@ pub mod dynamo_db_key_branch_key_id_supplier; pub use dynamo_db_key_branch_key_id_supplier::DynamoDbKeyBranchKeyIdSupplier; pub mod legacy_dynamo_db_encryptor; pub use legacy_dynamo_db_encryptor::LegacyDynamoDbEncryptor; +pub mod partition_selector; +pub use partition_selector::PartitionSelector; mod _as_set; pub use crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::_as_set::AsSet; @@ -42,6 +44,10 @@ mod _get_encrypted_data_key_description_input; pub use crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::_get_encrypted_data_key_description_input::GetEncryptedDataKeyDescriptionInput; mod _get_encrypted_data_key_description_output; pub use crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::_get_encrypted_data_key_description_output::GetEncryptedDataKeyDescriptionOutput; +mod _get_partition_number_input; +pub use crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::_get_partition_number_input::GetPartitionNumberInput; +mod _get_partition_number_output; +pub use crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::_get_partition_number_output::GetPartitionNumberOutput; mod _get_prefix; pub use crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::_get_prefix::GetPrefix; mod _get_segment; diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_beacon_version.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_beacon_version.rs index 5526cb18c9..a1a7cb04d4 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_beacon_version.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_beacon_version.rs @@ -6,41 +6,27 @@ /// The configuration for a particular version of searchable encryption. Currently the only supported version is '1'. pub struct BeaconVersion { /// The Compound Beacons to be written with items. - pub compound_beacons: ::std::option::Option< - ::std::vec::Vec< - crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::CompoundBeacon, - >, - >, - /// The list of Encrypted Parts that may be included in any compound beacon. - pub encrypted_parts: ::std::option::Option< - ::std::vec::Vec< - crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::EncryptedPart, - >, - >, - /// The configuration for what beacon key(s) to use. - pub key_source: ::std::option::Option< - crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::BeaconKeySource, - >, - /// The Key Store that contains the Beacon Keys to use with searchable encryption. - pub key_store: ::std::option::Option, - /// The list of Signed Parts that may be included in any compound beacon. - pub signed_parts: ::std::option::Option< - ::std::vec::Vec, - >, - /// The Standard Beacons to be written with items. - pub standard_beacons: ::std::option::Option< - ::std::vec::Vec< - crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::StandardBeacon, - >, - >, - /// The version of searchable encryption configured. This must be '1'. - pub version: ::std::option::Option<::std::primitive::i32>, - /// The Virtual Fields to be calculated, supporting other searchable enryption configurations. - pub virtual_fields: ::std::option::Option< - ::std::vec::Vec< - crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::VirtualField, - >, - >, +pub compound_beacons: ::std::option::Option<::std::vec::Vec>, +/// The number of partitions for any beacon that doesn't specify a numberOfPartitions +pub default_number_of_partitions: ::std::option::Option<::std::primitive::i32>, +/// The list of Encrypted Parts that may be included in any compound beacon. +pub encrypted_parts: ::std::option::Option<::std::vec::Vec>, +/// The configuration for what beacon key(s) to use. +pub key_source: ::std::option::Option, +/// The Key Store that contains the Beacon Keys to use with searchable encryption. +pub key_store: ::std::option::Option, +/// The number of separate partitions across which beacons should be divided. +pub maximum_number_of_partitions: ::std::option::Option<::std::primitive::i32>, +/// How to choose the partition for an item. Default behavior is a random between 0 and maximumNumberOfPartitions. +pub partition_selector: ::std::option::Option, +/// The list of Signed Parts that may be included in any compound beacon. +pub signed_parts: ::std::option::Option<::std::vec::Vec>, +/// The Standard Beacons to be written with items. +pub standard_beacons: ::std::option::Option<::std::vec::Vec>, +/// The version of searchable encryption configured. This must be '1'. +pub version: ::std::option::Option<::std::primitive::i32>, +/// The Virtual Fields to be calculated, supporting other searchable encryption configurations. +pub virtual_fields: ::std::option::Option<::std::vec::Vec>, } impl BeaconVersion { /// The Compound Beacons to be written with items. @@ -53,6 +39,10 @@ impl BeaconVersion { > { &self.compound_beacons } + /// The number of partitions for any beacon that doesn't specify a numberOfPartitions + pub fn default_number_of_partitions(&self) -> &::std::option::Option<::std::primitive::i32> { + &self.default_number_of_partitions + } /// The list of Encrypted Parts that may be included in any compound beacon. pub fn encrypted_parts( &self, @@ -77,6 +67,14 @@ impl BeaconVersion { ) -> &::std::option::Option { &self.key_store } + /// The number of separate partitions across which beacons should be divided. + pub fn maximum_number_of_partitions(&self) -> &::std::option::Option<::std::primitive::i32> { + &self.maximum_number_of_partitions + } + /// How to choose the partition for an item. Default behavior is a random between 0 and maximumNumberOfPartitions. + pub fn partition_selector(&self) -> &::std::option::Option{ + &self.partition_selector + } /// The list of Signed Parts that may be included in any compound beacon. pub fn signed_parts( &self, @@ -99,7 +97,7 @@ impl BeaconVersion { pub fn version(&self) -> &::std::option::Option<::std::primitive::i32> { &self.version } - /// The Virtual Fields to be calculated, supporting other searchable enryption configurations. + /// The Virtual Fields to be calculated, supporting other searchable encryption configurations. pub fn virtual_fields( &self, ) -> &::std::option::Option< @@ -125,35 +123,17 @@ impl BeaconVersion { ::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug, )] pub struct BeaconVersionBuilder { - pub(crate) compound_beacons: ::std::option::Option< - ::std::vec::Vec< - crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::CompoundBeacon, - >, - >, - pub(crate) encrypted_parts: ::std::option::Option< - ::std::vec::Vec< - crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::EncryptedPart, - >, - >, - pub(crate) key_source: ::std::option::Option< - crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::BeaconKeySource, - >, - pub(crate) key_store: - ::std::option::Option, - pub(crate) signed_parts: ::std::option::Option< - ::std::vec::Vec, - >, - pub(crate) standard_beacons: ::std::option::Option< - ::std::vec::Vec< - crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::StandardBeacon, - >, - >, - pub(crate) version: ::std::option::Option<::std::primitive::i32>, - pub(crate) virtual_fields: ::std::option::Option< - ::std::vec::Vec< - crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::VirtualField, - >, - >, + pub(crate) compound_beacons: ::std::option::Option<::std::vec::Vec>, +pub(crate) default_number_of_partitions: ::std::option::Option<::std::primitive::i32>, +pub(crate) encrypted_parts: ::std::option::Option<::std::vec::Vec>, +pub(crate) key_source: ::std::option::Option, +pub(crate) key_store: ::std::option::Option, +pub(crate) maximum_number_of_partitions: ::std::option::Option<::std::primitive::i32>, +pub(crate) partition_selector: ::std::option::Option, +pub(crate) signed_parts: ::std::option::Option<::std::vec::Vec>, +pub(crate) standard_beacons: ::std::option::Option<::std::vec::Vec>, +pub(crate) version: ::std::option::Option<::std::primitive::i32>, +pub(crate) virtual_fields: ::std::option::Option<::std::vec::Vec>, } impl BeaconVersionBuilder { /// The Compound Beacons to be written with items. @@ -190,6 +170,28 @@ impl BeaconVersionBuilder { > { &self.compound_beacons } + /// The number of partitions for any beacon that doesn't specify a numberOfPartitions + pub fn default_number_of_partitions( + mut self, + input: impl ::std::convert::Into<::std::primitive::i32>, + ) -> Self { + self.default_number_of_partitions = ::std::option::Option::Some(input.into()); + self + } + /// The number of partitions for any beacon that doesn't specify a numberOfPartitions + pub fn set_default_number_of_partitions( + mut self, + input: ::std::option::Option<::std::primitive::i32>, + ) -> Self { + self.default_number_of_partitions = input; + self + } + /// The number of partitions for any beacon that doesn't specify a numberOfPartitions + pub fn get_default_number_of_partitions( + &self, + ) -> &::std::option::Option<::std::primitive::i32> { + &self.default_number_of_partitions + } /// The list of Encrypted Parts that may be included in any compound beacon. pub fn encrypted_parts( mut self, @@ -274,6 +276,48 @@ impl BeaconVersionBuilder { ) -> &::std::option::Option { &self.key_store } + /// The number of separate partitions across which beacons should be divided. + pub fn maximum_number_of_partitions( + mut self, + input: impl ::std::convert::Into<::std::primitive::i32>, + ) -> Self { + self.maximum_number_of_partitions = ::std::option::Option::Some(input.into()); + self + } + /// The number of separate partitions across which beacons should be divided. + pub fn set_maximum_number_of_partitions( + mut self, + input: ::std::option::Option<::std::primitive::i32>, + ) -> Self { + self.maximum_number_of_partitions = input; + self + } + /// The number of separate partitions across which beacons should be divided. + pub fn get_maximum_number_of_partitions( + &self, + ) -> &::std::option::Option<::std::primitive::i32> { + &self.maximum_number_of_partitions + } + /// How to choose the partition for an item. Default behavior is a random between 0 and maximumNumberOfPartitions. + pub fn partition_selector( + mut self, + input: impl ::std::convert::Into, + ) -> Self { + self.partition_selector = ::std::option::Option::Some(input.into()); + self + } + /// How to choose the partition for an item. Default behavior is a random between 0 and maximumNumberOfPartitions. + pub fn set_partition_selector( + mut self, + input: ::std::option::Option, + ) -> Self { + self.partition_selector = input; + self + } + /// How to choose the partition for an item. Default behavior is a random between 0 and maximumNumberOfPartitions. + pub fn get_partition_selector(&self) -> &::std::option::Option{ + &self.partition_selector + } /// The list of Signed Parts that may be included in any compound beacon. pub fn signed_parts( mut self, @@ -354,7 +398,7 @@ impl BeaconVersionBuilder { pub fn get_version(&self) -> &::std::option::Option<::std::primitive::i32> { &self.version } - /// The Virtual Fields to be calculated, supporting other searchable enryption configurations. + /// The Virtual Fields to be calculated, supporting other searchable encryption configurations. pub fn virtual_fields( mut self, input: impl ::std::convert::Into< @@ -366,7 +410,7 @@ impl BeaconVersionBuilder { self.virtual_fields = ::std::option::Option::Some(input.into()); self } - /// The Virtual Fields to be calculated, supporting other searchable enryption configurations. + /// The Virtual Fields to be calculated, supporting other searchable encryption configurations. pub fn set_virtual_fields( mut self, input: ::std::option::Option< @@ -378,7 +422,7 @@ impl BeaconVersionBuilder { self.virtual_fields = input; self } - /// The Virtual Fields to be calculated, supporting other searchable enryption configurations. + /// The Virtual Fields to be calculated, supporting other searchable encryption configurations. pub fn get_virtual_fields( &self, ) -> &::std::option::Option< @@ -398,9 +442,12 @@ impl BeaconVersionBuilder { ::std::result::Result::Ok( crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::BeaconVersion { compound_beacons: self.compound_beacons, + default_number_of_partitions: self.default_number_of_partitions, encrypted_parts: self.encrypted_parts, key_source: self.key_source, key_store: self.key_store, + maximum_number_of_partitions: self.maximum_number_of_partitions, + partition_selector: self.partition_selector, signed_parts: self.signed_parts, standard_beacons: self.standard_beacons, version: self.version, diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_constructor_part.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_constructor_part.rs index 6bc3db97cb..7d48dfcc4d 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_constructor_part.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_constructor_part.rs @@ -3,7 +3,7 @@ // Do not modify this file. This file is machine generated, and any changes to it will be overwritten. #[non_exhaustive] #[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)] -/// A part of a Compound Becaon Construction. +/// A part of a Compound Beacon Construction. pub struct ConstructorPart { /// The name of the Encrypted Part or Signed Part for which this constructor part gets a value. pub name: ::std::option::Option<::std::string::String>, diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_get_partition_number_input.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_get_partition_number_input.rs new file mode 100644 index 0000000000..1f30e1bcaf --- /dev/null +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_get_partition_number_input.rs @@ -0,0 +1,142 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +#[non_exhaustive] +#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)] +#[allow(missing_docs)] +pub struct GetPartitionNumberInput { + #[allow(missing_docs)] + pub item: ::std::option::Option< + ::std::collections::HashMap<::std::string::String, aws_sdk_dynamodb::types::AttributeValue>, + >, + #[allow(missing_docs)] + pub logical_table_name: ::std::option::Option<::std::string::String>, + #[allow(missing_docs)] + pub number_of_partitions: ::std::option::Option<::std::primitive::i32>, +} +impl GetPartitionNumberInput { + #[allow(missing_docs)] + pub fn item( + &self, + ) -> &::std::option::Option< + ::std::collections::HashMap<::std::string::String, aws_sdk_dynamodb::types::AttributeValue>, + > { + &self.item + } + #[allow(missing_docs)] + pub fn logical_table_name(&self) -> &::std::option::Option<::std::string::String> { + &self.logical_table_name + } + #[allow(missing_docs)] + pub fn number_of_partitions(&self) -> &::std::option::Option<::std::primitive::i32> { + &self.number_of_partitions + } +} +impl GetPartitionNumberInput { + /// Creates a new builder-style object to manufacture [`GetPartitionNumberInput`](crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberInput). + pub fn builder() -> crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::builders::GetPartitionNumberInputBuilder{ + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::builders::GetPartitionNumberInputBuilder::default() + } +} + +/// A builder for [`GetPartitionNumberInput`](crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberInput). +#[non_exhaustive] +#[derive( + ::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug, +)] +pub struct GetPartitionNumberInputBuilder { + pub(crate) item: ::std::option::Option< + ::std::collections::HashMap<::std::string::String, aws_sdk_dynamodb::types::AttributeValue>, + >, + pub(crate) logical_table_name: ::std::option::Option<::std::string::String>, + pub(crate) number_of_partitions: ::std::option::Option<::std::primitive::i32>, +} +impl GetPartitionNumberInputBuilder { + #[allow(missing_docs)] + pub fn item( + mut self, + input: impl ::std::convert::Into< + ::std::collections::HashMap< + ::std::string::String, + aws_sdk_dynamodb::types::AttributeValue, + >, + >, + ) -> Self { + self.item = ::std::option::Option::Some(input.into()); + self + } + #[allow(missing_docs)] + pub fn set_item( + mut self, + input: ::std::option::Option< + ::std::collections::HashMap< + ::std::string::String, + aws_sdk_dynamodb::types::AttributeValue, + >, + >, + ) -> Self { + self.item = input; + self + } + #[allow(missing_docs)] + pub fn get_item( + &self, + ) -> &::std::option::Option< + ::std::collections::HashMap<::std::string::String, aws_sdk_dynamodb::types::AttributeValue>, + > { + &self.item + } + #[allow(missing_docs)] + pub fn logical_table_name( + mut self, + input: impl ::std::convert::Into<::std::string::String>, + ) -> Self { + self.logical_table_name = ::std::option::Option::Some(input.into()); + self + } + #[allow(missing_docs)] + pub fn set_logical_table_name( + mut self, + input: ::std::option::Option<::std::string::String>, + ) -> Self { + self.logical_table_name = input; + self + } + #[allow(missing_docs)] + pub fn get_logical_table_name(&self) -> &::std::option::Option<::std::string::String> { + &self.logical_table_name + } + #[allow(missing_docs)] + pub fn number_of_partitions( + mut self, + input: impl ::std::convert::Into<::std::primitive::i32>, + ) -> Self { + self.number_of_partitions = ::std::option::Option::Some(input.into()); + self + } + #[allow(missing_docs)] + pub fn set_number_of_partitions( + mut self, + input: ::std::option::Option<::std::primitive::i32>, + ) -> Self { + self.number_of_partitions = input; + self + } + #[allow(missing_docs)] + pub fn get_number_of_partitions(&self) -> &::std::option::Option<::std::primitive::i32> { + &self.number_of_partitions + } + /// Consumes the builder and constructs a [`GetPartitionNumberInput`](crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberInput). + pub fn build( + self, + ) -> ::std::result::Result< + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberInput, + ::aws_smithy_types::error::operation::BuildError, + > { + ::std::result::Result::Ok(crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberInput { + item: self.item, +logical_table_name: self.logical_table_name, +number_of_partitions: self.number_of_partitions, + }) + } +} diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_get_partition_number_output.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_get_partition_number_output.rs new file mode 100644 index 0000000000..7960985051 --- /dev/null +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_get_partition_number_output.rs @@ -0,0 +1,64 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +#[non_exhaustive] +#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)] +#[allow(missing_docs)] +pub struct GetPartitionNumberOutput { + #[allow(missing_docs)] + pub partition_number: ::std::option::Option<::std::primitive::i32>, +} +impl GetPartitionNumberOutput { + #[allow(missing_docs)] + pub fn partition_number(&self) -> &::std::option::Option<::std::primitive::i32> { + &self.partition_number + } +} +impl GetPartitionNumberOutput { + /// Creates a new builder-style object to manufacture [`GetPartitionNumberOutput`](crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberOutput). + pub fn builder() -> crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::builders::GetPartitionNumberOutputBuilder{ + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::builders::GetPartitionNumberOutputBuilder::default() + } +} + +/// A builder for [`GetPartitionNumberOutput`](crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberOutput). +#[non_exhaustive] +#[derive( + ::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug, +)] +pub struct GetPartitionNumberOutputBuilder { + pub(crate) partition_number: ::std::option::Option<::std::primitive::i32>, +} +impl GetPartitionNumberOutputBuilder { + #[allow(missing_docs)] + pub fn partition_number( + mut self, + input: impl ::std::convert::Into<::std::primitive::i32>, + ) -> Self { + self.partition_number = ::std::option::Option::Some(input.into()); + self + } + #[allow(missing_docs)] + pub fn set_partition_number( + mut self, + input: ::std::option::Option<::std::primitive::i32>, + ) -> Self { + self.partition_number = input; + self + } + #[allow(missing_docs)] + pub fn get_partition_number(&self) -> &::std::option::Option<::std::primitive::i32> { + &self.partition_number + } + /// Consumes the builder and constructs a [`GetPartitionNumberOutput`](crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberOutput). + pub fn build( + self, + ) -> ::std::result::Result< + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberOutput, + ::aws_smithy_types::error::operation::BuildError, + > { + ::std::result::Result::Ok(crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberOutput { + partition_number: self.partition_number, + }) + } +} diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_get_segment.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_get_segment.rs index b25b1d1905..2c3148c75f 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_get_segment.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_get_segment.rs @@ -5,13 +5,13 @@ #[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)] /// The Virtual Part Transformation that splits a string and gets a particular segment of that split. pub struct GetSegment { - /// The index of the split string result to return. 0 represents the segment before the first split character. -1 respresents the segment after the last split character. + /// The index of the split string result to return. 0 represents the segment before the first split character. -1 represents the segment after the last split character. pub index: ::std::option::Option<::std::primitive::i32>, /// The characters to split on. pub split: ::std::option::Option<::std::string::String>, } impl GetSegment { - /// The index of the split string result to return. 0 represents the segment before the first split character. -1 respresents the segment after the last split character. + /// The index of the split string result to return. 0 represents the segment before the first split character. -1 represents the segment after the last split character. pub fn index(&self) -> &::std::option::Option<::std::primitive::i32> { &self.index } @@ -39,17 +39,17 @@ pub struct GetSegmentBuilder { pub(crate) split: ::std::option::Option<::std::string::String>, } impl GetSegmentBuilder { - /// The index of the split string result to return. 0 represents the segment before the first split character. -1 respresents the segment after the last split character. + /// The index of the split string result to return. 0 represents the segment before the first split character. -1 represents the segment after the last split character. pub fn index(mut self, input: impl ::std::convert::Into<::std::primitive::i32>) -> Self { self.index = ::std::option::Option::Some(input.into()); self } - /// The index of the split string result to return. 0 represents the segment before the first split character. -1 respresents the segment after the last split character. + /// The index of the split string result to return. 0 represents the segment before the first split character. -1 represents the segment after the last split character. pub fn set_index(mut self, input: ::std::option::Option<::std::primitive::i32>) -> Self { self.index = input; self } - /// The index of the split string result to return. 0 represents the segment before the first split character. -1 respresents the segment after the last split character. + /// The index of the split string result to return. 0 represents the segment before the first split character. -1 represents the segment after the last split character. pub fn get_index(&self) -> &::std::option::Option<::std::primitive::i32> { &self.index } diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_legacy_override.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_legacy_override.rs index 6e15c1aa4f..e4a0f1b1b4 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_legacy_override.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_legacy_override.rs @@ -11,7 +11,7 @@ pub attribute_actions_on_encrypt: ::std::option::Option<::std::collections::Hash pub default_attribute_flag: ::std::option::Option, /// A configuration for the legacy DynamoDB Encryption Client's Encryptor. pub encryptor: ::std::option::Option, -/// A policy which configurates whether legacy behavior overrides encryption and/or decryption. +/// A policy which configures whether legacy behavior overrides encryption and/or decryption. pub policy: ::std::option::Option, } impl LegacyOverride { @@ -38,7 +38,7 @@ impl LegacyOverride { pub fn encryptor(&self) -> &::std::option::Option{ &self.encryptor } - /// A policy which configurates whether legacy behavior overrides encryption and/or decryption. + /// A policy which configures whether legacy behavior overrides encryption and/or decryption. pub fn policy( &self, ) -> &::std::option::Option< @@ -141,7 +141,7 @@ impl LegacyOverrideBuilder { pub fn get_encryptor(&self) -> &::std::option::Option{ &self.encryptor } - /// A policy which configurates whether legacy behavior overrides encryption and/or decryption. + /// A policy which configures whether legacy behavior overrides encryption and/or decryption. pub fn policy( mut self, input: impl ::std::convert::Into< @@ -151,7 +151,7 @@ impl LegacyOverrideBuilder { self.policy = ::std::option::Option::Some(input.into()); self } - /// A policy which configurates whether legacy behavior overrides encryption and/or decryption. + /// A policy which configures whether legacy behavior overrides encryption and/or decryption. pub fn set_policy( mut self, input: ::std::option::Option< @@ -161,7 +161,7 @@ impl LegacyOverrideBuilder { self.policy = input; self } - /// A policy which configurates whether legacy behavior overrides encryption and/or decryption. + /// A policy which configures whether legacy behavior overrides encryption and/or decryption. pub fn get_policy( &self, ) -> &::std::option::Option< diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_standard_beacon.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_standard_beacon.rs index f41abfa896..fb7da027ab 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_standard_beacon.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/_standard_beacon.rs @@ -11,6 +11,8 @@ pub struct StandardBeacon { pub loc: ::std::option::Option<::std::string::String>, /// The name for this Standard Beacon. pub name: ::std::option::Option<::std::string::String>, + /// The number of separate partitions across which this particular beacon should be divided. Ths must be no greater than the global numberOfPartitions, and can never be changed once an item containing this beacon has been written. + pub number_of_partitions: ::std::option::Option<::std::primitive::i32>, /// Optional augmented behavior. pub style: ::std::option::Option< crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::BeaconStyle, @@ -29,6 +31,10 @@ impl StandardBeacon { pub fn name(&self) -> &::std::option::Option<::std::string::String> { &self.name } + /// The number of separate partitions across which this particular beacon should be divided. Ths must be no greater than the global numberOfPartitions, and can never be changed once an item containing this beacon has been written. + pub fn number_of_partitions(&self) -> &::std::option::Option<::std::primitive::i32> { + &self.number_of_partitions + } /// Optional augmented behavior. pub fn style( &self, @@ -54,6 +60,7 @@ pub struct StandardBeaconBuilder { pub(crate) length: ::std::option::Option<::std::primitive::i32>, pub(crate) loc: ::std::option::Option<::std::string::String>, pub(crate) name: ::std::option::Option<::std::string::String>, + pub(crate) number_of_partitions: ::std::option::Option<::std::primitive::i32>, pub(crate) style: ::std::option::Option< crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::BeaconStyle, >, @@ -101,6 +108,26 @@ impl StandardBeaconBuilder { pub fn get_name(&self) -> &::std::option::Option<::std::string::String> { &self.name } + /// The number of separate partitions across which this particular beacon should be divided. Ths must be no greater than the global numberOfPartitions, and can never be changed once an item containing this beacon has been written. + pub fn number_of_partitions( + mut self, + input: impl ::std::convert::Into<::std::primitive::i32>, + ) -> Self { + self.number_of_partitions = ::std::option::Option::Some(input.into()); + self + } + /// The number of separate partitions across which this particular beacon should be divided. Ths must be no greater than the global numberOfPartitions, and can never be changed once an item containing this beacon has been written. + pub fn set_number_of_partitions( + mut self, + input: ::std::option::Option<::std::primitive::i32>, + ) -> Self { + self.number_of_partitions = input; + self + } + /// The number of separate partitions across which this particular beacon should be divided. Ths must be no greater than the global numberOfPartitions, and can never be changed once an item containing this beacon has been written. + pub fn get_number_of_partitions(&self) -> &::std::option::Option<::std::primitive::i32> { + &self.number_of_partitions + } /// Optional augmented behavior. pub fn style( mut self, @@ -141,6 +168,7 @@ impl StandardBeaconBuilder { length: self.length, loc: self.loc, name: self.name, + number_of_partitions: self.number_of_partitions, style: self.style, }, ) diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/builders.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/builders.rs index a0a7e6050a..06c5ead104 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/builders.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/builders.rs @@ -31,6 +31,10 @@ pub use crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::_get_encr pub use crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::_get_encrypted_data_key_description_output::GetEncryptedDataKeyDescriptionOutputBuilder; +pub use crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::_get_partition_number_input::GetPartitionNumberInputBuilder; + +pub use crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::_get_partition_number_output::GetPartitionNumberOutputBuilder; + pub use crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::_get_prefix::GetPrefixBuilder; pub use crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::_get_segment::GetSegmentBuilder; diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/partition_selector.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/partition_selector.rs new file mode 100644 index 0000000000..44a3fed67c --- /dev/null +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/partition_selector.rs @@ -0,0 +1,42 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. + +#[allow(missing_docs)] +pub trait PartitionSelector: Send + Sync { + fn get_partition_number( + &self, + input: crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberInput, + ) -> Result< + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberOutput, + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::error::Error, + >; +} + +#[derive(::std::clone::Clone)] +/// A reference to a PartitionSelector +pub struct PartitionSelectorRef { + pub inner: ::dafny_runtime::Rc<::dafny_runtime::RefCell>, +} + +impl From for PartitionSelectorRef { + fn from(value: T) -> Self { + Self { + inner: dafny_runtime::Rc::new(::dafny_runtime::RefCell::new(value)), + } + } +} + +impl ::std::cmp::PartialEq for PartitionSelectorRef { + fn eq(&self, other: &PartitionSelectorRef) -> bool { + ::dafny_runtime::Rc::ptr_eq(&self.inner, &other.inner) + } +} + +impl ::std::fmt::Debug for PartitionSelectorRef { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { + write!(f, "") + } +} + +mod get_partition_number; diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/partition_selector/get_partition_number.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/partition_selector/get_partition_number.rs new file mode 100644 index 0000000000..2e66553614 --- /dev/null +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/types/partition_selector/get_partition_number.rs @@ -0,0 +1,17 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +impl crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::partition_selector::PartitionSelectorRef { + /// Constructs a fluent builder for the [`GetPartitionNumber`](crate::operation::get_partition_number::builders::GetPartitionNumberFluentBuilder) operation. + /// + /// - The fluent builder is configurable: + /// - [`item(impl Into>>)`](crate::operation::get_partition_number::builders::GetPartitionNumberFluentBuilder::item) / [`set_item(Option<::std::collections::HashMap<::std::string::String, aws_sdk_dynamodb::types::AttributeValue>>)`](crate::operation::get_partition_number::builders::GetPartitionNumberFluentBuilder::set_item): (undocumented)
+ /// - [`logical_table_name(impl Into>)`](crate::operation::get_partition_number::builders::GetPartitionNumberFluentBuilder::logical_table_name) / [`set_logical_table_name(Option<::std::string::String>)`](crate::operation::get_partition_number::builders::GetPartitionNumberFluentBuilder::set_logical_table_name): (undocumented)
+ /// - [`number_of_partitions(impl Into>)`](crate::operation::get_partition_number::builders::GetPartitionNumberFluentBuilder::number_of_partitions) / [`set_number_of_partitions(Option<::std::primitive::i32>)`](crate::operation::get_partition_number::builders::GetPartitionNumberFluentBuilder::set_number_of_partitions): (undocumented)
+ /// - On success, responds with [`GetPartitionNumberOutput`](crate::operation::get_partition_number::GetPartitionNumberOutput) with field(s): + /// - [`partition_number(Option<::std::primitive::i32>)`](crate::operation::get_partition_number::GetPartitionNumberOutput::partition_number): (undocumented) + /// - On failure, responds with [`SdkError`](crate::operation::get_partition_number::GetPartitionNumberError) + pub fn get_partition_number(&self) -> crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::builders::GetPartitionNumberFluentBuilder { + crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::builders::GetPartitionNumberFluentBuilder::new(self.clone()) + } +} diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/validation.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/validation.rs index b4bcbf1676..295d14508f 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/validation.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_dbEncryptionSdk_dynamoDb/validation.rs @@ -304,6 +304,125 @@ pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetEncrypte validate_com_Pamazonaws_Pdynamodb_HAttributeMap(input)?; Ok(()) } +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetPartitionNumberInput( + input: &crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberInput, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetPartitionNumberInput_Ditem( + &input.r#item, + )?; + validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetPartitionNumberInput_DnumberOfPartitions(&input.r#number_of_partitions)?; + validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetPartitionNumberInput_DlogicalTableName(&input.r#logical_table_name)?; + Ok(()) +} +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetPartitionNumberInput_for_PartitionSelector_GetPartitionNumber( + input: &crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberInput, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetPartitionNumberInput_Ditem( + &input.r#item, + )?; + validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetPartitionNumberInput_DnumberOfPartitions(&input.r#number_of_partitions)?; + validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetPartitionNumberInput_DlogicalTableName(&input.r#logical_table_name)?; + Ok(()) +} +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetPartitionNumberInput_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::Err( + ::aws_smithy_types::error::operation::BuildError::missing_field( + "item", + "item is required but was not specified", + ), + ); + } + 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_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetPartitionNumberInput_DlogicalTableName( + input: &::std::option::Option<::std::string::String>, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + if input.is_none() { + return ::std::result::Result::Err( + ::aws_smithy_types::error::operation::BuildError::missing_field( + "logical_table_name", + "logical_table_name is required but was not specified", + ), + ); + } + if input.is_none() { + return ::std::result::Result::Ok(()); + } + let input = input.as_ref().unwrap(); + + Ok(()) +} +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetPartitionNumberInput_DnumberOfPartitions( + input: &::std::option::Option<::std::primitive::i32>, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + if input.is_none() { + return ::std::result::Result::Err( + ::aws_smithy_types::error::operation::BuildError::missing_field( + "number_of_partitions", + "number_of_partitions is required but was not specified", + ), + ); + } + if input.is_none() { + return ::std::result::Result::Ok(()); + } + let input = input.as_ref().unwrap(); + + if !(1..=255).contains(input) { + return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field( + "number_of_partitions", + "number_of_partitions failed to satisfy constraint: Member must be between 1 and 255, inclusive", + )); + } + Ok(()) +} +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetPartitionNumberOutput( + input: &crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::GetPartitionNumberOutput, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetPartitionNumberOutput_DpartitionNumber(&input.r#partition_number)?; + Ok(()) +} +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetPartitionNumberOutput_for_PartitionSelector_GetPartitionNumber( + input: &crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::operation::get_partition_number::GetPartitionNumberOutput, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetPartitionNumberOutput_DpartitionNumber(&input.r#partition_number)?; + Ok(()) +} +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HGetPartitionNumberOutput_DpartitionNumber( + input: &::std::option::Option<::std::primitive::i32>, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + if input.is_none() { + return ::std::result::Result::Err( + ::aws_smithy_types::error::operation::BuildError::missing_field( + "partition_number", + "partition_number is required but was not specified", + ), + ); + } + if input.is_none() { + return ::std::result::Result::Ok(()); + } + let input = input.as_ref().unwrap(); + + if !(0..=254).contains(input) { + return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field( + "partition_number", + "partition_number failed to satisfy constraint: Member must be between 0 and 254, inclusive", + )); + } + Ok(()) +} pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HBranchKeyIdSupplierReference( input: &crate::deps::aws_cryptography_materialProviders::types::branch_key_id_supplier::BranchKeyIdSupplierRef, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { diff --git a/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/validation.rs b/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/validation.rs index b4fbd9890c..771d4cff99 100644 --- a/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/validation.rs +++ b/releases/rust/db_esdk/src/deps/aws_cryptography_materialProviders/validation.rs @@ -1706,7 +1706,7 @@ pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput ))?; Ok(()) } -pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsDiscoveryMultiKeyring( +pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateRawRsaKeyring( input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some( @@ -1714,7 +1714,7 @@ pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput ))?; Ok(()) } -pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsEcdhKeyring( +pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMrkMultiKeyring( input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some( @@ -1722,7 +1722,7 @@ pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput ))?; Ok(()) } -pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMrkDiscoveryMultiKeyring( +pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateRawAesKeyring( input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some( @@ -1730,7 +1730,7 @@ pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput ))?; Ok(()) } -pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateMultiKeyring( +pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMrkKeyring( input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some( @@ -1738,7 +1738,7 @@ pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput ))?; Ok(()) } -pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsDiscoveryKeyring( +pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsHierarchicalKeyring( input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some( @@ -1746,7 +1746,7 @@ pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput ))?; Ok(()) } -pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsRsaKeyring( +pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMrkDiscoveryKeyring( input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some( @@ -1754,7 +1754,7 @@ pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput ))?; Ok(()) } -pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMrkDiscoveryKeyring( +pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsRsaKeyring( input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some( @@ -1762,7 +1762,7 @@ pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput ))?; Ok(()) } -pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsHierarchicalKeyring( +pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsDiscoveryKeyring( input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some( @@ -1778,7 +1778,7 @@ pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput ))?; Ok(()) } -pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateRawRsaKeyring( +pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsDiscoveryMultiKeyring( input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some( @@ -1786,7 +1786,7 @@ pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput ))?; Ok(()) } -pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMrkMultiKeyring( +pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsKeyring( input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some( @@ -1794,7 +1794,7 @@ pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput ))?; Ok(()) } -pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMultiKeyring( +pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateMultiKeyring( input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some( @@ -1802,7 +1802,7 @@ pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput ))?; Ok(()) } -pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateRawAesKeyring( +pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMultiKeyring( input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some( @@ -1810,7 +1810,7 @@ pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput ))?; Ok(()) } -pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMrkKeyring( +pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsEcdhKeyring( input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some( @@ -1818,7 +1818,7 @@ pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput ))?; Ok(()) } -pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsKeyring( +pub(crate) fn validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_for_AwsCryptographicMaterialProviders_CreateAwsKmsMrkDiscoveryMultiKeyring( input: &crate::deps::aws_cryptography_materialProviders::types::keyring::KeyringRef, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { validate_aws_Pcryptography_PmaterialProviders_HCreateKeyringOutput_Dkeyring(&Some( diff --git a/releases/rust/db_esdk/src/implementation_from_dafny.rs b/releases/rust/db_esdk/src/implementation_from_dafny.rs index e04813cc12..1b455a0e45 100644 --- a/releases/rust/db_esdk/src/implementation_from_dafny.rs +++ b/releases/rust/db_esdk/src/implementation_from_dafny.rs @@ -7097,6 +7097,8 @@ pub mod software { pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::ExecuteTransactionOutputTransformOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::ResolveAttributesInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::ResolveAttributesOutput; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesInput; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesOutput; pub struct _default {} @@ -7265,13 +7267,13 @@ pub mod software { })); return res.read(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(899,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(948,3) pub fn CreateSuccessOfClient(client: &Object) -> Arc, Arc>> { Arc::new(Result::, Arc>::Success { value: client.clone() }) } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(902,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(951,3) pub fn CreateFailureOfError(error: &Arc) -> Arc, Arc>> { Arc::new(Result::, Arc>::Failure { error: error.clone() @@ -7279,7 +7281,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/src/Index.dfy(295,3) + /// dafny/DynamoDbEncryptionTransforms/src/Index.dfy(292,3) pub struct DynamoDbEncryptionTransformsClient { pub __i_config: Arc } @@ -7289,13 +7291,13 @@ pub mod software { pub fn _allocate_object() -> Object { allocate_object::() } - /// dafny/DynamoDbEncryptionTransforms/src/Index.dfy(304,5) + /// dafny/DynamoDbEncryptionTransforms/src/Index.dfy(301,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()); return (); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(913,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(962,5) pub fn config(&self) -> Arc { self.__i_config.clone() } @@ -7308,7 +7310,7 @@ pub mod software { impl IDynamoDbEncryptionTransformsClient for crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::DynamoDbEncryptionTransformsClient { - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(922,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(971,5) fn PutItemInputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7316,7 +7318,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(942,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(991,5) fn PutItemOutputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7324,7 +7326,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(962,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1011,5) fn GetItemInputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7332,7 +7334,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(982,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1031,5) fn GetItemOutputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7340,7 +7342,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1002,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1051,5) fn BatchWriteItemInputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7348,7 +7350,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1022,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1071,5) fn BatchWriteItemOutputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7356,7 +7358,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1042,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1091,5) fn BatchGetItemInputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7364,7 +7366,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1062,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1111,5) fn BatchGetItemOutputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7372,7 +7374,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1082,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1131,5) fn ScanInputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7380,7 +7382,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1102,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1151,5) fn ScanOutputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7388,7 +7390,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1122,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1171,5) fn QueryInputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7396,7 +7398,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1142,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1191,5) fn QueryOutputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7404,7 +7406,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1162,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1211,5) fn TransactWriteItemsInputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7412,7 +7414,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1182,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1231,5) fn TransactWriteItemsOutputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7420,7 +7422,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1202,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1251,5) fn UpdateItemInputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7428,7 +7430,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1222,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1271,5) fn UpdateItemOutputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7436,7 +7438,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1242,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1291,5) fn DeleteItemInputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7444,7 +7446,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1262,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1311,5) fn DeleteItemOutputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7452,7 +7454,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1282,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1331,5) fn TransactGetItemsInputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7460,7 +7462,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1302,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1351,5) fn TransactGetItemsOutputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7468,7 +7470,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1322,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1371,5) fn ExecuteStatementInputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7476,7 +7478,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1342,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1391,5) fn ExecuteStatementOutputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7484,7 +7486,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1362,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1411,5) fn BatchExecuteStatementInputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7492,7 +7494,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1382,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1431,5) fn BatchExecuteStatementOutputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7500,7 +7502,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1402,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1451,5) fn ExecuteTransactionInputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7508,7 +7510,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1422,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1471,5) fn ExecuteTransactionOutputTransform(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7516,7 +7518,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1442,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1491,5) fn ResolveAttributes(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -7524,6 +7526,14 @@ pub mod software { output = _out0.clone(); return output.clone(); } + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(1511,5) + fn GetNumberOfQueries(&self, input: &Arc) -> Arc, Arc>> { + let mut output: Arc, Arc>>; + let mut _out0: Arc, Arc>>; + _out0 = crate::implementation_from_dafny::_AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations_Compile::_default::GetNumberOfQueries(&self.config().clone(), input); + output = _out0.clone(); + return output.clone(); + } } impl UpcastObject @@ -7567,9 +7577,10 @@ pub mod software { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ExecuteTransactionOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::GetItemInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::GetItemOutput; + pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::QueryInput; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionCount; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::PutItemInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::PutItemOutput; - 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 ::dafny_runtime::Sequence; pub use ::dafny_runtime::DafnyCharUTF16; @@ -7589,7 +7600,7 @@ pub mod software { pub struct _default {} impl _default { - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(738,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(761,3) pub fn IsDummySubsetType(x: &DafnyInt) -> bool { int!(0) < x.clone() } @@ -8821,65 +8832,67 @@ pub mod software { UpcastObjectFn!(DynAny); } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(135,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(137,3) pub trait IDynamoDbEncryptionTransformsClient: Any + Sync + Send + UpcastObject { - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(164,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(166,5) fn PutItemInputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(179,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(181,5) fn PutItemOutputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(194,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(196,5) fn GetItemInputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(209,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(211,5) fn GetItemOutputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(224,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(226,5) fn BatchWriteItemInputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(239,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(241,5) fn BatchWriteItemOutputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(254,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(256,5) fn BatchGetItemInputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(269,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(271,5) fn BatchGetItemOutputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(284,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(286,5) fn ScanInputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(299,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(301,5) fn ScanOutputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(314,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(316,5) fn QueryInputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(329,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(331,5) fn QueryOutputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(344,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(346,5) fn TransactWriteItemsInputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(359,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(361,5) fn TransactWriteItemsOutputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(374,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(376,5) fn UpdateItemInputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(389,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(391,5) fn UpdateItemOutputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(404,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(406,5) fn DeleteItemInputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(419,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(421,5) fn DeleteItemOutputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(434,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(436,5) fn TransactGetItemsInputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(449,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(451,5) fn TransactGetItemsOutputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(464,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(466,5) fn ExecuteStatementInputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(479,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(481,5) fn ExecuteStatementOutputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(494,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(496,5) fn BatchExecuteStatementInputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(509,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(511,5) fn BatchExecuteStatementOutputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(524,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(526,5) fn ExecuteTransactionInputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(539,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(541,5) fn ExecuteTransactionOutputTransform(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(554,5) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(556,5) fn ResolveAttributes(&self, input: &Arc) -> Arc, Arc>>; + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(571,5) + fn GetNumberOfQueries(&self, input: &Arc) -> Arc, Arc>>; } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(568,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(585,3) #[derive(PartialEq, Clone)] pub enum ExecuteStatementInputTransformInput { ExecuteStatementInputTransformInput { @@ -8947,7 +8960,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(571,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(588,3) #[derive(PartialEq, Clone)] pub enum ExecuteStatementInputTransformOutput { ExecuteStatementInputTransformOutput { @@ -9015,7 +9028,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(574,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(591,3) #[derive(PartialEq, Clone)] pub enum ExecuteStatementOutputTransformInput { ExecuteStatementOutputTransformInput { @@ -9094,7 +9107,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(578,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(595,3) #[derive(PartialEq, Clone)] pub enum ExecuteStatementOutputTransformOutput { ExecuteStatementOutputTransformOutput { @@ -9162,7 +9175,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(581,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(598,3) #[derive(PartialEq, Clone)] pub enum ExecuteTransactionInputTransformInput { ExecuteTransactionInputTransformInput { @@ -9230,7 +9243,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(584,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(601,3) #[derive(PartialEq, Clone)] pub enum ExecuteTransactionInputTransformOutput { ExecuteTransactionInputTransformOutput { @@ -9298,7 +9311,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(587,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(604,3) #[derive(PartialEq, Clone)] pub enum ExecuteTransactionOutputTransformInput { ExecuteTransactionOutputTransformInput { @@ -9377,7 +9390,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(591,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(608,3) #[derive(PartialEq, Clone)] pub enum ExecuteTransactionOutputTransformOutput { ExecuteTransactionOutputTransformOutput { @@ -9445,7 +9458,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(594,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(611,3) #[derive(PartialEq, Clone)] pub enum GetItemInputTransformInput { GetItemInputTransformInput { @@ -9513,7 +9526,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(597,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(614,3) #[derive(PartialEq, Clone)] pub enum GetItemInputTransformOutput { GetItemInputTransformOutput { @@ -9581,7 +9594,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(600,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(617,3) #[derive(PartialEq, Clone)] pub enum GetItemOutputTransformInput { GetItemOutputTransformInput { @@ -9660,7 +9673,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(604,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(621,3) #[derive(PartialEq, Clone)] pub enum GetItemOutputTransformOutput { GetItemOutputTransformOutput { @@ -9728,7 +9741,143 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(607,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(624,3) + #[derive(PartialEq, Clone)] + pub enum GetNumberOfQueriesInput { + GetNumberOfQueriesInput { + input: Arc + } + } + + impl GetNumberOfQueriesInput { + /// Returns a borrow of the field input + pub fn input(&self) -> &Arc { + match self { + GetNumberOfQueriesInput::GetNumberOfQueriesInput{input, } => input, + } + } + } + + impl Debug + for GetNumberOfQueriesInput { + fn fmt(&self, f: &mut Formatter) -> ::std::fmt::Result { + DafnyPrint::fmt_print(self, f, true) + } + } + + impl DafnyPrint + for GetNumberOfQueriesInput { + fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { + match self { + GetNumberOfQueriesInput::GetNumberOfQueriesInput{input, } => { + write!(_formatter, "software.amazon.cryptography.dbencryptionsdk.dynamodb.transforms.internaldafny.types.GetNumberOfQueriesInput.GetNumberOfQueriesInput(")?; + DafnyPrint::fmt_print(input, _formatter, false)?; + write!(_formatter, ")")?; + Ok(()) + }, + } + } + } + + impl Eq + for GetNumberOfQueriesInput {} + + impl Hash + for GetNumberOfQueriesInput { + fn hash<_H: Hasher>(&self, _state: &mut _H) { + match self { + GetNumberOfQueriesInput::GetNumberOfQueriesInput{input, } => { + Hash::hash(input, _state) + }, + } + } + } + + impl Default + for GetNumberOfQueriesInput { + fn default() -> GetNumberOfQueriesInput { + GetNumberOfQueriesInput::GetNumberOfQueriesInput { + input: Default::default() + } + } + } + + impl AsRef + for GetNumberOfQueriesInput { + fn as_ref(&self) -> &Self { + self + } + } + + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(627,3) + #[derive(PartialEq, Clone)] + pub enum GetNumberOfQueriesOutput { + GetNumberOfQueriesOutput { + numberOfQueries: PartitionCount + } + } + + impl GetNumberOfQueriesOutput { + /// Returns a borrow of the field numberOfQueries + pub fn numberOfQueries(&self) -> &PartitionCount { + match self { + GetNumberOfQueriesOutput::GetNumberOfQueriesOutput{numberOfQueries, } => numberOfQueries, + } + } + } + + impl Debug + for GetNumberOfQueriesOutput { + fn fmt(&self, f: &mut Formatter) -> ::std::fmt::Result { + DafnyPrint::fmt_print(self, f, true) + } + } + + impl DafnyPrint + for GetNumberOfQueriesOutput { + fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { + match self { + GetNumberOfQueriesOutput::GetNumberOfQueriesOutput{numberOfQueries, } => { + write!(_formatter, "software.amazon.cryptography.dbencryptionsdk.dynamodb.transforms.internaldafny.types.GetNumberOfQueriesOutput.GetNumberOfQueriesOutput(")?; + DafnyPrint::fmt_print(numberOfQueries, _formatter, false)?; + write!(_formatter, ")")?; + Ok(()) + }, + } + } + } + + impl Eq + for GetNumberOfQueriesOutput {} + + impl Hash + for GetNumberOfQueriesOutput { + fn hash<_H: Hasher>(&self, _state: &mut _H) { + match self { + GetNumberOfQueriesOutput::GetNumberOfQueriesOutput{numberOfQueries, } => { + Hash::hash(numberOfQueries, _state) + }, + } + } + } + + impl Default + for GetNumberOfQueriesOutput { + fn default() -> GetNumberOfQueriesOutput { + GetNumberOfQueriesOutput::GetNumberOfQueriesOutput { + numberOfQueries: Default::default() + } + } + } + + impl AsRef + for GetNumberOfQueriesOutput { + fn as_ref(&self) -> &Self { + self + } + } + + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(630,3) #[derive(PartialEq, Clone)] pub enum PutItemInputTransformInput { PutItemInputTransformInput { @@ -9796,7 +9945,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(610,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(633,3) #[derive(PartialEq, Clone)] pub enum PutItemInputTransformOutput { PutItemInputTransformOutput { @@ -9864,7 +10013,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(613,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(636,3) #[derive(PartialEq, Clone)] pub enum PutItemOutputTransformInput { PutItemOutputTransformInput { @@ -9943,7 +10092,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(617,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(640,3) #[derive(PartialEq, Clone)] pub enum PutItemOutputTransformOutput { PutItemOutputTransformOutput { @@ -10011,7 +10160,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(620,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(643,3) #[derive(PartialEq, Clone)] pub enum QueryInputTransformInput { QueryInputTransformInput { @@ -10079,7 +10228,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(623,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(646,3) #[derive(PartialEq, Clone)] pub enum QueryInputTransformOutput { QueryInputTransformOutput { @@ -10147,7 +10296,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(626,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(649,3) #[derive(PartialEq, Clone)] pub enum QueryOutputTransformInput { QueryOutputTransformInput { @@ -10226,7 +10375,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(630,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(653,3) #[derive(PartialEq, Clone)] pub enum QueryOutputTransformOutput { QueryOutputTransformOutput { @@ -10294,7 +10443,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(633,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(656,3) #[derive(PartialEq, Clone)] pub enum ResolveAttributesInput { ResolveAttributesInput { @@ -10384,7 +10533,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(638,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(661,3) #[derive(PartialEq, Clone)] pub enum ResolveAttributesOutput { ResolveAttributesOutput { @@ -10463,7 +10612,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(642,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(665,3) #[derive(PartialEq, Clone)] pub enum ScanInputTransformInput { ScanInputTransformInput { @@ -10531,7 +10680,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(645,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(668,3) #[derive(PartialEq, Clone)] pub enum ScanInputTransformOutput { ScanInputTransformOutput { @@ -10599,7 +10748,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(648,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(671,3) #[derive(PartialEq, Clone)] pub enum ScanOutputTransformInput { ScanOutputTransformInput { @@ -10678,7 +10827,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(652,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(675,3) #[derive(PartialEq, Clone)] pub enum ScanOutputTransformOutput { ScanOutputTransformOutput { @@ -10746,7 +10895,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(656,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(679,3) #[derive(PartialEq, Clone)] pub enum TransactGetItemsInputTransformInput { TransactGetItemsInputTransformInput { @@ -10814,7 +10963,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(659,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(682,3) #[derive(PartialEq, Clone)] pub enum TransactGetItemsInputTransformOutput { TransactGetItemsInputTransformOutput { @@ -10882,7 +11031,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(662,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(685,3) #[derive(PartialEq, Clone)] pub enum TransactGetItemsOutputTransformInput { TransactGetItemsOutputTransformInput { @@ -10961,7 +11110,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(666,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(689,3) #[derive(PartialEq, Clone)] pub enum TransactGetItemsOutputTransformOutput { TransactGetItemsOutputTransformOutput { @@ -11029,7 +11178,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(669,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(692,3) #[derive(PartialEq, Clone)] pub enum TransactWriteItemsInputTransformInput { TransactWriteItemsInputTransformInput { @@ -11097,7 +11246,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(672,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(695,3) #[derive(PartialEq, Clone)] pub enum TransactWriteItemsInputTransformOutput { TransactWriteItemsInputTransformOutput { @@ -11165,7 +11314,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(675,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(698,3) #[derive(PartialEq, Clone)] pub enum TransactWriteItemsOutputTransformInput { TransactWriteItemsOutputTransformInput { @@ -11244,7 +11393,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(679,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(702,3) #[derive(PartialEq, Clone)] pub enum TransactWriteItemsOutputTransformOutput { TransactWriteItemsOutputTransformOutput { @@ -11312,7 +11461,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(682,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(705,3) #[derive(PartialEq, Clone)] pub enum UpdateItemInputTransformInput { UpdateItemInputTransformInput { @@ -11380,7 +11529,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(685,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(708,3) #[derive(PartialEq, Clone)] pub enum UpdateItemInputTransformOutput { UpdateItemInputTransformOutput { @@ -11448,7 +11597,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(688,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(711,3) #[derive(PartialEq, Clone)] pub enum UpdateItemOutputTransformInput { UpdateItemOutputTransformInput { @@ -11527,7 +11676,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(692,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(715,3) #[derive(PartialEq, Clone)] pub enum UpdateItemOutputTransformOutput { UpdateItemOutputTransformOutput { @@ -11595,7 +11744,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(695,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(718,3) #[derive(PartialEq, Clone)] pub enum Error { DynamoDbEncryptionTransformsException { @@ -11887,10 +12036,10 @@ pub mod software { } } - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(734,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(757,3) pub type OpaqueError = Arc; - /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(737,3) + /// dafny/DynamoDbEncryptionTransforms/Model/AwsCryptographyDbEncryptionSdkDynamoDbTransformsTypes.dfy(760,3) pub type DummySubsetType = DafnyInt; /// An element of DummySubsetType @@ -11940,13 +12089,13 @@ pub mod software { }); return res.clone(); } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(511,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(596,3) pub fn CreateSuccessOfClient(client: &Object) -> Arc, Arc>> { Arc::new(Result::, Arc>::Success { value: client.clone() }) } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(514,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(599,3) pub fn CreateFailureOfError(error: &Arc) -> Arc, Arc>> { Arc::new(Result::, Arc>::Failure { error: error.clone() @@ -11970,7 +12119,7 @@ pub mod software { update_field_uninit_object!(this.clone(), __i_config, _set___i_config, config.clone()); return (); } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(525,5) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(610,5) pub fn config(&self) -> Arc { self.__i_config.clone() } @@ -11983,7 +12132,7 @@ pub mod software { impl IDynamoDbEncryptionClient for crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::DynamoDbEncryptionClient { - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(534,5) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(619,5) fn CreateDynamoDbEncryptionBranchKeyIdSupplier(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -11991,7 +12140,7 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(565,5) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(650,5) fn GetEncryptedDataKeyDescription(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -12053,63 +12202,71 @@ pub mod software { pub fn IsValid_BeaconBitLength(x: i32) -> bool { !(x < truncate!(int!(1), i32)) && !(truncate!(int!(63), i32) < x) } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(52,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(55,3) pub fn IsValid_BeaconVersionList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) && !(int!(1) < x.cardinality()) } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(56,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(59,3) pub fn IsValid_Char(x: &Sequence) -> bool { !(x.cardinality() < int!(1)) && !(int!(1) < x.cardinality()) } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(67,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(70,3) pub fn IsValid_CompoundBeaconList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(74,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(77,3) pub fn IsValid_ConstructorList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(82,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(85,3) pub fn IsValid_ConstructorPartList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(266,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(269,3) pub fn IsValid_EncryptedPartsList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(368,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(372,3) + pub fn IsValid_PartitionCount(x: i32) -> bool { + !(x < truncate!(int!(1), i32)) && !(truncate!(int!(255), i32) < x) + } + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(376,3) + pub fn IsValid_PartitionNumber(x: i32) -> bool { + !(x < truncate!(int!(0), i32)) && !(truncate!(int!(254), i32) < x) + } + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(452,3) pub fn IsValid_Prefix(x: &Sequence) -> bool { !(x.cardinality() < int!(1)) } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(387,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(471,3) pub fn IsValid_SignedPartsList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(403,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(488,3) pub fn IsValid_StandardBeaconList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(407,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(492,3) pub fn IsValid_TerminalLocation(x: &Sequence) -> bool { !(x.cardinality() < int!(1)) } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(414,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(499,3) pub fn IsValid_VersionNumber(x: i32) -> bool { !(x < truncate!(int!(1), i32)) } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(422,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(507,3) pub fn IsValid_VirtualFieldList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(430,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(515,3) pub fn IsValid_VirtualPartList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(443,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(528,3) pub fn IsValid_VirtualTransformList(x: &Sequence>) -> bool { !(x.cardinality() < int!(1)) } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(489,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(574,3) pub fn IsDummySubsetType(x: &DafnyInt) -> bool { int!(0) < x.clone() } @@ -12492,7 +12649,10 @@ pub mod software { compoundBeacons: Arc>, virtualFields: Arc>, encryptedParts: Arc>, - signedParts: Arc> + signedParts: Arc>, + maximumNumberOfPartitions: Arc>, + defaultNumberOfPartitions: Arc>, + partitionSelector: Arc>> } } @@ -12500,49 +12660,67 @@ pub mod software { /// Returns a borrow of the field version pub fn version(&self) -> &crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::VersionNumber { match self { - BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, } => version, + BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, maximumNumberOfPartitions, defaultNumberOfPartitions, partitionSelector, } => version, } } /// Returns a borrow of the field keyStore pub fn keyStore(&self) -> &Object { match self { - BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, } => keyStore, + BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, maximumNumberOfPartitions, defaultNumberOfPartitions, partitionSelector, } => keyStore, } } /// Returns a borrow of the field keySource pub fn keySource(&self) -> &Arc { match self { - BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, } => keySource, + BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, maximumNumberOfPartitions, defaultNumberOfPartitions, partitionSelector, } => keySource, } } /// Returns a borrow of the field standardBeacons pub fn standardBeacons(&self) -> &crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::StandardBeaconList { match self { - BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, } => standardBeacons, + BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, maximumNumberOfPartitions, defaultNumberOfPartitions, partitionSelector, } => standardBeacons, } } /// Returns a borrow of the field compoundBeacons pub fn compoundBeacons(&self) -> &Arc> { match self { - BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, } => compoundBeacons, + BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, maximumNumberOfPartitions, defaultNumberOfPartitions, partitionSelector, } => compoundBeacons, } } /// Returns a borrow of the field virtualFields pub fn virtualFields(&self) -> &Arc> { match self { - BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, } => virtualFields, + BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, maximumNumberOfPartitions, defaultNumberOfPartitions, partitionSelector, } => virtualFields, } } /// Returns a borrow of the field encryptedParts pub fn encryptedParts(&self) -> &Arc> { match self { - BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, } => encryptedParts, + BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, maximumNumberOfPartitions, defaultNumberOfPartitions, partitionSelector, } => encryptedParts, } } /// Returns a borrow of the field signedParts pub fn signedParts(&self) -> &Arc> { match self { - BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, } => signedParts, + BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, maximumNumberOfPartitions, defaultNumberOfPartitions, partitionSelector, } => signedParts, + } + } + /// Returns a borrow of the field maximumNumberOfPartitions + pub fn maximumNumberOfPartitions(&self) -> &Arc> { + match self { + BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, maximumNumberOfPartitions, defaultNumberOfPartitions, partitionSelector, } => maximumNumberOfPartitions, + } + } + /// Returns a borrow of the field defaultNumberOfPartitions + pub fn defaultNumberOfPartitions(&self) -> &Arc> { + match self { + BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, maximumNumberOfPartitions, defaultNumberOfPartitions, partitionSelector, } => defaultNumberOfPartitions, + } + } + /// Returns a borrow of the field partitionSelector + pub fn partitionSelector(&self) -> &Arc>> { + match self { + BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, maximumNumberOfPartitions, defaultNumberOfPartitions, partitionSelector, } => partitionSelector, } } } @@ -12558,7 +12736,7 @@ pub mod software { for BeaconVersion { fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { match self { - BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, } => { + BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, maximumNumberOfPartitions, defaultNumberOfPartitions, partitionSelector, } => { write!(_formatter, "software.amazon.cryptography.dbencryptionsdk.dynamodb.internaldafny.types.BeaconVersion.BeaconVersion(")?; DafnyPrint::fmt_print(version, _formatter, false)?; write!(_formatter, ", ")?; @@ -12575,6 +12753,12 @@ pub mod software { DafnyPrint::fmt_print(encryptedParts, _formatter, false)?; write!(_formatter, ", ")?; DafnyPrint::fmt_print(signedParts, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(maximumNumberOfPartitions, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(defaultNumberOfPartitions, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(partitionSelector, _formatter, false)?; write!(_formatter, ")")?; Ok(()) }, @@ -12589,7 +12773,7 @@ pub mod software { for BeaconVersion { fn hash<_H: Hasher>(&self, _state: &mut _H) { match self { - BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, } => { + BeaconVersion::BeaconVersion{version, keyStore, keySource, standardBeacons, compoundBeacons, virtualFields, encryptedParts, signedParts, maximumNumberOfPartitions, defaultNumberOfPartitions, partitionSelector, } => { Hash::hash(version, _state); Hash::hash(keyStore, _state); Hash::hash(keySource, _state); @@ -12597,7 +12781,10 @@ pub mod software { Hash::hash(compoundBeacons, _state); Hash::hash(virtualFields, _state); Hash::hash(encryptedParts, _state); - Hash::hash(signedParts, _state) + Hash::hash(signedParts, _state); + Hash::hash(maximumNumberOfPartitions, _state); + Hash::hash(defaultNumberOfPartitions, _state); + Hash::hash(partitionSelector, _state) }, } } @@ -12614,7 +12801,10 @@ pub mod software { compoundBeacons: Default::default(), virtualFields: Default::default(), encryptedParts: Default::default(), - signedParts: Default::default() + signedParts: Default::default(), + maximumNumberOfPartitions: Default::default(), + defaultNumberOfPartitions: Default::default(), + partitionSelector: Default::default() } } } @@ -12626,13 +12816,13 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(51,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(54,3) pub type BeaconVersionList = Sequence>; - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(55,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(58,3) pub type Char = Sequence; - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(59,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(62,3) #[derive(PartialEq, Clone)] pub enum CompoundBeacon { CompoundBeacon { @@ -12744,10 +12934,10 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(66,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(69,3) pub type CompoundBeaconList = Sequence>; - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(70,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(73,3) #[derive(PartialEq, Clone)] pub enum Constructor { Constructor { @@ -12815,10 +13005,10 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(73,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(76,3) pub type ConstructorList = Sequence>; - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(77,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(80,3) #[derive(PartialEq, Clone)] pub enum ConstructorPart { ConstructorPart { @@ -12897,10 +13087,10 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(81,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(84,3) pub type ConstructorPartList = Sequence>; - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(85,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(88,3) #[derive(PartialEq, Clone)] pub enum CreateDynamoDbEncryptionBranchKeyIdSupplierInput { CreateDynamoDbEncryptionBranchKeyIdSupplierInput { @@ -12968,7 +13158,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(88,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(91,3) #[derive(PartialEq, Clone)] pub enum CreateDynamoDbEncryptionBranchKeyIdSupplierOutput { CreateDynamoDbEncryptionBranchKeyIdSupplierOutput { @@ -13036,7 +13226,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(91,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(94,3) pub struct IDynamoDbEncryptionClientCallHistory {} impl IDynamoDbEncryptionClientCallHistory { @@ -13051,15 +13241,15 @@ pub mod software { UpcastObjectFn!(DynAny); } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(99,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(102,3) pub trait IDynamoDbEncryptionClient: Any + Sync + Send + UpcastObject { - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(128,5) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(131,5) fn CreateDynamoDbEncryptionBranchKeyIdSupplier(&self, input: &Arc) -> Arc, Arc>>; - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(154,5) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(157,5) fn GetEncryptedDataKeyDescription(&self, input: &Arc) -> Arc, Arc>>; } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(168,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(171,3) #[derive(PartialEq, Clone)] pub enum DynamoDbEncryptionConfig { DynamoDbEncryptionConfig {} @@ -13121,7 +13311,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(171,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(174,3) pub struct IDynamoDbKeyBranchKeyIdSupplierCallHistory {} impl IDynamoDbKeyBranchKeyIdSupplierCallHistory { @@ -13136,9 +13326,9 @@ pub mod software { UpcastObjectFn!(DynAny); } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(177,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(180,3) pub trait IDynamoDbKeyBranchKeyIdSupplier: Any + Sync + Send + UpcastObject { - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(206,5) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(209,5) fn GetBranchKeyIdFromDdbKey(&self, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>>; @@ -13146,11 +13336,11 @@ pub mod software { output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(223,5) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(226,5) fn _GetBranchKeyIdFromDdbKey_k(&self, input: &Arc) -> Arc, Arc>>; } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(236,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(239,3) #[derive(PartialEq, Clone)] pub enum DynamoDbTableEncryptionConfig { DynamoDbTableEncryptionConfig { @@ -13339,7 +13529,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(251,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(254,3) #[derive(PartialEq, Clone)] pub enum DynamoDbTablesEncryptionConfig { DynamoDbTablesEncryptionConfig { @@ -13407,7 +13597,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(254,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(257,3) #[derive(PartialEq, Clone)] pub enum EncryptedDataKeyDescription { EncryptedDataKeyDescription { @@ -13508,7 +13698,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(261,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(264,3) #[derive(PartialEq, Clone)] pub enum EncryptedPart { EncryptedPart { @@ -13587,10 +13777,10 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(265,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(268,3) pub type EncryptedPartsList = Sequence>; - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(269,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(272,3) #[derive(PartialEq, Clone)] pub enum GetBranchKeyIdFromDdbKeyInput { GetBranchKeyIdFromDdbKeyInput { @@ -13658,7 +13848,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(272,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(275,3) #[derive(PartialEq, Clone)] pub enum GetBranchKeyIdFromDdbKeyOutput { GetBranchKeyIdFromDdbKeyOutput { @@ -13726,7 +13916,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(275,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(278,3) #[derive(PartialEq, Clone)] pub enum GetEncryptedDataKeyDescriptionInput { GetEncryptedDataKeyDescriptionInput { @@ -13794,7 +13984,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(278,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(281,3) #[derive(PartialEq, Clone)] pub enum GetEncryptedDataKeyDescriptionOutput { GetEncryptedDataKeyDescriptionOutput { @@ -13862,7 +14052,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(281,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(284,3) #[derive(PartialEq, Clone)] pub enum GetEncryptedDataKeyDescriptionUnion { header { @@ -13950,7 +14140,165 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(284,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(287,3) + #[derive(PartialEq, Clone)] + pub enum GetPartitionNumberInput { + GetPartitionNumberInput { + item: Map, Arc>, + numberOfPartitions: crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionCount, + logicalTableName: Sequence + } + } + + impl GetPartitionNumberInput { + /// Returns a borrow of the field item + pub fn item(&self) -> &Map, Arc> { + match self { + GetPartitionNumberInput::GetPartitionNumberInput{item, numberOfPartitions, logicalTableName, } => item, + } + } + /// Returns a borrow of the field numberOfPartitions + pub fn numberOfPartitions(&self) -> &crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionCount { + match self { + GetPartitionNumberInput::GetPartitionNumberInput{item, numberOfPartitions, logicalTableName, } => numberOfPartitions, + } + } + /// Returns a borrow of the field logicalTableName + pub fn logicalTableName(&self) -> &Sequence { + match self { + GetPartitionNumberInput::GetPartitionNumberInput{item, numberOfPartitions, logicalTableName, } => logicalTableName, + } + } + } + + impl Debug + for GetPartitionNumberInput { + fn fmt(&self, f: &mut Formatter) -> ::std::fmt::Result { + DafnyPrint::fmt_print(self, f, true) + } + } + + impl DafnyPrint + for GetPartitionNumberInput { + fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { + match self { + GetPartitionNumberInput::GetPartitionNumberInput{item, numberOfPartitions, logicalTableName, } => { + write!(_formatter, "software.amazon.cryptography.dbencryptionsdk.dynamodb.internaldafny.types.GetPartitionNumberInput.GetPartitionNumberInput(")?; + DafnyPrint::fmt_print(item, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(numberOfPartitions, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(logicalTableName, _formatter, false)?; + write!(_formatter, ")")?; + Ok(()) + }, + } + } + } + + impl Eq + for GetPartitionNumberInput {} + + impl Hash + for GetPartitionNumberInput { + fn hash<_H: Hasher>(&self, _state: &mut _H) { + match self { + GetPartitionNumberInput::GetPartitionNumberInput{item, numberOfPartitions, logicalTableName, } => { + Hash::hash(item, _state); + Hash::hash(numberOfPartitions, _state); + Hash::hash(logicalTableName, _state) + }, + } + } + } + + impl Default + for GetPartitionNumberInput { + fn default() -> GetPartitionNumberInput { + GetPartitionNumberInput::GetPartitionNumberInput { + item: Default::default(), + numberOfPartitions: Default::default(), + logicalTableName: Default::default() + } + } + } + + impl AsRef + for GetPartitionNumberInput { + fn as_ref(&self) -> &Self { + self + } + } + + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(292,3) + #[derive(PartialEq, Clone)] + pub enum GetPartitionNumberOutput { + GetPartitionNumberOutput { + partitionNumber: crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionNumber + } + } + + impl GetPartitionNumberOutput { + /// Returns a borrow of the field partitionNumber + pub fn partitionNumber(&self) -> &crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionNumber { + match self { + GetPartitionNumberOutput::GetPartitionNumberOutput{partitionNumber, } => partitionNumber, + } + } + } + + impl Debug + for GetPartitionNumberOutput { + fn fmt(&self, f: &mut Formatter) -> ::std::fmt::Result { + DafnyPrint::fmt_print(self, f, true) + } + } + + impl DafnyPrint + for GetPartitionNumberOutput { + fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { + match self { + GetPartitionNumberOutput::GetPartitionNumberOutput{partitionNumber, } => { + write!(_formatter, "software.amazon.cryptography.dbencryptionsdk.dynamodb.internaldafny.types.GetPartitionNumberOutput.GetPartitionNumberOutput(")?; + DafnyPrint::fmt_print(partitionNumber, _formatter, false)?; + write!(_formatter, ")")?; + Ok(()) + }, + } + } + } + + impl Eq + for GetPartitionNumberOutput {} + + impl Hash + for GetPartitionNumberOutput { + fn hash<_H: Hasher>(&self, _state: &mut _H) { + match self { + GetPartitionNumberOutput::GetPartitionNumberOutput{partitionNumber, } => { + Hash::hash(partitionNumber, _state) + }, + } + } + } + + impl Default + for GetPartitionNumberOutput { + fn default() -> GetPartitionNumberOutput { + GetPartitionNumberOutput::GetPartitionNumberOutput { + partitionNumber: Default::default() + } + } + } + + impl AsRef + for GetPartitionNumberOutput { + fn as_ref(&self) -> &Self { + self + } + } + + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(295,3) #[derive(PartialEq, Clone)] pub enum GetPrefix { GetPrefix { @@ -14018,7 +14366,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(287,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(298,3) #[derive(PartialEq, Clone)] pub enum GetSegment { GetSegment { @@ -14097,7 +14445,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(291,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(302,3) #[derive(PartialEq, Clone)] pub enum GetSegments { GetSegments { @@ -14187,7 +14535,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(296,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(307,3) #[derive(PartialEq, Clone)] pub enum GetSubstring { GetSubstring { @@ -14266,7 +14614,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(300,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(311,3) #[derive(PartialEq, Clone)] pub enum GetSuffix { GetSuffix { @@ -14334,7 +14682,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(303,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(314,3) #[derive(PartialEq, Clone)] pub enum Insert { Insert { @@ -14402,7 +14750,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(306,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(317,3) pub struct ILegacyDynamoDbEncryptorCallHistory {} impl ILegacyDynamoDbEncryptorCallHistory { @@ -14417,10 +14765,10 @@ pub mod software { UpcastObjectFn!(DynAny); } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(312,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(323,3) pub trait ILegacyDynamoDbEncryptor: Any + Sync + Send + UpcastObject {} - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(341,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(352,3) #[derive(PartialEq, Clone)] pub enum LegacyOverride { LegacyOverride { @@ -14521,7 +14869,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(347,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(358,3) #[derive(PartialEq, Clone)] pub enum LegacyPolicy { FORCE_LEGACY_ENCRYPT_ALLOW_LEGACY_DECRYPT {}, @@ -14599,7 +14947,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(351,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(362,3) #[derive(PartialEq, Clone)] pub enum Lower { Lower {} @@ -14661,7 +15009,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(354,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(365,3) #[derive(PartialEq, Clone)] pub enum MultiKeyStore { MultiKeyStore { @@ -14762,7 +15110,42 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(360,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(371,3) + pub type PartitionCount = i32; + + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(375,3) + pub type PartitionNumber = i32; + + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(379,3) + pub struct IPartitionSelectorCallHistory {} + + impl IPartitionSelectorCallHistory { + /// Allocates an UNINITIALIZED instance. Only the Dafny compiler should use that. + pub fn _allocate_object() -> Object { + allocate_object::() + } + } + + impl UpcastObject + for crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::IPartitionSelectorCallHistory { + UpcastObjectFn!(DynAny); + } + + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(385,3) + pub trait IPartitionSelector: Any + Sync + Send + UpcastObject { + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(414,5) + fn GetPartitionNumber(&self, input: &Arc) -> Arc, Arc>> { + let mut output: Arc, Arc>>; + let mut _out0: Arc, Arc>>; + _out0 = crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::IPartitionSelector::_GetPartitionNumber_k(rd!(Object::<_>::from_ref(self)), input); + output = _out0.clone(); + return output.clone(); + } + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(431,5) + fn _GetPartitionNumber_k(&self, input: &Arc) -> Arc, Arc>>; + } + + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(444,3) #[derive(PartialEq, Clone)] pub enum PartOnly { PartOnly {} @@ -14824,7 +15207,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(363,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(447,3) #[derive(PartialEq, Clone)] pub enum PlaintextOverride { FORCE_PLAINTEXT_WRITE_ALLOW_PLAINTEXT_READ {}, @@ -14902,10 +15285,10 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(367,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(451,3) pub type Prefix = Sequence; - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(371,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(455,3) #[derive(PartialEq, Clone)] pub enum SearchConfig { SearchConfig { @@ -14984,7 +15367,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(375,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(459,3) #[derive(PartialEq, Clone)] pub enum Shared { Shared { @@ -15052,7 +15435,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(378,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(462,3) #[derive(PartialEq, Clone)] pub enum SharedSet { SharedSet { @@ -15120,7 +15503,7 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(381,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(465,3) #[derive(PartialEq, Clone)] pub enum SignedPart { SignedPart { @@ -15210,10 +15593,10 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(386,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(470,3) pub type SignedPartsList = Sequence>; - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(390,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(474,3) #[derive(PartialEq, Clone)] pub enum SingleKeyStore { SingleKeyStore { @@ -15314,14 +15697,15 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(396,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(480,3) #[derive(PartialEq, Clone)] pub enum StandardBeacon { StandardBeacon { name: Sequence, length: crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconBitLength, loc: Arc>>, - style: Arc>> + style: Arc>>, + numberOfPartitions: Arc> } } @@ -15329,25 +15713,31 @@ pub mod software { /// Returns a borrow of the field name pub fn name(&self) -> &Sequence { match self { - StandardBeacon::StandardBeacon{name, length, loc, style, } => name, + StandardBeacon::StandardBeacon{name, length, loc, style, numberOfPartitions, } => name, } } /// Returns a borrow of the field length pub fn length(&self) -> &crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconBitLength { match self { - StandardBeacon::StandardBeacon{name, length, loc, style, } => length, + StandardBeacon::StandardBeacon{name, length, loc, style, numberOfPartitions, } => length, } } /// Returns a borrow of the field loc pub fn loc(&self) -> &Arc>> { match self { - StandardBeacon::StandardBeacon{name, length, loc, style, } => loc, + StandardBeacon::StandardBeacon{name, length, loc, style, numberOfPartitions, } => loc, } } /// Returns a borrow of the field style pub fn style(&self) -> &Arc>> { match self { - StandardBeacon::StandardBeacon{name, length, loc, style, } => style, + StandardBeacon::StandardBeacon{name, length, loc, style, numberOfPartitions, } => style, + } + } + /// Returns a borrow of the field numberOfPartitions + pub fn numberOfPartitions(&self) -> &Arc> { + match self { + StandardBeacon::StandardBeacon{name, length, loc, style, numberOfPartitions, } => numberOfPartitions, } } } @@ -15363,7 +15753,7 @@ pub mod software { for StandardBeacon { fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { match self { - StandardBeacon::StandardBeacon{name, length, loc, style, } => { + StandardBeacon::StandardBeacon{name, length, loc, style, numberOfPartitions, } => { write!(_formatter, "software.amazon.cryptography.dbencryptionsdk.dynamodb.internaldafny.types.StandardBeacon.StandardBeacon(")?; DafnyPrint::fmt_print(name, _formatter, false)?; write!(_formatter, ", ")?; @@ -15372,6 +15762,8 @@ pub mod software { DafnyPrint::fmt_print(loc, _formatter, false)?; write!(_formatter, ", ")?; DafnyPrint::fmt_print(style, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(numberOfPartitions, _formatter, false)?; write!(_formatter, ")")?; Ok(()) }, @@ -15386,11 +15778,12 @@ pub mod software { for StandardBeacon { fn hash<_H: Hasher>(&self, _state: &mut _H) { match self { - StandardBeacon::StandardBeacon{name, length, loc, style, } => { + StandardBeacon::StandardBeacon{name, length, loc, style, numberOfPartitions, } => { Hash::hash(name, _state); Hash::hash(length, _state); Hash::hash(loc, _state); - Hash::hash(style, _state) + Hash::hash(style, _state); + Hash::hash(numberOfPartitions, _state) }, } } @@ -15403,7 +15796,8 @@ pub mod software { name: Default::default(), length: Default::default(), loc: Default::default(), - style: Default::default() + style: Default::default(), + numberOfPartitions: Default::default() } } } @@ -15415,13 +15809,13 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(402,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(487,3) pub type StandardBeaconList = Sequence>; - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(406,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(491,3) pub type TerminalLocation = Sequence; - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(410,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(495,3) #[derive(PartialEq, Clone)] pub enum Upper { Upper {} @@ -15483,10 +15877,10 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(413,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(498,3) pub type VersionNumber = i32; - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(417,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(502,3) #[derive(PartialEq, Clone)] pub enum VirtualField { VirtualField { @@ -15565,10 +15959,10 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(421,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(506,3) pub type VirtualFieldList = Sequence>; - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(425,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(510,3) #[derive(PartialEq, Clone)] pub enum VirtualPart { VirtualPart { @@ -15647,10 +16041,10 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(429,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(514,3) pub type VirtualPartList = Sequence>; - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(433,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(518,3) #[derive(PartialEq, Clone)] pub enum VirtualTransform { upper { @@ -15900,10 +16294,10 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(442,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(527,3) pub type VirtualTransformList = Sequence>; - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(446,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(531,3) #[derive(PartialEq, Clone)] pub enum Error { DynamoDbEncryptionException { @@ -16195,10 +16589,10 @@ pub mod software { } } - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(485,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(570,3) pub type OpaqueError = Arc; - /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(488,3) + /// dafny/DynamoDbEncryption/Model/AwsCryptographyDbEncryptionSdkDynamoDbTypes.dfy(573,3) pub type DummySubsetType = DafnyInt; /// An element of DummySubsetType @@ -55510,7 +55904,7 @@ pub mod software { } /// ../submodules/MaterialProviders/ComAmazonawsKms/src/Index.dfy(31,3) pub fn DafnyUserAgentSuffix(runtime: &Sequence) -> Sequence { - let mut version: Sequence = string_utf16_of("2.0.0"); + let mut version: Sequence = string_utf16_of("CI"); string_utf16_of("AwsCryptographicMPL/").concat(runtime).concat(&string_utf16_of("/")).concat(&version) } /// ../submodules/MaterialProviders/ComAmazonawsKms/Model/ComAmazonawsKmsTypes.dfy(2006,3) @@ -69302,6 +69696,7 @@ pub mod _AttributeResolver_Compile { pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; pub use ::dafny_runtime::map; pub use crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::TableConfig; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionNumber; pub use ::dafny_runtime::Map; pub use ::dafny_runtime::Sequence; pub use ::dafny_runtime::DafnyCharUTF16; @@ -69309,7 +69704,7 @@ pub mod _AttributeResolver_Compile { pub struct _default {} impl _default { - /// dafny/DynamoDbEncryptionTransforms/src/AttributeResolver.dfy(16,3) + /// dafny/DynamoDbEncryptionTransforms/src/AttributeResolver.dfy(17,3) pub fn Resolve(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); if !config.tableEncryptionConfigs().contains(input.TableName()) || matches!(config.tableEncryptionConfigs().get(input.TableName()).search().as_ref(), None{ .. }) { @@ -69322,22 +69717,30 @@ pub mod _AttributeResolver_Compile { return output.read(); } else { let mut tableConfig: Arc = config.tableEncryptionConfigs().get(input.TableName()); - let mut valueOrError0: Arc, Sequence>, Arc>>; - let mut _out0: Arc, Sequence>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetVirtualFields(tableConfig.search().value(), input.Item(), input.Version()); + let mut valueOrError0: Arc>>; + let mut _out0: Arc>> = crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::GetRandomPartition(&tableConfig, input.Item()); valueOrError0 = _out0.clone(); if valueOrError0.IsFailure() { output = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); return output.read(); }; - let mut vf: Map, Sequence> = valueOrError0.Extract(); + let mut partition: PartitionNumber = valueOrError0.Extract(); let mut valueOrError1: Arc, Sequence>, Arc>>; - let mut _out1: Arc, Sequence>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetCompoundBeacons(tableConfig.search().value(), input.Item(), input.Version()); + let mut _out1: Arc, Sequence>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetVirtualFields(tableConfig.search().value(), input.Item(), input.Version()); valueOrError1 = _out1.clone(); if valueOrError1.IsFailure() { output = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); return output.read(); }; - let mut cb: Map, Sequence> = valueOrError1.Extract(); + let mut vf: Map, Sequence> = valueOrError1.Extract(); + let mut valueOrError2: Arc, Sequence>, Arc>>; + let mut _out2: Arc, Sequence>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetCompoundBeacons(tableConfig.search().value(), input.Item(), input.Version(), partition); + valueOrError2 = _out2.clone(); + if valueOrError2.IsFailure() { + output = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); + return output.read(); + }; + let mut cb: Map, Sequence> = valueOrError2.Extract(); output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: Arc::new(ResolveAttributesOutput::ResolveAttributesOutput { VirtualFields: vf.clone(), @@ -71251,7 +71654,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbOperations_Compile { }); return output.clone(); } - /// dafny/DynamoDbEncryption/src/AwsCryptographyDbEncryptionSdkDynamoDbOperations.dfy(49,3) + /// dafny/DynamoDbEncryption/src/AwsCryptographyDbEncryptionSdkDynamoDbOperations.dfy(50,3) pub fn GetEncryptedDataKeyDescription(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut header: Sequence; @@ -71455,7 +71858,7 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbOperations_Compile { } } } -/// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(21,1) +/// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(22,1) pub mod _AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations_Compile { pub use ::std::sync::Arc; pub use crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::Config; @@ -71515,199 +71918,208 @@ pub mod _AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::ExecuteTransactionOutputTransformOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::ResolveAttributesInput; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::ResolveAttributesOutput; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesInput; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesOutput; pub struct _default {} impl _default { - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(62,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(64,3) pub fn PutItemInputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_PutItemTransform_Compile::_default::Input(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(71,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(73,3) pub fn PutItemOutputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_PutItemTransform_Compile::_default::Output(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(80,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(82,3) pub fn GetItemInputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_GetItemTransform_Compile::_default::Input(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(89,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(91,3) pub fn GetItemOutputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_GetItemTransform_Compile::_default::Output(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(98,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(100,3) pub fn UpdateItemInputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_UpdateItemTransform_Compile::_default::Input(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(107,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(109,3) pub fn UpdateItemOutputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_UpdateItemTransform_Compile::_default::Output(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(116,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(118,3) pub fn BatchWriteItemInputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_BatchWriteItemTransform_Compile::_default::Input(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(125,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(127,3) pub fn BatchWriteItemOutputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_BatchWriteItemTransform_Compile::_default::Output(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(134,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(136,3) pub fn TransactWriteItemsInputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_TransactWriteItemsTransform_Compile::_default::Input(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(143,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(145,3) pub fn TransactWriteItemsOutputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_TransactWriteItemsTransform_Compile::_default::Output(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(152,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(154,3) pub fn BatchGetItemInputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_BatchGetItemTransform_Compile::_default::Input(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(161,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(163,3) pub fn BatchGetItemOutputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_BatchGetItemTransform_Compile::_default::Output(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(170,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(172,3) pub fn ScanInputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_ScanTransform_Compile::_default::Input(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(179,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(181,3) pub fn ScanOutputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_ScanTransform_Compile::_default::Output(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(188,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(190,3) pub fn QueryInputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_QueryTransform_Compile::_default::Input(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(197,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(199,3) pub fn QueryOutputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_QueryTransform_Compile::_default::Output(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(206,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(208,3) pub fn TransactGetItemsInputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_TransactGetItemsTransform_Compile::_default::Input(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(215,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(217,3) pub fn TransactGetItemsOutputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_TransactGetItemsTransform_Compile::_default::Output(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(224,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(226,3) pub fn DeleteItemInputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_DeleteItemTransform_Compile::_default::Input(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(233,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(235,3) pub fn DeleteItemOutputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_DeleteItemTransform_Compile::_default::Output(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(242,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(244,3) pub fn ExecuteStatementInputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_ExecuteStatementTransform_Compile::_default::Input(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(251,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(253,3) pub fn ExecuteStatementOutputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_ExecuteStatementTransform_Compile::_default::Output(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(260,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(262,3) pub fn BatchExecuteStatementInputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_BatchExecuteStatementTransform_Compile::_default::Input(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(269,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(271,3) pub fn BatchExecuteStatementOutputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_BatchExecuteStatementTransform_Compile::_default::Output(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(278,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(280,3) pub fn ExecuteTransactionInputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_ExecuteTransactionTransform_Compile::_default::Input(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(287,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(289,3) pub fn ExecuteTransactionOutputTransform(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_ExecuteTransactionTransform_Compile::_default::Output(config, input); output = _out0.clone(); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(297,3) + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(299,3) pub fn ResolveAttributes(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_AttributeResolver_Compile::_default::Resolve(config, input); output = _out0.clone(); return output.clone(); } + /// dafny/DynamoDbEncryptionTransforms/src/AwsCryptographyDbEncryptionSdkDynamoDbTransformsOperations.dfy(308,3) + pub fn GetNumberOfQueries(config: &Arc, input: &Arc) -> Arc, Arc>> { + let mut output: Arc, Arc>>; + let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_NumberOfQueries_Compile::_default::Get(config, input); + output = _out0.clone(); + return output.clone(); + } } } /// dafny/StructuredEncryption/src/AwsCryptographyDbEncryptionSdkStructuredEncryptionOperations.dfy(13,1) @@ -81779,6 +82191,7 @@ pub mod _BaseBeacon_Compile { pub use ::dafny_runtime::Sequence; pub use ::dafny_runtime::DafnyCharUTF16; pub use ::std::sync::Arc; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionCount; pub use crate::implementation_from_dafny::_TermLoc_Compile::TermLoc; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub use ::dafny_runtime::string_utf16_of; @@ -81799,6 +82212,7 @@ pub mod _BaseBeacon_Compile { pub use ::std::ops::Div; pub use ::std::cmp::PartialOrd; pub use ::std::cmp::Ordering; + pub use crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::PartitionBytes; pub use crate::implementation_from_dafny::UTF8::ValidUTF8Bytes; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Failure; pub use crate::implementation_from_dafny::software::amazon::cryptography::primitives::internaldafny::types::HMacInput; @@ -81808,6 +82222,9 @@ pub mod _BaseBeacon_Compile { pub use ::std::fmt::Debug; pub use ::std::cmp::Eq; pub use ::std::convert::AsRef; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionNumber; + pub use ::dafny_runtime::truncate; + pub use ::dafny_runtime::euclidian_modulo; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue; @@ -81827,8 +82244,8 @@ pub mod _BaseBeacon_Compile { pub struct _default {} impl _default { - /// dafny/DynamoDbEncryption/src/Beacon.dfy(107,3) - pub fn MakeStandardBeacon(client: &Object, name: &Sequence, length: u8, loc: &Sequence, partOnly: bool, asSet: bool, share: &Arc>>) -> Arc>> { + /// dafny/DynamoDbEncryption/src/Beacon.dfy(108,3) + pub fn MakeStandardBeacon(client: &Object, name: &Sequence, length: u8, loc: &Sequence, partOnly: bool, asSet: bool, share: &Arc>>, numberOfPartitions: PartitionCount) -> Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_TermLoc_Compile::_default::MakeTermLoc(loc); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() @@ -81850,17 +82267,18 @@ pub mod _BaseBeacon_Compile { loc: termLoc.clone(), partOnly: partOnly, asSet: asSet, - share: share.clone() + share: share.clone(), + numberOfPartitions: numberOfPartitions }) }) } } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(394,3) + /// dafny/DynamoDbEncryption/src/Beacon.dfy(413,3) pub fn CharsFromBeaconLength(bits: u8) -> nat { int!((bits + 3) / 4) } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(401,3) + /// dafny/DynamoDbEncryption/src/Beacon.dfy(420,3) pub fn TopBits(bits: u8) -> u8 { let mut x: u8 = bits % 4; if x == 0 { @@ -81869,11 +82287,11 @@ pub mod _BaseBeacon_Compile { x } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(409,3) + /// dafny/DynamoDbEncryption/src/Beacon.dfy(428,3) pub fn BytesFromBeaconLength(bits: u8) -> nat { int!((bits + 7) / 8) } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(416,3) + /// dafny/DynamoDbEncryption/src/Beacon.dfy(435,3) pub fn TruncateNibble(nibble: Nibble, length: u8) -> Nibble { if length == 4 { nibble @@ -81889,7 +82307,7 @@ pub mod _BaseBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(426,3) + /// dafny/DynamoDbEncryption/src/Beacon.dfy(445,3) pub fn BytesToHex(bytes: &Sequence, bits: u8) -> Sequence { let mut numBytes: nat = _default::BytesFromBeaconLength(bits); let mut numChars: nat = _default::CharsFromBeaconLength(bits); @@ -81905,7 +82323,7 @@ pub mod _BaseBeacon_Compile { } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(31,3) + /// dafny/DynamoDbEncryption/src/Beacon.dfy(32,3) #[derive(Clone, PartialEq, Copy)] #[repr(transparent)] pub struct BeaconLength(pub u8); @@ -81997,10 +82415,10 @@ pub mod _BaseBeacon_Compile { } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(34,3) + /// dafny/DynamoDbEncryption/src/Beacon.dfy(35,3) pub type Nibble = u8; - /// dafny/DynamoDbEncryption/src/Beacon.dfy(36,3) + /// dafny/DynamoDbEncryption/src/Beacon.dfy(37,3) #[derive(PartialEq, Clone)] pub enum BeaconBase { BeaconBase { @@ -82011,9 +82429,9 @@ pub mod _BaseBeacon_Compile { } impl BeaconBase { - /// dafny/DynamoDbEncryption/src/Beacon.dfy(45,5) - pub fn hash(self: &Arc, val: &Sequence, key: &Sequence, length: u8) -> Arc, Arc>> { - let mut valueOrError0: Arc, Arc>> = self.getHmac(val, key); + /// dafny/DynamoDbEncryption/src/Beacon.dfy(46,5) + pub fn hash(self: &Arc, val: &Sequence, key: &Sequence, length: u8, partition: &PartitionBytes) -> Arc, Arc>> { + let mut valueOrError0: Arc, Arc>> = self.getHmac(&val.concat(partition), key); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { @@ -82023,18 +82441,18 @@ pub mod _BaseBeacon_Compile { }) } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(72,5) - pub fn hashStr(self: &Arc, val: &Sequence, key: &Sequence, length: u8) -> Arc, Arc>> { + /// dafny/DynamoDbEncryption/src/Beacon.dfy(73,5) + pub fn hashStr(self: &Arc, val: &Sequence, key: &Sequence, length: u8, partition: &PartitionBytes) -> Arc, Arc>> { let mut str: Arc>> = crate::implementation_from_dafny::UTF8::_default::Encode(val); if matches!((&str).as_ref(), Failure{ .. }) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(str.error()) }) } else { - self.hash(str.value(), key, length) + self.hash(str.value(), key, length, partition) } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(83,5) + /// dafny/DynamoDbEncryption/src/Beacon.dfy(84,5) pub fn getHmac(self: &Arc, data: &Sequence, key: &Sequence) -> Arc, Arc>> { let mut input: Arc = Arc::new(HMacInput::HMacInput { digestAlgorithm: Arc::new(DigestAlgorithm::SHA_384 {}), @@ -82136,10 +82554,10 @@ pub mod _BaseBeacon_Compile { } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(105,3) + /// dafny/DynamoDbEncryption/src/Beacon.dfy(106,3) pub type ValidStandardBeacon = Arc; - /// dafny/DynamoDbEncryption/src/Beacon.dfy(137,3) + /// dafny/DynamoDbEncryption/src/Beacon.dfy(140,3) #[derive(PartialEq, Clone)] pub enum StandardBeacon { StandardBeacon { @@ -82148,16 +82566,26 @@ pub mod _BaseBeacon_Compile { loc: TermLoc, partOnly: bool, asSet: bool, - share: Arc>> + share: Arc>>, + numberOfPartitions: PartitionCount } } impl StandardBeacon { - /// dafny/DynamoDbEncryption/src/Beacon.dfy(145,5) - pub fn hash(self: &Arc, val: &Sequence, key: &Sequence) -> Arc, Arc>> { - self.base().hash(val, key, self.length().clone()) + /// dafny/DynamoDbEncryption/src/Beacon.dfy(153,5) + pub fn constrained_partition(self: &Arc, partition: PartitionNumber) -> PartitionBytes { + if self.numberOfPartitions().clone() == 0 || partition == 0 { + crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::PartitionNumberToBytes(partition) + } else { + let mut newPartition: PartitionNumber = truncate!(euclidian_modulo(int!(partition), int!(self.numberOfPartitions().clone())), i32); + crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::PartitionNumberToBytes(newPartition) + } + } + /// dafny/DynamoDbEncryption/src/Beacon.dfy(162,5) + pub fn hash(self: &Arc, val: &Sequence, key: &Sequence, partition: PartitionNumber) -> Arc, Arc>> { + self.base().hash(val, key, self.length().clone(), &self.constrained_partition(partition)) } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(160,5) + /// dafny/DynamoDbEncryption/src/Beacon.dfy(179,5) pub fn keyName(self: &Arc) -> Sequence { if matches!(self.share().as_ref(), Some{ .. }) { self.share().value().clone() @@ -82165,8 +82593,8 @@ pub mod _BaseBeacon_Compile { self.base().name().clone() } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(173,5) - pub fn hashStr(self: &Arc, val: &Sequence, keys: &Map, Sequence>) -> Arc, Arc>> { + /// dafny/DynamoDbEncryption/src/Beacon.dfy(192,5) + pub fn hashStr(self: &Arc, val: &Sequence, keys: &Map, Sequence>, partition: PartitionNumber) -> Arc, Arc>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(keys.contains(&self.keyName()), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Internal Error, no key for ").concat(&self.keyName()))); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() @@ -82177,16 +82605,17 @@ pub mod _BaseBeacon_Compile { error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(str.error()) }) } else { - self.hash(str.value(), &keys.get(&self.keyName())) + self.hash(str.value(), &keys.get(&self.keyName()), partition) } } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(196,5) - pub fn ValueToSet(self: &Arc, value: &Arc, key: &Sequence) -> Arc, Arc>> { + /// dafny/DynamoDbEncryption/src/Beacon.dfy(215,5) + pub fn ValueToSet(self: &Arc, value: &Arc, key: &Sequence, partition: PartitionNumber) -> Arc, Arc>> { let mut valueOrError0: Arc>, Arc>> = (&({ let mut key = key.clone(); let mut _this = self.clone(); let mut value = value.clone(); + let mut partition = partition.clone(); Arc::new(move |_source0: &Arc| -> Arc>, Arc>>{ if matches!(_source0.as_ref(), S{ .. }) { let mut ___mcc_h0: Sequence = _source0.S().clone(); @@ -82209,17 +82638,17 @@ pub mod _BaseBeacon_Compile { if matches!(_source0.as_ref(), SS{ .. }) { let mut ___mcc_h6: Sequence> = _source0.SS().clone(); let mut n: Sequence> = ___mcc_h6.clone(); - _this.BeaconizeStringSet(&n, &key, &(seq![] as Sequence>)) + _this.BeaconizeStringSet(&n, &key, partition, &(seq![] as Sequence>)) } else { if matches!(_source0.as_ref(), NS{ .. }) { let mut ___mcc_h8: Sequence> = _source0.NS().clone(); let mut n: Sequence> = ___mcc_h8.clone(); - _this.BeaconizeNumberSet(&n, &key, &(seq![] as Sequence>)) + _this.BeaconizeNumberSet(&n, &key, partition, &(seq![] as Sequence>)) } else { if matches!(_source0.as_ref(), BS{ .. }) { let mut ___mcc_h10: Sequence> = _source0.BS().clone(); let mut n: Sequence> = ___mcc_h10.clone(); - _this.BeaconizeBinarySet(&n, &key, &(seq![] as Sequence>)) + _this.BeaconizeBinarySet(&n, &key, partition, &(seq![] as Sequence>)) } else { if matches!(_source0.as_ref(), M{ .. }) { let mut ___mcc_h12: Map, Arc> = _source0.M().clone(); @@ -82270,23 +82699,23 @@ pub mod _BaseBeacon_Compile { /// # * If this beacon is marked AsSet then this operation MUST return the /// # [set value](#value-for-a-set-standard-beacon), /// # otherwise it MUST return the [non-set value](#value-for-a-non-set-standard-beacon) - /// dafny/DynamoDbEncryption/src/Beacon.dfy(215,5) - pub fn getHash(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap, key: &Sequence) -> Arc>>, Arc>> { + /// dafny/DynamoDbEncryption/src/Beacon.dfy(234,5) + pub fn getHash(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap, key: &Sequence, partition: PartitionNumber) -> Arc>>, Arc>> { if self.asSet().clone() { - self.getHashSet(item, key) + self.getHashSet(item, key, partition) } else { - self.getHashNonSet(item, vf, key) + self.getHashNonSet(item, vf, key, partition) } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(230,5) - pub fn getHashSet(self: &Arc, item: &Map, Arc>, key: &Sequence) -> Arc>>, Arc>> { + /// dafny/DynamoDbEncryption/src/Beacon.dfy(249,5) + pub fn getHashSet(self: &Arc, item: &Map, Arc>, key: &Sequence, partition: PartitionNumber) -> Arc>>, Arc>> { let mut value: Arc>> = crate::implementation_from_dafny::_TermLoc_Compile::_default::TermToAttr(self.loc(), item, &Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Option::, Sequence>>::None {})); if matches!((&value).as_ref(), None{ .. }) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>>, Arc>::Success { value: Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Option::>::None {}) }) } else { - let mut valueOrError0: Arc, Arc>> = self.ValueToSet(value.value(), key); + let mut valueOrError0: Arc, Arc>> = self.ValueToSet(value.value(), key, partition); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>>>() } else { @@ -82299,8 +82728,8 @@ pub mod _BaseBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(260,5) - pub fn getHashNonSet(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap, key: &Sequence) -> Arc>>, Arc>> { + /// dafny/DynamoDbEncryption/src/Beacon.dfy(279,5) + pub fn getHashNonSet(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap, key: &Sequence, partition: PartitionNumber) -> Arc>>, Arc>> { let mut valueOrError0: Arc>>, Arc>> = crate::implementation_from_dafny::_DdbVirtualFields_Compile::_default::VirtToBytes(self.loc(), item, vf); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>>>() @@ -82311,7 +82740,7 @@ pub mod _BaseBeacon_Compile { value: Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Option::>::None {}) }) } else { - let mut valueOrError1: Arc, Arc>> = self.hash(bytes.value(), key); + let mut valueOrError1: Arc, Arc>> = self.hash(bytes.value(), key, partition); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>>>() } else { @@ -82327,11 +82756,11 @@ pub mod _BaseBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(293,5) + /// dafny/DynamoDbEncryption/src/Beacon.dfy(312,5) pub fn getNaked(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap) -> Arc>>, Arc>> { crate::implementation_from_dafny::_DdbVirtualFields_Compile::_default::VirtToAttr(self.loc(), item, vf) } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(298,5) + /// dafny/DynamoDbEncryption/src/Beacon.dfy(317,5) pub fn GetFields(self: &Arc, virtualFields: &VirtualFieldMap) -> Sequence> { if virtualFields.contains(self.loc().get(&int!(0)).key()) { VirtField::GetFields(&virtualFields.get(self.loc().get(&int!(0)).key())) @@ -82339,16 +82768,18 @@ pub mod _BaseBeacon_Compile { seq![self.loc().get(&int!(0)).key().clone()] } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(306,5) - pub fn BeaconizeStringSet(self: &Arc, value: &Sequence>, key: &Sequence, converted: &Sequence>) -> Arc>, Arc>> { + /// dafny/DynamoDbEncryption/src/Beacon.dfy(325,5) + pub fn BeaconizeStringSet(self: &Arc, value: &Sequence>, key: &Sequence, partition: PartitionNumber, converted: &Sequence>) -> Arc>, Arc>> { let mut _this = self.clone(); let mut _r0 = value.clone(); let mut _r1 = key.clone(); - let mut _r2 = converted.clone(); + let mut _r2 = partition; + let mut _r3 = converted.clone(); 'TAIL_CALL_START: loop { let value = _r0; let key = _r1; - let converted = _r2; + let partition = _r2; + let converted = _r3; if value.cardinality() == int!(0) { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>, Arc>::Success { value: converted.clone() @@ -82368,7 +82799,7 @@ pub mod _BaseBeacon_Compile { return valueOrError0.PropagateFailure::>>(); } else { let mut bytes: Sequence = valueOrError0.Extract(); - let mut valueOrError1: Arc, Arc>> = _this.hash(&bytes, &key); + let mut valueOrError1: Arc, Arc>> = _this.hash(&bytes, &key, partition); if valueOrError1.IsFailure() { return valueOrError1.PropagateFailure::>>(); } else { @@ -82377,21 +82808,25 @@ pub mod _BaseBeacon_Compile { let mut _in0: Arc = _this.clone(); let mut _in1: Sequence> = value.drop(&int!(1)); let mut _in2: Sequence = key.clone(); - let mut _in3: Sequence> = converted.clone(); + let mut _in3: PartitionNumber = partition; + let mut _in4: Sequence> = converted.clone(); _this = _in0.clone(); _r0 = _in1.clone(); _r1 = _in2.clone(); - _r2 = _in3.clone(); + _r2 = _in3; + _r3 = _in4.clone(); continue 'TAIL_CALL_START; } else { - let mut _in4: Arc = _this.clone(); - let mut _in5: Sequence> = value.drop(&int!(1)); - let mut _in6: Sequence = key.clone(); - let mut _in7: Sequence> = converted.concat(&seq![h.clone()]); - _this = _in4.clone(); - _r0 = _in5.clone(); - _r1 = _in6.clone(); - _r2 = _in7.clone(); + let mut _in5: Arc = _this.clone(); + let mut _in6: Sequence> = value.drop(&int!(1)); + let mut _in7: Sequence = key.clone(); + let mut _in8: PartitionNumber = partition; + let mut _in9: Sequence> = converted.concat(&seq![h.clone()]); + _this = _in5.clone(); + _r0 = _in6.clone(); + _r1 = _in7.clone(); + _r2 = _in8; + _r3 = _in9.clone(); continue 'TAIL_CALL_START; } } @@ -82399,16 +82834,18 @@ pub mod _BaseBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(323,5) - pub fn BeaconizeNumberSet(self: &Arc, value: &Sequence>, key: &Sequence, converted: &Sequence>) -> Arc>, Arc>> { + /// dafny/DynamoDbEncryption/src/Beacon.dfy(342,5) + pub fn BeaconizeNumberSet(self: &Arc, value: &Sequence>, key: &Sequence, partition: PartitionNumber, converted: &Sequence>) -> Arc>, Arc>> { let mut _this = self.clone(); let mut _r0 = value.clone(); let mut _r1 = key.clone(); - let mut _r2 = converted.clone(); + let mut _r2 = partition; + let mut _r3 = converted.clone(); 'TAIL_CALL_START: loop { let value = _r0; let key = _r1; - let converted = _r2; + let partition = _r2; + let converted = _r3; if value.cardinality() == int!(0) { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>, Arc>::Success { value: converted.clone() @@ -82428,7 +82865,7 @@ pub mod _BaseBeacon_Compile { return valueOrError0.PropagateFailure::>>(); } else { let mut bytes: Sequence = valueOrError0.Extract(); - let mut valueOrError1: Arc, Arc>> = _this.hash(&bytes, &key); + let mut valueOrError1: Arc, Arc>> = _this.hash(&bytes, &key, partition); if valueOrError1.IsFailure() { return valueOrError1.PropagateFailure::>>(); } else { @@ -82437,21 +82874,25 @@ pub mod _BaseBeacon_Compile { let mut _in0: Arc = _this.clone(); let mut _in1: Sequence> = value.drop(&int!(1)); let mut _in2: Sequence = key.clone(); - let mut _in3: Sequence> = converted.clone(); + let mut _in3: PartitionNumber = partition; + let mut _in4: Sequence> = converted.clone(); _this = _in0.clone(); _r0 = _in1.clone(); _r1 = _in2.clone(); - _r2 = _in3.clone(); + _r2 = _in3; + _r3 = _in4.clone(); continue 'TAIL_CALL_START; } else { - let mut _in4: Arc = _this.clone(); - let mut _in5: Sequence> = value.drop(&int!(1)); - let mut _in6: Sequence = key.clone(); - let mut _in7: Sequence> = converted.concat(&seq![h.clone()]); - _this = _in4.clone(); - _r0 = _in5.clone(); - _r1 = _in6.clone(); - _r2 = _in7.clone(); + let mut _in5: Arc = _this.clone(); + let mut _in6: Sequence> = value.drop(&int!(1)); + let mut _in7: Sequence = key.clone(); + let mut _in8: PartitionNumber = partition; + let mut _in9: Sequence> = converted.concat(&seq![h.clone()]); + _this = _in5.clone(); + _r0 = _in6.clone(); + _r1 = _in7.clone(); + _r2 = _in8; + _r3 = _in9.clone(); continue 'TAIL_CALL_START; } } @@ -82459,16 +82900,18 @@ pub mod _BaseBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(340,5) - pub fn BeaconizeBinarySet(self: &Arc, value: &Sequence>, key: &Sequence, converted: &Sequence>) -> Arc>, Arc>> { + /// dafny/DynamoDbEncryption/src/Beacon.dfy(359,5) + pub fn BeaconizeBinarySet(self: &Arc, value: &Sequence>, key: &Sequence, partition: PartitionNumber, converted: &Sequence>) -> Arc>, Arc>> { let mut _this = self.clone(); let mut _r0 = value.clone(); let mut _r1 = key.clone(); - let mut _r2 = converted.clone(); + let mut _r2 = partition; + let mut _r3 = converted.clone(); 'TAIL_CALL_START: loop { let value = _r0; let key = _r1; - let converted = _r2; + let partition = _r2; + let converted = _r3; if value.cardinality() == int!(0) { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>, Arc>::Success { value: converted.clone() @@ -82488,7 +82931,7 @@ pub mod _BaseBeacon_Compile { return valueOrError0.PropagateFailure::>>(); } else { let mut bytes: Sequence = valueOrError0.Extract(); - let mut valueOrError1: Arc, Arc>> = _this.hash(&bytes, &key); + let mut valueOrError1: Arc, Arc>> = _this.hash(&bytes, &key, partition); if valueOrError1.IsFailure() { return valueOrError1.PropagateFailure::>>(); } else { @@ -82497,21 +82940,25 @@ pub mod _BaseBeacon_Compile { let mut _in0: Arc = _this.clone(); let mut _in1: Sequence> = value.drop(&int!(1)); let mut _in2: Sequence = key.clone(); - let mut _in3: Sequence> = converted.clone(); + let mut _in3: PartitionNumber = partition; + let mut _in4: Sequence> = converted.clone(); _this = _in0.clone(); _r0 = _in1.clone(); _r1 = _in2.clone(); - _r2 = _in3.clone(); + _r2 = _in3; + _r3 = _in4.clone(); continue 'TAIL_CALL_START; } else { - let mut _in4: Arc = _this.clone(); - let mut _in5: Sequence> = value.drop(&int!(1)); - let mut _in6: Sequence = key.clone(); - let mut _in7: Sequence> = converted.concat(&seq![h.clone()]); - _this = _in4.clone(); - _r0 = _in5.clone(); - _r1 = _in6.clone(); - _r2 = _in7.clone(); + let mut _in5: Arc = _this.clone(); + let mut _in6: Sequence> = value.drop(&int!(1)); + let mut _in7: Sequence = key.clone(); + let mut _in8: PartitionNumber = partition; + let mut _in9: Sequence> = converted.concat(&seq![h.clone()]); + _this = _in5.clone(); + _r0 = _in6.clone(); + _r1 = _in7.clone(); + _r2 = _in8; + _r3 = _in9.clone(); continue 'TAIL_CALL_START; } } @@ -82519,13 +82966,13 @@ pub mod _BaseBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(357,5) - pub fn GetBeaconValue(self: &Arc, value: &Arc, key: &Sequence, forContains: bool) -> Arc, Arc>> { + /// dafny/DynamoDbEncryption/src/Beacon.dfy(376,5) + pub fn GetBeaconValue(self: &Arc, value: &Arc, key: &Sequence, forContains: bool, partition: PartitionNumber) -> Arc, Arc>> { if self.asSet().clone() && !matches!(value.as_ref(), S{ .. }) && !matches!(value.as_ref(), N{ .. }) && !matches!(value.as_ref(), B{ .. }) { - self.ValueToSet(value, key) + self.ValueToSet(value, key, partition) } else { if forContains && (matches!(value.as_ref(), SS{ .. }) || matches!(value.as_ref(), NS{ .. }) || matches!(value.as_ref(), BS{ .. })) { - self.ValueToSet(value, key) + self.ValueToSet(value, key, partition) } else { let mut valueOrError0: Arc, Arc>> = crate::implementation_from_dafny::_DynamoToStruct_Compile::_default::TopLevelAttributeToBytes(value).MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ @@ -82536,7 +82983,7 @@ pub mod _BaseBeacon_Compile { valueOrError0.PropagateFailure::>() } else { let mut bytes: Sequence = valueOrError0.Extract(); - let mut valueOrError1: Arc, Arc>> = self.hash(&bytes, key); + let mut valueOrError1: Arc, Arc>> = self.hash(&bytes, key, partition); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { @@ -82551,44 +82998,50 @@ pub mod _BaseBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/Beacon.dfy(374,5) - pub fn getPart(self: &Arc, val: &Sequence, key: &Sequence) -> Arc, Arc>> { - self.base().hash(val, key, self.length().clone()) + /// dafny/DynamoDbEncryption/src/Beacon.dfy(393,5) + pub fn getPart(self: &Arc, val: &Sequence, key: &Sequence, partition: &PartitionBytes) -> Arc, Arc>> { + self.base().hash(val, key, self.length().clone(), partition) } /// Returns a borrow of the field base pub fn base(&self) -> &Arc { match self { - StandardBeacon::StandardBeacon{base, length, loc, partOnly, asSet, share, } => base, + StandardBeacon::StandardBeacon{base, length, loc, partOnly, asSet, share, numberOfPartitions, } => base, } } /// Returns a borrow of the field length pub fn length(&self) -> &u8 { match self { - StandardBeacon::StandardBeacon{base, length, loc, partOnly, asSet, share, } => length, + StandardBeacon::StandardBeacon{base, length, loc, partOnly, asSet, share, numberOfPartitions, } => length, } } /// Returns a borrow of the field loc pub fn loc(&self) -> &TermLoc { match self { - StandardBeacon::StandardBeacon{base, length, loc, partOnly, asSet, share, } => loc, + StandardBeacon::StandardBeacon{base, length, loc, partOnly, asSet, share, numberOfPartitions, } => loc, } } /// Returns a borrow of the field partOnly pub fn partOnly(&self) -> &bool { match self { - StandardBeacon::StandardBeacon{base, length, loc, partOnly, asSet, share, } => partOnly, + StandardBeacon::StandardBeacon{base, length, loc, partOnly, asSet, share, numberOfPartitions, } => partOnly, } } /// Returns a borrow of the field asSet pub fn asSet(&self) -> &bool { match self { - StandardBeacon::StandardBeacon{base, length, loc, partOnly, asSet, share, } => asSet, + StandardBeacon::StandardBeacon{base, length, loc, partOnly, asSet, share, numberOfPartitions, } => asSet, } } /// Returns a borrow of the field share pub fn share(&self) -> &Arc>> { match self { - StandardBeacon::StandardBeacon{base, length, loc, partOnly, asSet, share, } => share, + StandardBeacon::StandardBeacon{base, length, loc, partOnly, asSet, share, numberOfPartitions, } => share, + } + } + /// Returns a borrow of the field numberOfPartitions + pub fn numberOfPartitions(&self) -> &PartitionCount { + match self { + StandardBeacon::StandardBeacon{base, length, loc, partOnly, asSet, share, numberOfPartitions, } => numberOfPartitions, } } } @@ -82604,7 +83057,7 @@ pub mod _BaseBeacon_Compile { for StandardBeacon { fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { match self { - StandardBeacon::StandardBeacon{base, length, loc, partOnly, asSet, share, } => { + StandardBeacon::StandardBeacon{base, length, loc, partOnly, asSet, share, numberOfPartitions, } => { write!(_formatter, "BaseBeacon_Compile.StandardBeacon.StandardBeacon(")?; DafnyPrint::fmt_print(base, _formatter, false)?; write!(_formatter, ", ")?; @@ -82617,6 +83070,8 @@ pub mod _BaseBeacon_Compile { DafnyPrint::fmt_print(asSet, _formatter, false)?; write!(_formatter, ", ")?; DafnyPrint::fmt_print(share, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(numberOfPartitions, _formatter, false)?; write!(_formatter, ")")?; Ok(()) }, @@ -82631,13 +83086,14 @@ pub mod _BaseBeacon_Compile { for StandardBeacon { fn hash<_H: Hasher>(&self, _state: &mut _H) { match self { - StandardBeacon::StandardBeacon{base, length, loc, partOnly, asSet, share, } => { + StandardBeacon::StandardBeacon{base, length, loc, partOnly, asSet, share, numberOfPartitions, } => { Hash::hash(base, _state); Hash::hash(length, _state); Hash::hash(loc, _state); Hash::hash(partOnly, _state); Hash::hash(asSet, _state); - Hash::hash(share, _state) + Hash::hash(share, _state); + Hash::hash(numberOfPartitions, _state) }, } } @@ -82652,7 +83108,8 @@ pub mod _BaseBeacon_Compile { loc: Default::default(), partOnly: Default::default(), asSet: Default::default(), - share: Default::default() + share: Default::default(), + numberOfPartitions: Default::default() } } } @@ -83141,6 +83598,7 @@ pub mod _BatchWriteItemTransform_Compile { pub use ::dafny_runtime::seq; pub use ::dafny_runtime::integer_range; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionNumber; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue; 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::IDynamoDbItemEncryptorClient; @@ -83161,7 +83619,7 @@ pub mod _BatchWriteItemTransform_Compile { pub struct _default {} impl _default { - /// dafny/DynamoDbEncryptionTransforms/src/BatchWriteItemTransform.dfy(18,3) + /// dafny/DynamoDbEncryptionTransforms/src/BatchWriteItemTransform.dfy(19,3) pub fn Input(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut tableNames: Set> = input.sdkInput().RequestItems().keys(); @@ -83190,39 +83648,47 @@ pub mod _BatchWriteItemTransform_Compile { return output.read(); }; let mut _v0: bool = valueOrError0.Extract(); - let mut valueOrError1: Arc, Arc>, Arc>>; - let mut _out2: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::AddSignedBeacons(&tableConfig, req.PutRequest().value().Item()); + let mut valueOrError1: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::GetRandomPartition(&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 _out3: Arc, Arc>> = IDynamoDbItemEncryptorClient::EncryptItem(rd!(tableConfig.itemEncryptor().clone()), &Arc::new(EncryptItemInput::EncryptItemInput { - plaintextItem: item.clone() - })); - encryptRes = _out3.clone(); - let mut valueOrError2: Arc, Arc>> = crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::MapError::>(&encryptRes); + let mut partition: PartitionNumber = valueOrError1.Extract(); + let mut valueOrError2: Arc, Arc>, Arc>>; + let mut _out3: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::AddSignedBeacons(&tableConfig, req.PutRequest().value().Item(), partition); + valueOrError2 = _out3.clone(); if valueOrError2.IsFailure() { output = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); return output.read(); }; - let mut encrypted: Arc = valueOrError2.Extract(); - let mut valueOrError3: Arc>>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetKeyIdFromHeader(&tableConfig, &encrypted); + let mut item: Map, Arc> = valueOrError2.Extract(); + let mut encryptRes: Arc, Arc>>; + let mut _out4: Arc, Arc>> = IDynamoDbItemEncryptorClient::EncryptItem(rd!(tableConfig.itemEncryptor().clone()), &Arc::new(EncryptItemInput::EncryptItemInput { + plaintextItem: item.clone() + })); + encryptRes = _out4.clone(); + let mut valueOrError3: Arc, Arc>> = crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::MapError::>(&encryptRes); if valueOrError3.IsFailure() { output = MaybePlacebo::from(valueOrError3.PropagateFailure::>()); return output.read(); }; - let mut keyId: Arc>> = valueOrError3.Extract(); - let mut valueOrError4: Arc, Arc>, Arc>>; - 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(); + let mut encrypted: Arc = valueOrError3.Extract(); + let mut valueOrError4: Arc>>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetKeyIdFromHeader(&tableConfig, &encrypted); if valueOrError4.IsFailure() { output = MaybePlacebo::from(valueOrError4.PropagateFailure::>()); return output.read(); }; - let mut beaconAttrs: Map, Arc> = valueOrError4.Extract(); + let mut keyId: Arc>> = valueOrError4.Extract(); + let mut valueOrError5: Arc, Arc>, Arc>>; + let mut _out5: 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), partition); + valueOrError5 = _out5.clone(); + if valueOrError5.IsFailure() { + output = MaybePlacebo::from(valueOrError5.PropagateFailure::>()); + return output.read(); + }; + let mut beaconAttrs: Map, Arc> = valueOrError5.Extract(); encryptedItems = encryptedItems.concat(&seq![{ let __pat_let5_0: Arc = req.clone(); { @@ -83250,9 +83716,9 @@ pub mod _BatchWriteItemTransform_Compile { i = i.clone() + int!(1); result = result.update_index(&tableName, &writeRequests); }; - let mut valueOrError5: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(result.cardinality() == input.sdkInput().RequestItems().cardinality(), &crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::E(&string_utf16_of("Internal Error"))); - if valueOrError5.IsFailure() { - output = MaybePlacebo::from(valueOrError5.PropagateFailure::>()); + let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(result.cardinality() == input.sdkInput().RequestItems().cardinality(), &crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::E(&string_utf16_of("Internal Error"))); + if valueOrError6.IsFailure() { + output = MaybePlacebo::from(valueOrError6.PropagateFailure::>()); return output.read(); }; output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { @@ -83278,7 +83744,7 @@ pub mod _BatchWriteItemTransform_Compile { })); return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/src/BatchWriteItemTransform.dfy(86,3) + /// dafny/DynamoDbEncryptionTransforms/src/BatchWriteItemTransform.dfy(89,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(); @@ -83316,7 +83782,7 @@ pub mod _BatchWriteItemTransform_Compile { /// = 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) + /// dafny/DynamoDbEncryptionTransforms/src/BatchWriteItemTransform.dfy(115,3) pub fn Output(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); if matches!(input.sdkOutput().UnprocessedItems().as_ref(), None{ .. }) { @@ -83891,6 +84357,8 @@ pub mod _BeaconTestFixtures_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::VirtualFieldList; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::EncryptedPartsList; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::SignedPartsList; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionCount; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::IPartitionSelector; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::CompoundBeacon; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::VirtualField; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::MultiKeyStore; @@ -83954,7 +84422,7 @@ pub mod _BeaconTestFixtures_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(122,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(123,3) pub fn GetKeyStore() -> ValidStore { let mut output = MaybePlacebo::::new(); let mut valueOrError0: Arc, Arc>>; @@ -83997,7 +84465,7 @@ pub mod _BeaconTestFixtures_Compile { output = MaybePlacebo::from(upcast_object::()(store.clone())); return output.read(); } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(149,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(150,3) pub fn GetBadKeyStore() -> ValidStore { let mut output = MaybePlacebo::::new(); let mut valueOrError0: Arc, Arc>>; @@ -84040,7 +84508,7 @@ pub mod _BeaconTestFixtures_Compile { output = MaybePlacebo::from(upcast_object::()(store.clone())); return output.read(); } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(175,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(176,3) pub fn GetEmptyBeacons() -> Arc { let mut output: Arc; let mut store: ValidStore; @@ -84061,11 +84529,14 @@ pub mod _BeaconTestFixtures_Compile { compoundBeacons: Arc::new(Option::::None {}), virtualFields: Arc::new(Option::::None {}), encryptedParts: Arc::new(Option::::None {}), - signedParts: Arc::new(Option::::None {}) + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::None {}), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) }); return output.clone(); } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(193,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(194,3) pub fn GetLotsaBeacons() -> Arc { let mut output: Arc; let mut store: ValidStore; @@ -84090,11 +84561,14 @@ pub mod _BeaconTestFixtures_Compile { value: seq![_default::NameTitleField()] }), encryptedParts: Arc::new(Option::::None {}), - signedParts: Arc::new(Option::::None {}) + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::None {}), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) }); return output.clone(); } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(211,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(212,3) pub fn GetLotsaBeaconsMulti() -> Arc { let mut output: Arc; let mut store: ValidStore; @@ -84119,11 +84593,14 @@ pub mod _BeaconTestFixtures_Compile { value: seq![_default::NameTitleField()] }), encryptedParts: Arc::new(Option::::None {}), - signedParts: Arc::new(Option::::None {}) + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::None {}), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) }); return output.clone(); } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(232,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(234,3) pub fn GetLotsaBeaconsSingleWithSharedCache(cache: &Arc, partitionId: &Arc>>) -> Arc { let mut output: Arc; let mut store: ValidStore; @@ -84150,11 +84627,14 @@ pub mod _BeaconTestFixtures_Compile { value: seq![_default::NameTitleField()] }), encryptedParts: Arc::new(Option::::None {}), - signedParts: Arc::new(Option::::None {}) + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::None {}), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) }); return output.clone(); } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(257,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(259,3) pub fn GetLotsaBeaconsSingleWithSharedCacheWithBadKeyStore(cache: &Arc, partitionId: &Arc>>) -> Arc { let mut output: Arc; let mut store: ValidStore; @@ -84181,11 +84661,14 @@ pub mod _BeaconTestFixtures_Compile { value: seq![_default::NameTitleField()] }), encryptedParts: Arc::new(Option::::None {}), - signedParts: Arc::new(Option::::None {}) + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::None {}), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) }); return output.clone(); } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(284,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(286,3) pub fn GetLotsaBeaconsMultiWithSharedCache(cache: &Arc, partitionId: &Arc>>) -> Arc { let mut output: Arc; let mut store: ValidStore; @@ -84212,11 +84695,14 @@ pub mod _BeaconTestFixtures_Compile { value: seq![_default::NameTitleField()] }), encryptedParts: Arc::new(Option::::None {}), - signedParts: Arc::new(Option::::None {}) + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::None {}), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) }); return output.clone(); } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(305,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(307,3) pub fn GetLotsaBeaconsMultiWithSharedCacheWithBadKeyStore(cache: &Arc, partitionId: &Arc>>) -> Arc { let mut output: Arc; let mut store: ValidStore; @@ -84243,11 +84729,14 @@ pub mod _BeaconTestFixtures_Compile { value: seq![_default::NameTitleField()] }), encryptedParts: Arc::new(Option::::None {}), - signedParts: Arc::new(Option::::None {}) + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::None {}), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) }); return output.clone(); } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(326,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(328,3) pub fn GetSharedCache() -> Arc { let mut cache = MaybePlacebo::>::new(); let mut valueOrError0: Arc, Arc>>; @@ -84275,7 +84764,7 @@ pub mod _BeaconTestFixtures_Compile { })); return cache.read(); } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(376,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(378,3) pub fn GetLiteralSource(key: &Sequence, version: &Arc) -> Arc { let mut output = MaybePlacebo::>::new(); let mut valueOrError0: Arc, Arc>>; @@ -84354,7 +84843,7 @@ pub mod _BeaconTestFixtures_Compile { })); return output.read(); } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(412,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(414,3) pub fn GetMultiSource(keyName: &Sequence, version: &Arc) -> Arc { let mut output = MaybePlacebo::>::new(); let mut valueOrError0: Arc, Arc>>; @@ -84413,21 +84902,21 @@ pub mod _BeaconTestFixtures_Compile { })); return output.read(); } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(45,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(46,3) pub fn Name() -> Arc { Arc::new(EncryptedPart::EncryptedPart { name: string_utf16_of("Name"), prefix: string_utf16_of("N_") }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(46,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(47,3) pub fn Title() -> Arc { Arc::new(EncryptedPart::EncryptedPart { name: string_utf16_of("Title"), prefix: string_utf16_of("T_") }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(49,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(50,3) pub fn NameTitle() -> Arc { Arc::new(CompoundBeacon::CompoundBeacon { name: string_utf16_of("NameTitle"), @@ -84439,7 +84928,7 @@ pub mod _BeaconTestFixtures_Compile { constructors: Arc::new(Option::::None {}) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(41,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(42,3) pub fn Year() -> Arc { Arc::new(SignedPart::SignedPart { name: string_utf16_of("Year"), @@ -84447,7 +84936,7 @@ pub mod _BeaconTestFixtures_Compile { loc: Arc::new(Option::>::None {}) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(56,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(57,3) pub fn YearName() -> Arc { Arc::new(CompoundBeacon::CompoundBeacon { name: string_utf16_of("YearName"), @@ -84461,14 +84950,14 @@ pub mod _BeaconTestFixtures_Compile { constructors: Arc::new(Option::::None {}) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(47,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(48,3) pub fn TooBad() -> Arc { Arc::new(EncryptedPart::EncryptedPart { name: string_utf16_of("TooBad"), prefix: string_utf16_of("T") }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(63,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(64,3) pub fn BadPrefix() -> Arc { Arc::new(CompoundBeacon::CompoundBeacon { name: string_utf16_of("BadPrefix"), @@ -84480,7 +84969,7 @@ pub mod _BeaconTestFixtures_Compile { constructors: Arc::new(Option::::None {}) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(43,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(44,3) pub fn Nothing() -> Arc { Arc::new(SignedPart::SignedPart { name: string_utf16_of("Nothing"), @@ -84488,7 +84977,7 @@ pub mod _BeaconTestFixtures_Compile { loc: Arc::new(Option::>::None {}) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(70,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(71,3) pub fn BadPrefix2() -> Arc { Arc::new(CompoundBeacon::CompoundBeacon { name: string_utf16_of("BadPrefix2"), @@ -84502,7 +84991,7 @@ pub mod _BeaconTestFixtures_Compile { constructors: Arc::new(Option::::None {}) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(42,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(43,3) pub fn Month() -> Arc { Arc::new(SignedPart::SignedPart { name: string_utf16_of("Month"), @@ -84512,7 +85001,7 @@ pub mod _BeaconTestFixtures_Compile { }) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(77,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(78,3) pub fn JustSigned() -> Arc { Arc::new(CompoundBeacon::CompoundBeacon { name: string_utf16_of("JustSigned"), @@ -84524,7 +85013,7 @@ pub mod _BeaconTestFixtures_Compile { constructors: Arc::new(Option::::None {}) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(84,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(85,3) pub fn Mixed() -> Arc { Arc::new(CompoundBeacon::CompoundBeacon { name: string_utf16_of("Mixed"), @@ -84556,37 +85045,37 @@ pub mod _BeaconTestFixtures_Compile { }) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(106,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(107,3) pub fn Std6String() -> Arc { Arc::new(AttributeValue::S { S: string_utf16_of("666") }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(107,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(108,3) pub fn Std6List() -> Arc { Arc::new(AttributeValue::L { L: seq![_default::Std6String()] }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(110,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(111,3) pub fn MonthString() -> Arc { Arc::new(AttributeValue::S { S: string_utf16_of("May") }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(109,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(110,3) pub fn YearString() -> Arc { Arc::new(AttributeValue::N { N: string_utf16_of("1984") }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(111,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(112,3) pub fn DateMap() -> Arc { Arc::new(AttributeValue::M { M: map![(string_utf16_of("Month")) => (_default::MonthString()), (string_utf16_of("Year")) => (_default::YearString())] }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(116,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(117,3) pub fn VPart1() -> Arc { Arc::new(VirtualPart::VirtualPart { loc: string_utf16_of("Name"), @@ -84599,7 +85088,7 @@ pub mod _BeaconTestFixtures_Compile { }) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(117,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(118,3) pub fn VPart2() -> Arc { Arc::new(VirtualPart::VirtualPart { loc: string_utf16_of("Title"), @@ -84610,14 +85099,14 @@ pub mod _BeaconTestFixtures_Compile { }) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(118,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(119,3) pub fn NameTitleField() -> Arc { Arc::new(VirtualField::VirtualField { name: string_utf16_of("NameTitleField"), parts: seq![_default::VPart1(), _default::VPart2()] }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(120,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(121,3) pub fn NameVirtField() -> Arc { Arc::new(VirtualField::VirtualField { name: string_utf16_of("NameVirtField"), @@ -84630,7 +85119,8 @@ pub mod _BeaconTestFixtures_Compile { name: string_utf16_of("std2"), length: 24, loc: Arc::new(Option::>::None {}), - style: Arc::new(Option::>::None {}) + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::None {}) }) } /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(35,3) @@ -84641,10 +85131,11 @@ pub mod _BeaconTestFixtures_Compile { loc: Arc::new(Option::>::Some { value: string_utf16_of("std4") }), - style: Arc::new(Option::>::None {}) + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::None {}) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(36,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(37,3) pub fn std6() -> Arc { Arc::new(StandardBeacon::StandardBeacon { name: string_utf16_of("std6"), @@ -84652,37 +85143,41 @@ pub mod _BeaconTestFixtures_Compile { loc: Arc::new(Option::>::Some { value: string_utf16_of("std6[0]") }), - style: Arc::new(Option::>::None {}) + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::None {}) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(119,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(120,3) pub fn NameTitleBeacon() -> Arc { Arc::new(StandardBeacon::StandardBeacon { name: string_utf16_of("NameTitleField"), length: 28, loc: Arc::new(Option::>::None {}), - style: Arc::new(Option::>::None {}) + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::None {}) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(37,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(38,3) pub fn NameB() -> Arc { Arc::new(StandardBeacon::StandardBeacon { name: string_utf16_of("Name"), length: 32, loc: Arc::new(Option::>::None {}), - style: Arc::new(Option::>::None {}) + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::None {}) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(38,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(39,3) pub fn TitleB() -> Arc { Arc::new(StandardBeacon::StandardBeacon { name: string_utf16_of("Title"), length: 32, loc: Arc::new(Option::>::None {}), - style: Arc::new(Option::>::None {}) + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::None {}) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(348,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(350,3) pub fn EmptyTableConfig() -> Arc { Arc::new(DynamoDbTableEncryptionConfig::DynamoDbTableEncryptionConfig { logicalTableName: string_utf16_of("Foo"), @@ -84699,7 +85194,7 @@ pub mod _BeaconTestFixtures_Compile { plaintextOverride: Arc::new(Option::>::None {}) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(362,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(364,3) pub fn FullTableConfig() -> Arc { let mut _dt__update__tmp_h0: Arc = _default::EmptyTableConfig(); let mut _dt__update_hattributeActionsOnEncrypt_h0: Map, Arc> = map![(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 {}))]; @@ -84718,72 +85213,87 @@ pub mod _BeaconTestFixtures_Compile { plaintextOverride: _dt__update__tmp_h0.plaintextOverride().clone() }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(104,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(105,3) pub fn Std2String() -> Arc { Arc::new(AttributeValue::N { N: string_utf16_of("1.23") }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(105,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(106,3) pub fn Std4String() -> Arc { Arc::new(AttributeValue::S { S: string_utf16_of("abc") }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(113,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(114,3) pub fn NameString() -> Arc { Arc::new(AttributeValue::S { S: string_utf16_of("MyName") }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(114,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(115,3) pub fn TitleString() -> Arc { Arc::new(AttributeValue::S { S: string_utf16_of("MyTitle") }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(444,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(446,3) pub fn SimpleItem() -> Map, Arc> { map![(string_utf16_of("std2")) => (_default::Std2String()), (string_utf16_of("std4")) => (_default::Std4String()), (string_utf16_of("std6")) => (_default::Std6List()), (string_utf16_of("Date")) => (_default::DateMap()), (string_utf16_of("Year")) => (_default::YearString()), (string_utf16_of("Name")) => (_default::NameString()), (string_utf16_of("Title")) => (_default::TitleString())] } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(39,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(36,3) + pub fn std4Partitioned() -> Arc { + Arc::new(StandardBeacon::StandardBeacon { + name: string_utf16_of("std4"), + length: 24, + loc: Arc::new(Option::>::Some { + value: string_utf16_of("std4") + }), + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::Some { + value: 5 + }) + }) + } + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(40,3) pub fn TooBadB() -> Arc { Arc::new(StandardBeacon::StandardBeacon { name: string_utf16_of("TooBad"), length: 32, loc: Arc::new(Option::>::None {}), - style: Arc::new(Option::>::None {}) + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::None {}) }) } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(95,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(96,3) pub fn std2_beacon() -> Sequence { string_utf16_of("ac6f5d") } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(96,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(97,3) pub fn Name_beacon() -> Sequence { string_utf16_of("7d9bfa40") } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(97,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(98,3) pub fn Title_beacon() -> Sequence { string_utf16_of("e4feb833") } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(98,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(99,3) pub fn std4_beacon() -> Sequence { string_utf16_of("0e9064") } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(99,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(100,3) pub fn std6_beacon() -> Sequence { string_utf16_of("2d99222") } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(100,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(101,3) pub fn NameTitle_beacon() -> Sequence { string_utf16_of("4c577d7") } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(101,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(102,3) pub fn EmptyName_beacon() -> Sequence { string_utf16_of("e0e88994") } - /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(102,3) + /// dafny/DynamoDbEncryption/test/BeaconTestFixtures.dfy(103,3) pub fn EmptyTitle_beacon() -> Sequence { string_utf16_of("af34f26f") } @@ -86794,8 +87304,11 @@ pub mod _CompoundBeacon_Compile { pub use ::std::convert::AsRef; pub use ::dafny_runtime::Set; pub use ::dafny_runtime::SetBuilder; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionCount; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Failure; pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::MaybeKeyMap; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionNumber; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue::S; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; @@ -86827,7 +87340,7 @@ pub mod _CompoundBeacon_Compile { }) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(614,3) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(650,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{ @@ -87226,7 +87739,23 @@ pub mod _CompoundBeacon_Compile { } impl CompoundBeacon { - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(145,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(135,5) + pub fn getNumQueries(self: &Arc, globalMax: PartitionCount, value: &Sequence) -> PartitionCount { + let mut output: PartitionCount; + let mut counts: Arc, Arc>> = self.GetPartitionCountsFromValue(&Arc::new(AttributeValue::S { + S: value.clone() + })); + if matches!((&counts).as_ref(), Failure{ .. }) { + output = 1; + return output; + } else { + let mut _out0: PartitionCount = crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::lcmSeq(counts.value(), globalMax); + output = _out0; + return output; + }; + return output; + } + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(157,5) pub fn HasBeacon2(self: &Arc, parts: &Sequence>, name: &Sequence) -> bool { let mut _this = self.clone(); let mut _r0 = parts.clone(); @@ -87251,19 +87780,19 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(156,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(168,5) pub fn HasBeacon(self: &Arc, name: &Sequence) -> bool { self.HasBeacon2(self.parts(), name) } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(162,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(174,5) pub fn isEncrypted(self: &Arc) -> bool { self.numSigned().clone() < self.parts().cardinality() } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(167,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(179,5) pub fn getPartFromPrefix(self: &Arc, value: &Sequence) -> Arc, Arc>> { self.partFromPrefix(self.parts(), value) } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(174,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(186,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{ @@ -87276,7 +87805,7 @@ pub mod _CompoundBeacon_Compile { crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Join::(&beaconParts, &string_utf16_of("")) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(183,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(195,5) pub fn CPartToString(self: &Arc, s: &Arc) -> Sequence { if s.required().clone() { s.part().getPrefix() @@ -87284,7 +87813,7 @@ pub mod _CompoundBeacon_Compile { string_utf16_of("[").concat(&s.part().getPrefix()).concat(&string_utf16_of("]")) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(191,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(203,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(); @@ -87298,7 +87827,7 @@ pub mod _CompoundBeacon_Compile { crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Join::(&beaconParts, &string_utf16_of("")) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(200,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(212,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(); @@ -87308,7 +87837,7 @@ pub mod _CompoundBeacon_Compile { }), p); crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Join::(&beaconParts, &string_utf16_of(", ")) } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(212,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(224,5) pub fn CanConstruct(self: &Arc, con: &Sequence>, inParts: &Sequence>, matched: bool) -> bool { let mut _this = self.clone(); let mut _r0 = con.clone(); @@ -87353,7 +87882,7 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(227,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(239,5) pub fn IsValidPartOrder(self: &Arc, candidates: &Sequence>, inParts: &Sequence>) -> bool { let mut _this = self.clone(); let mut _r0 = candidates.clone(); @@ -87378,7 +87907,7 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(238,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(250,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 { @@ -87391,7 +87920,7 @@ pub mod _CompoundBeacon_Compile { }) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(252,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(264,5) pub fn partFromPrefix(self: &Arc, p: &Sequence>, value: &Sequence) -> Arc, Arc>> { let mut _this = self.clone(); let mut _r0 = p.clone(); @@ -87420,7 +87949,7 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(265,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(277,5) pub fn SkipSignedPieces(self: &Arc, pieces: &Sequence>) -> Arc>, Arc>> { let mut _this = self.clone(); let mut _r0 = pieces.clone(); @@ -87451,7 +87980,7 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(278,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(290,5) pub fn IsLessThanComparable(self: &Arc, pieces: &Sequence>) -> Arc>> { let mut valueOrError0: Arc>, Arc>> = self.SkipSignedPieces(pieces); if valueOrError0.IsFailure() { @@ -87481,7 +88010,7 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(291,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(303,5) pub fn GetFields(self: &Arc, virtualFields: &VirtualFieldMap) -> 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(); @@ -87493,17 +88022,17 @@ pub mod _CompoundBeacon_Compile { }) }, self.parts()), 0, &(seq![] as Sequence>)) } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(297,5) - pub fn FindAndCalcPart(self: &Arc, value: &Sequence, keys: &Arc) -> Arc, Arc>> { + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(309,5) + pub fn FindAndCalcPart(self: &Arc, value: &Sequence, keys: &Arc, partition: PartitionNumber) -> Arc, Arc>> { let mut valueOrError0: Arc, Arc>> = self.partFromPrefix(self.parts(), value); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() } else { let mut part: Arc = valueOrError0.Extract(); - self.PartValueCalc(&value.drop(&part.prefix().cardinality()), keys, &part) + self.PartValueCalc(&value.drop(&part.prefix().cardinality()), keys, &part, partition) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(305,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(317,5) pub fn justPrefix(self: &Arc, value: &Sequence) -> Arc>> { let mut valueOrError0: Arc, Arc>> = self.partFromPrefix(self.parts(), value); if valueOrError0.IsFailure() { @@ -87515,8 +88044,8 @@ pub mod _CompoundBeacon_Compile { }) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(312,5) - pub fn GetBeaconValue(self: &Arc, value: &Arc, keys: &Arc, forEquality: bool) -> Arc, Arc>> { + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(324,5) + pub fn GetBeaconValue(self: &Arc, value: &Arc, keys: &Arc, forEquality: bool, partition: PartitionNumber) -> Arc, Arc>> { if !matches!(value.as_ref(), S{ .. }) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("CompoundBeacon ").concat(self.base().name()).concat(&string_utf16_of(" can only be queried as a string, not as ")).concat(&crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::AttrTypeToStr(value))) @@ -87540,11 +88069,13 @@ pub mod _CompoundBeacon_Compile { let mut _v1: bool = valueOrError1.Extract(); let mut valueOrError2: Arc>, Arc>> = crate::implementation_from_dafny::_StandardLibrary_Compile::_Sequence_Compile::_default::MapWithResult::, Sequence, Arc>({ let keys: Arc = keys.clone(); + let partition: PartitionNumber = partition; &({ let mut keys = keys.clone(); let mut _this = self.clone(); + let mut partition = partition.clone(); Arc::new(move |s: &Sequence| -> Arc, Arc>>{ - _this.FindAndCalcPart(s, &keys) + _this.FindAndCalcPart(s, &keys, partition) }) }) }, &parts, 0, &(seq![] as Sequence>)); @@ -87578,20 +88109,79 @@ pub mod _CompoundBeacon_Compile { } } } - /// 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>> { + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(343,5) + pub fn GetPartitionCountsFromParts(self: &Arc, inParts: &Sequence>) -> Sequence { + let mut _accumulator: Sequence = seq![] as Sequence; + let mut _this = self.clone(); + let mut _r0 = inParts.clone(); + 'TAIL_CALL_START: loop { + let inParts = _r0; + if inParts.cardinality() == int!(0) { + return _accumulator.concat(&(seq![] as Sequence)); + } else { + if matches!((&inParts.get(&int!(0))).as_ref(), Encrypted{ .. }) { + _accumulator = _accumulator.concat(&seq![inParts.get(&int!(0)).beacon().numberOfPartitions().clone()]); + let mut _in0: Arc = _this.clone(); + let mut _in1: Sequence> = inParts.drop(&int!(1)); + _this = _in0.clone(); + _r0 = _in1.clone(); + continue 'TAIL_CALL_START; + } else { + let mut _in2: Arc = _this.clone(); + let mut _in3: Sequence> = inParts.drop(&int!(1)); + _this = _in2.clone(); + _r0 = _in3.clone(); + continue 'TAIL_CALL_START; + } + } + } + } + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(354,5) + pub fn GetPartitionCountsFromValue(self: &Arc, value: &Arc) -> Arc, Arc>> { + if !matches!(value.as_ref(), S{ .. }) { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("CompoundBeacon ").concat(self.base().name()).concat(&string_utf16_of(" can only be queried as a string, not as ")).concat(&crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::AttrTypeToStr(value))) + }) + } 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::_StandardLibrary_Compile::_Sequence_Compile::_default::MapWithResult::, Arc, Arc>(&({ + let mut _this = self.clone(); + Arc::new(move |s: &Sequence| -> Arc, Arc>>{ + _this.getPartFromPrefix(s) + }) + }), &parts, 0, &(seq![] as Sequence>)); + if valueOrError0.IsFailure() { + valueOrError0.PropagateFailure::>() + } else { + let mut partsUsed: Sequence> = valueOrError0.Extract(); + let mut valueOrError1: Arc>> = self.ValidatePartOrder(&partsUsed, value.S()); + if valueOrError1.IsFailure() { + valueOrError1.PropagateFailure::>() + } else { + let mut _v2: bool = valueOrError1.Extract(); + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { + value: self.GetPartitionCountsFromParts(&partsUsed) + }) + } + } + } + } + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(366,5) + pub fn TryConstructor(self: &Arc, consFields: &Sequence>, item: &Map, Arc>, vf: &VirtualFieldMap, keys: &Arc, partition: PartitionNumber, acc: &Sequence) -> Arc>>, Arc>> { let mut _this = self.clone(); let mut _r0 = consFields.clone(); let mut _r1 = item.clone(); let mut _r2 = vf.clone(); let mut _r3 = keys.clone(); - let mut _r4 = acc.clone(); + let mut _r4 = partition; + let mut _r5 = acc.clone(); 'TAIL_CALL_START: loop { let consFields = _r0; let item = _r1; let vf = _r2; let keys = _r3; - let acc = _r4; + let partition = _r4; + let acc = _r5; if consFields.cardinality() == int!(0) { if acc.cardinality() == int!(0) { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>>, Arc>::Failure { @@ -87621,7 +88211,7 @@ pub mod _CompoundBeacon_Compile { value: part.prefix().concat(strValue.value()) }) } else { - _this.PartValueCalc(strValue.value(), &keys, &part) + _this.PartValueCalc(strValue.value(), &keys, &part, partition) }; if valueOrError2.IsFailure() { return valueOrError2.PropagateFailure::>>>(); @@ -87633,27 +88223,31 @@ pub mod _CompoundBeacon_Compile { let mut _in2: Map, Arc> = item.clone(); let mut _in3: VirtualFieldMap = vf.clone(); let mut _in4: Arc = keys.clone(); - let mut _in5: Sequence = val.clone(); + let mut _in5: PartitionNumber = partition; + let mut _in6: Sequence = val.clone(); _this = _in0.clone(); _r0 = _in1.clone(); _r1 = _in2.clone(); _r2 = _in3.clone(); _r3 = _in4.clone(); - _r4 = _in5.clone(); + _r4 = _in5; + _r5 = _in6.clone(); continue 'TAIL_CALL_START; } else { - let mut _in6: Arc = _this.clone(); - let mut _in7: Sequence> = consFields.drop(&int!(1)); - let mut _in8: Map, Arc> = item.clone(); - let mut _in9: VirtualFieldMap = vf.clone(); - let mut _in10: Arc = keys.clone(); - let mut _in11: Sequence = acc.concat(&seq![_this.split().clone()]).concat(&val); - _this = _in6.clone(); - _r0 = _in7.clone(); - _r1 = _in8.clone(); - _r2 = _in9.clone(); - _r3 = _in10.clone(); - _r4 = _in11.clone(); + let mut _in7: Arc = _this.clone(); + let mut _in8: Sequence> = consFields.drop(&int!(1)); + let mut _in9: Map, Arc> = item.clone(); + let mut _in10: VirtualFieldMap = vf.clone(); + let mut _in11: Arc = keys.clone(); + let mut _in12: PartitionNumber = partition; + let mut _in13: Sequence = acc.concat(&seq![_this.split().clone()]).concat(&val); + _this = _in7.clone(); + _r0 = _in8.clone(); + _r1 = _in9.clone(); + _r2 = _in10.clone(); + _r3 = _in11.clone(); + _r4 = _in12; + _r5 = _in13.clone(); continue 'TAIL_CALL_START; } } @@ -87664,18 +88258,20 @@ pub mod _CompoundBeacon_Compile { value: Arc::new(Option::>::None {}) }); } else { - let mut _in12: Arc = _this.clone(); - let mut _in13: Sequence> = consFields.drop(&int!(1)); - let mut _in14: Map, Arc> = item.clone(); - let mut _in15: VirtualFieldMap = vf.clone(); - let mut _in16: Arc = keys.clone(); - let mut _in17: Sequence = acc.clone(); - _this = _in12.clone(); - _r0 = _in13.clone(); - _r1 = _in14.clone(); - _r2 = _in15.clone(); - _r3 = _in16.clone(); - _r4 = _in17.clone(); + let mut _in14: Arc = _this.clone(); + let mut _in15: Sequence> = consFields.drop(&int!(1)); + let mut _in16: Map, Arc> = item.clone(); + let mut _in17: VirtualFieldMap = vf.clone(); + let mut _in18: Arc = keys.clone(); + let mut _in19: PartitionNumber = partition; + let mut _in20: Sequence = acc.clone(); + _this = _in14.clone(); + _r0 = _in15.clone(); + _r1 = _in16.clone(); + _r2 = _in17.clone(); + _r3 = _in18.clone(); + _r4 = _in19; + _r5 = _in20.clone(); continue 'TAIL_CALL_START; } } @@ -87683,24 +88279,26 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(371,5) - pub fn TryConstructors(self: &Arc, construct: &Sequence>, item: &Map, Arc>, vf: &VirtualFieldMap, keys: &Arc) -> Arc>>, Arc>> { + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(406,5) + pub fn TryConstructors(self: &Arc, construct: &Sequence>, item: &Map, Arc>, vf: &VirtualFieldMap, keys: &Arc, partition: PartitionNumber) -> Arc>>, Arc>> { let mut _this = self.clone(); let mut _r0 = construct.clone(); let mut _r1 = item.clone(); let mut _r2 = vf.clone(); let mut _r3 = keys.clone(); + let mut _r4 = partition; 'TAIL_CALL_START: loop { let construct = _r0; let item = _r1; let vf = _r2; let keys = _r3; + let partition = _r4; if construct.cardinality() == int!(0) { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>>, Arc>::Success { value: Arc::new(Option::>::None {}) }); } else { - let mut valueOrError0: Arc>>, Arc>> = _this.TryConstructor(construct.get(&int!(0)).parts(), &item, &vf, &keys, &string_utf16_of("")); + let mut valueOrError0: Arc>>, Arc>> = _this.TryConstructor(construct.get(&int!(0)).parts(), &item, &vf, &keys, partition, &string_utf16_of("")); if valueOrError0.IsFailure() { return valueOrError0.PropagateFailure::>>>(); } else { @@ -87715,26 +88313,28 @@ pub mod _CompoundBeacon_Compile { let mut _in2: Map, Arc> = item.clone(); let mut _in3: VirtualFieldMap = vf.clone(); let mut _in4: Arc = keys.clone(); + let mut _in5: PartitionNumber = partition; _this = _in0.clone(); _r0 = _in1.clone(); _r1 = _in2.clone(); _r2 = _in3.clone(); _r3 = _in4.clone(); + _r4 = _in5; continue 'TAIL_CALL_START; } } } } } - /// 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(431,5) + pub fn hash(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap, keys: &Arc, partition: PartitionNumber) -> Arc>>, Arc>> { + self.TryConstructors(self.construct(), item, vf, keys, partition) } - /// 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(446,5) + pub fn getNaked(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap, partition: PartitionNumber) -> Arc>>, Arc>> { + self.TryConstructors(self.construct(), item, vf, &Arc::new(MaybeKeyMap::DontUseKeys {}), partition) } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(417,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(453,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(); @@ -87764,13 +88364,13 @@ 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(445,5) - pub fn getPart(self: &Arc, val: &Sequence, keys: &Map, Sequence>) -> Arc, Arc>> { + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(481,5) + pub fn getPart(self: &Arc, val: &Sequence, keys: &Map, Sequence>, partition: PartitionNumber) -> Arc, Arc>> { let mut pieces: Sequence> = crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Split::(val, self.split()); - self.calcParts(&pieces, keys, &(seq![] as Sequence)) + self.calcParts(&pieces, keys, partition, &(seq![] as Sequence)) } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(466,5) - pub fn calcPart(self: &Arc, piece: &Sequence, keys: &Map, Sequence>) -> Arc, Arc>> { + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(502,5) + pub fn calcPart(self: &Arc, piece: &Sequence, keys: &Map, Sequence>, partition: PartitionNumber) -> Arc, Arc>> { let mut valueOrError0: Arc, Arc>> = self.findPart(piece); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>() @@ -87778,25 +88378,27 @@ pub mod _CompoundBeacon_Compile { let mut thePart: Arc = valueOrError0.Extract(); self.PartValueCalc(piece, &Arc::new(MaybeKeyMap::Keys { value: keys.clone() - }), &thePart) + }), &thePart, partition) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(487,5) - pub fn calcParts(self: &Arc, pieces: &Sequence>, keys: &Map, Sequence>, acc: &Sequence) -> Arc, Arc>> { + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(523,5) + pub fn calcParts(self: &Arc, pieces: &Sequence>, keys: &Map, Sequence>, partition: PartitionNumber, acc: &Sequence) -> Arc, Arc>> { let mut _this = self.clone(); let mut _r0 = pieces.clone(); let mut _r1 = keys.clone(); - let mut _r2 = acc.clone(); + let mut _r2 = partition; + let mut _r3 = acc.clone(); 'TAIL_CALL_START: loop { let pieces = _r0; let keys = _r1; - let acc = _r2; + let partition = _r2; + let acc = _r3; if pieces.cardinality() == int!(0) { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { value: acc.clone() }); } else { - let mut valueOrError0: Arc, Arc>> = _this.calcPart(&pieces.get(&int!(0)), &keys); + let mut valueOrError0: Arc, Arc>> = _this.calcPart(&pieces.get(&int!(0)), &keys, partition); if valueOrError0.IsFailure() { return valueOrError0.PropagateFailure::>(); } else { @@ -87805,36 +88407,40 @@ pub mod _CompoundBeacon_Compile { let mut _in0: Arc = _this.clone(); let mut _in1: Sequence> = pieces.drop(&int!(1)); let mut _in2: Map, Sequence> = keys.clone(); - let mut _in3: Sequence = theBeacon.clone(); + let mut _in3: PartitionNumber = partition; + let mut _in4: Sequence = theBeacon.clone(); _this = _in0.clone(); _r0 = _in1.clone(); _r1 = _in2.clone(); - _r2 = _in3.clone(); + _r2 = _in3; + _r3 = _in4.clone(); continue 'TAIL_CALL_START; } else { - let mut _in4: Arc = _this.clone(); - let mut _in5: Sequence> = pieces.drop(&int!(1)); - let mut _in6: Map, Sequence> = keys.clone(); - let mut _in7: Sequence = acc.concat(&seq![_this.split().clone()]).concat(&theBeacon); - _this = _in4.clone(); - _r0 = _in5.clone(); - _r1 = _in6.clone(); - _r2 = _in7.clone(); + let mut _in5: Arc = _this.clone(); + let mut _in6: Sequence> = pieces.drop(&int!(1)); + let mut _in7: Map, Sequence> = keys.clone(); + let mut _in8: PartitionNumber = partition; + let mut _in9: Sequence = acc.concat(&seq![_this.split().clone()]).concat(&theBeacon); + _this = _in5.clone(); + _r0 = _in6.clone(); + _r1 = _in7.clone(); + _r2 = _in8; + _r3 = _in9.clone(); continue 'TAIL_CALL_START; } } } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(505,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(541,5) pub fn OkPrefixStringPair(x: &Sequence, y: &Sequence) -> bool { !(x.clone() <= y.clone()) && !(y.clone() <= x.clone()) } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(512,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(548,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(521,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(557,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 { @@ -87846,7 +88452,7 @@ pub mod _CompoundBeacon_Compile { }) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(534,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(570,5) pub fn CheckOnePrefix(self: &Arc, pos: &nat) -> Arc>> { let mut partNumbers: Sequence = { let _initializer = { @@ -87876,13 +88482,13 @@ pub mod _CompoundBeacon_Compile { if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::() } else { - let mut _v2: Sequence = valueOrError0.Extract(); + let mut _v3: Sequence = valueOrError0.Extract(); Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { value: true }) } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(543,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(579,5) pub fn ValidPrefixSetResultPos(self: &Arc, index: &nat) -> Arc>> { let mut _this = self.clone(); let mut _r0 = index.clone(); @@ -87897,7 +88503,7 @@ pub mod _CompoundBeacon_Compile { if valueOrError0.IsFailure() { return valueOrError0.PropagateFailure::(); } else { - let mut _v3: bool = valueOrError0.Extract(); + let mut _v4: bool = valueOrError0.Extract(); let mut _in0: Arc = _this.clone(); let mut _in1: DafnyInt = index.clone() + int!(1); _this = _in0.clone(); @@ -87907,13 +88513,13 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(554,5) + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(590,5) pub fn ValidPrefixSetResult(self: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = self.ValidPrefixSetResultPos(&int!(0)); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::() } else { - let mut _v4: bool = valueOrError0.Extract(); + let mut _v5: bool = valueOrError0.Extract(); if integer_range(int!(0), self.parts().cardinality()).all(({ let mut _this = self.clone(); Arc::new(move |__forall_var_0: DafnyInt| -> bool{ @@ -87960,8 +88566,8 @@ pub mod _CompoundBeacon_Compile { } } } - /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(571,5) - pub fn PartValueCalc(self: &Arc, data: &Sequence, keys: &Arc, part: &Arc) -> Arc, Arc>> { + /// dafny/DynamoDbEncryption/src/CompoundBeacon.dfy(607,5) + pub fn PartValueCalc(self: &Arc, data: &Sequence, keys: &Arc, part: &Arc, partition: PartitionNumber) -> 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() { valueOrError0.PropagateFailure::>() @@ -87976,7 +88582,7 @@ pub mod _CompoundBeacon_Compile { if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { - let mut valueOrError2: Arc, Arc>> = b.hashStr(data, keys.value()); + let mut valueOrError2: Arc, Arc>> = b.hashStr(data, keys.value(), partition); if valueOrError2.IsFailure() { valueOrError2.PropagateFailure::>() } else { @@ -89089,12 +89695,22 @@ pub mod _DdbMiddlewareConfig_Compile { pub use ::dafny_runtime::Sequence; pub use ::dafny_runtime::DafnyCharUTF16; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PlaintextOverride; + pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionNumber; + pub use ::dafny_runtime::MaybePlacebo; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionCount; + pub use ::dafny_runtime::int; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberOutput; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::IPartitionSelector; + pub use ::dafny_runtime::rd; + pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::SearchInfo; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberInput; + pub use ::dafny_runtime::string_utf16_of; 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; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue::B; - pub use ::dafny_runtime::string_utf16_of; - pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; pub use ::dafny_runtime::DafnyType; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; @@ -89113,11 +89729,73 @@ pub mod _DdbMiddlewareConfig_Compile { pub struct _default {} impl _default { - /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(26,3) + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(28,3) 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(93,3) + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(34,3) + pub fn GetRandomPartition(config: &Arc, item: &Map, Arc>) -> Arc>> { + let mut output = MaybePlacebo::>>>::new(); + if matches!(config.search().as_ref(), None{ .. }) { + output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { + value: 0 + })); + return output.read(); + }; + let mut numPartitions: PartitionCount = config.search().value().versions().get(&int!(0)).numPartitions().clone(); + if numPartitions <= 1 { + output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { + value: 0 + })); + return output.read(); + }; + let mut outR: Arc, Arc>>; + let mut _out0: Arc, Arc>> = IPartitionSelector::GetPartitionNumber(rd!(SearchInfo::curr(config.search().value()).partitionSelector().clone()), &Arc::new(GetPartitionNumberInput::GetPartitionNumberInput { + item: item.clone(), + numberOfPartitions: numPartitions, + logicalTableName: config.logicalTableName().clone() + })); + outR = _out0.clone(); + let mut valueOrError0: Arc, Arc>> = outR.MapFailure::>(&({ + Arc::new(move |e: &Arc| -> Arc{ + Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::Error::AwsCryptographyDbEncryptionSdkDynamoDb { + AwsCryptographyDbEncryptionSdkDynamoDb: e.clone() + }) + }) + })); + if valueOrError0.IsFailure() { + output = MaybePlacebo::from(valueOrError0.PropagateFailure::()); + return output.read(); + }; + let mut out: Arc = valueOrError0.Extract(); + if out.partitionNumber().clone() == 0 { + output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { + value: 0 + })); + return output.read(); + } else { + if numPartitions <= out.partitionNumber().clone() { + output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { + error: _default::E(&string_utf16_of("Partition Selector returned ").concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!(out.partitionNumber().clone()))).concat(&string_utf16_of(" which should have been no more than ")).concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!((&numPartitions).clone())))) + })); + return output.read(); + } else { + if out.partitionNumber().clone() < 0 { + output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { + error: _default::E(&string_utf16_of("Partition Selector returned ").concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!(out.partitionNumber().clone()))).concat(&string_utf16_of(" which should have been positive."))) + })); + return output.read(); + } else { + output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { + value: out.partitionNumber().clone() + })); + return output.read(); + } + } + }; + return output.read(); + } + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(122,3) pub fn AttrToString(attr: &Arc) -> Sequence { if matches!(attr.as_ref(), S{ .. }) { attr.S().clone() @@ -89133,7 +89811,7 @@ pub mod _DdbMiddlewareConfig_Compile { } } } - /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(106,3) + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(135,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()))) @@ -89147,7 +89825,7 @@ pub mod _DdbMiddlewareConfig_Compile { }; partition.concat(&sort) } - /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(122,3) + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(151,3) pub fn MapError<_T: DafnyType>(r: &Arc>>) -> Arc>> { r.MapFailure::>(&({ Arc::new(move |e: &Arc| -> Arc{ @@ -89157,7 +89835,7 @@ pub mod _DdbMiddlewareConfig_Compile { }) })) } - /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(126,3) + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(155,3) pub fn MapString<_T: DafnyType>(r: &Arc>>) -> Arc>> { r.MapFailure::>(&({ Arc::new(move |e: &Sequence| -> Arc{ @@ -89167,13 +89845,13 @@ pub mod _DdbMiddlewareConfig_Compile { }) })) } - /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(131,3) + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(160,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(135,3) + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(164,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 { @@ -89183,7 +89861,7 @@ pub mod _DdbMiddlewareConfig_Compile { } } - /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(15,3) + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(17,3) #[derive(PartialEq, Clone)] pub enum TableConfig { TableConfig { @@ -89317,10 +89995,10 @@ pub mod _DdbMiddlewareConfig_Compile { } } - /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(41,3) + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(70,3) pub type ValidTableConfig = Arc; - /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(89,3) + /// dafny/DynamoDbEncryptionTransforms/src/DdbMiddlewareConfig.dfy(118,3) #[derive(PartialEq, Clone)] pub enum Config { Config { @@ -91426,7 +92104,7 @@ pub mod _DivInternalsNonlinear_Compile { pub mod _DivMod_Compile { } -/// dafny/DynamoDbEncryption/src/FilterExpr.dfy(29,1) +/// dafny/DynamoDbEncryption/src/FilterExpr.dfy(30,1) pub mod _DynamoDBFilterExpr_Compile { pub use ::dafny_runtime::Sequence; pub use ::dafny_runtime::DafnyCharUTF16; @@ -91472,6 +92150,7 @@ pub mod _DynamoDBFilterExpr_Compile { pub use crate::implementation_from_dafny::_Wrappers_Compile::Outcome; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; pub use crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::MaybeKeyMap; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionNumber; pub use crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::MaybeKeyMap::DontUseKeys; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Success; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue::N; @@ -91495,11 +92174,11 @@ pub mod _DynamoDBFilterExpr_Compile { pub use ::dafny_runtime::map; pub use crate::implementation_from_dafny::_CompoundBeacon_Compile::BeaconPart; pub use crate::implementation_from_dafny::_CompoundBeacon_Compile::BeaconPart::Signed; + pub use ::std::convert::Into; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionCount; pub use crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::MaybeKeyId; pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::KeyLocation::MultiLoc; - pub use ::dafny_runtime::Set; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction; - pub use ::dafny_runtime::SetBuilder; pub use ::std::fmt::Debug; pub use ::std::fmt::Formatter; pub use ::dafny_runtime::DafnyPrint; @@ -91510,16 +92189,16 @@ pub mod _DynamoDBFilterExpr_Compile { pub struct _default {} impl _default { - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(49,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(51,3) pub fn ExtractAttributes(s: &Sequence, ex: &Arc, Sequence>>>) -> Sequence> { let mut tokens: Sequence> = _default::ParseExpr(s, 0); _default::ExtractAttributes2(&tokens, ex, &int!(-1), 0) } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(56,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(58,3) pub fn IsSpecial(t: &Arc) -> bool { matches!(t.as_ref(), AttributeExists{ .. }) || matches!(t.as_ref(), AttributeNotExists{ .. }) || matches!(t.as_ref(), Size{ .. }) } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(64,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(66,3) pub fn ExtractAttributes2(tokens: &Sequence>, names: &Arc, Sequence>>>, tokensUntilSkip: &DafnyInt, pos: u64) -> Sequence> { let mut _accumulator: Sequence> = seq![] as Sequence>; let mut _r0 = tokens.clone(); @@ -91583,15 +92262,15 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(105,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(107,3) pub fn IsEquality(t: &Arc) -> bool { matches!(t.as_ref(), crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::Token::Eq{ .. }) || matches!(t.as_ref(), Ne{ .. }) || matches!(t.as_ref(), In{ .. }) } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(110,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(112,3) pub fn IsInequality(t: &Arc) -> bool { matches!(t.as_ref(), Lt{ .. }) || matches!(t.as_ref(), Le{ .. }) || matches!(t.as_ref(), Gt{ .. }) || matches!(t.as_ref(), Ge{ .. }) } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(115,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(117,3) pub fn TokenToString(t: &Arc) -> Sequence { let mut _source0: Arc = t.clone(); if matches!((&_source0).as_ref(), Attr{ .. }) { @@ -91686,7 +92365,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(147,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(149,3) pub fn GetInPos(expr: &Sequence>, pos: &nat) -> Arc> { let mut _r0 = expr.clone(); let mut _r1 = pos.clone(); @@ -91714,7 +92393,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(162,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(164,3) pub fn RealName(s: &Sequence) -> Sequence { if crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::BeaconPrefix() < s.clone() { s.drop(&crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::BeaconPrefix().cardinality()) @@ -91722,7 +92401,7 @@ pub mod _DynamoDBFilterExpr_Compile { s.clone() } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(171,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(173,3) pub fn HasBeacon(b: &Arc, t: &Arc, names: &Arc, Sequence>>>) -> bool { if matches!(t.as_ref(), Attr{ .. }) { let mut name: Sequence = _default::RealName(t.s()); @@ -91731,7 +92410,7 @@ pub mod _DynamoDBFilterExpr_Compile { false } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(183,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(185,3) pub fn GetBeacon2(b: &Arc, t: &Arc, names: &Arc, Sequence>>>) -> Arc, Arc>> { let mut name: Sequence = _default::RealName(t.s()); if b.beacons().contains(&name) { @@ -91764,7 +92443,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(216,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(218,3) pub fn GetBeacon(bv: &Arc, t: &Arc, op: &Arc, value: &Arc, names: &Arc, Sequence>>>, values: &Map, Arc>) -> Arc, Arc>> { let mut valueOrError0: Arc, Arc>> = _default::GetBeacon2(bv, t, names); if valueOrError0.IsFailure() { @@ -91788,7 +92467,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(233,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(235,3) pub fn GetBetweenBeacon(bv: &Arc, t: &Arc, op: &Arc, leftValue: &Arc, rightValue: &Arc, names: &Arc, Sequence>>>, values: &Map, Arc>) -> Arc, Arc>> { let mut valueOrError0: Arc, Arc>> = _default::GetBeacon2(bv, t, names); if valueOrError0.IsFailure() { @@ -91812,7 +92491,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(260,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(262,3) pub fn CanStandardBeacon(op: &Arc) -> Arc>> { let mut _source0: Arc = op.clone(); if matches!((&_source0).as_ref(), Attr{ .. }) { @@ -91948,7 +92627,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(269,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(271,3) pub fn CanCompoundBeacon(b: &Arc, op: &Arc, value: &Sequence) -> Arc>> { let mut _source0: Arc = op.clone(); if matches!((&_source0).as_ref(), Attr{ .. }) { @@ -92136,7 +92815,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(296,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(298,3) pub fn GetStringFromValue(value: &Sequence, values: &Map, Arc>, b: &Arc) -> Arc, Arc>> { if values.contains(value) { let mut val: Arc = values.get(value); @@ -92155,7 +92834,7 @@ pub mod _DynamoDBFilterExpr_Compile { }) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(310,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(312,3) pub fn CanBeacon(b: &Arc, op: &Arc, value: &Sequence, values: &Map, Arc>) -> Arc>> { if matches!(b.as_ref(), Standard{ .. }) { _default::CanStandardBeacon(op) @@ -92169,7 +92848,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(326,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(328,3) pub fn RemoveCommonPrefix(x: &Sequence>, y: &Sequence>, pos: u64) -> (Sequence>, Sequence>) { let mut _r0 = x.clone(); let mut _r1 = y.clone(); @@ -92194,7 +92873,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(340,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(342,3) pub fn CanBetween(b: &Arc, op: &Arc, leftValue: &Sequence, rightValue: &Sequence, values: &Map, Arc>) -> Arc>> { if matches!(b.as_ref(), Standard{ .. }) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { @@ -92240,7 +92919,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(392,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(394,3) pub fn BeaconForValue(b: &Arc, expr: &Sequence>, pos: &nat, names: &Arc, Sequence>>>, values: &Map, Arc>) -> Arc, Arc>> { if pos.clone() + int!(2) < expr.cardinality() && _default::IsComp(&expr.get(&(pos.clone() + int!(1)))) && _default::HasBeacon(b, &expr.get(&(pos.clone() + int!(2))), names) { _default::GetBeacon(b, &expr.get(&(pos.clone() + int!(2))), &expr.get(&(pos.clone() + int!(1))), &expr.get(pos), names, values) @@ -92299,7 +92978,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(437,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(439,3) pub fn AttrForValue(expr: &Sequence>, pos: &nat) -> Arc>> { if pos.clone() + int!(2) < expr.cardinality() && _default::IsComp(&expr.get(&(pos.clone() + int!(1)))) && matches!((&expr.get(&(pos.clone() + int!(2)))).as_ref(), Attr{ .. }) { Arc::new(Option::>::Some { @@ -92344,7 +93023,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(475,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(477,3) pub fn OpNeedsBeacon(expr: &Sequence>, pos: &nat) -> bool { if pos.clone() < int!(2) { true @@ -92356,7 +93035,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(491,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(493,3) pub fn IsAllowedOnBeaconPred(expr: &Sequence>, pos: &nat) -> bool { if pos.clone() < int!(2) { true @@ -92372,7 +93051,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(509,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(511,3) pub fn IsAllowedOnBeacon(expr: &Sequence>, pos: &nat, name: &Sequence) -> Arc>> { if _default::IsAllowedOnBeaconPred(expr, pos) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { @@ -92384,16 +93063,16 @@ pub mod _DynamoDBFilterExpr_Compile { }) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(519,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(521,3) pub fn TokenNeedsBeacon(t: &Arc) -> bool { !(matches!(t.as_ref(), AttributeExists{ .. }) || matches!(t.as_ref(), AttributeNotExists{ .. })) } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(526,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(528,3) pub fn TokenAllowsBeacon(t: &Arc) -> bool { !(matches!(t.as_ref(), AttributeType{ .. }) || matches!(t.as_ref(), Size{ .. })) } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(534,3) - pub fn BeaconizeParsedExpr(b: &Arc, expr: &Sequence>, pos: &nat, oldValues: &Map, Arc>, names: &Arc, Sequence>>>, keys: &Arc, newValues: &Map, Arc>, acc: &Sequence>) -> Arc, Arc>> { + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(536,3) + pub fn BeaconizeParsedExpr(b: &Arc, expr: &Sequence>, pos: &nat, oldValues: &Map, Arc>, names: &Arc, Sequence>>>, keys: &Arc, newValues: &Map, Arc>, partition: PartitionNumber, acc: &Sequence>) -> Arc, Arc>> { let mut _r0 = b.clone(); let mut _r1 = expr.clone(); let mut _r2 = pos.clone(); @@ -92401,7 +93080,8 @@ pub mod _DynamoDBFilterExpr_Compile { let mut _r4 = names.clone(); let mut _r5 = keys.clone(); let mut _r6 = newValues.clone(); - let mut _r7 = acc.clone(); + let mut _r7 = partition; + let mut _r8 = acc.clone(); 'TAIL_CALL_START: loop { let b = _r0; let expr = _r1; @@ -92410,7 +93090,8 @@ pub mod _DynamoDBFilterExpr_Compile { let names = _r4; let keys = _r5; let newValues = _r6; - let acc = _r7; + let partition = _r7; + let acc = _r8; if pos.clone() == expr.cardinality() { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { value: Arc::new(ParsedContext::ParsedContext { @@ -92450,7 +93131,8 @@ pub mod _DynamoDBFilterExpr_Compile { }); let mut _in5: Arc = keys.clone(); let mut _in6: Map, Arc> = newValues.clone(); - let mut _in7: Sequence> = acc.concat(&seq![expr.get(&pos)]); + let mut _in7: PartitionNumber = partition; + let mut _in8: Sequence> = acc.concat(&seq![expr.get(&pos)]); _r0 = _in0.clone(); _r1 = _in1.clone(); _r2 = _in2.clone(); @@ -92458,67 +93140,74 @@ pub mod _DynamoDBFilterExpr_Compile { _r4 = _in4.clone(); _r5 = _in5.clone(); _r6 = _in6.clone(); - _r7 = _in7.clone(); + _r7 = _in7; + _r8 = _in8.clone(); continue 'TAIL_CALL_START; } else { - let mut _in8: Arc = b.clone(); - let mut _in9: Sequence> = expr.clone(); - let mut _in10: DafnyInt = pos.clone() + int!(1); - let mut _in11: Map, Arc> = oldValues.clone(); - let mut _in12: Arc, Sequence>>> = names.clone(); - let mut _in13: Arc = keys.clone(); - let mut _in14: Map, Arc> = newValues.clone(); - let mut _in15: Sequence> = acc.concat(&seq![Arc::new(Token::Attr { + let mut _in9: Arc = b.clone(); + let mut _in10: Sequence> = expr.clone(); + let mut _in11: DafnyInt = pos.clone() + int!(1); + let mut _in12: Map, Arc> = oldValues.clone(); + let mut _in13: Arc, Sequence>>> = names.clone(); + let mut _in14: Arc = keys.clone(); + let mut _in15: Map, Arc> = newValues.clone(); + let mut _in16: PartitionNumber = partition; + let mut _in17: Sequence> = acc.concat(&seq![Arc::new(Token::Attr { s: newName.clone(), loc: crate::implementation_from_dafny::_TermLoc_Compile::_default::TermLocMap(&newName) })]); - _r0 = _in8.clone(); - _r1 = _in9.clone(); - _r2 = _in10.clone(); - _r3 = _in11.clone(); - _r4 = _in12.clone(); - _r5 = _in13.clone(); - _r6 = _in14.clone(); - _r7 = _in15.clone(); + _r0 = _in9.clone(); + _r1 = _in10.clone(); + _r2 = _in11.clone(); + _r3 = _in12.clone(); + _r4 = _in13.clone(); + _r5 = _in14.clone(); + _r6 = _in15.clone(); + _r7 = _in16; + _r8 = _in17.clone(); continue 'TAIL_CALL_START; } } else { - let mut _in16: Arc = b.clone(); - let mut _in17: Sequence> = expr.clone(); - let mut _in18: DafnyInt = pos.clone() + int!(1); - let mut _in19: Map, Arc> = oldValues.clone(); - let mut _in20: Arc, Sequence>>> = names.clone(); - let mut _in21: Arc = keys.clone(); - let mut _in22: Map, Arc> = newValues.clone(); - let mut _in23: Sequence> = acc.concat(&seq![expr.get(&pos)]); - _r0 = _in16.clone(); - _r1 = _in17.clone(); - _r2 = _in18.clone(); - _r3 = _in19.clone(); - _r4 = _in20.clone(); - _r5 = _in21.clone(); - _r6 = _in22.clone(); - _r7 = _in23.clone(); + let mut _in18: Arc = b.clone(); + let mut _in19: Sequence> = expr.clone(); + let mut _in20: DafnyInt = pos.clone() + int!(1); + let mut _in21: Map, Arc> = oldValues.clone(); + let mut _in22: Arc, Sequence>>> = names.clone(); + let mut _in23: Arc = keys.clone(); + let mut _in24: Map, Arc> = newValues.clone(); + let mut _in25: PartitionNumber = partition; + let mut _in26: Sequence> = acc.concat(&seq![expr.get(&pos)]); + _r0 = _in18.clone(); + _r1 = _in19.clone(); + _r2 = _in20.clone(); + _r3 = _in21.clone(); + _r4 = _in22.clone(); + _r5 = _in23.clone(); + _r6 = _in24.clone(); + _r7 = _in25; + _r8 = _in26.clone(); continue 'TAIL_CALL_START; } } } else { - let mut _in24: Arc = b.clone(); - let mut _in25: Sequence> = expr.clone(); - let mut _in26: DafnyInt = pos.clone() + int!(1); - let mut _in27: Map, Arc> = oldValues.clone(); - let mut _in28: Arc, Sequence>>> = names.clone(); - let mut _in29: Arc = keys.clone(); - let mut _in30: Map, Arc> = newValues.clone(); - let mut _in31: Sequence> = acc.concat(&seq![expr.get(&pos)]); - _r0 = _in24.clone(); - _r1 = _in25.clone(); - _r2 = _in26.clone(); - _r3 = _in27.clone(); - _r4 = _in28.clone(); - _r5 = _in29.clone(); - _r6 = _in30.clone(); - _r7 = _in31.clone(); + let mut _in27: Arc = b.clone(); + let mut _in28: Sequence> = expr.clone(); + let mut _in29: DafnyInt = pos.clone() + int!(1); + let mut _in30: Map, Arc> = oldValues.clone(); + let mut _in31: Arc, Sequence>>> = names.clone(); + let mut _in32: Arc = keys.clone(); + let mut _in33: Map, Arc> = newValues.clone(); + let mut _in34: PartitionNumber = partition; + let mut _in35: Sequence> = acc.concat(&seq![expr.get(&pos)]); + _r0 = _in27.clone(); + _r1 = _in28.clone(); + _r2 = _in29.clone(); + _r3 = _in30.clone(); + _r4 = _in31.clone(); + _r5 = _in32.clone(); + _r6 = _in33.clone(); + _r7 = _in34; + _r8 = _in35.clone(); continue 'TAIL_CALL_START; } } @@ -92540,7 +93229,7 @@ pub mod _DynamoDBFilterExpr_Compile { value: oldValue.clone() }) } else { - eb.beacon().value().GetBeaconValue(&oldValue, &keys, eb.forEquality().clone(), eb.forContains().clone()) + eb.beacon().value().GetBeaconValue(&oldValue, &keys, eb.forEquality().clone(), eb.forContains().clone(), partition) }; if valueOrError4.IsFailure() { return valueOrError4.PropagateFailure::>(); @@ -92550,51 +93239,55 @@ pub mod _DynamoDBFilterExpr_Compile { if valueOrError5.IsFailure() { return valueOrError5.PropagateFailure::>(); } else { - let mut _in32: Arc = b.clone(); - let mut _in33: Sequence> = expr.clone(); - let mut _in34: DafnyInt = pos.clone() + int!(1); - let mut _in35: Map, Arc> = oldValues.clone(); - let mut _in36: Arc, Sequence>>> = names.clone(); - let mut _in37: Arc = keys.clone(); - let mut _in38: Map, Arc> = newValues.update_index(&name, &newValue); - let mut _in39: Sequence> = acc.concat(&seq![expr.get(&pos)]); - _r0 = _in32.clone(); - _r1 = _in33.clone(); - _r2 = _in34.clone(); - _r3 = _in35.clone(); - _r4 = _in36.clone(); - _r5 = _in37.clone(); - _r6 = _in38.clone(); - _r7 = _in39.clone(); + let mut _in36: Arc = b.clone(); + let mut _in37: Sequence> = expr.clone(); + let mut _in38: DafnyInt = pos.clone() + int!(1); + let mut _in39: Map, Arc> = oldValues.clone(); + let mut _in40: Arc, Sequence>>> = names.clone(); + let mut _in41: Arc = keys.clone(); + let mut _in42: Map, Arc> = newValues.update_index(&name, &newValue); + let mut _in43: PartitionNumber = partition; + let mut _in44: Sequence> = acc.concat(&seq![expr.get(&pos)]); + _r0 = _in36.clone(); + _r1 = _in37.clone(); + _r2 = _in38.clone(); + _r3 = _in39.clone(); + _r4 = _in40.clone(); + _r5 = _in41.clone(); + _r6 = _in42.clone(); + _r7 = _in43; + _r8 = _in44.clone(); continue 'TAIL_CALL_START; } } } } } else { - let mut _in40: Arc = b.clone(); - let mut _in41: Sequence> = expr.clone(); - let mut _in42: DafnyInt = pos.clone() + int!(1); - let mut _in43: Map, Arc> = oldValues.clone(); - let mut _in44: Arc, Sequence>>> = names.clone(); - let mut _in45: Arc = keys.clone(); - let mut _in46: Map, Arc> = newValues.clone(); - let mut _in47: Sequence> = acc.concat(&seq![expr.get(&pos)]); - _r0 = _in40.clone(); - _r1 = _in41.clone(); - _r2 = _in42.clone(); - _r3 = _in43.clone(); - _r4 = _in44.clone(); - _r5 = _in45.clone(); - _r6 = _in46.clone(); - _r7 = _in47.clone(); + let mut _in45: Arc = b.clone(); + let mut _in46: Sequence> = expr.clone(); + let mut _in47: DafnyInt = pos.clone() + int!(1); + let mut _in48: Map, Arc> = oldValues.clone(); + let mut _in49: Arc, Sequence>>> = names.clone(); + let mut _in50: Arc = keys.clone(); + let mut _in51: Map, Arc> = newValues.clone(); + let mut _in52: PartitionNumber = partition; + let mut _in53: Sequence> = acc.concat(&seq![expr.get(&pos)]); + _r0 = _in45.clone(); + _r1 = _in46.clone(); + _r2 = _in47.clone(); + _r3 = _in48.clone(); + _r4 = _in49.clone(); + _r5 = _in50.clone(); + _r6 = _in51.clone(); + _r7 = _in52; + _r8 = _in53.clone(); continue 'TAIL_CALL_START; } } } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(584,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(587,3) pub fn ParsedExprToString(t: &Sequence>) -> Sequence { let mut x: Sequence> = crate::implementation_from_dafny::_Seq_Compile::_default::Map::, Sequence>(&({ Arc::new(move |x: &Arc| -> Sequence{ @@ -92607,7 +93300,7 @@ pub mod _DynamoDBFilterExpr_Compile { crate::implementation_from_dafny::_StandardLibrary_Compile::_default::Join::(&x, &string_utf16_of(" ")) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(594,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(597,3) pub fn IsUnary(t: &Arc) -> bool { let mut _source0: Arc = t.clone(); if matches!((&_source0).as_ref(), Attr{ .. }) { @@ -92699,7 +93392,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(601,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(604,3) pub fn IsComp(t: &Arc) -> bool { let mut _source0: Arc = t.clone(); if matches!((&_source0).as_ref(), Attr{ .. }) { @@ -92791,7 +93484,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(608,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(611,3) pub fn IsBinaryBool(t: &Arc) -> bool { let mut _source0: Arc = t.clone(); if matches!((&_source0).as_ref(), Attr{ .. }) { @@ -92883,11 +93576,11 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(615,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(618,3) pub fn IsBinary(t: &Arc) -> bool { _default::IsComp(t) || _default::IsBinaryBool(t) } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(620,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(623,3) pub fn IsVar(t: &Arc) -> bool { let mut _source0: Arc = t.clone(); if matches!((&_source0).as_ref(), Attr{ .. }) { @@ -92982,7 +93675,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(628,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(631,3) pub fn IsFunction(t: &Arc) -> bool { let mut _source0: Arc = t.clone(); if matches!((&_source0).as_ref(), Attr{ .. }) { @@ -93074,7 +93767,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(643,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(646,3) pub fn Precedence(t: &Arc) -> nat { let mut _source0: Arc = t.clone(); if matches!((&_source0).as_ref(), Attr{ .. }) { @@ -93169,7 +93862,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(670,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(673,3) pub fn ParseExpr(s: &Sequence, pos: u64) -> Sequence> { let mut _accumulator: Sequence> = seq![] as Sequence>; let mut _r0 = s.clone(); @@ -93190,7 +93883,15 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(680,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(682,3) + pub fn ParseExprOpt(s: &Arc>>) -> Sequence> { + if matches!(s.as_ref(), None{ .. }) { + seq![] as Sequence> + } else { + _default::ParseExpr(s.value(), 0) + } + } + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(692,3) pub fn ByteLower(ch: u8) -> u8 { if (DafnyCharUTF16(65 as u16).0 as u8) <= ch && ch <= DafnyCharUTF16(90 as u16).0 as u8 { ch - DafnyCharUTF16(65 as u16).0 as u8 + DafnyCharUTF16(97 as u16).0 as u8 @@ -93198,7 +93899,7 @@ pub mod _DynamoDBFilterExpr_Compile { ch } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(688,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(700,3) pub fn CharLower(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) @@ -93206,7 +93907,7 @@ pub mod _DynamoDBFilterExpr_Compile { ch.clone() } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(697,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(709,3) pub fn EqualLower(pre: &Sequence, s: &Sequence, pos: u64, diff: u64) -> bool { let mut _r0 = pre.clone(); let mut _r1 = s.clone(); @@ -93237,7 +93938,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } /// requires pre is already lowercase - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(712,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(724,3) pub fn PrefixLower(pre: &Sequence, s: &Sequence, pos: u64) -> bool { if truncate!(s.cardinality(), u64) < crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(pos, truncate!(pre.cardinality(), u64)) { false @@ -93245,7 +93946,7 @@ pub mod _DynamoDBFilterExpr_Compile { _default::EqualLower(pre, s, 0, pos) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(727,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(739,3) pub fn ValueChar(ch: &DafnyCharUTF16) -> bool { if DafnyCharUTF16(97 as u16) <= ch.clone() && ch.clone() <= DafnyCharUTF16(122 as u16) { true @@ -93265,7 +93966,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(742,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(754,3) pub fn AttributeChar(ch: &DafnyCharUTF16) -> bool { if _default::ValueChar(ch) { true @@ -93277,7 +93978,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(753,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(765,3) pub fn ValueLen(s: &Sequence, pos: u64) -> u64 { if pos == truncate!(s.cardinality(), u64) { 0 @@ -93289,7 +93990,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(768,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(780,3) pub fn AttributeLen(s: &Sequence, pos: u64) -> u64 { if pos == truncate!(s.cardinality(), u64) { 0 @@ -93301,7 +94002,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(782,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(794,3) pub fn MakeAttr(s: &Sequence) -> Arc { let mut loc: Arc>> = crate::implementation_from_dafny::_TermLoc_Compile::_default::MakeTermLoc(s); if matches!((&loc).as_ref(), Success{ .. }) { @@ -93316,7 +94017,7 @@ pub mod _DynamoDBFilterExpr_Compile { }) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(792,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(804,3) pub fn FindIndexToken(s: &Sequence, pos: u64) -> (u64, Arc) { if pos == truncate!(s.cardinality(), u64) { ( @@ -93520,7 +94221,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(866,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(878,3) pub fn VarOrSize(input: &Sequence>, pos: u64) -> u64 { if truncate!(input.cardinality(), u64) == pos { 0 @@ -93536,7 +94237,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(883,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(895,3) pub fn IsBetween(input: &Sequence>, pos: u64) -> Arc> { let mut input_size: u64 = truncate!(input.cardinality(), u64); if input_size < crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(pos, 5) { @@ -93566,7 +94267,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(909,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(921,3) pub fn IsIN(input: &Sequence>, pos: u64) -> bool { if truncate!(input.cardinality(), u64) < crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(pos, 3) { false @@ -93586,7 +94287,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(927,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(939,3) pub fn ConvertToPrefix(input: &Sequence>, pos: u64) -> Sequence> { let mut _accumulator: Sequence> = seq![] as Sequence>; let mut _r0 = input.clone(); @@ -93626,12 +94327,12 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(954,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(966,3) pub fn ConvertToRpn(input: &Sequence>) -> Sequence> { let mut stack: Sequence> = seq![] as Sequence>; _default::ConvertToRpn_inner(input, &stack, 0) } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(961,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(973,3) pub fn ConvertToRpn_inner(input: &Sequence>, stack: &Sequence>, pos: u64) -> Sequence> { let mut _accumulator: Sequence> = seq![] as Sequence>; let mut _r0 = input.clone(); @@ -94010,7 +94711,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1009,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1021,3) pub fn GetSize(value: &Arc) -> nat { let mut _source0: Arc = value.clone(); if matches!((&_source0).as_ref(), S{ .. }) { @@ -94071,7 +94772,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1026,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1038,3) pub fn GetStr(s: &Arc) -> Arc { let mut _source0: Arc = s.clone(); if matches!((&_source0).as_ref(), Bool{ .. }) { @@ -94092,7 +94793,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1035,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1047,3) pub fn AsStr(s: &Sequence) -> Arc { Arc::new(StackValue::Str { s: Arc::new(AttributeValue::S { @@ -94100,7 +94801,7 @@ pub mod _DynamoDBFilterExpr_Compile { }) }) } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1040,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1052,3) pub fn StackValueFromValue(s: &Sequence, values: &Map, Arc>) -> Arc { if values.contains(s) { Arc::new(StackValue::Str { @@ -94110,7 +94811,7 @@ pub mod _DynamoDBFilterExpr_Compile { Arc::new(StackValue::DoesNotExist {}) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1051,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1063,3) pub fn StackValueFromItem(s: &Sequence, item: &Map, Arc>) -> Arc { if item.contains(s) { Arc::new(StackValue::Str { @@ -94120,7 +94821,7 @@ pub mod _DynamoDBFilterExpr_Compile { Arc::new(StackValue::DoesNotExist {}) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1063,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1075,3) pub fn StackValueFromAttr(t: &Arc, item: &Map, Arc>, names: &Arc, Sequence>>>) -> Arc { if matches!(names.as_ref(), Some{ .. }) && names.value().contains(t.s()) { _default::StackValueFromItem(&names.value().get(t.s()), item) @@ -94135,7 +94836,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1082,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1094,3) pub fn GetParsedExpr(input: &Sequence) -> Arc>, Arc>> { let mut seq1: Sequence> = _default::ParseExpr(input, 0); let mut seq2: Sequence> = _default::ConvertToPrefix(&seq1, 0); @@ -94143,14 +94844,14 @@ pub mod _DynamoDBFilterExpr_Compile { value: _default::ConvertToRpn(&seq2) }) } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1090,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1102,3) pub fn EvalExpr(input: &Sequence>, item: &Map, Arc>, names: &Arc, Sequence>>>, values: &Map, Arc>) -> Arc>> { let mut ret: Arc>>; let mut _out0: Arc>> = _default::InnerEvalExpr(input, &(seq![] as Sequence>), item, names, values, 0); ret = _out0.clone(); return ret.clone(); } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1102,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1114,3) pub fn StringsFollowing(input: &Sequence>) -> nat { let mut _accumulator: nat = int!(0); let mut _r0 = input.clone(); @@ -94170,7 +94871,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1113,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1125,3) pub fn seq_contains<_T: DafnyTypeEq>(haystack: &Sequence<_T>, needle: &Sequence<_T>) -> bool { let mut ret: bool = ::default(); let mut result: Arc>; @@ -94179,7 +94880,7 @@ pub mod _DynamoDBFilterExpr_Compile { ret = matches!((&result).as_ref(), Some{ .. }); return ret; } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1120,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1132,3) pub fn does_contain(haystack: &Arc, needle: &Arc) -> bool { let mut ret: bool = ::default(); let mut _source0: Arc = haystack.clone(); @@ -94279,7 +94980,7 @@ pub mod _DynamoDBFilterExpr_Compile { }; return ret; } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1165,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1177,3) pub fn begins_with(haystack: &Arc, needle: &Arc) -> bool { let mut _source0: Arc = haystack.clone(); if matches!((&_source0).as_ref(), S{ .. }) { @@ -94358,7 +95059,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1197,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1209,3) pub fn is_between(middle: &Arc, left: &Arc, right: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = _default::AttributeLE(left, middle); if valueOrError0.IsFailure() { @@ -94376,7 +95077,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1205,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1217,3) pub fn is_in(target: &Arc, list: &Sequence>, pos: u64) -> bool { let mut _r0 = target.clone(); let mut _r1 = list.clone(); @@ -94402,7 +95103,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1219,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1231,3) pub fn AttrToStr(attr: &Arc) -> Sequence { let mut _source0: Arc = attr.clone(); if matches!((&_source0).as_ref(), S{ .. }) { @@ -94455,11 +95156,11 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1229,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1241,3) pub fn IsAttrType(attr: &Arc, typeStr: &Arc) -> bool { crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::AttrTypeToStr(&_default::GetStr(attr)) == _default::AttrToStr(&_default::GetStr(typeStr)) } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1235,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1247,3) pub fn apply_function(input: &Arc, stack: &Sequence>, num_args: &nat) -> Arc, Arc>> { let mut result = MaybePlacebo::, Arc>>>::new(); let mut _source0: Arc = input.clone(); @@ -94767,7 +95468,7 @@ pub mod _DynamoDBFilterExpr_Compile { }; return result.read(); } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1309,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1321,3) pub fn apply_unary(input: &Arc, stack: &Arc) -> Arc, Arc>> { if matches!(stack.as_ref(), Bool{ .. }) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { @@ -94781,7 +95482,7 @@ pub mod _DynamoDBFilterExpr_Compile { }) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1318,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1330,3) pub fn apply_binary_bool(input: &Arc, x: bool, y: bool) -> Arc>> { let mut _source0: Arc = input.clone(); if matches!((&_source0).as_ref(), Attr{ .. }) { @@ -94917,11 +95618,11 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1326,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1338,3) pub fn IsHighSurrogate(ch: &DafnyCharUTF16) -> bool { DafnyCharUTF16(::from(int!(b"55296")).unwrap()) <= ch.clone() && ch.clone() <= DafnyCharUTF16(::from(int!(b"56319")).unwrap()) } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1335,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1347,3) pub fn UnicodeLess(a: &Sequence, b: &Sequence, pos: &nat) -> bool { let mut _r0 = a.clone(); let mut _r1 = b.clone(); @@ -94961,11 +95662,11 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1360,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1372,3) pub fn UnicodeLessOrEqual(a: &Sequence, b: &Sequence) -> bool { !_default::UnicodeLess(b, a, &int!(0)) } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1365,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1377,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{ @@ -94991,7 +95692,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1372,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1384,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()); @@ -95009,7 +95710,7 @@ pub mod _DynamoDBFilterExpr_Compile { }) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1381,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1393,3) pub fn AttributeNE(a: &Arc, b: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = _default::AttributeEQ(a, b); if valueOrError0.IsFailure() { @@ -95021,7 +95722,7 @@ pub mod _DynamoDBFilterExpr_Compile { }) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1387,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1399,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()); @@ -95051,7 +95752,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1399,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1411,3) pub fn AttributeLT(a: &Arc, b: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = _default::AttributeLE(b, a); if valueOrError0.IsFailure() { @@ -95063,7 +95764,7 @@ pub mod _DynamoDBFilterExpr_Compile { }) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1404,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1416,3) pub fn AttributeGT(a: &Arc, b: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = _default::AttributeLE(a, b); if valueOrError0.IsFailure() { @@ -95075,7 +95776,7 @@ pub mod _DynamoDBFilterExpr_Compile { }) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1409,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1421,3) pub fn AttributeGE(a: &Arc, b: &Arc) -> Arc>> { let mut valueOrError0: Arc>> = _default::AttributeLE(b, a); if valueOrError0.IsFailure() { @@ -95087,7 +95788,7 @@ pub mod _DynamoDBFilterExpr_Compile { }) } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1416,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1428,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{ .. }) { @@ -95211,7 +95912,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1429,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1441,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{ .. }) { @@ -95251,7 +95952,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1446,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1458,3) pub fn NumArgs(t: &Arc, stack: &Sequence>) -> nat { let mut _source0: Arc = t.clone(); if matches!((&_source0).as_ref(), Attr{ .. }) { @@ -95343,7 +96044,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1461,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1473,3) pub fn InnerEvalExpr(input: &Sequence>, stack: &Sequence>, item: &Map, Arc>, names: &Arc, Sequence>>>, values: &Map, Arc>, pos: u64) -> Arc>> { let mut ret = MaybePlacebo::>>>::new(); if pos == truncate!(input.cardinality(), u64) { @@ -95430,14 +96131,14 @@ pub mod _DynamoDBFilterExpr_Compile { }; return ret.read(); } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1515,3) - pub fn FilterItems(b: &Arc, parsed: &Sequence>, ItemList: &Sequence, Arc>>, names: &Arc, Sequence>>>, values: &Map, Arc>) -> Arc, Arc>>, Arc>> { + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1527,3) + pub fn FilterItems(b: &Arc, parsed: &Sequence>, ItemList: &Sequence, Arc>>, names: &Arc, Sequence>>>, values: &Map, Arc>, partition: PartitionNumber) -> Arc, Arc>>, Arc>> { let mut output = MaybePlacebo::, Arc>>, Arc>>>::new(); let mut acc: Sequence, Arc>> = seq![] as Sequence, Arc>>; let mut _hi0: DafnyInt = ItemList.cardinality(); for i in integer_range(int!(0), _hi0.clone()) { let mut valueOrError0: Arc, Arc>, Arc>>; - let mut _out0: Arc, Arc>, Arc>> = b.GeneratePlainBeacons(&ItemList.get(&i)); + let mut _out0: Arc, Arc>, Arc>> = b.GeneratePlainBeacons(&ItemList.get(&i), partition); valueOrError0 = _out0.clone(); if valueOrError0.IsFailure() { output = MaybePlacebo::from(valueOrError0.PropagateFailure::, Arc>>>()); @@ -95461,7 +96162,7 @@ pub mod _DynamoDBFilterExpr_Compile { })); return output.read(); } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1539,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1552,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{ .. }) { @@ -95470,10 +96171,11 @@ pub mod _DynamoDBFilterExpr_Compile { })); return output.read(); } else { + let mut partition: PartitionNumber = 0; let mut afterKeys: Sequence, Arc>>; if matches!(KeyExpression.as_ref(), Some{ .. }) { let mut parsed: Sequence> = _default::ParseExpr(KeyExpression.value(), 0); - let mut valueOrError0: Arc, Arc>> = _default::BeaconizeParsedExpr(b, &parsed, &int!(0), &values.UnwrapOr(&map![]), names, &Arc::new(MaybeKeyMap::DontUseKeys {}), &map![], &(seq![] as Sequence>)); + let mut valueOrError0: Arc, Arc>> = _default::BeaconizeParsedExpr(b, &parsed, &int!(0), &values.UnwrapOr(&map![]), names, &Arc::new(MaybeKeyMap::DontUseKeys {}), &map![], partition, &(seq![] as Sequence>)); if valueOrError0.IsFailure() { output = MaybePlacebo::from(valueOrError0.PropagateFailure::, Arc>>>()); return output.read(); @@ -95482,7 +96184,7 @@ pub mod _DynamoDBFilterExpr_Compile { let mut expr1: Sequence> = _default::ConvertToPrefix(expr.expr(), 0); let mut expr2: Sequence> = _default::ConvertToRpn(&expr1); let mut valueOrError1: Arc, Arc>>, Arc>>; - let mut _out0: Arc, Arc>>, Arc>> = _default::FilterItems(b, &expr2, ItemList, expr.names(), expr.values()); + let mut _out0: Arc, Arc>>, Arc>> = _default::FilterItems(b, &expr2, ItemList, expr.names(), expr.values(), partition); valueOrError1 = _out0.clone(); if valueOrError1.IsFailure() { output = MaybePlacebo::from(valueOrError1.PropagateFailure::, Arc>>>()); @@ -95494,7 +96196,7 @@ pub mod _DynamoDBFilterExpr_Compile { }; if matches!(FilterExpression.as_ref(), Some{ .. }) { let mut parsed: Sequence> = _default::ParseExpr(FilterExpression.value(), 0); - let mut valueOrError2: Arc, Arc>> = _default::BeaconizeParsedExpr(b, &parsed, &int!(0), &values.UnwrapOr(&map![]), names, &Arc::new(MaybeKeyMap::DontUseKeys {}), &map![], &(seq![] as Sequence>)); + let mut valueOrError2: Arc, Arc>> = _default::BeaconizeParsedExpr(b, &parsed, &int!(0), &values.UnwrapOr(&map![]), names, &Arc::new(MaybeKeyMap::DontUseKeys {}), &map![], partition, &(seq![] as Sequence>)); if valueOrError2.IsFailure() { output = MaybePlacebo::from(valueOrError2.PropagateFailure::, Arc>>>()); return output.read(); @@ -95502,7 +96204,7 @@ pub mod _DynamoDBFilterExpr_Compile { let mut expr: Arc = valueOrError2.Extract(); let mut expr1: Sequence> = _default::ConvertToPrefix(expr.expr(), 0); let mut expr2: Sequence> = _default::ConvertToRpn(&expr1); - let mut _out1: Arc, Arc>>, Arc>> = _default::FilterItems(b, &expr2, &afterKeys, expr.names(), expr.values()); + let mut _out1: Arc, Arc>>, Arc>> = _default::FilterItems(b, &expr2, &afterKeys, expr.names(), expr.values(), partition); output = MaybePlacebo::from(_out1.clone()); } else { output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>>, Arc>::Success { @@ -95513,7 +96215,7 @@ pub mod _DynamoDBFilterExpr_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1577,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1592,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 {}) @@ -95552,7 +96254,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1599,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1614,3) pub fn KeyIdFromAttr(bv: &Arc, attr: &Arc>>, value: &Sequence, names: &Arc, Sequence>>>) -> Arc>> { if matches!(attr.as_ref(), None{ .. }) { Arc::new(Option::>::None {}) @@ -95572,7 +96274,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1616,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1631,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(); @@ -95664,7 +96366,40 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1648,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1662,3) + pub fn GetValues(bv: &Arc, expr: &Sequence>, values: &Map, Arc>, names: &Arc, Sequence>>>) -> Arc, Sequence)>, Arc>> { + let mut ret = MaybePlacebo::, Sequence)>, Arc>>>::new(); + let mut result: Sequence<(Arc, Sequence)> = seq![] as Sequence<(Arc, Sequence)>; + let mut _hi0: u64 = truncate!(expr.cardinality(), u64); + for pos in integer_range(0, _hi0).map(Into::::into) { + if matches!((&expr.get(&int!((&pos).clone()))).as_ref(), Value{ .. }) { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(values.contains(expr.get(&int!((&pos).clone())).s()), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&expr.get(&int!((&pos).clone())).s().concat(&string_utf16_of(" not found in ExpressionAttributeValueMap")))); + if valueOrError0.IsFailure() { + ret = MaybePlacebo::from(valueOrError0.PropagateFailure::, Sequence)>>()); + return ret.read(); + }; + let mut oldValue: Arc = values.get(expr.get(&int!((&pos).clone())).s()); + let mut strValue: Sequence; + if matches!((&oldValue).as_ref(), S{ .. }) { + strValue = oldValue.S().clone(); + } else { + strValue = string_utf16_of(""); + }; + let mut attr: Arc>> = _default::AttrForValue(expr, &int!((&pos).clone())); + if matches!((&attr).as_ref(), Some{ .. }) && bv.beacons().contains(attr.value().s()) { + result = result.concat(&seq![( + bv.beacons().get(attr.value().s()), + strValue.clone() + )]); + } + } + } + ret = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence)>, Arc>::Success { + value: result.clone() + })); + return ret.read(); + } + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1687,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 { @@ -95675,11 +96410,51 @@ pub mod _DynamoDBFilterExpr_Compile { _default::GetBeaconKeyIds2(&int!(0), bv, &parsed, values, names, soFar) } } + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1704,3) + pub fn GetNumQueries(bv: &Arc, keyExpr: &Arc>>, values: &Arc, Arc>>>, names: &Arc, Sequence>>>) -> Arc>> { + let mut ret = MaybePlacebo::>>>::new(); + if matches!(keyExpr.as_ref(), None{ .. }) || matches!(values.as_ref(), None{ .. }) { + ret = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { + value: 1 + })); + return ret.read(); + }; + let mut parsed: Sequence> = _default::ParseExpr(keyExpr.value(), 0); + let mut valueOrError0: Arc, Sequence)>, Arc>>; + let mut _out0: Arc, Sequence)>, Arc>> = _default::GetValues(bv, &parsed, values.value(), names); + valueOrError0 = _out0.clone(); + if valueOrError0.IsFailure() { + ret = MaybePlacebo::from(valueOrError0.PropagateFailure::()); + return ret.read(); + }; + let mut values: Sequence<(Arc, Sequence)> = valueOrError0.Extract(); + let mut result: PartitionCount = 1; + 'label_goto_0: loop { + let mut _hi0: u64 = truncate!(values.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + 'label_continue_0: loop { + let mut partitions: PartitionCount; + let mut _out1: PartitionCount = values.get(&int!((&i).clone())).0.clone().getNumQueries(bv.numPartitions().clone(), &values.get(&int!((&i).clone())).1.clone()); + partitions = _out1; + if partitions == 1 || partitions == result { + break 'label_continue_0; + }; + result = crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::lcmPartition(result, partitions, bv.numPartitions().clone());; + break; + } + }; + break; + }; + ret = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { + value: result + })); + return ret.read(); + } /// = specification/searchable-encryption/search-config.md#get-beacon-key-for-query /// = 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(1669,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1736,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 { @@ -95723,8 +96498,182 @@ pub mod _DynamoDBFilterExpr_Compile { } } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1737,3) - pub fn Beaconize(b: &Arc, context: &Arc, keyId: &Arc, naked: bool) -> Arc, Arc>> { + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1803,3) + pub fn AsChar(x: u32) -> DafnyCharUTF16 { + DafnyCharUTF16(65 as u16) + DafnyCharUTF16(x as u16) + } + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1811,3) + pub fn MakeNewName(prev: &Sequence, values: &Map, Arc>, value: &Arc) -> Arc, Arc>> { + let mut output = MaybePlacebo::, Arc>>>::new(); + let mut ch: DafnyCharUTF16 = DafnyCharUTF16(65 as u16); + let mut _hi0: u32 = 26; + for i in integer_range(0, _hi0).map(Into::::into) { + let mut _hi1: u32 = 26; + for j in integer_range(0, _hi1).map(Into::::into) { + let mut new_str: Sequence = prev.concat(&seq![_default::AsChar(i), _default::AsChar(j)]); + if !values.contains(&new_str) || values.get(&new_str) == value.clone() { + output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { + value: new_str.clone() + })); + return output.read(); + } + } + } + output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Could not find new name")) + })); + return output.read(); + } + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1834,3) + pub fn AddContext(old_values: &Map, Arc>, new_filter: &Sequence, new_values: &Map, Arc>) -> Arc, Map, Arc>), Arc>> { + let mut output = MaybePlacebo::, Map, Arc>), Arc>>>::new(); + let mut new_value_keys: Sequence>; + let mut _out0: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToSequence::>(&new_values.keys()); + new_value_keys = _out0.clone(); + let mut allUnchanged: bool = true; + 'label_goto_1: loop { + let mut _hi0: u64 = truncate!(new_value_keys.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + 'label_continue_1: loop { + if !old_values.contains(&new_value_keys.get(&int!((&i).clone()))) { + allUnchanged = false; + break 'label_goto_1; + }; + if new_values.get(&new_value_keys.get(&int!((&i).clone()))) != old_values.get(&new_value_keys.get(&int!((&i).clone()))) { + allUnchanged = false; + break 'label_goto_1; + }; + break; + } + }; + break; + }; + if allUnchanged { + output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(Sequence, Map, Arc>), Arc>::Success { + value: ( + new_filter.clone(), + old_values.clone() + ) + })); + return output.read(); + }; + let mut result_values: Map, Arc> = old_values.clone(); + let mut result_filter: Sequence = new_filter.clone(); + let mut _hi1: u64 = truncate!(new_value_keys.cardinality(), u64); + for i in integer_range(0, _hi1).map(Into::::into) { + let mut key: Sequence = new_value_keys.get(&int!((&i).clone())); + if old_values.contains(&key) && new_values.get(&key) != old_values.get(&key) { + if int!(0) == key.cardinality() { + output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(Sequence, Map, Arc>), Arc>::Failure { + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Unexpected zero length key in ExpressionAttributeValueMap")) + })); + return output.read(); + }; + let mut valueOrError0: Arc, Arc>>; + let mut _out1: Arc, Arc>> = _default::MakeNewName(&key, &result_values, &new_values.get(&key)); + valueOrError0 = _out1.clone(); + if valueOrError0.IsFailure() { + output = MaybePlacebo::from(valueOrError0.PropagateFailure::<(Sequence, Map, Arc>)>()); + return output.read(); + }; + let mut new_key: Sequence = valueOrError0.Extract(); + result_values = result_values.update_index(&new_key, &new_values.get(&key)); + let mut _out2: Sequence = crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::SearchAndReplaceAllWhole::(&result_filter, &key, &new_key, &crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::AlphaNumericUnder()); + result_filter = _out2.clone(); + } + } + output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::<(Sequence, Map, Arc>), Arc>::Success { + value: ( + result_filter.clone(), + result_values.clone() + ) + })); + return output.read(); + } + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1873,3) + pub fn DoBeaconize(b: &Arc, context: &Arc, keyId: &Arc, partition: PartitionNumber, queries: PartitionCount) -> Arc, Arc>> { + let mut output = MaybePlacebo::, Arc>>>::new(); + if queries == b.numPartitions().clone() || b.numPartitions().clone() - partition <= queries || matches!(context.filterExpr().as_ref(), None{ .. }) || matches!(context.values().as_ref(), None{ .. }) { + let mut _out0: Arc, Arc>> = _default::Beaconize(b, context, keyId, partition, false); + output = MaybePlacebo::from(_out0.clone()); + } else { + let mut curr_partition: PartitionNumber = partition; + let mut exprs: Sequence> = seq![] as Sequence>; + let mut values: Map, Arc> = map![]; + let mut keyExpr: Arc>> = Arc::new(Option::>::None {}); + let mut names: Arc, Sequence>>> = Arc::new(Option::, Sequence>>::None {}); + 'label_goto_2: loop { + while curr_partition < b.numPartitions().clone() { + 'label_continue_2: loop { + let mut valueOrError0: Arc, Arc>>; + let mut _out1: Arc, Arc>> = _default::Beaconize(b, context, keyId, curr_partition, false); + valueOrError0 = _out1.clone(); + if valueOrError0.IsFailure() { + output = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); + return output.read(); + }; + let mut localOut: Arc = valueOrError0.Extract(); + if curr_partition == partition { + exprs = seq![localOut.filterExpr().UnwrapOr(&string_utf16_of(""))]; + values = localOut.values().UnwrapOr(&map![]); + keyExpr = localOut.keyExpr().clone(); + names = localOut.names().clone(); + } else { + let mut valueOrError1: Arc, Map, Arc>), Arc>>; + let mut _out2: Arc, Map, Arc>), Arc>> = _default::AddContext(&values, &localOut.filterExpr().UnwrapOr(&string_utf16_of("")), &localOut.values().UnwrapOr(&map![])); + valueOrError1 = _out2.clone(); + if valueOrError1.IsFailure() { + output = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); + return output.read(); + }; + let mut tmpOutput: (Sequence, Map, Arc>) = valueOrError1.Extract(); + let mut __let_tmp_rhs0: (Sequence, Map, Arc>) = tmpOutput.clone(); + let mut expr: Sequence = __let_tmp_rhs0.0.clone(); + let mut value: Map, Arc> = __let_tmp_rhs0.1.clone(); + if !exprs.contains(&expr) { + exprs = exprs.concat(&seq![expr.clone()]); + }; + values = value.clone(); + }; + if b.numPartitions().clone() - curr_partition <= queries { + break 'label_goto_2; + } else { + curr_partition = curr_partition + queries; + }; + break; + } + }; + break; + }; + let mut result_filter: Sequence; + let mut exprs_size: u64 = truncate!(exprs.cardinality(), u64); + if exprs_size == 1 { + result_filter = exprs.get(&int!(0)); + } else { + result_filter = string_utf16_of("(").concat(&exprs.get(&int!(0))).concat(&string_utf16_of(")")); + let mut _hi0: u64 = exprs_size; + for i in integer_range(1, _hi0).map(Into::::into) { + result_filter = result_filter.concat(&string_utf16_of(" OR (")).concat(&exprs.get(&int!((&i).clone()))).concat(&string_utf16_of(")")); + } + }; + output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { + value: Arc::new(ExprContext::ExprContext { + keyExpr: keyExpr.clone(), + filterExpr: Arc::new(Option::>::Some { + value: result_filter.clone() + }), + values: Arc::new(Option::, Arc>>::Some { + value: values.clone() + }), + names: names.clone() + }) + })); + return output.read(); + }; + return output.read(); + } + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1938,3) + pub fn Beaconize(b: &Arc, context: &Arc, keyId: &Arc, partition: PartitionNumber, naked: bool) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); if matches!(context.keyExpr().as_ref(), None{ .. }) && matches!(context.filterExpr().as_ref(), None{ .. }) { output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { @@ -95755,7 +96704,7 @@ pub mod _DynamoDBFilterExpr_Compile { let mut newNames: Arc, Sequence>>> = context.names().clone(); if matches!(context.keyExpr().as_ref(), Some{ .. }) { let mut parsed: Sequence> = _default::ParseExpr(context.keyExpr().value(), 0); - let mut valueOrError1: Arc, Arc>> = _default::BeaconizeParsedExpr(b, &parsed, &int!(0), &values, &newNames, &keys, &newValues, &(seq![] as Sequence>)); + let mut valueOrError1: Arc, Arc>> = _default::BeaconizeParsedExpr(b, &parsed, &int!(0), &values, &newNames, &keys, &newValues, partition, &(seq![] as Sequence>)); if valueOrError1.IsFailure() { output = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); return output.read(); @@ -95769,7 +96718,7 @@ pub mod _DynamoDBFilterExpr_Compile { }; if matches!(context.filterExpr().as_ref(), Some{ .. }) { let mut parsed: Sequence> = _default::ParseExpr(context.filterExpr().value(), 0); - let mut valueOrError2: Arc, Arc>> = _default::BeaconizeParsedExpr(b, &parsed, &int!(0), &values, &newNames, &keys, &newValues, &(seq![] as Sequence>)); + let mut valueOrError2: Arc, Arc>> = _default::BeaconizeParsedExpr(b, &parsed, &int!(0), &values, &newNames, &keys, &newValues, partition, &(seq![] as Sequence>)); if valueOrError2.IsFailure() { output = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); return output.read(); @@ -95799,7 +96748,7 @@ pub mod _DynamoDBFilterExpr_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1783,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1985,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()) @@ -95807,43 +96756,45 @@ pub mod _DynamoDBFilterExpr_Compile { t.s().clone() } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1793,3) - pub fn TestParsedExpr(expr: &Sequence>, encrypted: &Set>, names: &Arc, Sequence>>>) -> Arc>> { - let mut output = MaybePlacebo::>>>::new(); + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1995,3) + pub fn UsesEncryptedField(expr: &Sequence>, actions: &Map, Arc>, names: &Arc, Sequence>>>) -> Arc>> { + let mut output = MaybePlacebo::>>>::new(); let mut _hi0: DafnyInt = expr.cardinality(); for i in integer_range(int!(0), _hi0.clone()) { if matches!((&expr.get(&i)).as_ref(), Attr{ .. }) { let mut name: Sequence = _default::GetAttrName(&expr.get(&i), names); - if encrypted.contains(&name) { - output = MaybePlacebo::from(Arc::new(Outcome::>::Fail { - error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Query is using encrypted field : ").concat(&name).concat(&string_utf16_of("."))) + if actions.contains(&name) && actions.get(&name) == Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}) { + output = MaybePlacebo::from(Arc::new(Option::>::Some { + value: name.clone() })); return output.read(); } } } + output = MaybePlacebo::from(Arc::new(Option::>::None {})); + return output.read(); + } + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(2013,3) + pub fn TestParsedExpr(expr: &Sequence>, actions: &Map, Arc>, names: &Arc, Sequence>>>) -> Arc>> { + let mut output = MaybePlacebo::>>>::new(); + let mut hasEncField: Arc>>; + let mut _out0: Arc>> = _default::UsesEncryptedField(expr, actions, names); + hasEncField = _out0.clone(); + if matches!((&hasEncField).as_ref(), Some{ .. }) { + output = MaybePlacebo::from(Arc::new(Outcome::>::Fail { + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Query is using encrypted field : ").concat(hasEncField.value()).concat(&string_utf16_of("."))) + })); + return output.read(); + }; output = MaybePlacebo::from(Arc::new(Outcome::>::Pass {})); return output.read(); } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1812,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(2028,3) pub fn TestBeaconize(actions: &Map, Arc>, keyExpr: &Arc>>, filterExpr: &Arc>>, names: &Arc, Sequence>>>) -> Arc>> { let mut output = MaybePlacebo::>>>::new(); - let mut encrypted: Set> = (&({ - let mut actions = actions.clone(); - Arc::new(move || -> Set>{ - let mut _coll0: SetBuilder> = SetBuilder::>::new(); - for __compr_0 in (&actions).keys().iter().cloned() { - let mut k: Sequence = __compr_0.clone(); - if actions.contains(&k) && actions.get(&k) == Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}) { - _coll0.add(&k) - } - } - _coll0.build() - }) - }))(); if matches!(keyExpr.as_ref(), Some{ .. }) { let mut valueOrError0: Arc>>; - let mut _out0: Arc>> = _default::TestParsedExpr(&_default::ParseExpr(keyExpr.value(), 0), &encrypted, names); + let mut _out0: Arc>> = _default::TestParsedExpr(&_default::ParseExpr(keyExpr.value(), 0), actions, names); valueOrError0 = _out0.clone(); if valueOrError0.IsFailure() { output = MaybePlacebo::from(valueOrError0.PropagateFailure::()); @@ -95852,7 +96803,7 @@ pub mod _DynamoDBFilterExpr_Compile { }; if matches!(filterExpr.as_ref(), Some{ .. }) { let mut valueOrError1: Arc>>; - let mut _out1: Arc>> = _default::TestParsedExpr(&_default::ParseExpr(filterExpr.value(), 0), &encrypted, names); + let mut _out1: Arc>> = _default::TestParsedExpr(&_default::ParseExpr(filterExpr.value(), 0), actions, names); valueOrError1 = _out1.clone(); if valueOrError1.IsFailure() { output = MaybePlacebo::from(valueOrError1.PropagateFailure::()); @@ -95866,7 +96817,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(86,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(88,3) #[derive(PartialEq, Clone)] pub enum Token { Attr { @@ -96159,7 +97110,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(209,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(211,3) #[derive(PartialEq, Clone)] pub enum EqualityBeacon { EqualityBeacon { @@ -96249,7 +97200,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1004,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1016,3) #[derive(PartialEq, Clone)] pub enum StackValue { Bool { @@ -96347,7 +97298,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1722,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1789,3) #[derive(PartialEq, Clone)] pub enum ExprContext { ExprContext { @@ -96448,7 +97399,7 @@ pub mod _DynamoDBFilterExpr_Compile { } } - /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1729,3) + /// dafny/DynamoDbEncryption/src/FilterExpr.dfy(1796,3) #[derive(PartialEq, Clone)] pub enum ParsedContext { ParsedContext { @@ -96540,28 +97491,32 @@ pub mod _DynamoDBFilterExpr_Compile { } /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(15,1) pub mod _DynamoDBSupport_Compile { - pub use ::dafny_runtime::Map; + pub use ::std::sync::Arc; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; pub use ::dafny_runtime::Sequence; 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::_Wrappers_Compile::Result; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::Error; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; + pub use ::dafny_runtime::string_utf16_of; + pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::BeaconVersion; + pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::QueryInput; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionCount; pub use ::dafny_runtime::MaybePlacebo; + pub use ::dafny_runtime::Map; + 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::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; - pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; - pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; pub use ::dafny_runtime::seq; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::ValidSearchInfo; pub use crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::MaybeKeyId; - pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::Error; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionNumber; pub use ::dafny_runtime::map; pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::SearchInfo; pub use ::dafny_runtime::Set; @@ -96569,23 +97524,65 @@ pub mod _DynamoDBSupport_Compile { 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::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue::N; + pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::set; 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 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; pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::Beacon; pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::Beacon::Compound; pub use crate::implementation_from_dafny::_CompoundBeacon_Compile::CompoundBeacon; + pub use ::dafny_runtime::_System::nat; pub struct _default {} impl _default { + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(46,3) + pub fn ValidateExpressionLength(expr: &Arc>>, name: &Sequence) -> Arc>> { + if matches!(expr.as_ref(), None{ .. }) { + Arc::new(Result::>::Success { + value: true + }) + } else { + if expr.value().cardinality() <= _default::MAX_EXPRESSION_LENGTH() { + Arc::new(Result::>::Success { + value: true + }) + } else { + Arc::new(Result::>::Failure { + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&name.concat(&string_utf16_of(" exceeds maximum length of ")).concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&_default::MAX_EXPRESSION_LENGTH())).concat(&string_utf16_of(" characters."))) + }) + } + } + } + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(59,3) + pub fn GetNumberOfQueries(search: &Arc, query: &Arc) -> Arc>> { + let mut output = MaybePlacebo::>>>::new(); + let mut valueOrError0: Arc>> = _default::ValidateExpressionLength(query.KeyConditionExpression(), &string_utf16_of("KeyConditionExpression")); + if valueOrError0.IsFailure() { + output = MaybePlacebo::from(valueOrError0.PropagateFailure::()); + return output.read(); + }; + let mut _v0: bool = valueOrError0.Extract(); + let mut valueOrError1: Arc>>; + let mut _out0: Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::GetNumQueries(search, query.KeyConditionExpression(), query.ExpressionAttributeValues(), query.ExpressionAttributeNames()); + valueOrError1 = _out0.clone(); + if valueOrError1.IsFailure() { + output = MaybePlacebo::from(valueOrError1.PropagateFailure::()); + return output.read(); + }; + let mut numberOfQueries: PartitionCount = valueOrError1.Extract(); + output = MaybePlacebo::from(Arc::new(Result::>::Success { + value: numberOfQueries + })); + return output.read(); + } /// = 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(37,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(76,3) pub fn IsWriteable(item: &Map, Arc>) -> Arc>> { 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>)); @@ -96611,7 +97608,7 @@ pub mod _DynamoDBSupport_Compile { })); return ret.read(); } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(63,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(102,3) pub fn GetEncryptedAttributes(actions: &Map, Arc>, expr: &Arc>>, attrNames: &Arc, Sequence>>>) -> Sequence> { if matches!(expr.as_ref(), None{ .. }) { seq![] as Sequence> @@ -96631,7 +97628,7 @@ 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(80,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(119,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); @@ -96650,18 +97647,18 @@ pub mod _DynamoDBSupport_Compile { }) } } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(103,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(142,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(109,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(148,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(118,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(157,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); @@ -96689,8 +97686,8 @@ pub mod _DynamoDBSupport_Compile { }) } } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(144,3) - pub fn GetEncryptedBeacons(search: &Arc>, item: &Map, Arc>, keyId: &Arc) -> Arc, Arc>, Arc>> { + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(183,3) + pub fn GetEncryptedBeacons(search: &Arc>, item: &Map, Arc>, keyId: &Arc, partition: PartitionNumber) -> Arc, Arc>, Arc>> { let mut output: Arc, Arc>, Arc>>; if matches!(search.as_ref(), None{ .. }) { output = Arc::new(Result::, Arc>, Arc>::Success { @@ -96698,13 +97695,13 @@ pub mod _DynamoDBSupport_Compile { }); return output.clone(); } else { - let mut _out0: Arc, Arc>, Arc>> = SearchInfo::GenerateEncryptedBeacons(search.value(), item, keyId); + let mut _out0: Arc, Arc>, Arc>> = SearchInfo::GenerateEncryptedBeacons(search.value(), item, keyId, partition); output = _out0.clone(); }; return output.clone(); } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(159,3) - pub fn AddSignedBeacons(search: &Arc>, item: &Map, Arc>) -> Arc, Arc>, Arc>> { + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(198,3) + pub fn AddSignedBeacons(search: &Arc>, item: &Map, Arc>, partition: PartitionNumber) -> Arc, Arc>, Arc>> { let mut output = MaybePlacebo::, Arc>, Arc>>>::new(); if matches!(search.as_ref(), None{ .. }) { output = MaybePlacebo::from(Arc::new(Result::, Arc>, Arc>::Success { @@ -96713,7 +97710,7 @@ pub mod _DynamoDBSupport_Compile { return output.read(); } else { let mut valueOrError0: Arc, Arc>, Arc>>; - let mut _out0: Arc, Arc>, Arc>> = SearchInfo::GenerateSignedBeacons(search.value(), item); + let mut _out0: Arc, Arc>, Arc>> = SearchInfo::GenerateSignedBeacons(search.value(), item, partition); valueOrError0 = _out0.clone(); if valueOrError0.IsFailure() { output = MaybePlacebo::from(valueOrError0.PropagateFailure::, Arc>>()); @@ -96806,7 +97803,7 @@ pub mod _DynamoDBSupport_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(204,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(243,3) pub fn DoRemoveBeacons(item: &Map, Arc>) -> Map, Arc> { (&({ let mut item = item.clone(); @@ -96831,49 +97828,254 @@ 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(211,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(250,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(226,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(265,3) + pub fn GetNumber(val: &Arc, name: &Sequence) -> Arc>> { + if matches!(val.as_ref(), N{ .. }) { + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_DynamoDbNormalizeNumber_Compile::_default::StrToInt(val.N()).MapFailure::>(&({ + Arc::new(move |e: &Sequence| -> Arc{ + crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(e) + }) + })); + if valueOrError0.IsFailure() { + valueOrError0.PropagateFailure::() + } else { + let mut val: DafnyInt = valueOrError0.Extract(); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) <= val.clone() && val.clone() < crate::implementation_from_dafny::_StandardLibrary_Compile::_UInt_Compile::_default::INT32_MAX_LIMIT(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Value of ").concat(name).concat(&string_utf16_of(" out of range.")))); + if valueOrError1.IsFailure() { + valueOrError1.PropagateFailure::() + } else { + Arc::new(Result::>::Success { + value: truncate!(val.clone(), u32) + }) + } + } + } else { + Arc::new(Result::>::Failure { + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Value of ").concat(name).concat(&string_utf16_of(" is not numeric (i.e. 'N')"))) + }) + } + } + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(276,3) + pub fn TestPartitionForScan(names: &Arc, Arc>>>) -> Arc>> { + if matches!(names.as_ref(), None{ .. }) { + Arc::new(Result::>::Success { + value: true + }) + } else { + if names.value().contains(&_default::PartitionName()) { + Arc::new(Result::>::Failure { + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("A value for ").concat(&_default::PartitionName()).concat(&string_utf16_of(" must not be specified for Scan operations."))) + }) + } else { + Arc::new(Result::>::Success { + value: true + }) + } + } + } + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(289,3) + pub fn ExtractPartitionNumber(names: &Arc, Arc>>>) -> Arc, Arc>>>, Arc>), Arc>> { + if matches!(names.as_ref(), None{ .. }) { + Arc::new(Result::<(Arc, Arc>>>, Arc>), Arc>::Success { + value: ( + Arc::new(Option::, Arc>>::None {}), + Arc::new(Option::::None {}) + ) + }) + } else { + if names.value().contains(&_default::PartitionName()) { + let mut valueOrError0: Arc>> = _default::GetNumber(&names.value().get(&_default::PartitionName()), &_default::PartitionName()); + if valueOrError0.IsFailure() { + valueOrError0.PropagateFailure::<(Arc, Arc>>>, Arc>)>() + } else { + let mut val: u32 = valueOrError0.Extract(); + if names.value().cardinality() == int!(1) { + Arc::new(Result::<(Arc, Arc>>>, Arc>), Arc>::Success { + value: ( + Arc::new(Option::, Arc>>::None {}), + Arc::new(Option::::Some { + value: val + }) + ) + }) + } else { + Arc::new(Result::<(Arc, Arc>>>, Arc>), Arc>::Success { + value: ( + Arc::new(Option::, Arc>>::Some { + value: names.value().subtract(&set!{_default::PartitionName()}) + }), + Arc::new(Option::::Some { + value: val + }) + ) + }) + } + } + } else { + Arc::new(Result::<(Arc, Arc>>>, Arc>), Arc>::Success { + value: ( + Arc::new(Option::, Arc>>::None {}), + Arc::new(Option::::None {}) + ) + }) + } + } + } + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(305,3) + pub fn ExtractPartition(search: &Arc, keyExpr: &Arc>>, filterExpr: &Arc>>, names: &Arc, Sequence>>>, values: &Arc, Arc>>>, actions: &Map, Arc>) -> Arc, Arc>>>, PartitionNumber), Arc>> { + let mut output = MaybePlacebo::, Arc>>>, PartitionNumber), Arc>>>::new(); + let mut valueOrError0: Arc>> = _default::ValidateExpressionLength(keyExpr, &string_utf16_of("KeyConditionExpression")); + if valueOrError0.IsFailure() { + output = MaybePlacebo::from(valueOrError0.PropagateFailure::<(Arc, Arc>>>, PartitionNumber)>()); + return output.read(); + }; + let mut _v1: bool = valueOrError0.Extract(); + let mut valueOrError1: Arc>> = _default::ValidateExpressionLength(filterExpr, &string_utf16_of("FilterExpression")); + if valueOrError1.IsFailure() { + output = MaybePlacebo::from(valueOrError1.PropagateFailure::<(Arc, Arc>>>, PartitionNumber)>()); + return output.read(); + }; + let mut _v2: bool = valueOrError1.Extract(); + if search.numPartitions().clone() <= 1 { + let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(matches!(values.as_ref(), None{ .. }) || !values.value().contains(&_default::PartitionName()), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("If no partitions are configured, do not specify ").concat(&_default::PartitionName()))); + if valueOrError2.IsFailure() { + output = MaybePlacebo::from(valueOrError2.PropagateFailure::<(Arc, Arc>>>, PartitionNumber)>()); + return output.read(); + }; + output = MaybePlacebo::from(Arc::new(Result::<(Arc, Arc>>>, PartitionNumber), Arc>::Success { + value: ( + values.clone(), + 0 + ) + })); + return output.read(); + }; + let mut valueOrError3: Arc, Arc>>>, Arc>), Arc>> = _default::ExtractPartitionNumber(values); + if valueOrError3.IsFailure() { + output = MaybePlacebo::from(valueOrError3.PropagateFailure::<(Arc, Arc>>>, PartitionNumber)>()); + return output.read(); + }; + let mut foo: (Arc, Arc>>>, Arc>) = valueOrError3.Extract(); + let mut __let_tmp_rhs0: (Arc, Arc>>>, Arc>) = foo.clone(); + let mut values2: Arc, Arc>>> = __let_tmp_rhs0.0.clone(); + let mut partition: Arc> = __let_tmp_rhs0.1.clone(); + if matches!((&partition).as_ref(), Some{ .. }) { + let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(partition.value().clone() < search.numPartitions().clone() as u32, &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&_default::PartitionName().concat(&string_utf16_of(" specified in FilterExpression was ")).concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!(partition.value().clone()))).concat(&string_utf16_of(" must be less than the number of partitions: ")).concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!(search.numPartitions().clone()))))); + if valueOrError4.IsFailure() { + output = MaybePlacebo::from(valueOrError4.PropagateFailure::<(Arc, Arc>>>, PartitionNumber)>()); + return output.read(); + }; + let mut nPartition: PartitionNumber = truncate!(int!(partition.value().clone()), i32); + output = MaybePlacebo::from(Arc::new(Result::<(Arc, Arc>>>, PartitionNumber), Arc>::Success { + value: ( + values2.clone(), + nPartition + ) + })); + return output.read(); + }; + let mut filterHasEncField: Arc>>; + let mut _out0: Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::UsesEncryptedField(&crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::ParseExprOpt(filterExpr), actions, names); + filterHasEncField = _out0.clone(); + let mut keyHasEncField: Arc>>; + let mut _out1: Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::UsesEncryptedField(&crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::ParseExprOpt(keyExpr), actions, names); + keyHasEncField = _out1.clone(); + if matches!((&keyHasEncField).as_ref(), Some{ .. }) || matches!((&filterHasEncField).as_ref(), Some{ .. }) { + output = MaybePlacebo::from(Arc::new(Result::<(Arc, Arc>>>, PartitionNumber), Arc>::Failure { + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("When numberOfPartitions is greater than one, Values must contain ").concat(&_default::PartitionName())) + })); + return output.read(); + } else { + output = MaybePlacebo::from(Arc::new(Result::<(Arc, Arc>>>, PartitionNumber), Arc>::Success { + value: ( + values.clone(), + 0 + ) + })); + return output.read(); + }; + return output.read(); + } + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(335,3) pub fn QueryInputForBeacons(search: &Arc>, actions: &Map, Arc>, req: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); + let mut valueOrError0: Arc>> = _default::ValidateExpressionLength(req.KeyConditionExpression(), &string_utf16_of("KeyConditionExpression")); + if valueOrError0.IsFailure() { + output = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); + return output.read(); + }; + let mut _v3: bool = valueOrError0.Extract(); + let mut valueOrError1: Arc>> = _default::ValidateExpressionLength(req.FilterExpression(), &string_utf16_of("FilterExpression")); + if valueOrError1.IsFailure() { + output = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); + return output.read(); + }; + let mut _v4: bool = valueOrError1.Extract(); if matches!(search.as_ref(), None{ .. }) { - let mut valueOrError0: Arc>>; + let mut valueOrError2: Arc>>; let mut _out0: Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::TestBeaconize(actions, req.KeyConditionExpression(), req.FilterExpression(), req.ExpressionAttributeNames()); - valueOrError0 = _out0.clone(); - if valueOrError0.IsFailure() { - output = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); + valueOrError2 = _out0.clone(); + if valueOrError2.IsFailure() { + output = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); return output.read(); }; - let mut _v0: bool = valueOrError0.Extract(); + let mut _v5: bool = valueOrError2.Extract(); output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: req.clone() })); return output.read(); } else { - let mut valueOrError1: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::GetBeaconKeyId(&SearchInfo::curr(search.value()), req.KeyConditionExpression(), req.FilterExpression(), req.ExpressionAttributeValues(), req.ExpressionAttributeNames()); - if valueOrError1.IsFailure() { - output = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); + let mut valueOrError3: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::GetBeaconKeyId(&SearchInfo::curr(search.value()), req.KeyConditionExpression(), req.FilterExpression(), req.ExpressionAttributeValues(), req.ExpressionAttributeNames()); + if valueOrError3.IsFailure() { + output = MaybePlacebo::from(valueOrError3.PropagateFailure::>()); + return output.read(); + }; + let mut keyId: Arc = valueOrError3.Extract(); + let mut valueOrError4: Arc, Arc>>>, PartitionNumber), Arc>>; + let mut _out1: Arc, Arc>>>, PartitionNumber), Arc>> = _default::ExtractPartition(&SearchInfo::curr(search.value()), req.KeyConditionExpression(), req.FilterExpression(), req.ExpressionAttributeNames(), req.ExpressionAttributeValues(), actions); + valueOrError4 = _out1.clone(); + if valueOrError4.IsFailure() { + output = MaybePlacebo::from(valueOrError4.PropagateFailure::>()); + return output.read(); + }; + let mut foo: (Arc, Arc>>>, PartitionNumber) = valueOrError4.Extract(); + let mut __let_tmp_rhs0: (Arc, Arc>>>, PartitionNumber) = foo.clone(); + let mut newValues: Arc, Arc>>> = __let_tmp_rhs0.0.clone(); + let mut partition: PartitionNumber = __let_tmp_rhs0.1.clone(); + let mut valueOrError5: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::GetNumQueries(&SearchInfo::curr(search.value()), req.KeyConditionExpression(), req.ExpressionAttributeValues(), req.ExpressionAttributeNames()); + valueOrError5 = _out2.clone(); + if valueOrError5.IsFailure() { + output = MaybePlacebo::from(valueOrError5.PropagateFailure::>()); + return output.read(); + }; + let mut numQueries: PartitionCount = valueOrError5.Extract(); + if numQueries <= partition { + output = MaybePlacebo::from(Arc::new(Result::, Arc>::Failure { + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Partition number was ").concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!((&partition).clone()))).concat(&string_utf16_of(" but should have been less than number of queries : ")).concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!((&numQueries).clone())))) + })); return output.read(); }; - let mut keyId: Arc = valueOrError1.Extract(); let mut oldContext: Arc = Arc::new(ExprContext::ExprContext { keyExpr: req.KeyConditionExpression().clone(), filterExpr: req.FilterExpression().clone(), - values: req.ExpressionAttributeValues().clone(), + values: newValues.clone(), names: req.ExpressionAttributeNames().clone() }); - let mut valueOrError2: Arc, Arc>>; - let mut _out1: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&SearchInfo::curr(search.value()), &oldContext, &keyId, false); - valueOrError2 = _out1.clone(); - if valueOrError2.IsFailure() { - output = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); + let mut valueOrError6: Arc, Arc>>; + let mut _out3: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::DoBeaconize(&SearchInfo::curr(search.value()), &oldContext, &keyId, partition, numQueries); + valueOrError6 = _out3.clone(); + if valueOrError6.IsFailure() { + output = MaybePlacebo::from(valueOrError6.PropagateFailure::>()); return output.read(); }; - let mut newContext: Arc = valueOrError2.Extract(); + let mut newContext: Arc = valueOrError6.Extract(); output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: { let __pat_let15_0: Arc = req.clone(); @@ -96929,9 +98131,21 @@ pub mod _DynamoDBSupport_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(252,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(369,3) pub fn QueryOutputForBeacons(search: &Arc>, req: &Arc, resp: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); + let mut valueOrError0: Arc>> = _default::ValidateExpressionLength(req.KeyConditionExpression(), &string_utf16_of("KeyConditionExpression")); + if valueOrError0.IsFailure() { + output = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); + return output.read(); + }; + let mut _v6: bool = valueOrError0.Extract(); + let mut valueOrError1: Arc>> = _default::ValidateExpressionLength(req.FilterExpression(), &string_utf16_of("FilterExpression")); + if valueOrError1.IsFailure() { + output = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); + return output.read(); + }; + let mut _v7: bool = valueOrError1.Extract(); if matches!(search.as_ref(), None{ .. }) { let mut trimmedItems: Sequence, Arc>> = crate::implementation_from_dafny::_Seq_Compile::_default::Map::, Arc>, Map, Arc>>(&({ Arc::new(move |i: &Map, Arc>| -> Map, Arc>{ @@ -96963,17 +98177,17 @@ pub mod _DynamoDBSupport_Compile { })); return output.read(); } else { - let mut valueOrError0: Arc, Arc>>, Arc>>; + let mut valueOrError2: Arc, Arc>>, Arc>>; let mut _out0: Arc, Arc>>, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::FilterResults(&SearchInfo::curr(search.value()), resp.Items().value(), req.KeyConditionExpression(), req.FilterExpression(), req.ExpressionAttributeNames(), req.ExpressionAttributeValues()); - valueOrError0 = _out0.clone(); - if valueOrError0.IsFailure() { - output = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); + valueOrError2 = _out0.clone(); + if valueOrError2.IsFailure() { + output = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); return output.read(); }; - let mut newItems: Sequence, Arc>> = valueOrError0.Extract(); - 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::>()); + let mut newItems: Sequence, Arc>> = valueOrError2.Extract(); + let mut valueOrError3: 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 valueOrError3.IsFailure() { + output = MaybePlacebo::from(valueOrError3.PropagateFailure::>()); return output.read(); }; let mut trimmedItems: Sequence, Arc>> = crate::implementation_from_dafny::_Seq_Compile::_default::Map::, Arc>, Map, Arc>>(&({ @@ -97022,7 +98236,7 @@ pub mod _DynamoDBSupport_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(281,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(400,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 { @@ -97032,43 +98246,55 @@ 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(297,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(416,3) pub fn ScanInputForBeacons(search: &Arc>, actions: &Map, Arc>, req: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); + let mut valueOrError0: Arc>> = _default::ValidateExpressionLength(req.FilterExpression(), &string_utf16_of("FilterExpression")); + if valueOrError0.IsFailure() { + output = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); + return output.read(); + }; + let mut _v8: bool = valueOrError0.Extract(); if matches!(search.as_ref(), None{ .. }) { - let mut valueOrError0: Arc>>; + let mut valueOrError1: Arc>>; let mut _out0: Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::TestBeaconize(actions, &Arc::new(Option::>::None {}), req.FilterExpression(), req.ExpressionAttributeNames()); - valueOrError0 = _out0.clone(); - if valueOrError0.IsFailure() { - output = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); + valueOrError1 = _out0.clone(); + if valueOrError1.IsFailure() { + output = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); return output.read(); }; - let mut _v1: bool = valueOrError0.Extract(); + let mut _v9: bool = valueOrError1.Extract(); output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: req.clone() })); return output.read(); } else { - let mut valueOrError1: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::GetBeaconKeyId(&SearchInfo::curr(search.value()), &Arc::new(Option::>::None {}), req.FilterExpression(), req.ExpressionAttributeValues(), req.ExpressionAttributeNames()); - if valueOrError1.IsFailure() { - output = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); + let mut valueOrError2: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::GetBeaconKeyId(&SearchInfo::curr(search.value()), &Arc::new(Option::>::None {}), req.FilterExpression(), req.ExpressionAttributeValues(), req.ExpressionAttributeNames()); + if valueOrError2.IsFailure() { + output = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); + return output.read(); + }; + let mut keyId: Arc = valueOrError2.Extract(); + let mut valueOrError3: Arc>> = _default::TestPartitionForScan(req.ExpressionAttributeValues()); + if valueOrError3.IsFailure() { + output = MaybePlacebo::from(valueOrError3.PropagateFailure::>()); return output.read(); }; - let mut keyId: Arc = valueOrError1.Extract(); + let mut _v10: bool = valueOrError3.Extract(); let mut context: Arc = Arc::new(ExprContext::ExprContext { keyExpr: Arc::new(Option::>::None {}), filterExpr: req.FilterExpression().clone(), values: req.ExpressionAttributeValues().clone(), names: req.ExpressionAttributeNames().clone() }); - let mut valueOrError2: Arc, Arc>>; - let mut _out1: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&SearchInfo::curr(search.value()), &context, &keyId, false); - valueOrError2 = _out1.clone(); - if valueOrError2.IsFailure() { - output = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); + let mut valueOrError4: Arc, Arc>>; + let mut _out1: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::DoBeaconize(&SearchInfo::curr(search.value()), &context, &keyId, 0, 1); + valueOrError4 = _out1.clone(); + if valueOrError4.IsFailure() { + output = MaybePlacebo::from(valueOrError4.PropagateFailure::>()); return output.read(); }; - let mut newContext: Arc = valueOrError2.Extract(); + let mut newContext: Arc = valueOrError4.Extract(); output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: { let __pat_let25_0: Arc = req.clone(); @@ -97117,9 +98343,15 @@ pub mod _DynamoDBSupport_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(322,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(443,3) pub fn ScanOutputForBeacons(search: &Arc>, req: &Arc, resp: &Arc) -> Arc, Arc>> { let mut ret = MaybePlacebo::, Arc>>>::new(); + let mut valueOrError0: Arc>> = _default::ValidateExpressionLength(req.FilterExpression(), &string_utf16_of("FilterExpression")); + if valueOrError0.IsFailure() { + ret = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); + return ret.read(); + }; + let mut _v11: bool = valueOrError0.Extract(); if matches!(search.as_ref(), None{ .. }) { let mut trimmedItems: Sequence, Arc>> = crate::implementation_from_dafny::_Seq_Compile::_default::Map::, Arc>, Map, Arc>>(&({ Arc::new(move |i: &Map, Arc>| -> Map, Arc>{ @@ -97151,19 +98383,19 @@ pub mod _DynamoDBSupport_Compile { })); return ret.read(); } else { - let mut valueOrError0: Arc, Arc>>, Arc>>; + let mut valueOrError1: Arc, Arc>>, Arc>>; let mut _out0: Arc, Arc>>, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::FilterResults(&SearchInfo::curr(search.value()), resp.Items().value(), &Arc::new(Option::>::None {}), req.FilterExpression(), req.ExpressionAttributeNames(), req.ExpressionAttributeValues()); - valueOrError0 = _out0.clone(); - if valueOrError0.IsFailure() { - ret = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); - return ret.read(); - }; - let mut newItems: Sequence, Arc>> = valueOrError0.Extract(); - 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."))); + valueOrError1 = _out0.clone(); if valueOrError1.IsFailure() { ret = MaybePlacebo::from(valueOrError1.PropagateFailure::>()); return ret.read(); }; + let mut newItems: Sequence, Arc>> = valueOrError1.Extract(); + let mut valueOrError2: 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 valueOrError2.IsFailure() { + ret = MaybePlacebo::from(valueOrError2.PropagateFailure::>()); + return ret.read(); + }; let mut trimmedItems: Sequence, Arc>> = crate::implementation_from_dafny::_Seq_Compile::_default::Map::, Arc>, Map, Arc>>(&({ Arc::new(move |i: &Map, Arc>| -> Map, Arc>{ _default::DoRemoveBeacons(i) @@ -97210,7 +98442,7 @@ pub mod _DynamoDBSupport_Compile { }; return ret.read(); } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(351,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(473,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(); @@ -97256,24 +98488,26 @@ pub mod _DynamoDBSupport_Compile { } } } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(372,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(494,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(379,3) - pub fn GetCompoundBeaconsLoop(fields: &Sequence>, bv: &Arc, item: &Map, Arc>, results: &Map, Sequence>) -> Arc, Sequence>, Arc>> { + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(501,3) + pub fn GetCompoundBeaconsLoop(fields: &Sequence>, bv: &Arc, item: &Map, Arc>, partition: PartitionNumber, results: &Map, Sequence>) -> Arc, Sequence>, Arc>> { let mut _r0 = fields.clone(); let mut _r1 = bv.clone(); let mut _r2 = item.clone(); - let mut _r3 = results.clone(); + let mut _r3 = partition; + let mut _r4 = results.clone(); 'TAIL_CALL_START: loop { let fields = _r0; let bv = _r1; let item = _r2; - let results = _r3; + let partition = _r3; + let results = _r4; if truncate!(fields.cardinality(), u64) == 0 { return Arc::new(Result::, Sequence>, Arc>::Success { value: results.clone() @@ -97281,7 +98515,7 @@ pub mod _DynamoDBSupport_Compile { } else { 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()); + let mut valueOrError0: Arc>>, Arc>> = CompoundBeacon::getNaked(beacon.cmp(), &item, bv.virtualFields(), partition); if valueOrError0.IsFailure() { return valueOrError0.PropagateFailure::, Sequence>>(); } else { @@ -97290,49 +98524,63 @@ pub mod _DynamoDBSupport_Compile { 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: PartitionNumber = partition; + let mut _in4: Map, Sequence> = results.update_index(&fields.get(&int!(0)), optValue.value()); _r0 = _in0.clone(); _r1 = _in1.clone(); _r2 = _in2.clone(); - _r3 = _in3.clone(); + _r3 = _in3; + _r4 = _in4.clone(); continue 'TAIL_CALL_START; } else { - 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(); - _r0 = _in4.clone(); - _r1 = _in5.clone(); - _r2 = _in6.clone(); - _r3 = _in7.clone(); + let mut _in5: Sequence> = fields.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); + let mut _in6: Arc = bv.clone(); + let mut _in7: Map, Arc> = item.clone(); + let mut _in8: PartitionNumber = partition; + let mut _in9: Map, Sequence> = results.clone(); + _r0 = _in5.clone(); + _r1 = _in6.clone(); + _r2 = _in7.clone(); + _r3 = _in8; + _r4 = _in9.clone(); continue 'TAIL_CALL_START; } } } else { - 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(); - _r0 = _in8.clone(); - _r1 = _in9.clone(); - _r2 = _in10.clone(); - _r3 = _in11.clone(); + let mut _in10: Sequence> = fields.drop(&int!((&truncate!((&int!(1)).clone(), u32)).clone())); + let mut _in11: Arc = bv.clone(); + let mut _in12: Map, Arc> = item.clone(); + let mut _in13: PartitionNumber = partition; + let mut _in14: Map, Sequence> = results.clone(); + _r0 = _in10.clone(); + _r1 = _in11.clone(); + _r2 = _in12.clone(); + _r3 = _in13; + _r4 = _in14.clone(); continue 'TAIL_CALL_START; } } } } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(404,3) - pub fn GetCompoundBeacons(beaconVersion: &Arc, item: &Map, Arc>) -> Arc, Sequence>, Arc>> { + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(527,3) + pub fn GetCompoundBeacons(beaconVersion: &Arc, item: &Map, Arc>, partition: PartitionNumber) -> 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![]); + output = _default::GetCompoundBeaconsLoop(&beaconNames, beaconVersion, item, partition, &map![]); return output.clone(); } - /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(155,3) + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(41,3) + pub fn MAX_EXPRESSION_LENGTH() -> nat { + int!(4096) + } + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(194,3) pub fn VersionTag() -> Sequence { crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::VersionPrefix().concat(&string_utf16_of("1")) } + /// dafny/DynamoDbEncryption/src/DDBSupport.dfy(263,3) + pub fn PartitionName() -> Sequence { + string_utf16_of(":aws_dbe_partition") + } } } /// dafny/DynamoDbEncryption/src/DynamoDbEncryptionBranchKeyIdSupplier.dfy(6,1) @@ -97870,7 +99118,6 @@ pub mod _DynamoDbEncryptionBranchKeyIdSupplierTest_Compile { /// dafny/DynamoDbEncryption/src/Util.dfy(6,1) pub mod _DynamoDbEncryptionUtil_Compile { pub use ::std::sync::Arc; - pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; pub use ::dafny_runtime::Sequence; pub use ::dafny_runtime::DafnyCharUTF16; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; @@ -97887,8 +99134,21 @@ pub mod _DynamoDbEncryptionUtil_Compile { pub use ::dafny_runtime::Map; 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 crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionNumber; + pub use ::dafny_runtime::int; + pub use ::dafny_runtime::seq; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionCount; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; + pub use ::dafny_runtime::truncate; pub use ::dafny_runtime::DafnyType; pub use ::dafny_runtime::DafnyPrintWrapper; + pub use ::dafny_runtime::_System::nat; + pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::euclidian_modulo; + pub use ::dafny_runtime::euclidian_division; + pub use ::std::default::Default; + pub use ::dafny_runtime::integer_range; + pub use ::std::convert::Into; pub use ::std::fmt::Debug; pub use ::std::fmt::Formatter; pub use ::std::fmt::Result; @@ -97896,14 +99156,21 @@ pub mod _DynamoDbEncryptionUtil_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 use ::std::ops::Deref; + pub use ::std::mem::transmute; + pub use ::std::ops::Add; + pub use ::std::ops::Sub; + pub use ::std::ops::Mul; + pub use ::std::ops::Div; + pub use ::std::cmp::PartialOrd; + pub use ::std::cmp::Ordering; pub struct _default {} impl _default { - /// dafny/DynamoDbEncryption/src/Util.dfy(41,3) - pub fn MaybeFromOptionKeyId(x: &Arc>>) -> Arc { + /// dafny/DynamoDbEncryption/src/Util.dfy(42,3) + pub fn MaybeFromOptionKeyId(x: &Arc>>) -> Arc { if matches!(x.as_ref(), Some{ .. }) { Arc::new(MaybeKeyId::KeyId { value: x.value().clone() @@ -97912,21 +99179,21 @@ pub mod _DynamoDbEncryptionUtil_Compile { Arc::new(MaybeKeyId::DontUseKeyId {}) } } - /// dafny/DynamoDbEncryption/src/Util.dfy(50,3) + /// dafny/DynamoDbEncryption/src/Util.dfy(51,3) pub fn E(s: &Sequence) -> Arc { Arc::new(Error::DynamoDbEncryptionException { message: s.clone() }) } - /// dafny/DynamoDbEncryption/src/Util.dfy(54,3) + /// dafny/DynamoDbEncryption/src/Util.dfy(55,3) pub fn CharLess(x: &DafnyCharUTF16, y: &DafnyCharUTF16) -> bool { x.clone() < y.clone() } - /// dafny/DynamoDbEncryption/src/Util.dfy(59,3) + /// dafny/DynamoDbEncryption/src/Util.dfy(60,3) pub fn ByteLess(x: u8, y: u8) -> bool { x < y } - /// dafny/DynamoDbEncryption/src/Util.dfy(67,3) + /// dafny/DynamoDbEncryption/src/Util.dfy(68,3) pub fn AttrTypeToStr(attr: &Arc) -> Sequence { let mut _source0: Arc = attr.clone(); if matches!((&_source0).as_ref(), S{ .. }) { @@ -97987,7 +99254,31 @@ pub mod _DynamoDbEncryptionUtil_Compile { } } } - /// dafny/DynamoDbEncryption/src/Util.dfy(83,3) + /// dafny/DynamoDbEncryption/src/Util.dfy(89,3) + pub fn PartitionBytesToNumber(x: &PartitionBytes) -> PartitionNumber { + if x.cardinality() == int!(0) { + 0 + } else { + x.get(&int!(0)) as i32 + } + } + /// dafny/DynamoDbEncryption/src/Util.dfy(97,3) + pub fn PartitionNumberToBytes(x: PartitionNumber) -> PartitionBytes { + if x == 0 { + seq![] as Sequence + } else { + seq![x as u8] + } + } + /// dafny/DynamoDbEncryption/src/Util.dfy(110,3) + pub fn PartitionCountNone(x: &Arc>) -> bool { + matches!(x.as_ref(), None{ .. }) || x.value().clone() == 0 + } + /// dafny/DynamoDbEncryption/src/Util.dfy(115,3) + pub fn Valid_PartitionBytes(x: &Sequence) -> bool { + x.cardinality() <= int!(1) && (!(x.cardinality() == int!(1)) || 0 < x.get(&int!(0)) && x.get(&int!(0)) < truncate!(_default::MAX_PARTITION_COUNT(), u8)) + } + /// dafny/DynamoDbEncryption/src/Util.dfy(121,3) pub fn printFromFunction<_T: DafnyType>(x: &_T) -> () { let mut _hresult: () = (); print!("{}", DafnyPrintWrapper(x)); @@ -97995,29 +99286,124 @@ pub mod _DynamoDbEncryptionUtil_Compile { _hresult = (); return _hresult.clone(); } - /// dafny/DynamoDbEncryption/src/Util.dfy(13,3) + /// dafny/DynamoDbEncryption/src/Util.dfy(127,3) + pub fn printFromFunction2<_T: DafnyType, _U: DafnyType>(x: &_T, y: &_U) -> () { + let mut _hresult: () = (); + print!("{}", DafnyPrintWrapper(x)); + print!("{}", DafnyPrintWrapper(&string_utf16_of(" "))); + print!("{}", DafnyPrintWrapper(y)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\n"))); + _hresult = (); + return _hresult.clone(); + } + /// dafny/DynamoDbEncryption/src/Util.dfy(133,3) + pub fn printFromFunction3<_T: DafnyType, _U: DafnyType, _V: DafnyType>(x: &_T, y: &_U, z: &_V) -> () { + let mut _hresult: () = (); + print!("{}", DafnyPrintWrapper(x)); + print!("{}", DafnyPrintWrapper(&string_utf16_of(" "))); + print!("{}", DafnyPrintWrapper(y)); + print!("{}", DafnyPrintWrapper(&string_utf16_of(" "))); + print!("{}", DafnyPrintWrapper(z)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\n"))); + _hresult = (); + return _hresult.clone(); + } + /// dafny/DynamoDbEncryption/src/Util.dfy(140,3) + pub fn gcd(a: &nat, b: &nat) -> nat { + let mut _r0 = a.clone(); + let mut _r1 = b.clone(); + 'TAIL_CALL_START: loop { + let a = _r0; + let b = _r1; + if b.clone() == int!(0) { + return a.clone(); + } else { + let mut _in0: nat = b.clone(); + let mut _in1: DafnyInt = euclidian_modulo(a.clone(), b.clone()); + _r0 = _in0.clone(); + _r1 = _in1.clone(); + continue 'TAIL_CALL_START; + } + } + } + /// dafny/DynamoDbEncryption/src/Util.dfy(152,3) + pub fn lcm(a: &nat, b: &nat) -> nat { + euclidian_division(a.clone(), _default::gcd(a, b)) * b.clone() + } + /// dafny/DynamoDbEncryption/src/Util.dfy(159,3) + pub fn bmin(a: PartitionCount, b: PartitionCount) -> PartitionCount { + if a <= b { + a + } else { + b + } + } + /// dafny/DynamoDbEncryption/src/Util.dfy(169,3) + pub fn lcmPartition(a: PartitionCount, b: PartitionCount, max: PartitionCount) -> PartitionCount { + if a == 1 || b == max || a == b { + _default::bmin(b, max) + } else { + if b == 1 || a == max { + _default::bmin(a, max) + } else { + let mut result: nat = _default::lcm(&int!((&a).clone()), &int!((&b).clone())); + if result.clone() < int!(max) { + truncate!(result.clone(), i32) + } else { + max + } + } + } + } + /// requires forall i <- values :: i <= max + /// dafny/DynamoDbEncryption/src/Util.dfy(185,3) + pub fn lcmSeq(values: &Sequence, max: PartitionCount) -> PartitionCount { + let mut output: PartitionCount = ::default(); + let mut result: PartitionCount = 1; + 'label_goto_3: loop { + let mut _hi0: u64 = truncate!(values.cardinality(), u64); + for i in integer_range(0, _hi0).map(Into::::into) { + 'label_continue_3: loop { + let mut partitions: PartitionCount = values.get(&int!((&i).clone())); + if partitions == 1 || partitions == result { + break 'label_continue_3; + }; + result = _default::lcmPartition(result, partitions, max);; + break; + } + }; + break; + }; + output = result; + return output; + } + /// dafny/DynamoDbEncryption/src/Util.dfy(84,3) + pub fn MAX_PARTITION_COUNT() -> nat { + int!(255) + } + /// dafny/DynamoDbEncryption/src/Util.dfy(14,3) pub fn ReservedPrefix() -> Sequence { string_utf16_of("aws_dbe_") } - /// dafny/DynamoDbEncryption/src/Util.dfy(14,3) + /// dafny/DynamoDbEncryption/src/Util.dfy(15,3) pub fn BeaconPrefix() -> Sequence { string_utf16_of("aws_dbe_b_") } - /// dafny/DynamoDbEncryption/src/Util.dfy(15,3) + /// dafny/DynamoDbEncryption/src/Util.dfy(16,3) pub fn VersionPrefix() -> Sequence { string_utf16_of("aws_dbe_v_") } - /// dafny/DynamoDbEncryption/src/Util.dfy(17,3) + /// dafny/DynamoDbEncryption/src/Util.dfy(18,3) pub fn MAX_STRUCTURE_DEPTH() -> u64 { 32 } - /// dafny/DynamoDbEncryption/src/Util.dfy(18,3) + /// dafny/DynamoDbEncryption/src/Util.dfy(19,3) pub fn MAX_STRUCTURE_DEPTH_STR() -> Sequence { string_utf16_of("32") } } - /// dafny/DynamoDbEncryption/src/Util.dfy(32,3) + /// dafny/DynamoDbEncryption/src/Util.dfy(33,3) #[derive(PartialEq, Clone)] pub enum MaybeKeyMap { DontUseKeys {}, @@ -98101,7 +99487,7 @@ pub mod _DynamoDbEncryptionUtil_Compile { } } - /// dafny/DynamoDbEncryption/src/Util.dfy(37,3) + /// dafny/DynamoDbEncryption/src/Util.dfy(38,3) #[derive(PartialEq, Clone)] pub enum MaybeKeyId { DontUseKeyId {}, @@ -98184,6 +99570,105 @@ pub mod _DynamoDbEncryptionUtil_Compile { self } } + + /// dafny/DynamoDbEncryption/src/Util.dfy(86,3) + pub type PartitionBytes = Sequence; + + /// An element of PartitionBytes + pub fn __init_PartitionBytes() -> Sequence { + seq![] as Sequence + } + + /// dafny/DynamoDbEncryption/src/Util.dfy(87,3) + #[derive(Clone, PartialEq, Copy)] + #[repr(transparent)] + pub struct OptPartitionCount(pub u8); + + impl OptPartitionCount { + /// Constraint check + pub fn is(_source: u8) -> bool { + return true; + } + } + + impl Default + for OptPartitionCount { + /// An element of OptPartitionCount + fn default() -> Self { + OptPartitionCount(Default::default()) + } + } + + impl DafnyPrint + for OptPartitionCount { + /// For Dafny print statements + fn fmt_print(&self, _formatter: &mut Formatter, in_seq: bool) -> Result { + DafnyPrint::fmt_print(&self.0, _formatter, in_seq) + } + } + + impl Deref + for OptPartitionCount { + type Target = u8; + fn deref(&self) -> &Self::Target { + &self.0 + } + } + + impl OptPartitionCount { + /// SAFETY: The newtype is marked as transparent + pub fn _from_ref(o: &u8) -> &Self { + unsafe { + transmute(o) + } + } + } + + impl Hash + for OptPartitionCount { + fn hash<_H: Hasher>(&self, _state: &mut _H) { + self.0.hash(_state) + } + } + + impl Add + for OptPartitionCount { + type Output = OptPartitionCount; + fn add(self, other: Self) -> Self { + OptPartitionCount(self.0 + other.0) + } + } + + impl Sub + for OptPartitionCount { + type Output = OptPartitionCount; + fn sub(self, other: Self) -> Self { + OptPartitionCount(self.0 - other.0) + } + } + + impl Mul + for OptPartitionCount { + type Output = OptPartitionCount; + fn mul(self, other: Self) -> Self { + OptPartitionCount(self.0 * other.0) + } + } + + impl Div + for OptPartitionCount { + type Output = OptPartitionCount; + fn div(self, other: Self) -> Self { + OptPartitionCount(self.0 / other.0) + } + } + + impl PartialOrd + for OptPartitionCount { + fn partial_cmp(&self, other: &Self) -> ::std::option::Option { + PartialOrd::partial_cmp(&self.0, &other.0) + } + } } /// dafny/DynamoDbEncryption/test/DynamoDbGetEncryptedDataKeyDescriptionTest.dfy(5,1) pub mod _DynamoDbGetEncryptedDataKeyDescriptionTest_Compile { @@ -100734,19 +102219,23 @@ pub mod _DynamoDbItemEncryptorUtil_Compile { } /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(12,1) pub mod _DynamoDbMiddlewareSupport_Compile { + pub use crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::ValidTableConfig; + pub use ::std::sync::Arc; + pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::QueryInput; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionCount; + pub use ::dafny_runtime::int; pub use ::dafny_runtime::DafnyTypeEq; pub use ::dafny_runtime::DafnyType; - pub use ::std::sync::Arc; 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::truncate; pub use ::dafny_runtime::Sequence; - pub use crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::ValidTableConfig; pub use ::dafny_runtime::DafnyCharUTF16; 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::rd; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionNumber; pub use crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::MaybeKeyId; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::itemencryptor::internaldafny::types::EncryptItemOutput; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::Some; @@ -100755,8 +102244,6 @@ 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; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ScanOutput; @@ -100770,14 +102257,29 @@ pub mod _DynamoDbMiddlewareSupport_Compile { impl _default { /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(28,3) + pub fn GetNumberOfQueries(config: &ValidTableConfig, query: &Arc) -> Arc>> { + let mut output: Arc>>; + let mut numQueries: Arc>>; + let mut _out0: Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::GetNumberOfQueries(&config.search().value().versions().get(&int!(0)), query); + numQueries = _out0.clone(); + output = numQueries.MapFailure::>(&({ + Arc::new(move |e: &Arc| -> Arc{ + Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::Error::AwsCryptographyDbEncryptionSdkDynamoDb { + AwsCryptographyDbEncryptionSdkDynamoDb: e.clone() + }) + }) + })); + return output.clone(); + } + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(35,3) pub fn NoMap<_X: DafnyTypeEq, _Y: DafnyType>(m: &Arc>>) -> bool { matches!(m.as_ref(), None{ .. }) || truncate!(m.value().cardinality(), u64) == 0 } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(34,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(41,3) pub fn NoList<_X: DafnyType>(m: &Arc>>) -> bool { matches!(m.as_ref(), None{ .. }) || truncate!(m.value().cardinality(), u64) == 0 } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(42,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(49,3) pub fn IsWriteable(config: &ValidTableConfig, item: &Map, Arc>) -> Arc>> { let mut ret: Arc>>; let mut is_writable: Arc>>; @@ -100790,11 +102292,11 @@ pub mod _DynamoDbMiddlewareSupport_Compile { })); return ret.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(50,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(57,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(61,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(68,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{ @@ -100802,7 +102304,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { }) })) } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(76,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(83,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{ @@ -100810,11 +102312,11 @@ pub mod _DynamoDbMiddlewareSupport_Compile { }) })) } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(90,3) - pub fn AddSignedBeacons(config: &ValidTableConfig, item: &Map, Arc>) -> Arc, Arc>, Arc>> { + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(97,3) + pub fn AddSignedBeacons(config: &ValidTableConfig, item: &Map, Arc>, partition: PartitionNumber) -> Arc, Arc>, Arc>> { let mut output: Arc, Arc>, Arc>>; let mut ret: Arc, Arc>, Arc>>; - let mut _out0: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::AddSignedBeacons(config.search(), item); + let mut _out0: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::AddSignedBeacons(config.search(), item, partition); ret = _out0.clone(); output = ret.MapFailure::>(&({ Arc::new(move |e: &Arc| -> Arc{ @@ -100825,11 +102327,11 @@ pub mod _DynamoDbMiddlewareSupport_Compile { })); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(103,3) - pub fn GetEncryptedBeacons(config: &ValidTableConfig, item: &Map, Arc>, keyId: &Arc) -> Arc, Arc>, Arc>> { + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(110,3) + pub fn GetEncryptedBeacons(config: &ValidTableConfig, item: &Map, Arc>, keyId: &Arc, partition: PartitionNumber) -> Arc, Arc>, Arc>> { let mut output: Arc, Arc>, Arc>>; let mut ret: Arc, Arc>, Arc>>; - let mut _out0: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::GetEncryptedBeacons(config.search(), item, keyId); + let mut _out0: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::GetEncryptedBeacons(config.search(), item, keyId, partition); ret = _out0.clone(); output = ret.MapFailure::>(&({ Arc::new(move |e: &Arc| -> Arc{ @@ -100840,7 +102342,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { })); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(114,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(121,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{ @@ -100850,7 +102352,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { }) })) } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(133,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(140,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."))); @@ -100890,7 +102392,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { }) } } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(180,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(187,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{ @@ -100898,7 +102400,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { }) })) } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(188,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(195,3) pub fn QueryInputForBeacons(config: &ValidTableConfig, req: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut ret: Arc, Arc>>; @@ -100913,7 +102415,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { })); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(199,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(206,3) pub fn QueryOutputForBeacons(config: &ValidTableConfig, req: &Arc, resp: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut ret: Arc, Arc>>; @@ -100928,7 +102430,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { })); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(212,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(219,3) pub fn ScanInputForBeacons(config: &ValidTableConfig, req: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut ret: Arc, Arc>>; @@ -100943,7 +102445,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { })); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(223,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(230,3) pub fn ScanOutputForBeacons(config: &ValidTableConfig, req: &Arc, resp: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut ret: Arc, Arc>>; @@ -100958,7 +102460,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { })); return output.clone(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(235,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(242,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 { @@ -100979,8 +102481,8 @@ pub mod _DynamoDbMiddlewareSupport_Compile { }))); return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(245,3) - pub fn GetCompoundBeacons(search: &ValidSearchInfo, item: &Map, Arc>, version: &Arc>) -> Arc, Sequence>, Arc>> { + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(252,3) + pub fn GetCompoundBeacons(search: &ValidSearchInfo, item: &Map, Arc>, version: &Arc>, partition: PartitionNumber) -> Arc, Sequence>, Arc>> { let mut output = MaybePlacebo::, Sequence>, Arc>>>::new(); if matches!(version.as_ref(), Some{ .. }) && version.value().clone() != 1 { output = MaybePlacebo::from(Arc::new(Result::, Sequence>, Arc>::Failure { @@ -100989,7 +102491,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { return output.read(); }; let mut ret: Arc, Sequence>, Arc>>; - let mut _out0: Arc, Sequence>, Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::GetCompoundBeacons(&SearchInfo::curr(search), item); + let mut _out0: Arc, Sequence>, Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::GetCompoundBeacons(&SearchInfo::curr(search), item, partition); ret = _out0.clone(); output = MaybePlacebo::from(ret.MapFailure::>(&({ Arc::new(move |e: &Arc| -> Arc{ @@ -101000,7 +102502,7 @@ pub mod _DynamoDbMiddlewareSupport_Compile { }))); return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(127,3) + /// dafny/DynamoDbEncryptionTransforms/src/DynamoDbMiddlewareSupport.dfy(134,3) pub fn HierarchicalKeyringId() -> 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() @@ -101973,7 +103475,7 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(285,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(289,3) pub fn AttrToTypeId(a: &Arc) -> TerminalTypeId { let mut _source0: Arc = a.clone(); if matches!((&_source0).as_ref(), S{ .. }) { @@ -102034,11 +103536,11 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(301,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(305,3) pub fn CharLess(x: &DafnyCharUTF16, y: &DafnyCharUTF16) -> bool { x.clone() < y.clone() } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(307,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(311,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() { @@ -102141,7 +103643,7 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(538,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(542,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::>(truncate!(asSet.cardinality(), u64) == truncate!(ss.cardinality(), u64), &string_utf16_of("String Set had duplicate values")); @@ -102166,7 +103668,7 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(555,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(559,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::>(truncate!(asSet.cardinality(), u64) == truncate!(ns.cardinality(), u64), &string_utf16_of("Number Set had duplicate values")); @@ -102207,7 +103709,7 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(581,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(585,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::>(truncate!(asSet.cardinality(), u64) == truncate!(bs.cardinality(), u64), &string_utf16_of("Binary Set had duplicate values")); @@ -102232,7 +103734,7 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(639,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(643,3) pub fn MapAttrToBytes(parent: &Arc, m: &Map, Arc>, depth: u64) -> Arc, Sequence>> { let mut ret = MaybePlacebo::, Sequence>>>::new(); let mut attrNames: Sequence> = crate::implementation_from_dafny::SortedSets::_default::SetToOrderedSequence2::(&m.keys(), &(Arc::new(move |x0: &DafnyCharUTF16,x1: &DafnyCharUTF16| _default::CharLess(x0, x1)) as Arc _ + Sync + Send>)); @@ -102270,7 +103772,7 @@ pub mod _DynamoToStruct_Compile { ret = MaybePlacebo::from(result.clone()); return ret.read(); } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(682,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(686,3) pub fn ListAttrToBytes(l: &Sequence>, depth: u64) -> Arc, Sequence>> { let mut valueOrError0: Arc, Sequence>> = _default::U32ToBigEndian64(truncate!(l.cardinality(), u64)); if valueOrError0.IsFailure() { @@ -102288,7 +103790,7 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(724,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(728,3) pub fn U32ToBigEndian64(x: u64) -> Arc, Sequence>> { if 4294967295 < x { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Failure { @@ -102300,7 +103802,7 @@ pub mod _DynamoToStruct_Compile { }) } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(743,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(747,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 { @@ -102312,7 +103814,7 @@ pub mod _DynamoToStruct_Compile { }) } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(754,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(758,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 { @@ -102326,7 +103828,7 @@ pub mod _DynamoToStruct_Compile { } /// 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(769,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(773,3) pub fn EncodeString(s: &Sequence) -> Arc, Sequence>> { let mut valueOrError0: Arc>> = crate::implementation_from_dafny::UTF8::_default::Encode(s); if valueOrError0.IsFailure() { @@ -102344,7 +103846,7 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(785,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(789,3) pub fn CollectString(setToSerialize: &Sequence>, pos: u64, serialized: &Sequence) -> Arc, Sequence>> { let mut _r0 = setToSerialize.clone(); let mut _r1 = pos; @@ -102382,7 +103884,7 @@ pub mod _DynamoToStruct_Compile { /// # | ---------------- | ------------------------------------ | /// # | Set Entry Length | 4 | /// # | Set Entry Value | Variable. Equal to Set Entry Length. | - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(802,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(806,3) pub fn SerializeBinaryValue(b: &Sequence) -> Arc, Sequence>> { let mut valueOrError0: Arc, Sequence>> = _default::U32ToBigEndian64(truncate!(b.cardinality(), u64)); if valueOrError0.IsFailure() { @@ -102394,7 +103896,7 @@ pub mod _DynamoToStruct_Compile { }) } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(827,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(831,3) pub fn CollectBinary(setToSerialize: &Sequence>, pos: u64, serialized: &Sequence) -> Arc, Sequence>> { let mut _r0 = setToSerialize.clone(); let mut _r1 = pos; @@ -102424,7 +103926,7 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(887,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(891,3) pub fn CollectList(listToSerialize: &Sequence>, depth: u64, serialized: &Sequence) -> Arc, Sequence>> { let mut ret = MaybePlacebo::, Sequence>>>::new(); let mut result: Sequence = serialized.clone(); @@ -102450,31 +103952,36 @@ 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(919,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(923,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::U32ToBigEndian64(truncate!(name.cardinality(), u64)); + let mut valueOrError1: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(1 <= truncate!(name.cardinality(), u64) && truncate!(name.cardinality(), u64) <= _default::MAX_ATTR_NAME_LEN64(), &string_utf16_of("Attribute name must be between 1 and 65535 UTF-8 bytes")); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>() } else { - let mut len: Sequence = valueOrError1.Extract(); - let mut serialized: Sequence = crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::STRING().concat(&len).concat(&name).concat(value); - Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { - value: serialized.clone() - }) + let mut valueOrError2: Arc, Sequence>> = _default::U32ToBigEndian64(truncate!(name.cardinality(), u64)); + if valueOrError2.IsFailure() { + valueOrError2.PropagateFailure::>() + } else { + let mut len: Sequence = valueOrError2.Extract(); + let mut serialized: Sequence = crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::STRING().concat(&len).concat(&name).concat(value); + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Sequence>::Success { + value: serialized.clone() + }) + } } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(968,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(974,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, 0, serialized) } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(983,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(989,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(); @@ -102508,7 +104015,7 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1004,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1010,3) pub fn BoolToUint8(b: bool) -> u8 { if b { 1 @@ -102516,7 +104023,7 @@ pub mod _DynamoToStruct_Compile { 0 } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1015,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1021,3) pub fn IsUnique<_T: DafnyTypeEq>(s: &Sequence<_T>) -> bool { let mut asSet: Set<_T> = crate::implementation_from_dafny::_Seq_Compile::_default::ToSet::<_T>(s); if truncate!(asSet.cardinality(), u64) == truncate!(s.cardinality(), u64) { @@ -102525,7 +104032,7 @@ pub mod _DynamoToStruct_Compile { false } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1029,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1035,3) pub fn DeserializeBinarySet(serialized: &Sequence, remainingCount: u64, origSerializedSize: u64, resultSet: &Arc) -> Arc, Sequence>> { let mut _r0 = serialized.clone(); let mut _r1 = remainingCount; @@ -102583,7 +104090,7 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1063,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1069,3) pub fn DeserializeStringSet(serialized: &Sequence, remainingCount: u64, origSerializedSize: u64, resultSet: &Arc) -> Arc, Sequence>> { let mut _r0 = serialized.clone(); let mut _r1 = remainingCount; @@ -102647,7 +104154,7 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1098,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1104,3) pub fn DeserializeNumberSet(serialized: &Sequence, remainingCount: u64, origSerializedSize: u64, resultSet: &Arc) -> Arc, Sequence>> { let mut _r0 = serialized.clone(); let mut _r1 = remainingCount; @@ -102711,7 +104218,7 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1132,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1138,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() { @@ -102757,7 +104264,7 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1193,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1199,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; @@ -102779,7 +104286,7 @@ pub mod _DynamoToStruct_Compile { })); return ret.read(); } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1239,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1245,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; @@ -102803,45 +104310,50 @@ pub mod _DynamoToStruct_Compile { if valueOrError3.IsFailure() { valueOrError3.PropagateFailure::<(Arc, u64)>() } else { - let mut valueOrError4: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(&serialized.slice(&int!((&pos).clone()), &int!((&(pos + len)).clone()))); + let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(1 <= len && len <= _default::MAX_ATTR_NAME_LEN64(), &string_utf16_of("Attribute name must be between 1 and 65535 UTF-8 bytes")); if valueOrError4.IsFailure() { valueOrError4.PropagateFailure::<(Arc, u64)>() } else { - 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")); + let mut valueOrError5: Arc, Sequence>> = crate::implementation_from_dafny::UTF8::_default::Decode(&serialized.slice(&int!((&pos).clone()), &int!((&(pos + len)).clone()))); if valueOrError5.IsFailure() { valueOrError5.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")); + let mut key: Sequence = valueOrError5.Extract(); + let mut pos: u64 = pos + len; + let mut valueOrError6: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(2 <= serialized_size - pos, &string_utf16_of("Out of bytes reading Map Value")); if valueOrError6.IsFailure() { valueOrError6.PropagateFailure::<(Arc, u64)>() } else { - 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); + let mut valueOrError7: 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 valueOrError7.IsFailure() { valueOrError7.PropagateFailure::<(Arc, u64)>() } else { - 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.")); + 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 valueOrError8: Arc, Sequence>> = _default::BytesToAttr(serialized, &TerminalTypeId_value, &Arc::new(Option::::None {}), depth + 1, pos); if valueOrError8.IsFailure() { valueOrError8.PropagateFailure::<(Arc, u64)>() } 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: 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 - ) - }) + let mut nval: Arc = valueOrError8.Extract(); + let mut pos: u64 = crate::implementation_from_dafny::_StandardLibrary_Compile::_MemoryMath_Compile::_default::Add(pos, nval.len().clone()); + let mut valueOrError9: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(!resultMap.val().M().contains(&key), &string_utf16_of("Duplicate key in map.")); + if valueOrError9.IsFailure() { + valueOrError9.PropagateFailure::<(Arc, u64)>() + } 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: 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 + ) + }) + } } } } @@ -102852,7 +104364,7 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1319,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1327,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; @@ -102874,7 +104386,7 @@ pub mod _DynamoToStruct_Compile { })); return ret.read(); } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1366,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1374,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())); @@ -103162,7 +104674,7 @@ pub mod _DynamoToStruct_Compile { } } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1488,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1496,3) pub fn FlattenValueMap<_X: DafnyTypeEq, _Y: DafnyType>(m: &Map<_X, Arc>>>) -> Map<_X, _Y> { (&({ let mut m = m.clone(); @@ -103178,7 +104690,7 @@ pub mod _DynamoToStruct_Compile { }) }))() } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1492,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1500,3) pub fn FlattenErrors<_X: DafnyTypeEq, _Y: DafnyType>(m: &Map<_X, Arc>>>) -> Set> { (&({ let mut m = m.clone(); @@ -103194,7 +104706,7 @@ pub mod _DynamoToStruct_Compile { }) }))() } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1531,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1539,3) pub fn SimplifyMapValue<_X: DafnyTypeEq, _Y: DafnyType>(m: &Map<_X, Arc>>>) -> Arc, Sequence>> { if m.keys().iter().all(({ let mut m = m.clone(); @@ -103220,6 +104732,10 @@ pub mod _DynamoToStruct_Compile { pub fn LENGTH_LEN64() -> u64 { 4 } + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(287,3) + pub fn MAX_ATTR_NAME_LEN64() -> u64 { + 65535 + } /// number of bytes in a TerminalTypeId /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(281,3) pub fn TYPEID_LEN64() -> u64 { @@ -103237,7 +104753,7 @@ pub mod _DynamoToStruct_Compile { } } - /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1010,3) + /// dafny/DynamoDbEncryption/src/DynamoToStruct.dfy(1016,3) #[derive(PartialEq, Clone)] pub enum AttrValueAndLength { AttrValueAndLength { @@ -103337,6 +104853,9 @@ pub mod _DynamoToStructTest_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::Error; pub use ::dafny_runtime::integer_range; pub use ::std::convert::Into; + pub use ::dafny_runtime::NumCast; + pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::Zero; pub struct _default {} @@ -104391,6 +105910,77 @@ pub mod _DynamoToStructTest_Compile { }; return (); } + /// dafny/DynamoDbEncryption/test/DynamoToStruct.dfy(572,3) + pub fn TestAttributeNameTooLongBytes() -> () { + let mut twoByteChar: DafnyCharUTF16 = DafnyCharUTF16(::from(int!(233)).unwrap()); + let mut longKey: Sequence = { + let _initializer = { + let twoByteChar: DafnyCharUTF16 = twoByteChar.clone(); + { + let mut twoByteChar = twoByteChar.clone(); + Arc::new(move |i: &DafnyInt| -> DafnyCharUTF16{ + twoByteChar.clone() + }) + } + }; + integer_range(Zero::zero(), int!(b"40000")).map(move |i| _initializer(&i)).collect::>() + }; + let mut mapValue: Arc = Arc::new(AttributeValue::M { + M: map![(longKey.clone()) => (Arc::new(AttributeValue::BOOL { + BOOL: true + }))] + }); + let mut result: Arc, Sequence>> = crate::implementation_from_dafny::_DynamoToStruct_Compile::_default::AttrToStructured(&mapValue); + if !matches!((&result).as_ref(), Failure{ .. }) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nAttrToStructured should have failed for an over-long attribute name\n"))) + }; + if !matches!((&result).as_ref(), Failure{ .. }) { + panic!("Halt") + }; + let mut _e00: Sequence = result.error().clone(); + let mut _e10: Sequence = string_utf16_of("Attribute name must be between 1 and 65535 UTF-8 bytes"); + 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/DynamoDbEncryption/test/DynamoToStruct.dfy(585,3) + pub fn TestDecodeAttributeNameTooLongBytes() -> () { + let mut bigKey: Sequence = { + let _initializer = { + Arc::new(move |i: &DafnyInt| -> u8{ + 65 + }) + }; + integer_range(Zero::zero(), int!(b"65536")).map(move |i| _initializer(&i)).collect::>() + }; + let mut mapBytes: Sequence = seq![0, 0, 0, 1].concat(&seq![0, 1]).concat(&seq![0, 1, 0, 0]).concat(&bigKey).concat(&seq![0, 1]).concat(&seq![0, 0, 0, 0]); + let mut data: Arc = Arc::new(StructuredDataTerminal::StructuredDataTerminal { + value: mapBytes.clone(), + typeId: crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::MAP() + }); + let mut result: Arc, Sequence>> = crate::implementation_from_dafny::_DynamoToStruct_Compile::_default::StructuredToAttr(&data); + if !matches!((&result).as_ref(), Failure{ .. }) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nStructuredToAttr should have failed for an over-long attribute name\n"))) + }; + if !matches!((&result).as_ref(), Failure{ .. }) { + panic!("Halt") + }; + let mut _e00: Sequence = result.error().clone(); + let mut _e10: Sequence = string_utf16_of("Attribute name must be between 1 and 65535 UTF-8 bytes"); + 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/DynamoDbEncryption/test/DynamoToStruct.dfy(49,3) pub fn k() -> u8 { DafnyCharUTF16(107 as u16).0 as u8 @@ -104546,6 +106136,18 @@ pub mod _DynamoToStructTest_Compile { pub fn TestTooDeep() { _default::TestTooDeep() } + + /// dafny/DynamoDbEncryption/test/DynamoToStruct.dfy(572,3) + #[test] + pub fn TestAttributeNameTooLongBytes() { + _default::TestAttributeNameTooLongBytes() + } + + /// dafny/DynamoDbEncryption/test/DynamoToStruct.dfy(585,3) + #[test] + pub fn TestDecodeAttributeNameTooLongBytes() { + _default::TestDecodeAttributeNameTooLongBytes() + } } /// ../submodules/MaterialProviders/AwsCryptographyPrimitives/src/ECDH.dfy(6,1) pub mod ECDH { @@ -119962,7 +121564,7 @@ pub mod _LocalCMC_Compile { let mut _obj1: Object = read_field!(rd!(toRemove.clone()).next).deref().clone(); modify_field!(rd!(_obj1).prev, read_field!(rd!(toRemove.clone()).prev)) }; - 'label_goto_0: loop { + 'label_goto_4: loop { break; }; modify_field!(rd!(toRemove).next, _default::NULL()); @@ -120165,7 +121767,7 @@ pub mod _LocalCMC_Compile { let mut output: Arc>>; if MutableMapTrait::, Object>::HasKey(rd!(read_field!(self.cache)), input.identifier()) { let mut cell: Object = MutableMapTrait::, Object>::Select(rd!(read_field!(self.cache)), input.identifier()); - 'label_goto_1: loop { + 'label_goto_5: loop { MutableMapTrait::, Object>::Remove(rd!(read_field!(self.cache)), input.identifier()); break; }; @@ -122050,6 +123652,51 @@ pub mod _MultiKeyring_Compile { UpcastObjectFn!(dyn IKeyring); } } +/// dafny/DynamoDbEncryptionTransforms/src/GetNumberOfQueries.dfy(6,1) +pub mod _NumberOfQueries_Compile { + pub use ::std::sync::Arc; + pub use crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::Config; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesInput; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::GetNumberOfQueriesOutput; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::Error; + pub use ::dafny_runtime::MaybePlacebo; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; + pub use crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::ValidTableConfig; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionCount; + + pub struct _default {} + + impl _default { + /// dafny/DynamoDbEncryptionTransforms/src/GetNumberOfQueries.dfy(17,3) + pub fn Get(config: &Arc, input: &Arc) -> Arc, Arc>> { + let mut output = MaybePlacebo::, Arc>>>::new(); + if !config.tableEncryptionConfigs().contains(input.input().TableName()) || matches!(config.tableEncryptionConfigs().get(input.input().TableName()).search().as_ref(), None{ .. }) { + output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { + value: Arc::new(GetNumberOfQueriesOutput::GetNumberOfQueriesOutput { + numberOfQueries: 1 + }) + })); + return output.read(); + }; + let mut conf: ValidTableConfig = config.tableEncryptionConfigs().get(input.input().TableName()); + let mut valueOrError0: Arc>>; + let mut _out0: Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetNumberOfQueries(&conf, input.input()); + valueOrError0 = _out0.clone(); + if valueOrError0.IsFailure() { + output = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); + return output.read(); + }; + let mut numQueries: PartitionCount = valueOrError0.Extract(); + output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { + value: Arc::new(GetNumberOfQueriesOutput::GetNumberOfQueriesOutput { + numberOfQueries: numQueries + }) + })); + return output.read(); + } + } +} /// dafny/StructuredEncryption/src/OptimizedMergeSort.dfy(6,1) pub mod _OptimizedMergeSort_Compile { pub use ::dafny_runtime::DafnyType; @@ -122173,7 +123820,7 @@ pub mod _OptimizedMergeSort_Compile { let mut _rhs1: Arc = Arc::new(PlaceResults::Left {}); resultPlacement = MaybePlacebo::from(_rhs1.clone()); }; - 'label_goto_2: loop { + 'label_goto_6: loop { break; }; if matches!((&resultPlacement.read()).as_ref(), Left{ .. }) && r#where.clone() == Arc::new(PlaceResults::Right {}) { @@ -122427,6 +124074,7 @@ pub mod _PutItemTransform_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ExpectedAttributeValue; pub use ::dafny_runtime::string_utf16_of; pub use crate::implementation_from_dafny::_Wrappers_Compile::Option::None; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionNumber; pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::itemencryptor::internaldafny::types::EncryptItemOutput; @@ -122480,39 +124128,47 @@ pub mod _PutItemTransform_Compile { return output.read(); }; let mut _v1: bool = valueOrError3.Extract(); - let mut valueOrError4: Arc, Arc>, Arc>>; - let mut _out1: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::AddSignedBeacons(&tableConfig, input.sdkInput().Item()); + let mut valueOrError4: Arc>>; + let mut _out1: Arc>> = crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::GetRandomPartition(&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 _out2: Arc, Arc>> = IDynamoDbItemEncryptorClient::EncryptItem(rd!(tableConfig.itemEncryptor().clone()), &Arc::new(EncryptItemInput::EncryptItemInput { - plaintextItem: item.clone() - })); - encryptRes = _out2.clone(); - let mut valueOrError5: Arc, Arc>> = crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::MapError::>(&encryptRes); + let mut partition: PartitionNumber = valueOrError4.Extract(); + let mut valueOrError5: Arc, Arc>, Arc>>; + let mut _out2: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::AddSignedBeacons(&tableConfig, input.sdkInput().Item(), partition); + valueOrError5 = _out2.clone(); if valueOrError5.IsFailure() { output = MaybePlacebo::from(valueOrError5.PropagateFailure::>()); return output.read(); }; - let mut encrypted: Arc = valueOrError5.Extract(); - let mut valueOrError6: Arc>>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetKeyIdFromHeader(&tableConfig, &encrypted); + let mut item: Map, Arc> = valueOrError5.Extract(); + let mut encryptRes: Arc, Arc>>; + let mut _out3: Arc, Arc>> = IDynamoDbItemEncryptorClient::EncryptItem(rd!(tableConfig.itemEncryptor().clone()), &Arc::new(EncryptItemInput::EncryptItemInput { + plaintextItem: item.clone() + })); + encryptRes = _out3.clone(); + let mut valueOrError6: Arc, Arc>> = crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::MapError::>(&encryptRes); if valueOrError6.IsFailure() { output = MaybePlacebo::from(valueOrError6.PropagateFailure::>()); return output.read(); }; - let mut keyId: Arc>> = valueOrError6.Extract(); - let mut valueOrError7: Arc, Arc>, Arc>>; - 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(); + let mut encrypted: Arc = valueOrError6.Extract(); + let mut valueOrError7: Arc>>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetKeyIdFromHeader(&tableConfig, &encrypted); if valueOrError7.IsFailure() { output = MaybePlacebo::from(valueOrError7.PropagateFailure::>()); return output.read(); }; - let mut beacons: Map, Arc> = valueOrError7.Extract(); + let mut keyId: Arc>> = valueOrError7.Extract(); + let mut valueOrError8: Arc, Arc>, Arc>>; + let mut _out4: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetEncryptedBeacons(&tableConfig, input.sdkInput().Item(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MaybeFromOptionKeyId(&keyId), partition); + valueOrError8 = _out4.clone(); + if valueOrError8.IsFailure() { + output = MaybePlacebo::from(valueOrError8.PropagateFailure::>()); + return output.read(); + }; + let mut beacons: Map, Arc> = valueOrError8.Extract(); output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: Arc::new(PutItemInputTransformOutput::PutItemInputTransformOutput { transformedInput: { @@ -122558,7 +124214,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(71,3) + /// dafny/DynamoDbEncryptionTransforms/src/PutItemTransform.dfy(73,3) pub fn Output(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut tableName: Sequence = input.originalInput().TableName().clone(); @@ -122636,13 +124292,20 @@ pub mod _PutItemTransformTest_Compile { 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; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::IDynamoDbEncryptionTransformsClient; pub use ::dafny_runtime::rd; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::PutItemInputTransformInput; - pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PlaintextOverride; + pub use ::dafny_runtime::NumCast; + pub use ::dafny_runtime::int; + pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::integer_range; + pub use ::dafny_runtime::Zero; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Failure; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::Error::AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::itemencryptor::internaldafny::types::Error::AwsCryptographyDbEncryptionSdkDynamoDb; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::Error::DynamoDbEncryptionException; pub use ::dafny_runtime::DafnyPrintWrapper; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PlaintextOverride; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Success; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::PutItemOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ConsumedCapacity; @@ -122674,8 +124337,8 @@ pub mod _PutItemTransformTest_Compile { 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 { + let mut transformed: Arc, Arc>>; + let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::PutItemInputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(PutItemInputTransformInput::PutItemInputTransformInput { sdkInput: input.clone() })); transformed = _out2.clone(); @@ -122684,6 +124347,76 @@ pub mod _PutItemTransformTest_Compile { return (); } /// dafny/DynamoDbEncryptionTransforms/test/PutItemTransform.dfy(33,3) + pub fn TestPutItemAttributeNameTooLongBytes() -> () { + 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 twoByteChar: DafnyCharUTF16 = DafnyCharUTF16(::from(int!(233)).unwrap()); + let mut longKey: Sequence = { + let _initializer = { + let twoByteChar: DafnyCharUTF16 = twoByteChar.clone(); + { + let mut twoByteChar = twoByteChar.clone(); + Arc::new(move |i: &DafnyInt| -> DafnyCharUTF16{ + twoByteChar.clone() + }) + } + }; + integer_range(Zero::zero(), int!(b"40000")).map(move |i| _initializer(&i)).collect::>() + }; + let mut input: Arc = Arc::new(PutItemInput::PutItemInput { + TableName: tableName.clone(), + Item: map![(string_utf16_of("bar")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("key") + })), (string_utf16_of("encrypt")) => (Arc::new(AttributeValue::M { + M: map![(longKey.clone()) => (Arc::new(AttributeValue::S { + S: string_utf16_of("x") + }))] + }))], + Expected: Arc::new(Option::, Arc>>::None {}), + ReturnValues: Arc::new(Option::>::None {}), + ReturnConsumedCapacity: Arc::new(Option::>::None {}), + ReturnItemCollectionMetrics: Arc::new(Option::>::None {}), + ConditionalOperator: Arc::new(Option::>::None {}), + ConditionExpression: Arc::new(Option::>::None {}), + ExpressionAttributeNames: Arc::new(Option::, Sequence>>::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 { + sdkInput: input.clone() + })); + transformed = _out2.clone(); + if !matches!((&transformed).as_ref(), Failure{ .. }) { + panic!("Halt") + }; + if !matches!(transformed.error().as_ref(), AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor{ .. }) { + panic!("Halt") + }; + let mut encErr: Arc = transformed.error().AwsCryptographyDbEncryptionSdkDynamoDbItemEncryptor().clone(); + if !matches!((&encErr).as_ref(), AwsCryptographyDbEncryptionSdkDynamoDb{ .. }) { + panic!("Halt") + }; + let mut ddbErr: Arc = encErr.AwsCryptographyDbEncryptionSdkDynamoDb().clone(); + if !matches!((&ddbErr).as_ref(), DynamoDbEncryptionException{ .. }) { + panic!("Halt") + }; + let mut _e00: Sequence = ddbErr.message().clone(); + let mut _e10: Sequence = string_utf16_of("Attribute name must be between 1 and 65535 UTF-8 bytes"); + 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/DynamoDbEncryptionTransforms/test/PutItemTransform.dfy(60,3) pub fn TestPutItemInputMultiFail(plaintextOverride: &Arc>>) -> () { let mut middlewareUnderTest: Object; let mut _out0: Object = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetDynamoDbEncryptionTransformsMulti(plaintextOverride); @@ -122704,16 +124437,16 @@ pub mod _PutItemTransformTest_Compile { 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 { + let mut transformed: Arc, Arc>>; + let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::PutItemInputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(PutItemInputTransformInput::PutItemInputTransformInput { sdkInput: input.clone() })); transformed = _out2.clone(); if !matches!((&transformed).as_ref(), Failure{ .. }) { panic!("Halt") }; - let mut _e00: Arc = transformed.error().clone(); - let mut _e10: Arc = Arc::new(Error::DynamoDbEncryptionTransformsException { + let mut _e00: Arc = transformed.error().clone(); + let mut _e10: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::transforms::internaldafny::types::Error::DynamoDbEncryptionTransformsException { message: string_utf16_of("In multi-tenant mode, keyProviderId must be aws-kms-hierarchy") }); if !(_e00.clone() == _e10.clone()) { @@ -122725,7 +124458,7 @@ pub mod _PutItemTransformTest_Compile { }; return (); } - /// dafny/DynamoDbEncryptionTransforms/test/PutItemTransform.dfy(51,3) + /// dafny/DynamoDbEncryptionTransforms/test/PutItemTransform.dfy(78,3) pub fn TestPutItemInputMulti() -> () { _default::TestPutItemInputMultiFail(&Arc::new(Option::>::None {})); _default::TestPutItemInputMultiFail(&Arc::new(Option::>::Some { @@ -122736,7 +124469,7 @@ pub mod _PutItemTransformTest_Compile { })); return (); } - /// dafny/DynamoDbEncryptionTransforms/test/PutItemTransform.dfy(58,3) + /// dafny/DynamoDbEncryptionTransforms/test/PutItemTransform.dfy(85,3) pub fn TestPutItemInputMultiForceAllow() -> () { let mut middlewareUnderTest: Object; let mut _out0: Object = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetDynamoDbEncryptionTransformsMulti(&Arc::new(Option::>::Some { @@ -122759,8 +124492,8 @@ pub mod _PutItemTransformTest_Compile { 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 { + let mut transformed: Arc, Arc>>; + let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::PutItemInputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(PutItemInputTransformInput::PutItemInputTransformInput { sdkInput: input.clone() })); transformed = _out2.clone(); @@ -122769,7 +124502,7 @@ pub mod _PutItemTransformTest_Compile { }; return (); } - /// dafny/DynamoDbEncryptionTransforms/test/PutItemTransform.dfy(76,3) + /// dafny/DynamoDbEncryptionTransforms/test/PutItemTransform.dfy(103,3) pub fn TestPutItemOutputPassthrough() -> () { let mut middlewareUnderTest: Object; let mut _out0: Object = crate::implementation_from_dafny::_TestFixtures_Compile::_default::GetDynamoDbEncryptionTransforms(); @@ -122795,8 +124528,8 @@ pub mod _PutItemTransformTest_Compile { 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 { + let mut transformed: Arc, Arc>>; + let mut _out2: Arc, Arc>> = IDynamoDbEncryptionTransformsClient::PutItemOutputTransform(rd!(middlewareUnderTest.clone()), &Arc::new(PutItemOutputTransformInput::PutItemOutputTransformInput { sdkOutput: output.clone(), originalInput: input.clone() })); @@ -122819,19 +124552,25 @@ pub mod _PutItemTransformTest_Compile { _default::TestPutItemInputPassthrough() } - /// dafny/DynamoDbEncryptionTransforms/test/PutItemTransform.dfy(51,3) + /// dafny/DynamoDbEncryptionTransforms/test/PutItemTransform.dfy(33,3) + #[test] + pub fn TestPutItemAttributeNameTooLongBytes() { + _default::TestPutItemAttributeNameTooLongBytes() + } + + /// dafny/DynamoDbEncryptionTransforms/test/PutItemTransform.dfy(78,3) #[test] pub fn TestPutItemInputMulti() { _default::TestPutItemInputMulti() } - /// dafny/DynamoDbEncryptionTransforms/test/PutItemTransform.dfy(58,3) + /// dafny/DynamoDbEncryptionTransforms/test/PutItemTransform.dfy(85,3) #[test] pub fn TestPutItemInputMultiForceAllow() { _default::TestPutItemInputMultiForceAllow() } - /// dafny/DynamoDbEncryptionTransforms/test/PutItemTransform.dfy(76,3) + /// dafny/DynamoDbEncryptionTransforms/test/PutItemTransform.dfy(103,3) #[test] pub fn TestPutItemOutputPassthrough() { _default::TestPutItemOutputPassthrough() @@ -122925,7 +124664,7 @@ pub mod _QueryTransform_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/src/QueryTransform.dfy(59,3) + /// dafny/DynamoDbEncryptionTransforms/src/QueryTransform.dfy(58,3) pub fn Output(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output = MaybePlacebo::, Arc>>>::new(); let mut tableName: Sequence = input.originalInput().TableName().clone(); @@ -126374,7 +128113,6 @@ pub mod _SearchConfigToInfo_Compile { 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::dynamodb::internaldafny::types::BeaconVersion; pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::ValidBeaconVersion; pub use ::dafny_runtime::Sequence; pub use ::dafny_runtime::DafnyCharUTF16; @@ -126401,6 +128139,9 @@ pub mod _SearchConfigToInfo_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::GetKeyStoreInfoOutput; pub use crate::implementation_from_dafny::software::amazon::cryptography::keystore::internaldafny::types::IKeyStoreClient; pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::KeyLocation; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionCount; + pub use ::dafny_runtime::truncate; + pub use ::std::default::Default; pub use crate::implementation_from_dafny::_DdbVirtualFields_Compile::VirtualFieldMap; pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::BeaconMap; pub use ::dafny_runtime::map; @@ -126409,6 +128150,8 @@ pub mod _SearchConfigToInfo_Compile { pub use crate::implementation_from_dafny::_CompoundBeacon_Compile::BeaconPart; pub use ::dafny_runtime::set; pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::KeyLocation::MultiLoc; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::IPartitionSelector; + pub use ::dafny_runtime::upcast_object; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::VirtualFieldList; pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::_DdbVirtualFields_Compile::ValidVirtualField; @@ -126436,22 +128179,27 @@ 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::truncate; pub use crate::implementation_from_dafny::_BaseBeacon_Compile::BeaconBase; pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::Beacon::Compound; + pub use ::dafny_runtime::allocate_object; + pub use ::dafny_runtime::UpcastObject; + pub use ::dafny_runtime::DynAny; + pub use ::dafny_runtime::UpcastObjectFn; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberInput; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::GetPartitionNumberOutput; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionNumber; pub use ::std::fmt::Debug; pub use ::std::fmt::Formatter; pub use ::dafny_runtime::DafnyPrint; 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/DynamoDbEncryption/src/ConfigToInfo.dfy(39,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(40,3) pub fn Convert(outer: &Arc) -> Arc>, Arc>> { let mut output = MaybePlacebo::>, Arc>>>::new(); if matches!(outer.search().as_ref(), None{ .. }) { @@ -126470,7 +128218,7 @@ pub mod _SearchConfigToInfo_Compile { output = MaybePlacebo::from(valueOrError1.PropagateFailure::>>()); return output.read(); }; - let mut beaconVersionConfig: Arc = outer.search().value().versions().get(&int!(0)); + let mut beaconVersionConfig: Arc = outer.search().value().versions().get(&int!(0)); let mut valueOrError2: Arc>>; let mut _out0: Arc>> = _default::ConvertVersion(outer, &beaconVersionConfig); valueOrError2 = _out0.clone(); @@ -126489,7 +128237,7 @@ pub mod _SearchConfigToInfo_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(96,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(99,3) pub fn ShouldDeleteKeyField(outer: &Arc, keyFieldName: &Sequence) -> Arc>> { if !outer.attributeActionsOnEncrypt().contains(keyFieldName) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { @@ -126520,7 +128268,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(114,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(117,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>>; @@ -126698,8 +128446,8 @@ pub mod _SearchConfigToInfo_Compile { }; return output.read(); } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(239,3) - pub fn ConvertVersion(outer: &Arc, config: &Arc) -> Arc>> { + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(242,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'."))); if valueOrError0.IsFailure() { @@ -126734,79 +128482,111 @@ pub mod _SearchConfigToInfo_Compile { return output.read(); }; let mut source: Arc = valueOrError3.Extract(); + let mut valueOrError4: Arc>>; let mut _out2: Arc>> = _default::ConvertVersionWithSource(outer, config, &source); - output = MaybePlacebo::from(_out2.clone()); + valueOrError4 = _out2.clone(); + if valueOrError4.IsFailure() { + output = MaybePlacebo::from(valueOrError4.PropagateFailure::()); + return output.read(); + }; + let mut version: ValidBeaconVersion = valueOrError4.Extract(); + output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { + value: version.clone() + })); return output.read(); } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(270,3) - pub fn ConvertVersionWithSource(outer: &Arc, config: &Arc, source: &Arc) -> Arc>> { + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(320,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()); + let mut maxPartitions: PartitionCount = config.maximumNumberOfPartitions().UnwrapOr(&truncate!((&int!(1)).clone(), i32)); + let mut valueOrError0: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(int!(0) <= int!(maxPartitions) && int!(maxPartitions) < crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::MAX_PARTITION_COUNT(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid maximumNumberOfPartitions specified, ").concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!((&maxPartitions).clone()))).concat(&string_utf16_of(", must be 0 < maximumNumberOfPartitions <= 255.")))); if valueOrError0.IsFailure() { output = MaybePlacebo::from(valueOrError0.PropagateFailure::()); return output.read(); }; - let mut virtualFields: VirtualFieldMap = valueOrError0.Extract(); - let mut valueOrError1: Arc>>; - let mut _out0: Arc>> = _default::AddStandardBeacons(config.standardBeacons(), outer, source.client(), &virtualFields, &map![]); - valueOrError1 = _out0.clone(); + if maxPartitions == 0 { + maxPartitions = 1; + }; + let mut defaultPartitionsOpt: Arc> = config.defaultNumberOfPartitions().clone(); + let mut defaultPartitions: PartitionCount = ::default(); + if matches!((&defaultPartitionsOpt).as_ref(), None{ .. }) || defaultPartitionsOpt.value().clone() == 0 { + defaultPartitions = maxPartitions; + } else { + if maxPartitions <= defaultPartitionsOpt.value().clone() { + output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid defaultNumberOfPartitions specified, ").concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!(defaultPartitionsOpt.value().clone()))).concat(&string_utf16_of(", must be 0 < defaultNumberOfPartitions < maximumNumberOfPartitions."))) + })); + return output.read(); + } else { + defaultPartitions = defaultPartitionsOpt.value().clone(); + } + }; + let mut valueOrError1: Arc>> = _default::ConvertVirtualFields(outer, config.virtualFields()); if valueOrError1.IsFailure() { output = MaybePlacebo::from(valueOrError1.PropagateFailure::()); return output.read(); }; - let mut std: BeaconMap = valueOrError1.Extract(); + let mut virtualFields: VirtualFieldMap = valueOrError1.Extract(); + let mut valueOrError2: Arc>>; + let mut _out0: Arc>> = _default::AddStandardBeacons(config.standardBeacons(), outer, source.client(), &virtualFields, maxPartitions, defaultPartitions, &map![]); + valueOrError2 = _out0.clone(); + if valueOrError2.IsFailure() { + output = MaybePlacebo::from(valueOrError2.PropagateFailure::()); + return output.read(); + }; + let mut std: BeaconMap = valueOrError2.Extract(); let mut signed: Sequence>; if matches!(config.signedParts().as_ref(), Some{ .. }) { signed = config.signedParts().value().clone(); } else { signed = seq![] as Sequence>; }; - let mut valueOrError2: Arc, Arc>> = _default::GetSignedParts(&signed, outer, &string_utf16_of("Global Parts List"), &Arc::new(PartSet::PartSet { + let mut valueOrError3: Arc, Arc>> = _default::GetSignedParts(&signed, outer, &string_utf16_of("Global Parts List"), &Arc::new(PartSet::PartSet { parts: seq![] as Sequence>, names: set!{}, prefixes: set!{} })); - if valueOrError2.IsFailure() { - output = MaybePlacebo::from(valueOrError2.PropagateFailure::()); + if valueOrError3.IsFailure() { + output = MaybePlacebo::from(valueOrError3.PropagateFailure::()); return output.read(); }; - let mut globalSignedParts: Arc = valueOrError2.Extract(); + let mut globalSignedParts: Arc = valueOrError3.Extract(); let mut globalEncryptedParts: Arc = Arc::new(PartSet::PartSet { parts: seq![] as Sequence>, names: set!{}, prefixes: set!{} }); if matches!(config.encryptedParts().as_ref(), Some{ .. }) { - let mut valueOrError3: Arc, Arc>> = _default::GetEncryptedParts(config.encryptedParts().value(), &std, &string_utf16_of("Global Parts List"), &Arc::new(PartSet::PartSet { + let mut valueOrError4: Arc, Arc>> = _default::GetEncryptedParts(config.encryptedParts().value(), &std, &string_utf16_of("Global Parts List"), &Arc::new(PartSet::PartSet { parts: seq![] as Sequence>, names: set!{}, prefixes: set!{} })); - if valueOrError3.IsFailure() { - output = MaybePlacebo::from(valueOrError3.PropagateFailure::()); + if valueOrError4.IsFailure() { + output = MaybePlacebo::from(valueOrError4.PropagateFailure::()); return output.read(); }; - globalEncryptedParts = valueOrError3.Extract(); + globalEncryptedParts = valueOrError4.Extract(); }; let mut beacons: BeaconMap; if matches!(config.compoundBeacons().as_ref(), Some{ .. }) { - let mut valueOrError4: Arc>>; + let mut valueOrError5: Arc>>; let mut _out1: Arc>> = _default::AddCompoundBeacons(config.compoundBeacons().value(), outer, source.client(), &virtualFields, &std, &globalSignedParts, &globalEncryptedParts); - valueOrError4 = _out1.clone(); - if valueOrError4.IsFailure() { - output = MaybePlacebo::from(valueOrError4.PropagateFailure::()); + valueOrError5 = _out1.clone(); + if valueOrError5.IsFailure() { + output = MaybePlacebo::from(valueOrError5.PropagateFailure::()); return output.read(); }; - beacons = valueOrError4.Extract(); + beacons = valueOrError5.Extract(); } else { beacons = std.clone(); }; - let mut valueOrError5: Arc>> = _default::CheckBeacons(&beacons); - if valueOrError5.IsFailure() { - output = MaybePlacebo::from(valueOrError5.PropagateFailure::()); + let mut valueOrError6: Arc>> = _default::CheckBeacons(&beacons); + if valueOrError6.IsFailure() { + output = MaybePlacebo::from(valueOrError6.PropagateFailure::()); return output.read(); }; - let mut _v0: bool = valueOrError5.Extract(); + let mut _v0: bool = valueOrError6.Extract(); if matches!(source.keyLoc().as_ref(), MultiLoc{ .. }) { let mut name: Sequence = source.keyLoc().keyName().clone(); if beacons.contains(&name) { @@ -126822,10 +128602,26 @@ pub mod _SearchConfigToInfo_Compile { return output.read(); } }; - output = MaybePlacebo::from(crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::_default::MakeBeaconVersion(config.version().clone() as u8, source, &beacons, &virtualFields, outer.attributeActionsOnEncrypt())); + let mut partitionSelector: Object; + if matches!(outer.search().as_ref(), Some{ .. }) && matches!(outer.search().value().versions().get(&int!(0)).partitionSelector().as_ref(), Some{ .. }) { + partitionSelector = outer.search().value().versions().get(&int!(0)).partitionSelector().value().clone(); + } else { + let mut _nw0: Object = DefaultPartitionSelector::_allocate_object(); + DefaultPartitionSelector::_ctor(&_nw0); + partitionSelector = upcast_object::()(_nw0.clone()); + }; + let mut valueOrError7: Arc>> = crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::_default::MakeBeaconVersion(config.version().clone() as u8, source, &beacons, &virtualFields, outer.attributeActionsOnEncrypt(), &partitionSelector, maxPartitions); + if valueOrError7.IsFailure() { + output = MaybePlacebo::from(valueOrError7.PropagateFailure::()); + return output.read(); + }; + let mut ret: Arc = valueOrError7.Extract(); + output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { + value: ret.clone() + })); return output.read(); } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(328,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(419,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 { @@ -126835,7 +128631,7 @@ pub mod _SearchConfigToInfo_Compile { _default::AddVirtualFields(vf.value(), outer, &map![]) } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(338,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(429,3) pub fn IsSigned(outer: &Arc, loc: &TermLoc) -> bool { true && ({ let __pat_let72_0: Sequence = loc.get(&int!(0)).key().clone(); @@ -126845,7 +128641,7 @@ pub mod _SearchConfigToInfo_Compile { } }) } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(346,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(437,3) pub fn IsSignOnly(outer: &Arc, loc: &TermLoc) -> bool { true && ({ let __pat_let73_0: Sequence = loc.get(&int!(0)).key().clone(); @@ -126855,7 +128651,7 @@ pub mod _SearchConfigToInfo_Compile { } }) } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(357,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(448,3) pub fn IsEncrypted(outer: &Arc, loc: &TermLoc) -> bool { true && ({ let __pat_let74_0: Sequence = loc.get(&int!(0)).key().clone(); @@ -126865,7 +128661,7 @@ pub mod _SearchConfigToInfo_Compile { } }) } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(365,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(456,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(); @@ -126877,7 +128673,7 @@ pub mod _SearchConfigToInfo_Compile { }) }) } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(372,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(463,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 { @@ -126913,7 +128709,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(396,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(487,3) pub fn VirtualFieldNameAllowed(outer: &Arc, name: &Sequence) -> Arc>> { if outer.attributeActionsOnEncrypt().contains(name) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { @@ -126943,7 +128739,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(411,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(502,3) pub fn FindVirtualFieldWithThisLocation(fields: &VirtualFieldMap, locs: &Set) -> Arc>> { let mut badNames: Set> = (&({ let mut locs = locs.clone(); @@ -126968,7 +128764,7 @@ pub mod _SearchConfigToInfo_Compile { }) } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(422,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(513,3) pub fn ExistsConstructorWithTheseRequired(cons: &Sequence>, locs: &Set>) -> bool { int!(0) < _default::SeqCount::>({ let locs: Set> = locs.clone(); @@ -126980,7 +128776,7 @@ pub mod _SearchConfigToInfo_Compile { }) }, cons) } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(427,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(518,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{ @@ -127002,7 +128798,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(437,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(528,3) pub fn AddVirtualFields(vf: &Sequence>, outer: &Arc, converted: &VirtualFieldMap) -> Arc>> { let mut _r0 = vf.clone(); let mut _r1 = outer.clone(); @@ -127063,7 +128859,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(483,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(574,3) pub fn FindBeaconWithThisLocation(beacons: &BeaconMap, loc: &TermLoc) -> Arc>> { let mut badNames: Set> = (&({ let mut loc = loc.clone(); @@ -127088,7 +128884,7 @@ pub mod _SearchConfigToInfo_Compile { }) } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(494,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(585,3) pub fn IsValidShare(converted: &BeaconMap, name: &Sequence, length: u8, share: &Sequence) -> Arc>> { if converted.contains(share) { let mut tb: Arc = converted.get(share); @@ -127125,8 +128921,32 @@ pub mod _SearchConfigToInfo_Compile { }) } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(522,3) - pub fn AddStandardBeacons(beacons: &Sequence>, outer: &Arc, client: &Object, virtualFields: &VirtualFieldMap, converted: &BeaconMap) -> Arc>> { + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(612,3) + pub fn GetPartitionCount(outer: &Arc, inner: &Arc>, name: &Sequence, maxPartitions: PartitionCount, defaultPartitions: PartitionCount) -> Arc>> { + if matches!(outer.search().as_ref(), None{ .. }) || outer.search().value().versions().cardinality() == int!(0) { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { + value: 1 + }) + } else { + if crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::PartitionCountNone(inner) { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { + value: defaultPartitions + }) + } else { + if inner.value().clone() < maxPartitions { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { + value: inner.value().clone() + }) + } else { + Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Constrained numberOfPartitions for ").concat(name).concat(&string_utf16_of(" is ")).concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!(inner.value().clone()))).concat(&string_utf16_of(" but it must be less than the maximumNumberOfPartitions ")).concat(&crate::implementation_from_dafny::_StandardLibrary_Compile::_String_Compile::_default::Base10Int2String(&int!((&maxPartitions).clone())))) + }) + } + } + } + } + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(630,3) + pub fn AddStandardBeacons(beacons: &Sequence>, outer: &Arc, client: &Object, virtualFields: &VirtualFieldMap, maxPartitions: PartitionCount, defaultPartitions: PartitionCount, converted: &BeaconMap) -> Arc>> { let mut output = MaybePlacebo::>>>::new(); if beacons.cardinality() == int!(0) { output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Success { @@ -127178,17 +128998,23 @@ pub mod _SearchConfigToInfo_Compile { } } }; - let mut valueOrError2: Arc>> = crate::implementation_from_dafny::_BaseBeacon_Compile::_default::MakeStandardBeacon(client, beacons.get(&int!(0)).name(), beacons.get(&int!(0)).length().clone() as u8, &locString, isPartOnly, isAsSet, &share); + let mut valueOrError2: Arc>> = _default::GetPartitionCount(outer, beacons.get(&int!(0)).numberOfPartitions(), beacons.get(&int!(0)).name(), maxPartitions, defaultPartitions); if valueOrError2.IsFailure() { output = MaybePlacebo::from(valueOrError2.PropagateFailure::()); return output.read(); }; - let mut newBeacon: Arc = valueOrError2.Extract(); - let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::IsEncryptedV(outer, virtualFields, newBeacon.loc()), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("StandardBeacon ").concat(beacons.get(&int!(0)).name()).concat(&string_utf16_of(" not defined on an encrypted field.")))); + let mut partitionCount: PartitionCount = valueOrError2.Extract(); + let mut valueOrError3: Arc>> = crate::implementation_from_dafny::_BaseBeacon_Compile::_default::MakeStandardBeacon(client, beacons.get(&int!(0)).name(), beacons.get(&int!(0)).length().clone() as u8, &locString, isPartOnly, isAsSet, &share, partitionCount); if valueOrError3.IsFailure() { output = MaybePlacebo::from(valueOrError3.PropagateFailure::()); return output.read(); }; + let mut newBeacon: Arc = valueOrError3.Extract(); + let mut valueOrError4: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(_default::IsEncryptedV(outer, virtualFields, newBeacon.loc()), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("StandardBeacon ").concat(beacons.get(&int!(0)).name()).concat(&string_utf16_of(" not defined on an encrypted field.")))); + if valueOrError4.IsFailure() { + output = MaybePlacebo::from(valueOrError4.PropagateFailure::()); + return output.read(); + }; let mut badBeacon: Arc>> = _default::FindBeaconWithThisLocation(converted, newBeacon.loc()); if matches!((&badBeacon).as_ref(), Some{ .. }) { output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>::Failure { @@ -127203,13 +129029,13 @@ pub mod _SearchConfigToInfo_Compile { })); return output.read(); }; - let mut _out0: Arc>> = _default::AddStandardBeacons(&beacons.drop(&int!(1)), outer, client, virtualFields, &converted.update_index(beacons.get(&int!(0)).name(), &Arc::new(Beacon::Standard { + let mut _out0: Arc>> = _default::AddStandardBeacons(&beacons.drop(&int!(1)), outer, client, virtualFields, maxPartitions, defaultPartitions, &converted.update_index(beacons.get(&int!(0)).name(), &Arc::new(Beacon::Standard { std: newBeacon.clone() }))); output = MaybePlacebo::from(_out0.clone()); return output.read(); } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(608,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(718,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 { @@ -127219,7 +129045,7 @@ pub mod _SearchConfigToInfo_Compile { crate::implementation_from_dafny::_TermLoc_Compile::_default::MakeTermLoc(loc.value()) } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(617,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(727,3) pub fn GetLocStr(name: &Sequence, loc: &Arc>>) -> Sequence { if matches!(loc.as_ref(), None{ .. }) { name.clone() @@ -127227,7 +129053,7 @@ pub mod _SearchConfigToInfo_Compile { loc.value().clone() } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(671,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(781,3) pub fn GetSignedParts(parts: &Sequence>, outer: &Arc, name: &Sequence, converted: &Arc) -> Arc, Arc>> { let mut _r0 = parts.clone(); let mut _r1 = outer.clone(); @@ -127277,7 +129103,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(721,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(831,3) pub fn GetEncryptedParts(parts: &Sequence>, std: &BeaconMap, name: &Sequence, converted: &Arc) -> Arc, Arc>> { let mut _r0 = parts.clone(); let mut _r1 = std.clone(); @@ -127327,7 +129153,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(758,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(868,3) pub fn MakeDefaultConstructor(parts: &Sequence>, converted: &Sequence>) -> Arc>, Arc>> { let mut _r0 = parts.clone(); let mut _r1 = converted.clone(); @@ -127352,7 +129178,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(792,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(902,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(); @@ -127376,7 +129202,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(803,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(913,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(); @@ -127400,7 +129226,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(813,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(923,3) pub fn MakeConstructor2(c: &Sequence>, parts: &Sequence>, origSize: &nat, converted: &Sequence>) -> Arc>, Arc>> { let mut _r0 = c.clone(); let mut _r1 = parts.clone(); @@ -127446,7 +129272,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(840,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(950,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() { @@ -127460,7 +129286,7 @@ pub mod _SearchConfigToInfo_Compile { }) } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(851,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(961,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(); @@ -127519,7 +129345,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(887,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(997,3) pub fn AddConstructors(constructors: &Arc>, name: &Sequence, parts: &Sequence>) -> Arc>, Arc>> { if matches!(constructors.as_ref(), None{ .. }) { _default::MakeDefaultConstructor(parts, &(seq![] as Sequence>)) @@ -127527,7 +129353,7 @@ pub mod _SearchConfigToInfo_Compile { _default::AddConstructors2(constructors.value(), name, parts, &constructors.value().cardinality(), &(seq![] as Sequence>)) } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(914,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1024,3) pub fn GetGlobalPartsFrom(cons: &Sequence>, globalParts: &Arc, signed: bool, parts: &Arc) -> Arc, Arc>> { let mut _r0 = cons.clone(); let mut _r1 = globalParts.clone(); @@ -127574,7 +129400,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(930,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1040,3) pub fn GetGlobalParts(cons: &Sequence>, globalParts: &Arc, signed: bool, parts: &Arc) -> Arc, Arc>> { let mut _r0 = cons.clone(); let mut _r1 = globalParts.clone(); @@ -127608,7 +129434,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(942,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1052,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>, @@ -127640,7 +129466,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(958,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1068,3) pub fn IsSignedPart(part: &Arc, signed: bool) -> bool { if signed { matches!(part.as_ref(), Signed{ .. }) @@ -127648,7 +129474,7 @@ pub mod _SearchConfigToInfo_Compile { matches!(part.as_ref(), Encrypted{ .. }) } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(966,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1076,3) pub fn FindGlobalPart(globalParts: &Sequence>, cons: &Arc, signed: bool) -> Arc>> { let mut _r0 = globalParts.clone(); let mut _r1 = cons.clone(); @@ -127676,7 +129502,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(979,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1089,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>, @@ -127708,7 +129534,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(995,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1105,3) pub fn CheckSignedParts(parts: &Sequence>, globals: &Arc, name: &Sequence) -> Arc>> { let mut _r0 = parts.clone(); let mut _r1 = globals.clone(); @@ -127744,7 +129570,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1007,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1117,3) pub fn CheckEncryptedParts(parts: &Sequence>, globals: &Arc, name: &Sequence) -> Arc>> { let mut _r0 = parts.clone(); let mut _r1 = globals.clone(); @@ -127780,7 +129606,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1020,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1130,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() @@ -127878,7 +129704,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1097,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1207,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) { @@ -127899,7 +129725,7 @@ pub mod _SearchConfigToInfo_Compile { output = MaybePlacebo::from(_out0.clone()); return output.read(); } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1138,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1248,3) pub fn ExistsInCompound(names: &Sequence>, name: &Sequence, data: &BeaconMap) -> bool { let mut _r0 = names.clone(); let mut _r1 = name.clone(); @@ -127926,7 +129752,7 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1153,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1263,3) pub fn CheckAllBeacons(names: &Sequence>, allNames: &Sequence>, data: &BeaconMap) -> Arc>> { let mut _r0 = names.clone(); let mut _r1 = allNames.clone(); @@ -127973,14 +129799,78 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1189,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(1299,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(626,3) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(276,3) + pub struct DefaultPartitionSelector {} + + impl DefaultPartitionSelector { + /// Allocates an UNINITIALIZED instance. Only the Dafny compiler should use that. + pub fn _allocate_object() -> Object { + allocate_object::() + } + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(282,5) + pub fn _ctor(this: &Object) -> () { + return (); + } + } + + impl UpcastObject + for DefaultPartitionSelector { + UpcastObjectFn!(DynAny); + } + + impl IPartitionSelector + for DefaultPartitionSelector { + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(299,5) + fn _GetPartitionNumber_k(&self, input: &Arc) -> Arc, Arc>> { + let mut output = MaybePlacebo::, Arc>>>::new(); + if input.numberOfPartitions().clone() == 1 { + output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { + value: Arc::new(GetPartitionNumberOutput::GetPartitionNumberOutput { + partitionNumber: 0 + }) + })); + return output.read(); + } else { + let mut randR: Arc, Arc>>; + let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_Random_Compile::_default::GenerateBytes(1); + randR = _out0.clone(); + let mut valueOrError0: Arc, Arc>> = randR.MapFailure::>(&({ + Arc::new(move |e: &Arc| -> Arc{ + Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::Error::DynamoDbEncryptionException { + message: string_utf16_of("Failed to get random byte") + }) + }) + })); + if valueOrError0.IsFailure() { + output = MaybePlacebo::from(valueOrError0.PropagateFailure::>()); + return output.read(); + }; + let mut rand: Sequence = valueOrError0.Extract(); + let mut partition: PartitionNumber = (rand.get(&int!(0)) % input.numberOfPartitions().clone() as u8) as i32; + output = MaybePlacebo::from(Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { + value: Arc::new(GetPartitionNumberOutput::GetPartitionNumberOutput { + partitionNumber: partition + }) + })); + return output.read(); + }; + return output.read(); + } + } + + impl UpcastObject + for DefaultPartitionSelector { + UpcastObjectFn!(dyn IPartitionSelector); + } + + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(736,3) #[derive(PartialEq, Clone)] pub enum PartSet { PartSet { @@ -127991,7 +129881,7 @@ pub mod _SearchConfigToInfo_Compile { } impl PartSet { - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(631,5) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(741,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 { @@ -128013,12 +129903,12 @@ pub mod _SearchConfigToInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(645,5) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(755,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(652,5) + /// dafny/DynamoDbEncryption/src/ConfigToInfo.dfy(762,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())); @@ -128144,6 +130034,8 @@ pub mod _SearchableEncryptionInfo_Compile { pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::BeaconType::SignedBeacon; pub use crate::implementation_from_dafny::_DdbVirtualFields_Compile::VirtualFieldMap; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::IPartitionSelector; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionCount; pub use ::std::marker::Sync; pub use ::std::marker::Send; pub use ::dafny_runtime::Set; @@ -128192,6 +130084,7 @@ pub mod _SearchableEncryptionInfo_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::Materials::BeaconKey; pub use ::dafny_runtime::_System::nat; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionNumber; pub use crate::implementation_from_dafny::_BaseBeacon_Compile::ValidStandardBeacon; pub use crate::implementation_from_dafny::_CompoundBeacon_Compile::ValidCompoundBeacon; pub use crate::implementation_from_dafny::_CompoundBeacon_Compile::CompoundBeacon; @@ -128316,11 +130209,11 @@ pub mod _SearchableEncryptionInfo_Compile { currWrite: int!(0) }) } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(654,3) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(664,3) pub fn IsPartOnly(b: &Arc) -> bool { matches!(b.as_ref(), Standard{ .. }) && b.std().partOnly().clone() } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(658,3) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(668,3) pub fn IsBeaconOfType(b: &Arc, t: &Arc) -> bool { let mut _source0: Arc = t.clone(); if matches!((&_source0).as_ref(), AnyBeacon{ .. }) { @@ -128333,8 +130226,8 @@ pub mod _SearchableEncryptionInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(719,3) - pub fn MakeBeaconVersion(version: u8, keySource: &Arc, beacons: &BeaconMap, virtualFields: &VirtualFieldMap, actions: &Map, Arc>) -> Arc>> { + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(729,3) + pub fn MakeBeaconVersion(version: u8, keySource: &Arc, beacons: &BeaconMap, virtualFields: &VirtualFieldMap, actions: &Map, Arc>, partitionSelector: &Object, maxPartitions: PartitionCount) -> 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::>({ let beacons: BeaconMap = beacons.clone(); @@ -128365,7 +130258,9 @@ pub mod _SearchableEncryptionInfo_Compile { beacons: beacons.clone(), beaconNames: beaconNames.clone(), stdNames: stdKeys.clone(), - encryptedFields: encrypted.clone() + encryptedFields: encrypted.clone(), + partitionSelector: partitionSelector.clone(), + numPartitions: maxPartitions }); Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { value: bv.clone() @@ -129009,23 +130904,23 @@ pub mod _SearchableEncryptionInfo_Compile { self.versions().get(self.currWrite()).IsVirtualField(field) } /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(521,5) - pub fn GeneratePlainBeacons(self: &Arc, item: &Map, Arc>) -> Arc, Arc>, Arc>> { + pub fn GeneratePlainBeacons(self: &Arc, item: &Map, Arc>, partition: PartitionNumber) -> Arc, Arc>, Arc>> { let mut output: Arc, Arc>, Arc>>; - let mut _out0: Arc, Arc>, Arc>> = self.versions().get(self.currWrite()).GeneratePlainBeacons(item); + let mut _out0: Arc, Arc>, Arc>> = self.versions().get(self.currWrite()).GeneratePlainBeacons(item, partition); output = _out0.clone(); return output.clone(); } /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(527,5) - pub fn GenerateSignedBeacons(self: &Arc, item: &Map, Arc>) -> Arc, Arc>, Arc>> { + pub fn GenerateSignedBeacons(self: &Arc, item: &Map, Arc>, partition: PartitionNumber) -> Arc, Arc>, Arc>> { let mut output: Arc, Arc>, Arc>>; - let mut _out0: Arc, Arc>, Arc>> = self.versions().get(self.currWrite()).GenerateSignedBeacons(item); + let mut _out0: Arc, Arc>, Arc>> = self.versions().get(self.currWrite()).GenerateSignedBeacons(item, partition); output = _out0.clone(); return output.clone(); } /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(534,5) - pub fn GenerateEncryptedBeacons(self: &Arc, item: &Map, Arc>, keyId: &Arc) -> Arc, Arc>, Arc>> { + pub fn GenerateEncryptedBeacons(self: &Arc, item: &Map, Arc>, keyId: &Arc, partition: PartitionNumber) -> Arc, Arc>, Arc>> { let mut output: Arc, Arc>, Arc>>; - let mut _out0: Arc, Arc>, Arc>> = self.versions().get(self.currWrite()).GenerateEncryptedBeacons(item, keyId); + let mut _out0: Arc, Arc>, Arc>> = self.versions().get(self.currWrite()).GenerateEncryptedBeacons(item, keyId, partition); output = _out0.clone(); return output.clone(); } @@ -129111,6 +131006,19 @@ pub mod _SearchableEncryptionInfo_Compile { impl Beacon { /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(547,5) + pub fn getNumQueries(self: &Arc, globalMax: PartitionCount, value: &Sequence) -> PartitionCount { + let mut output: PartitionCount; + if matches!(self.as_ref(), Standard{ .. }) { + output = crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::bmin(self.std().numberOfPartitions().clone(), globalMax); + return output; + } else { + let mut _out0: PartitionCount = CompoundBeacon::getNumQueries(self.cmp(), globalMax, value); + output = _out0; + return output; + }; + return output; + } + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(557,5) pub fn isEncrypted(self: &Arc) -> bool { if matches!(self.as_ref(), Standard{ .. }) { true @@ -129118,15 +131026,15 @@ pub mod _SearchableEncryptionInfo_Compile { CompoundBeacon::isEncrypted(self.cmp()) } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(554,5) - pub fn hash(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap, keys: &Arc) -> Arc>>, Arc>> { + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(564,5) + pub fn hash(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap, keys: &Arc, partition: PartitionNumber) -> 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.")))); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>>>() } else { if keys.value().contains(&StandardBeacon::keyName(self.std())) { - StandardBeacon::getHash(self.std(), item, vf, &keys.value().get(&StandardBeacon::keyName(self.std()))) + StandardBeacon::getHash(self.std(), item, vf, &keys.value().get(&StandardBeacon::keyName(self.std())), partition) } else { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::>>, Arc>::Failure { error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Internal error. Beacon ").concat(&StandardBeacon::keyName(self.std())).concat(&string_utf16_of(" has no key!"))) @@ -129134,7 +131042,7 @@ pub mod _SearchableEncryptionInfo_Compile { } } } else { - let mut valueOrError1: Arc>>, Arc>> = CompoundBeacon::hash(self.cmp(), item, vf, keys); + let mut valueOrError1: Arc>>, Arc>> = CompoundBeacon::hash(self.cmp(), item, vf, keys, partition); if valueOrError1.IsFailure() { valueOrError1.PropagateFailure::>>>() } else { @@ -129155,12 +131063,12 @@ pub mod _SearchableEncryptionInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(577,5) - pub fn naked(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap) -> Arc>>, Arc>> { + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(587,5) + pub fn naked(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap, partition: PartitionNumber) -> Arc>>, Arc>> { if matches!(self.as_ref(), Standard{ .. }) { StandardBeacon::getNaked(self.std(), item, vf) } else { - let mut valueOrError0: Arc>>, Arc>> = CompoundBeacon::getNaked(self.cmp(), item, vf); + let mut valueOrError0: Arc>>, Arc>> = CompoundBeacon::getNaked(self.cmp(), item, vf, partition); if valueOrError0.IsFailure() { valueOrError0.PropagateFailure::>>>() } else { @@ -129179,15 +131087,15 @@ pub mod _SearchableEncryptionInfo_Compile { } } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(588,5) - pub fn attrHash(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap, keys: &Arc) -> Arc>>, Arc>> { + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(598,5) + pub fn attrHash(self: &Arc, item: &Map, Arc>, vf: &VirtualFieldMap, keys: &Arc, partition: PartitionNumber) -> Arc>>, Arc>> { if matches!(keys.as_ref(), DontUseKeys{ .. }) { - self.naked(item, vf) + self.naked(item, vf, partition) } else { - self.hash(item, vf, keys) + self.hash(item, vf, keys, partition) } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(595,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(605,5) pub fn getName(self: &Arc) -> Sequence { if matches!(self.as_ref(), Standard{ .. }) { self.std().base().name().clone() @@ -129195,7 +131103,7 @@ pub mod _SearchableEncryptionInfo_Compile { self.cmp().base().name().clone() } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(602,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(612,5) pub fn getBeaconName(self: &Arc) -> Sequence { if matches!(self.as_ref(), Standard{ .. }) { self.std().base().beaconName().clone() @@ -129203,7 +131111,7 @@ pub mod _SearchableEncryptionInfo_Compile { self.cmp().base().beaconName().clone() } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(609,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(619,5) pub fn GetFields(self: &Arc, virtualFields: &VirtualFieldMap) -> Sequence> { if matches!(self.as_ref(), Standard{ .. }) { StandardBeacon::GetFields(self.std(), virtualFields) @@ -129211,8 +131119,8 @@ pub mod _SearchableEncryptionInfo_Compile { CompoundBeacon::GetFields(self.cmp(), virtualFields) } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(617,5) - pub fn GetBeaconValue(self: &Arc, value: &Arc, keys: &Arc, forEquality: bool, forContains: bool) -> Arc, Arc>> { + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(627,5) + pub fn GetBeaconValue(self: &Arc, value: &Arc, keys: &Arc, forEquality: bool, forContains: bool, partition: PartitionNumber) -> Arc, Arc>> { if matches!(keys.as_ref(), DontUseKeys{ .. }) { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Success { value: value.clone() @@ -129225,7 +131133,7 @@ pub mod _SearchableEncryptionInfo_Compile { } else { let mut keys: Map, Sequence> = keys.value().clone(); if keys.contains(&StandardBeacon::keyName(self.std())) { - StandardBeacon::GetBeaconValue(self.std(), value, &keys.get(&StandardBeacon::keyName(self.std())), forContains) + StandardBeacon::GetBeaconValue(self.std(), value, &keys.get(&StandardBeacon::keyName(self.std())), forContains, partition) } else { Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>::Failure { error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Internal error. Beacon ").concat(&StandardBeacon::keyName(self.std())).concat(&string_utf16_of(" has no key."))) @@ -129233,7 +131141,7 @@ pub mod _SearchableEncryptionInfo_Compile { } } } else { - CompoundBeacon::GetBeaconValue(self.cmp(), value, keys, forEquality) + CompoundBeacon::GetBeaconValue(self.cmp(), value, keys, forEquality, partition) } } } @@ -129313,10 +131221,10 @@ pub mod _SearchableEncryptionInfo_Compile { } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(642,3) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(652,3) pub type BeaconMap = Map, Arc>; - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(649,3) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(659,3) #[derive(PartialEq, Clone)] pub enum BeaconType { AnyBeacon {}, @@ -129394,10 +131302,10 @@ pub mod _SearchableEncryptionInfo_Compile { } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(740,3) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(753,3) pub type ValidBeaconVersion = Arc; - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(742,3) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(755,3) #[derive(PartialEq, Clone)] pub enum BeaconVersion { BeaconVersion { @@ -129407,20 +131315,22 @@ pub mod _SearchableEncryptionInfo_Compile { beacons: BeaconMap, beaconNames: Sequence>, stdNames: Sequence>, - encryptedFields: Set> + encryptedFields: Set>, + partitionSelector: Object, + numPartitions: PartitionCount } } impl BeaconVersion { - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(769,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(786,5) pub fn IsBeacon(self: &Arc, field: &Sequence) -> bool { self.beacons().contains(field) } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(774,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(791,5) pub fn IsVirtualField(self: &Arc, field: &Sequence) -> bool { self.virtualFields().contains(field) } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(779,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(796,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)]) @@ -129428,14 +131338,14 @@ pub mod _SearchableEncryptionInfo_Compile { seq![field.clone()] } } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(787,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(804,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(795,5) + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(812,5) pub fn ListSignedBeacons(self: &Arc) -> Sequence> { crate::implementation_from_dafny::_Seq_Compile::_default::Filter::>(&({ let mut _this = self.clone(); @@ -129444,18 +131354,18 @@ pub mod _SearchableEncryptionInfo_Compile { }) }), self.beaconNames()) } - /// 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![]); + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(820,5) + pub fn GeneratePlainBeacons(self: &Arc, item: &Map, Arc>, partition: PartitionNumber) -> Arc, Arc>, Arc>> { + let mut output: Arc, Arc>, Arc>> = self.GenerateBeacons2(self.beaconNames(), item, &Arc::new(MaybeKeyMap::DontUseKeys {}), &Arc::new(BeaconType::AnyBeacon {}), partition, &map![]); return output.clone(); } - /// 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![]); + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(828,5) + pub fn GenerateSignedBeacons(self: &Arc, item: &Map, Arc>, partition: PartitionNumber) -> Arc, Arc>, Arc>> { + let mut output: Arc, Arc>, Arc>> = self.GenerateBeacons2(self.beaconNames(), item, &Arc::new(MaybeKeyMap::DontUseKeys {}), &Arc::new(BeaconType::SignedBeacon {}), partition, &map![]); return output.clone(); } - /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(834,5) - pub fn GenerateEncryptedBeacons(self: &Arc, item: &Map, Arc>, keyId: &Arc) -> Arc, Arc>, Arc>> { + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(851,5) + pub fn GenerateEncryptedBeacons(self: &Arc, item: &Map, Arc>, keyId: &Arc, partition: PartitionNumber) -> Arc, Arc>, Arc>> { let mut output = MaybePlacebo::, Arc>, Arc>>>::new(); let mut valueOrError0: Arc, Arc>>; let mut _out0: Arc, Arc>> = self.getKeyMap(keyId); @@ -129465,34 +131375,36 @@ pub mod _SearchableEncryptionInfo_Compile { return output.read(); }; let mut hmacKeys: Arc = valueOrError0.Extract(); - output = MaybePlacebo::from(self.GenerateBeacons2(self.beaconNames(), item, &hmacKeys, &Arc::new(BeaconType::EncryptedBeacon {}), &map![])); + output = MaybePlacebo::from(self.GenerateBeacons2(self.beaconNames(), item, &hmacKeys, &Arc::new(BeaconType::EncryptedBeacon {}), partition, &map![])); return output.read(); } - /// 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(888,5) + pub fn GenerateBeacon(self: &Arc, name: &Sequence, item: &Map, Arc>, keys: &Arc, partition: PartitionNumber) -> Arc>>, Arc>> { + self.beacons().get(name).attrHash(item, self.virtualFields(), keys, partition) } - /// 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>> { + /// dafny/DynamoDbEncryption/src/SearchInfo.dfy(894,5) + pub fn GenerateBeacons2(self: &Arc, names: &Sequence>, item: &Map, Arc>, keys: &Arc, bType: &Arc, partition: PartitionNumber, acc: &Map, Arc>) -> Arc, Arc>, Arc>> { let mut _this = self.clone(); let mut _r0 = names.clone(); let mut _r1 = item.clone(); let mut _r2 = keys.clone(); let mut _r3 = bType.clone(); - let mut _r4 = acc.clone(); + let mut _r4 = partition; + let mut _r5 = acc.clone(); 'TAIL_CALL_START: loop { let names = _r0; let item = _r1; let keys = _r2; let bType = _r3; - let acc = _r4; + let partition = _r4; + let acc = _r5; if names.cardinality() == int!(0) { return Arc::new(crate::implementation_from_dafny::_Wrappers_Compile::Result::, Arc>, Arc>::Success { value: acc.clone() }); } else { if _default::IsBeaconOfType(&_this.beacons().get(&names.get(&int!(0))), &bType) && !_default::IsPartOnly(&_this.beacons().get(&names.get(&int!(0)))) { - let mut valueOrError0: Arc>>, Arc>> = _this.GenerateBeacon(&names.get(&int!(0)), &item, &keys); + let mut valueOrError0: Arc>>, Arc>> = _this.GenerateBeacon(&names.get(&int!(0)), &item, &keys, partition); if valueOrError0.IsFailure() { return valueOrError0.PropagateFailure::, Arc>>(); } else { @@ -129503,43 +131415,49 @@ pub mod _SearchableEncryptionInfo_Compile { let mut _in2: Map, Arc> = item.clone(); let mut _in3: Arc = keys.clone(); let mut _in4: Arc = bType.clone(); - let mut _in5: Map, Arc> = acc.update_index(&_this.beacons().get(&names.get(&int!(0))).getBeaconName(), value.value()); + let mut _in5: PartitionNumber = partition; + let mut _in6: Map, Arc> = acc.update_index(&_this.beacons().get(&names.get(&int!(0))).getBeaconName(), value.value()); _this = _in0.clone(); _r0 = _in1.clone(); _r1 = _in2.clone(); _r2 = _in3.clone(); _r3 = _in4.clone(); - _r4 = _in5.clone(); + _r4 = _in5; + _r5 = _in6.clone(); continue 'TAIL_CALL_START; } else { - let mut _in6: Arc = _this.clone(); - let mut _in7: Sequence> = names.drop(&int!(1)); - let mut _in8: Map, Arc> = item.clone(); - let mut _in9: Arc = keys.clone(); - let mut _in10: Arc = bType.clone(); - let mut _in11: Map, Arc> = acc.clone(); - _this = _in6.clone(); - _r0 = _in7.clone(); - _r1 = _in8.clone(); - _r2 = _in9.clone(); - _r3 = _in10.clone(); - _r4 = _in11.clone(); + let mut _in7: Arc = _this.clone(); + let mut _in8: Sequence> = names.drop(&int!(1)); + let mut _in9: Map, Arc> = item.clone(); + let mut _in10: Arc = keys.clone(); + let mut _in11: Arc = bType.clone(); + let mut _in12: PartitionNumber = partition; + let mut _in13: Map, Arc> = acc.clone(); + _this = _in7.clone(); + _r0 = _in8.clone(); + _r1 = _in9.clone(); + _r2 = _in10.clone(); + _r3 = _in11.clone(); + _r4 = _in12; + _r5 = _in13.clone(); continue 'TAIL_CALL_START; } } } else { - let mut _in12: Arc = _this.clone(); - let mut _in13: Sequence> = names.drop(&int!(1)); - let mut _in14: Map, Arc> = item.clone(); - let mut _in15: Arc = keys.clone(); - let mut _in16: Arc = bType.clone(); - let mut _in17: Map, Arc> = acc.clone(); - _this = _in12.clone(); - _r0 = _in13.clone(); - _r1 = _in14.clone(); - _r2 = _in15.clone(); - _r3 = _in16.clone(); - _r4 = _in17.clone(); + let mut _in14: Arc = _this.clone(); + let mut _in15: Sequence> = names.drop(&int!(1)); + let mut _in16: Map, Arc> = item.clone(); + let mut _in17: Arc = keys.clone(); + let mut _in18: Arc = bType.clone(); + let mut _in19: PartitionNumber = partition; + let mut _in20: Map, Arc> = acc.clone(); + _this = _in14.clone(); + _r0 = _in15.clone(); + _r1 = _in16.clone(); + _r2 = _in17.clone(); + _r3 = _in18.clone(); + _r4 = _in19; + _r5 = _in20.clone(); continue 'TAIL_CALL_START; } } @@ -129548,43 +131466,55 @@ pub mod _SearchableEncryptionInfo_Compile { /// Returns a borrow of the field version pub fn version(&self) -> &u8 { match self { - BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, } => version, + BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, partitionSelector, numPartitions, } => version, } } /// Returns a borrow of the field keySource pub fn keySource(&self) -> &Arc { match self { - BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, } => keySource, + BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, partitionSelector, numPartitions, } => keySource, } } /// Returns a borrow of the field virtualFields pub fn virtualFields(&self) -> &VirtualFieldMap { match self { - BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, } => virtualFields, + BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, partitionSelector, numPartitions, } => virtualFields, } } /// Returns a borrow of the field beacons pub fn beacons(&self) -> &BeaconMap { match self { - BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, } => beacons, + BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, partitionSelector, numPartitions, } => beacons, } } /// Returns a borrow of the field beaconNames pub fn beaconNames(&self) -> &Sequence> { match self { - BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, } => beaconNames, + BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, partitionSelector, numPartitions, } => beaconNames, } } /// Returns a borrow of the field stdNames pub fn stdNames(&self) -> &Sequence> { match self { - BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, } => stdNames, + BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, partitionSelector, numPartitions, } => stdNames, } } /// Returns a borrow of the field encryptedFields pub fn encryptedFields(&self) -> &Set> { match self { - BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, } => encryptedFields, + BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, partitionSelector, numPartitions, } => encryptedFields, + } + } + /// Returns a borrow of the field partitionSelector + pub fn partitionSelector(&self) -> &Object { + match self { + BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, partitionSelector, numPartitions, } => partitionSelector, + } + } + /// Returns a borrow of the field numPartitions + pub fn numPartitions(&self) -> &PartitionCount { + match self { + BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, partitionSelector, numPartitions, } => numPartitions, } } } @@ -129600,7 +131530,7 @@ pub mod _SearchableEncryptionInfo_Compile { for BeaconVersion { fn fmt_print(&self, _formatter: &mut Formatter, _in_seq: bool) -> std::fmt::Result { match self { - BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, } => { + BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, partitionSelector, numPartitions, } => { write!(_formatter, "SearchableEncryptionInfo_Compile.BeaconVersion.BeaconVersion(")?; DafnyPrint::fmt_print(version, _formatter, false)?; write!(_formatter, ", ")?; @@ -129615,6 +131545,10 @@ pub mod _SearchableEncryptionInfo_Compile { DafnyPrint::fmt_print(stdNames, _formatter, false)?; write!(_formatter, ", ")?; DafnyPrint::fmt_print(encryptedFields, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(partitionSelector, _formatter, false)?; + write!(_formatter, ", ")?; + DafnyPrint::fmt_print(numPartitions, _formatter, false)?; write!(_formatter, ")")?; Ok(()) }, @@ -129629,14 +131563,16 @@ pub mod _SearchableEncryptionInfo_Compile { for BeaconVersion { fn hash<_H: Hasher>(&self, _state: &mut _H) { match self { - BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, } => { + BeaconVersion::BeaconVersion{version, keySource, virtualFields, beacons, beaconNames, stdNames, encryptedFields, partitionSelector, numPartitions, } => { Hash::hash(version, _state); Hash::hash(keySource, _state); Hash::hash(virtualFields, _state); Hash::hash(beacons, _state); Hash::hash(beaconNames, _state); Hash::hash(stdNames, _state); - Hash::hash(encryptedFields, _state) + Hash::hash(encryptedFields, _state); + Hash::hash(partitionSelector, _state); + Hash::hash(numPartitions, _state) }, } } @@ -129652,7 +131588,9 @@ pub mod _SearchableEncryptionInfo_Compile { beacons: Default::default(), beaconNames: Default::default(), stdNames: Default::default(), - encryptedFields: Default::default() + encryptedFields: Default::default(), + partitionSelector: Default::default(), + numPartitions: Default::default() } } } @@ -133487,13 +135425,13 @@ pub mod _StructuredEncryptionFooter_Compile { return ret.read(); }; let mut foundTag: bool = false; - 'label_goto_3: loop { + 'label_goto_7: loop { let mut _hi0: u64 = truncate!(self.tags().cardinality(), u64); for i in integer_range(0, _hi0).map(Into::::into) { - 'label_continue_3: loop { + 'label_continue_7: loop { if crate::implementation_from_dafny::_StructuredEncryptionUtil_Compile::_default::ConstantTimeEquals(&_hash, &self.tags().get(&int!((&i).clone()))) { foundTag = true; - break 'label_goto_3; + break 'label_goto_7; }; break; } @@ -136249,6 +138187,8 @@ pub mod _TestBaseBeacon_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::VirtualFieldList; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::EncryptedPartsList; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::SignedPartsList; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionCount; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::IPartitionSelector; pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::KeySource; pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::ValidBeaconVersion; pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Failure; @@ -136305,7 +138245,8 @@ pub mod _TestBaseBeacon_Compile { loc: crate::implementation_from_dafny::_TermLoc_Compile::_default::TermLocMap(&string_utf16_of("foo")), partOnly: false, asSet: false, - share: Arc::new(Option::>::None {}) + share: Arc::new(Option::>::None {}), + numberOfPartitions: 5 }); let mut valueOrError1: Arc, Arc>> = bb.getHmac(&seq![1, 2, 3], &seq![1, 2]); if !(!valueOrError1.IsFailure()) { @@ -136321,7 +138262,7 @@ pub mod _TestBaseBeacon_Compile { print!("{}", DafnyPrintWrapper(&_e10)); panic!("Halt") }; - let mut valueOrError2: Arc, Arc>> = b.hash(&seq![1, 2, 3], &seq![1, 2]); + let mut valueOrError2: Arc, Arc>> = b.hash(&seq![1, 2, 3], &seq![1, 2], 0); if !(!valueOrError2.IsFailure()) { panic!("Halt") }; @@ -136335,27 +138276,27 @@ pub mod _TestBaseBeacon_Compile { print!("{}", DafnyPrintWrapper(&_e11)); panic!("Halt") }; - let mut valueOrError3: Arc, Arc>> = bb.getHmac(&(seq![] as Sequence), &seq![1, 2]); + let mut valueOrError3: Arc, Arc>> = bb.getHmac(&seq![1, 2, 3, 1], &seq![1, 2]); if !(!valueOrError3.IsFailure()) { panic!("Halt") }; bytes = valueOrError3.Extract(); - let mut _e02: u8 = bytes.get(&int!(7)); - let mut _e12: u8 = 128; - if !(_e02 == _e12) { + let mut _e02: Sequence = bytes.clone(); + let mut _e12: Sequence = seq![42, 100, 242, 20, 188, 0, 33, 29]; + if !(_e02.clone() == _e12.clone()) { print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); print!("{}", DafnyPrintWrapper(&_e02)); print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); print!("{}", DafnyPrintWrapper(&_e12)); panic!("Halt") }; - let mut valueOrError4: Arc, Arc>> = b.hash(&(seq![] as Sequence), &seq![1, 2]); + let mut valueOrError4: Arc, Arc>> = b.hash(&seq![1, 2, 3], &seq![1, 2], 1); if !(!valueOrError4.IsFailure()) { panic!("Halt") }; str = valueOrError4.Extract(); let mut _e03: Sequence = str.clone(); - let mut _e13: Sequence = string_utf16_of("80"); + let mut _e13: Sequence = string_utf16_of("1d"); if !(_e03.clone() == _e13.clone()) { print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); print!("{}", DafnyPrintWrapper(&_e03)); @@ -136363,23 +138304,79 @@ pub mod _TestBaseBeacon_Compile { print!("{}", DafnyPrintWrapper(&_e13)); panic!("Halt") }; - let mut valueOrError5: Arc, Arc>> = bb.getHmac(&_default::x123(), &seq![1, 2]); + let mut valueOrError5: Arc, Arc>> = bb.getHmac(&seq![1, 2, 3, 2], &seq![1, 2]); if !(!valueOrError5.IsFailure()) { panic!("Halt") }; bytes = valueOrError5.Extract(); - let mut _e04: u8 = bytes.get(&int!(7)); - let mut _e14: u8 = 97; - if !(_e04 == _e14) { + let mut _e04: Sequence = bytes.clone(); + let mut _e14: Sequence = seq![53, 151, 144, 34, 49, 19, 169, 239]; + if !(_e04.clone() == _e14.clone()) { print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); print!("{}", DafnyPrintWrapper(&_e04)); print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); print!("{}", DafnyPrintWrapper(&_e14)); panic!("Halt") }; + let mut valueOrError6: Arc, Arc>> = b.hash(&seq![1, 2, 3], &seq![1, 2], 2); + if !(!valueOrError6.IsFailure()) { + panic!("Halt") + }; + str = valueOrError6.Extract(); + let mut _e05: Sequence = str.clone(); + let mut _e15: Sequence = string_utf16_of("ef"); + if !(_e05.clone() == _e15.clone()) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e05)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e15)); + panic!("Halt") + }; + let mut valueOrError7: Arc, Arc>> = bb.getHmac(&(seq![] as Sequence), &seq![1, 2]); + if !(!valueOrError7.IsFailure()) { + panic!("Halt") + }; + bytes = valueOrError7.Extract(); + let mut _e06: u8 = bytes.get(&int!(7)); + let mut _e16: u8 = 128; + if !(_e06 == _e16) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e06)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e16)); + panic!("Halt") + }; + let mut valueOrError8: Arc, Arc>> = b.hash(&(seq![] as Sequence), &seq![1, 2], 0); + if !(!valueOrError8.IsFailure()) { + panic!("Halt") + }; + str = valueOrError8.Extract(); + let mut _e07: Sequence = str.clone(); + let mut _e17: Sequence = string_utf16_of("80"); + if !(_e07.clone() == _e17.clone()) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e07)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e17)); + panic!("Halt") + }; + let mut valueOrError9: Arc, Arc>> = bb.getHmac(&_default::x123(), &seq![1, 2]); + if !(!valueOrError9.IsFailure()) { + panic!("Halt") + }; + bytes = valueOrError9.Extract(); + let mut _e08: u8 = bytes.get(&int!(7)); + let mut _e18: u8 = 97; + if !(_e08 == _e18) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e08)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e18)); + panic!("Halt") + }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(43,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(55,3) pub fn TestBadPrefix() -> () { let mut store: ValidStore; let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); @@ -136401,7 +138398,10 @@ pub mod _TestBaseBeacon_Compile { }), virtualFields: Arc::new(Option::::None {}), encryptedParts: Arc::new(Option::::None {}), - signedParts: Arc::new(Option::::None {}) + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::None {}), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) }); let mut src: Arc; let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); @@ -136415,7 +138415,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(63,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(75,3) pub fn TestContainsSplit() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -136431,7 +138431,7 @@ pub mod _TestBaseBeacon_Compile { }; let mut bv: Arc = valueOrError0.Extract(); let mut valueOrError1: Arc, Arc>, Arc>>; - let mut _out3: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out3: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); valueOrError1 = _out3.clone(); if !(!valueOrError1.IsFailure()) { panic!("Halt") @@ -136441,7 +138441,7 @@ pub mod _TestBaseBeacon_Compile { S: string_utf16_of("A.B") })); let mut badAttrs: Arc, Arc>, Arc>>; - let mut _out4: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&badItem, &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out4: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&badItem, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); badAttrs = _out4.clone(); if !matches!((&badAttrs).as_ref(), Failure{ .. }) { panic!("Halt") @@ -136449,10 +138449,10 @@ 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(76,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(88,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); + let mut _out0: Sequence = _default::GetBeaconValue(&string_utf16_of("std2"), &seq![1, 2, 3, 4, 5], &string_utf16_of("1.23"), 24, &(seq![] as Sequence)); x = _out0.clone(); let mut _e00: Sequence = x.clone(); let mut _e10: Sequence = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::std2_beacon(); @@ -136463,7 +138463,7 @@ pub mod _TestBaseBeacon_Compile { print!("{}", DafnyPrintWrapper(&_e10)); panic!("Halt") }; - let mut _out1: Sequence = _default::GetBeaconValue(&string_utf16_of("Name"), &seq![1, 2, 3, 4, 5], &string_utf16_of("MyName"), 32); + let mut _out1: Sequence = _default::GetBeaconValue(&string_utf16_of("Name"), &seq![1, 2, 3, 4, 5], &string_utf16_of("MyName"), 32, &(seq![] as Sequence)); x = _out1.clone(); let mut _e01: Sequence = x.clone(); let mut _e11: Sequence = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Name_beacon(); @@ -136474,7 +138474,7 @@ pub mod _TestBaseBeacon_Compile { print!("{}", DafnyPrintWrapper(&_e11)); panic!("Halt") }; - let mut _out2: Sequence = _default::GetBeaconValue(&string_utf16_of("Title"), &seq![1, 2, 3, 4, 5], &string_utf16_of("MyTitle"), 32); + let mut _out2: Sequence = _default::GetBeaconValue(&string_utf16_of("Title"), &seq![1, 2, 3, 4, 5], &string_utf16_of("MyTitle"), 32, &(seq![] as Sequence)); x = _out2.clone(); let mut _e02: Sequence = x.clone(); let mut _e12: Sequence = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Title_beacon(); @@ -136485,7 +138485,7 @@ pub mod _TestBaseBeacon_Compile { print!("{}", DafnyPrintWrapper(&_e12)); panic!("Halt") }; - let mut _out3: Sequence = _default::GetBeaconValue(&string_utf16_of("std4"), &seq![1, 2, 3, 4, 5], &string_utf16_of("abc"), 24); + let mut _out3: Sequence = _default::GetBeaconValue(&string_utf16_of("std4"), &seq![1, 2, 3, 4, 5], &string_utf16_of("abc"), 24, &(seq![] as Sequence)); x = _out3.clone(); let mut _e03: Sequence = x.clone(); let mut _e13: Sequence = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::std4_beacon(); @@ -136496,7 +138496,7 @@ pub mod _TestBaseBeacon_Compile { print!("{}", DafnyPrintWrapper(&_e13)); panic!("Halt") }; - let mut _out4: Sequence = _default::GetBeaconValue(&string_utf16_of("std6"), &seq![1, 2, 3, 4, 5], &string_utf16_of("666"), 26); + let mut _out4: Sequence = _default::GetBeaconValue(&string_utf16_of("std6"), &seq![1, 2, 3, 4, 5], &string_utf16_of("666"), 26, &(seq![] as Sequence)); x = _out4.clone(); let mut _e04: Sequence = x.clone(); let mut _e14: Sequence = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::std6_beacon(); @@ -136507,7 +138507,7 @@ pub mod _TestBaseBeacon_Compile { print!("{}", DafnyPrintWrapper(&_e14)); panic!("Halt") }; - let mut _out5: Sequence = _default::GetBeaconValue(&string_utf16_of("NameTitleField"), &seq![1, 2, 3, 4, 5], &string_utf16_of("MyName__mytitle"), 28); + let mut _out5: Sequence = _default::GetBeaconValue(&string_utf16_of("NameTitleField"), &seq![1, 2, 3, 4, 5], &string_utf16_of("MyName__mytitle"), 28, &(seq![] as Sequence)); x = _out5.clone(); let mut _e05: Sequence = x.clone(); let mut _e15: Sequence = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::NameTitle_beacon(); @@ -136518,7 +138518,7 @@ pub mod _TestBaseBeacon_Compile { print!("{}", DafnyPrintWrapper(&_e15)); panic!("Halt") }; - let mut _out6: Sequence = _default::GetBeaconValue(&string_utf16_of("Name"), &seq![1, 2, 3, 4, 5], &string_utf16_of(""), 32); + let mut _out6: Sequence = _default::GetBeaconValue(&string_utf16_of("Name"), &seq![1, 2, 3, 4, 5], &string_utf16_of(""), 32, &(seq![] as Sequence)); x = _out6.clone(); let mut _e06: Sequence = x.clone(); let mut _e16: Sequence = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::EmptyName_beacon(); @@ -136529,7 +138529,7 @@ pub mod _TestBaseBeacon_Compile { print!("{}", DafnyPrintWrapper(&_e16)); panic!("Halt") }; - let mut _out7: Sequence = _default::GetBeaconValue(&string_utf16_of("Title"), &seq![1, 2, 3, 4, 5], &string_utf16_of(""), 32); + let mut _out7: Sequence = _default::GetBeaconValue(&string_utf16_of("Title"), &seq![1, 2, 3, 4, 5], &string_utf16_of(""), 32, &(seq![] as Sequence)); x = _out7.clone(); let mut _e07: Sequence = x.clone(); let mut _e17: Sequence = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::EmptyTitle_beacon(); @@ -136542,7 +138542,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(96,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(108,3) pub fn TestNumbersNormalize() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -136558,7 +138558,7 @@ pub mod _TestBaseBeacon_Compile { }; let mut bv: Arc = valueOrError0.Extract(); let mut valueOrError1: Arc, Arc>, Arc>>; - let mut _out3: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out3: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); valueOrError1 = _out3.clone(); if !(!valueOrError1.IsFailure()) { panic!("Halt") @@ -136582,7 +138582,7 @@ pub mod _TestBaseBeacon_Compile { N: string_utf16_of("000001.23000000") })); let mut valueOrError2: Arc, Arc>, Arc>>; - let mut _out4: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out4: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); valueOrError2 = _out4.clone(); if !(!valueOrError2.IsFailure()) { panic!("Halt") @@ -136602,7 +138602,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(113,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(125,3) pub fn TestSharedCacheBeaconsSingleKeyStoreWithSamePartitionId() -> () { let mut partitionId: Sequence = string_utf16_of("partitionId"); let mut sharedCache: Arc; @@ -136635,7 +138635,7 @@ pub mod _TestBaseBeacon_Compile { }; let mut badBv: Arc = valueOrError2.Extract(); let mut badAttrs: Arc, Arc>, Arc>>; - let mut _out5: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out5: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); badAttrs = _out5.clone(); if !matches!((&badAttrs).as_ref(), Failure{ .. }) { panic!("Halt") @@ -136660,14 +138660,14 @@ pub mod _TestBaseBeacon_Compile { }; let mut bv: Arc = valueOrError4.Extract(); let mut valueOrError5: Arc, Arc>, Arc>>; - let mut _out9: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out9: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); valueOrError5 = _out9.clone(); if !(!valueOrError5.IsFailure()) { panic!("Halt") }; let mut goodAttrs: Map, Arc> = valueOrError5.Extract(); let mut valueOrError6: Arc, Arc>, Arc>>; - let mut _out10: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out10: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); valueOrError6 = _out10.clone(); if !(!valueOrError6.IsFailure()) { panic!("Halt") @@ -136675,7 +138675,7 @@ pub mod _TestBaseBeacon_Compile { let mut badAttrsNowCached: Map, Arc> = valueOrError6.Extract(); return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(149,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(161,3) pub fn TestSharedCacheBeaconsSingleKeyStoreWithDifferentPartitionId() -> () { let mut sharedCache: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetSharedCache(); @@ -136708,7 +138708,7 @@ pub mod _TestBaseBeacon_Compile { }; let mut badBv: Arc = valueOrError2.Extract(); let mut badAttrs: Arc, Arc>, Arc>>; - let mut _out5: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out5: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); badAttrs = _out5.clone(); if !matches!((&badAttrs).as_ref(), Failure{ .. }) { panic!("Halt") @@ -136734,21 +138734,21 @@ pub mod _TestBaseBeacon_Compile { }; let mut bv: Arc = valueOrError4.Extract(); let mut valueOrError5: Arc, Arc>, Arc>>; - let mut _out9: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out9: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); valueOrError5 = _out9.clone(); if !(!valueOrError5.IsFailure()) { panic!("Halt") }; let mut goodAttrs: Map, Arc> = valueOrError5.Extract(); let mut badAttrsNowCached: Arc, Arc>, Arc>>; - let mut _out10: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out10: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); badAttrsNowCached = _out10.clone(); if !matches!((&badAttrsNowCached).as_ref(), Failure{ .. }) { panic!("Halt") }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(186,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(198,3) pub fn TestSharedCacheBeaconsSingleKeyStoreWithUnspecifiedPartitionId() -> () { let mut sharedCache: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetSharedCache(); @@ -136778,7 +138778,7 @@ pub mod _TestBaseBeacon_Compile { }; let mut badBv: Arc = valueOrError2.Extract(); let mut badAttrs: Arc, Arc>, Arc>>; - let mut _out5: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out5: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); badAttrs = _out5.clone(); if !matches!((&badAttrs).as_ref(), Failure{ .. }) { panic!("Halt") @@ -136801,21 +138801,21 @@ pub mod _TestBaseBeacon_Compile { }; let mut bv: Arc = valueOrError4.Extract(); let mut valueOrError5: Arc, Arc>, Arc>>; - let mut _out9: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out9: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); valueOrError5 = _out9.clone(); if !(!valueOrError5.IsFailure()) { panic!("Halt") }; let mut goodAttrs: Map, Arc> = valueOrError5.Extract(); let mut badAttrsNowCached: Arc, Arc>, Arc>>; - let mut _out10: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out10: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); badAttrsNowCached = _out10.clone(); if !matches!((&badAttrsNowCached).as_ref(), Failure{ .. }) { panic!("Halt") }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(222,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(234,3) pub fn TestSharedCacheBeaconsMultiKeyStoreWithSamePartitionId() -> () { let mut partitionId: Sequence = string_utf16_of("partitionId"); let mut sharedCache: Arc; @@ -136850,7 +138850,7 @@ pub mod _TestBaseBeacon_Compile { let mut badAttrs: Arc, Arc>, Arc>>; let mut _out5: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::KeyId { value: string_utf16_of("040a32a8-3737-4f16-a3ba-bd4449556d73") - })); + }), 0); badAttrs = _out5.clone(); if !matches!((&badAttrs).as_ref(), Failure{ .. }) { panic!("Halt") @@ -136877,7 +138877,7 @@ pub mod _TestBaseBeacon_Compile { let mut valueOrError5: Arc, Arc>, Arc>>; let mut _out9: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::KeyId { value: string_utf16_of("040a32a8-3737-4f16-a3ba-bd4449556d73") - })); + }), 0); valueOrError5 = _out9.clone(); if !(!valueOrError5.IsFailure()) { panic!("Halt") @@ -136886,7 +138886,7 @@ pub mod _TestBaseBeacon_Compile { let mut valueOrError6: Arc, Arc>, Arc>>; let mut _out10: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::KeyId { value: string_utf16_of("040a32a8-3737-4f16-a3ba-bd4449556d73") - })); + }), 0); valueOrError6 = _out10.clone(); if !(!valueOrError6.IsFailure()) { panic!("Halt") @@ -136894,7 +138894,7 @@ pub mod _TestBaseBeacon_Compile { let mut badAttrsNowCached: Map, Arc> = valueOrError6.Extract(); return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(259,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(271,3) pub fn TestSharedCacheBeaconsMultiKeyStoreWithDifferentPartitionId() -> () { let mut sharedCache: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetSharedCache(); @@ -136929,7 +138929,7 @@ pub mod _TestBaseBeacon_Compile { let mut badAttrs: Arc, Arc>, Arc>>; let mut _out5: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::KeyId { value: string_utf16_of("040a32a8-3737-4f16-a3ba-bd4449556d73") - })); + }), 0); badAttrs = _out5.clone(); if !matches!((&badAttrs).as_ref(), Failure{ .. }) { panic!("Halt") @@ -136957,7 +138957,7 @@ pub mod _TestBaseBeacon_Compile { let mut valueOrError5: Arc, Arc>, Arc>>; let mut _out9: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::KeyId { value: string_utf16_of("040a32a8-3737-4f16-a3ba-bd4449556d73") - })); + }), 0); valueOrError5 = _out9.clone(); if !(!valueOrError5.IsFailure()) { panic!("Halt") @@ -136966,14 +138966,14 @@ pub mod _TestBaseBeacon_Compile { let mut badAttrsNowCached: Arc, Arc>, Arc>>; let mut _out10: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::KeyId { value: string_utf16_of("040a32a8-3737-4f16-a3ba-bd4449556d73") - })); + }), 0); badAttrsNowCached = _out10.clone(); if !matches!((&badAttrsNowCached).as_ref(), Failure{ .. }) { panic!("Halt") }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(299,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(311,3) pub fn TestSharedCacheBeaconsMultiKeyStoreWithUnspecifiedPartitionId() -> () { let mut sharedCache: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetSharedCache(); @@ -137005,7 +139005,7 @@ pub mod _TestBaseBeacon_Compile { let mut badAttrs: Arc, Arc>, Arc>>; let mut _out5: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::KeyId { value: string_utf16_of("040a32a8-3737-4f16-a3ba-bd4449556d73") - })); + }), 0); badAttrs = _out5.clone(); if !matches!((&badAttrs).as_ref(), Failure{ .. }) { panic!("Halt") @@ -137030,7 +139030,7 @@ pub mod _TestBaseBeacon_Compile { let mut valueOrError5: Arc, Arc>, Arc>>; let mut _out9: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::KeyId { value: string_utf16_of("040a32a8-3737-4f16-a3ba-bd4449556d73") - })); + }), 0); valueOrError5 = _out9.clone(); if !(!valueOrError5.IsFailure()) { panic!("Halt") @@ -137039,14 +139039,14 @@ pub mod _TestBaseBeacon_Compile { let mut badAttrsNowCached: Arc, Arc>, Arc>>; let mut _out10: Arc, Arc>, Arc>> = badBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::KeyId { value: string_utf16_of("040a32a8-3737-4f16-a3ba-bd4449556d73") - })); + }), 0); badAttrsNowCached = _out10.clone(); if !matches!((&badAttrsNowCached).as_ref(), Failure{ .. }) { panic!("Halt") }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(338,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(350,3) pub fn TestBeaconValues() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -137062,7 +139062,7 @@ pub mod _TestBaseBeacon_Compile { }; let mut bv: Arc = valueOrError0.Extract(); let mut valueOrError1: Arc, Arc>, Arc>>; - let mut _out3: Arc, Arc>, Arc>> = bv.GenerateSignedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem()); + let mut _out3: Arc, Arc>, Arc>> = bv.GenerateSignedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), 0); valueOrError1 = _out3.clone(); if !(!valueOrError1.IsFailure()) { panic!("Halt") @@ -137080,7 +139080,7 @@ pub mod _TestBaseBeacon_Compile { panic!("Halt") }; let mut valueOrError2: Arc, Arc>, Arc>>; - let mut _out4: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out4: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); valueOrError2 = _out4.clone(); if !(!valueOrError2.IsFailure()) { panic!("Halt") @@ -137115,8 +139115,8 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(368,3) - pub fn GetBeaconValue(name: &Sequence, key: &Sequence, value: &Sequence, length: u8) -> Sequence { + /// dafny/DynamoDbEncryption/test/Beacon.dfy(380,3) + pub fn GetBeaconValue(name: &Sequence, key: &Sequence, value: &Sequence, length: u8, partition: &Sequence) -> 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)); if !(!valueOrError0.IsFailure()) { @@ -137147,7 +139147,8 @@ pub mod _TestBaseBeacon_Compile { if !(!valueOrError3.IsFailure()) { panic!("Halt") }; - let mut data: ValidUTF8Bytes = valueOrError3.Extract(); + let mut data: Sequence = valueOrError3.Extract(); + data = data.concat(partition); let mut input: Arc = Arc::new(HMacInput::HMacInput { digestAlgorithm: Arc::new(DigestAlgorithm::SHA_384 {}), key: key.clone(), @@ -137162,7 +139163,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(393,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(406,3) pub fn TestCompoundQueries() -> () { let mut context: Arc = Arc::new(ExprContext::ExprContext { keyExpr: Arc::new(Option::>::None {}), @@ -137198,7 +139199,7 @@ pub mod _TestBaseBeacon_Compile { names: _dt__update__tmp_h0.names().clone() }); let mut valueOrError1: Arc, Arc>>; - let mut _out3: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out3: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); valueOrError1 = _out3.clone(); if !(!valueOrError1.IsFailure()) { panic!("Halt") @@ -137217,7 +139218,7 @@ pub mod _TestBaseBeacon_Compile { names: _dt__update__tmp_h1.names().clone() }); let mut valueOrError2: Arc, Arc>>; - let mut _out4: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out4: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); valueOrError2 = _out4.clone(); if !(!valueOrError2.IsFailure()) { panic!("Halt") @@ -137236,7 +139237,7 @@ pub mod _TestBaseBeacon_Compile { names: _dt__update__tmp_h2.names().clone() }); let mut valueOrError3: Arc, Arc>>; - let mut _out5: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out5: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); valueOrError3 = _out5.clone(); if !(!valueOrError3.IsFailure()) { panic!("Halt") @@ -137255,7 +139256,7 @@ pub mod _TestBaseBeacon_Compile { names: _dt__update__tmp_h3.names().clone() }); let mut valueOrError4: Arc, Arc>>; - let mut _out6: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out6: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); valueOrError4 = _out6.clone(); if !(!valueOrError4.IsFailure()) { panic!("Halt") @@ -137274,7 +139275,7 @@ pub mod _TestBaseBeacon_Compile { names: _dt__update__tmp_h4.names().clone() }); let mut valueOrError5: Arc, Arc>>; - let mut _out7: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out7: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); valueOrError5 = _out7.clone(); if !(!valueOrError5.IsFailure()) { panic!("Halt") @@ -137293,7 +139294,7 @@ pub mod _TestBaseBeacon_Compile { names: _dt__update__tmp_h5.names().clone() }); let mut valueOrError6: Arc, Arc>>; - let mut _out8: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out8: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); valueOrError6 = _out8.clone(); if !(!valueOrError6.IsFailure()) { panic!("Halt") @@ -137312,7 +139313,7 @@ pub mod _TestBaseBeacon_Compile { names: _dt__update__tmp_h6.names().clone() }); let mut badContext: Arc, Arc>>; - let mut _out9: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out9: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); badContext = _out9.clone(); if !matches!((&badContext).as_ref(), Failure{ .. }) { panic!("Halt") @@ -137338,7 +139339,7 @@ pub mod _TestBaseBeacon_Compile { values: _dt__update_hvalues_h7.clone(), names: _dt__update__tmp_h7.names().clone() }); - let mut _out10: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out10: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); badContext = _out10.clone(); if !matches!((&badContext).as_ref(), Failure{ .. }) { panic!("Halt") @@ -137364,7 +139365,7 @@ pub mod _TestBaseBeacon_Compile { values: _dt__update_hvalues_h8.clone(), names: _dt__update__tmp_h8.names().clone() }); - let mut _out11: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out11: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); badContext = _out11.clone(); if !matches!((&badContext).as_ref(), Failure{ .. }) { panic!("Halt") @@ -137380,7 +139381,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(433,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(446,3) pub fn TestQueryBeacons() -> () { let mut context: Arc = Arc::new(ExprContext::ExprContext { keyExpr: Arc::new(Option::>::None {}), @@ -137420,7 +139421,7 @@ pub mod _TestBaseBeacon_Compile { }; let mut beaconVersion: ValidBeaconVersion = valueOrError0.Extract(); let mut valueOrError1: Arc, Arc>>; - let mut _out3: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out3: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); valueOrError1 = _out3.clone(); if !(!valueOrError1.IsFailure()) { panic!("Halt") @@ -137472,7 +139473,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(477,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(490,3) pub fn TestUnusedPartOnly() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -137485,7 +139486,8 @@ pub mod _TestBaseBeacon_Compile { value: Arc::new(BeaconStyle::partOnly { partOnly: Arc::new(PartOnly::PartOnly {}) }) - }) + }), + numberOfPartitions: Arc::new(Option::::None {}) }); let mut newConfig: Arc; let mut _dt__update__tmp_h0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); @@ -137514,7 +139516,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update__tmp_h1.compoundBeacons().clone(), virtualFields: _dt__update__tmp_h1.virtualFields().clone(), encryptedParts: _dt__update__tmp_h1.encryptedParts().clone(), - signedParts: _dt__update__tmp_h1.signedParts().clone() + signedParts: _dt__update__tmp_h1.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h1.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h1.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h1.partitionSelector().clone() }); let mut src: Arc; let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); @@ -137536,7 +139541,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(492,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(505,3) pub fn TestCompoundWithUnknown() -> () { let mut Unknown: Arc = Arc::new(EncryptedPart::EncryptedPart { name: string_utf16_of("Unknown"), @@ -137569,7 +139574,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update_hcompoundBeacons_h0.clone(), virtualFields: _dt__update__tmp_h0.virtualFields().clone(), encryptedParts: _dt__update__tmp_h0.encryptedParts().clone(), - signedParts: _dt__update__tmp_h0.signedParts().clone() + signedParts: _dt__update__tmp_h0.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut src: Arc; let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); @@ -137591,7 +139599,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(512,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(525,3) pub fn TesSetInCompound() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -137604,7 +139612,8 @@ pub mod _TestBaseBeacon_Compile { value: Arc::new(BeaconStyle::asSet { asSet: Arc::new(AsSet::AsSet {}) }) - }) + }), + numberOfPartitions: Arc::new(Option::::None {}) }); let mut compoundSet: Arc = Arc::new(CompoundBeacon::CompoundBeacon { name: string_utf16_of("compoundSet"), @@ -137651,7 +139660,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update_hcompoundBeacons_h0.clone(), virtualFields: _dt__update__tmp_h1.virtualFields().clone(), encryptedParts: _dt__update__tmp_h1.encryptedParts().clone(), - signedParts: _dt__update__tmp_h1.signedParts().clone() + signedParts: _dt__update__tmp_h1.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h1.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h1.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h1.partitionSelector().clone() }); let mut src: Arc; let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); @@ -137673,7 +139685,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(537,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(550,3) pub fn SharedBadReferenceToCompound() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -137688,7 +139700,8 @@ pub mod _TestBaseBeacon_Compile { other: string_utf16_of("NameTitle") }) }) - }) + }), + numberOfPartitions: Arc::new(Option::::None {}) }); let mut newConfig: Arc; let mut _dt__update__tmp_h0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); @@ -137717,7 +139730,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update__tmp_h1.compoundBeacons().clone(), virtualFields: _dt__update__tmp_h1.virtualFields().clone(), encryptedParts: _dt__update__tmp_h1.encryptedParts().clone(), - signedParts: _dt__update__tmp_h1.signedParts().clone() + signedParts: _dt__update__tmp_h1.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h1.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h1.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h1.partitionSelector().clone() }); let mut src: Arc; let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); @@ -137739,7 +139755,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(553,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(566,3) pub fn ChainedShare() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -137754,7 +139770,8 @@ pub mod _TestBaseBeacon_Compile { other: string_utf16_of("std2") }) }) - }) + }), + numberOfPartitions: Arc::new(Option::::None {}) }); let mut other: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::StandardBeacon::StandardBeacon { name: string_utf16_of("std4"), @@ -137766,7 +139783,8 @@ pub mod _TestBaseBeacon_Compile { other: string_utf16_of("shareBeacon") }) }) - }) + }), + numberOfPartitions: Arc::new(Option::::None {}) }); let mut newConfig: Arc; let mut _dt__update__tmp_h0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); @@ -137796,7 +139814,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update_hcompoundBeacons_h0.clone(), virtualFields: _dt__update__tmp_h1.virtualFields().clone(), encryptedParts: _dt__update__tmp_h1.encryptedParts().clone(), - signedParts: _dt__update__tmp_h1.signedParts().clone() + signedParts: _dt__update__tmp_h1.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h1.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h1.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h1.partitionSelector().clone() }); let mut src: Arc; let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); @@ -137818,7 +139839,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(573,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(586,3) pub fn SelfShare() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -137833,7 +139854,8 @@ pub mod _TestBaseBeacon_Compile { other: string_utf16_of("shareBeacon") }) }) - }) + }), + numberOfPartitions: Arc::new(Option::::None {}) }); let mut newConfig: Arc; let mut _dt__update__tmp_h0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); @@ -137863,7 +139885,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update_hcompoundBeacons_h0.clone(), virtualFields: _dt__update__tmp_h1.virtualFields().clone(), encryptedParts: _dt__update__tmp_h1.encryptedParts().clone(), - signedParts: _dt__update__tmp_h1.signedParts().clone() + signedParts: _dt__update__tmp_h1.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h1.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h1.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h1.partitionSelector().clone() }); let mut src: Arc; let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); @@ -137885,7 +139910,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(589,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(602,3) pub fn SharedBadReferenceNonExistent() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -137900,7 +139925,8 @@ pub mod _TestBaseBeacon_Compile { other: string_utf16_of("DoesNotExist") }) }) - }) + }), + numberOfPartitions: Arc::new(Option::::None {}) }); let mut _dt__update__tmp_h0: Arc = version.clone(); let mut _dt__update_hstandardBeacons_h0: StandardBeaconList = version.standardBeacons().concat(&seq![shareBeacon.clone()]); @@ -137912,7 +139938,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update__tmp_h0.compoundBeacons().clone(), virtualFields: _dt__update__tmp_h0.virtualFields().clone(), encryptedParts: _dt__update__tmp_h0.encryptedParts().clone(), - signedParts: _dt__update__tmp_h0.signedParts().clone() + signedParts: _dt__update__tmp_h0.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut newConfig: Arc; let mut _dt__update__tmp_h1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); @@ -137951,7 +139980,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(606,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(619,3) pub fn SharedBadLength() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -137966,7 +139995,8 @@ pub mod _TestBaseBeacon_Compile { other: string_utf16_of("std2") }) }) - }) + }), + numberOfPartitions: Arc::new(Option::::None {}) }); let mut _dt__update__tmp_h0: Arc = version.clone(); let mut _dt__update_hstandardBeacons_h0: StandardBeaconList = version.standardBeacons().concat(&seq![shareBeacon.clone()]); @@ -137978,7 +140008,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update__tmp_h0.compoundBeacons().clone(), virtualFields: _dt__update__tmp_h0.virtualFields().clone(), encryptedParts: _dt__update__tmp_h0.encryptedParts().clone(), - signedParts: _dt__update__tmp_h0.signedParts().clone() + signedParts: _dt__update__tmp_h0.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut newConfig: Arc; let mut _dt__update__tmp_h1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); @@ -138017,7 +140050,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(622,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(635,3) pub fn TestPartOnlyNotStored() -> () { let mut MyItem: Map, Arc> = map![(string_utf16_of("std2")) => (Arc::new(AttributeValue::S { S: string_utf16_of("abc") @@ -138058,7 +140091,8 @@ pub mod _TestBaseBeacon_Compile { name: string_utf16_of("partOnly"), length: 23, loc: Arc::new(Option::>::None {}), - style: Arc::new(Option::>::None {}) + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::None {}) }); let mut newVersion: Arc; let mut _dt__update__tmp_h0: Arc = version.clone(); @@ -138074,7 +140108,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update_hcompoundBeacons_h0.clone(), virtualFields: _dt__update__tmp_h0.virtualFields().clone(), encryptedParts: _dt__update__tmp_h0.encryptedParts().clone(), - signedParts: _dt__update__tmp_h0.signedParts().clone() + signedParts: _dt__update__tmp_h0.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut newConfig: Arc; let mut _dt__update__tmp_h1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); @@ -138104,7 +140141,7 @@ pub mod _TestBaseBeacon_Compile { }; let mut bv: Arc = valueOrError0.Extract(); let mut valueOrError1: Arc, Arc>, Arc>>; - let mut _out3: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&MyItem, &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out3: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&MyItem, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); valueOrError1 = _out3.clone(); if !(!valueOrError1.IsFailure()) { panic!("Halt") @@ -138126,7 +140163,7 @@ pub mod _TestBaseBeacon_Compile { panic!("Halt") }; let mut goodQuery: Arc, Arc>>; - let mut _out4: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&bv, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out4: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&bv, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); goodQuery = _out4.clone(); if !matches!((&goodQuery).as_ref(), Success{ .. }) { panic!("Halt") @@ -138139,7 +140176,8 @@ pub mod _TestBaseBeacon_Compile { value: Arc::new(BeaconStyle::partOnly { partOnly: Arc::new(PartOnly::PartOnly {}) }) - }) + }), + numberOfPartitions: Arc::new(Option::::None {}) }); let mut _dt__update__tmp_h2: Arc = version.clone(); let mut _dt__update_hcompoundBeacons_h1: Arc> = Arc::new(Option::>>::Some { @@ -138154,7 +140192,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update_hcompoundBeacons_h1.clone(), virtualFields: _dt__update__tmp_h2.virtualFields().clone(), encryptedParts: _dt__update__tmp_h2.encryptedParts().clone(), - signedParts: _dt__update__tmp_h2.signedParts().clone() + signedParts: _dt__update__tmp_h2.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h2.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h2.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h2.partitionSelector().clone() }); let mut valueOrError2: Arc>>; let mut _out5: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&newConfig, &newVersion, &src); @@ -138164,7 +140205,7 @@ pub mod _TestBaseBeacon_Compile { }; bv = valueOrError2.Extract(); let mut valueOrError3: Arc, Arc>, Arc>>; - let mut _out6: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&MyItem, &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out6: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&MyItem, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); valueOrError3 = _out6.clone(); if !(!valueOrError3.IsFailure()) { panic!("Halt") @@ -138184,7 +140225,7 @@ pub mod _TestBaseBeacon_Compile { panic!("Halt") }; let mut badQuery: Arc, Arc>>; - let mut _out7: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&bv, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out7: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&bv, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); badQuery = _out7.clone(); if !matches!((&badQuery).as_ref(), Failure{ .. }) { panic!("Halt") @@ -138200,7 +140241,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(691,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(704,3) pub fn TestShareSameBeacon() -> () { let mut MyItem: Map, Arc> = map![(string_utf16_of("std2")) => (Arc::new(AttributeValue::S { S: string_utf16_of("abc") @@ -138217,7 +140258,8 @@ pub mod _TestBaseBeacon_Compile { name: string_utf16_of("partOnly"), length: 24, loc: Arc::new(Option::>::None {}), - style: Arc::new(Option::>::None {}) + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::None {}) }); let mut newVersion: Arc; let mut _dt__update__tmp_h0: Arc = version.clone(); @@ -138230,7 +140272,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update__tmp_h0.compoundBeacons().clone(), virtualFields: _dt__update__tmp_h0.virtualFields().clone(), encryptedParts: _dt__update__tmp_h0.encryptedParts().clone(), - signedParts: _dt__update__tmp_h0.signedParts().clone() + signedParts: _dt__update__tmp_h0.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut newConfig: Arc; let mut _dt__update__tmp_h1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); @@ -138260,7 +140305,7 @@ pub mod _TestBaseBeacon_Compile { }; let mut bv: Arc = valueOrError0.Extract(); let mut valueOrError1: Arc, Arc>, Arc>>; - let mut _out3: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&MyItem, &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out3: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&MyItem, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); valueOrError1 = _out3.clone(); if !(!valueOrError1.IsFailure()) { panic!("Halt") @@ -138289,7 +140334,8 @@ pub mod _TestBaseBeacon_Compile { other: string_utf16_of("std2") }) }) - }) + }), + numberOfPartitions: Arc::new(Option::::None {}) }); let mut _dt__update__tmp_h2: Arc = version.clone(); let mut _dt__update_hstandardBeacons_h1: StandardBeaconList = version.standardBeacons().concat(&seq![partBeacon.clone()]); @@ -138301,7 +140347,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update__tmp_h2.compoundBeacons().clone(), virtualFields: _dt__update__tmp_h2.virtualFields().clone(), encryptedParts: _dt__update__tmp_h2.encryptedParts().clone(), - signedParts: _dt__update__tmp_h2.signedParts().clone() + signedParts: _dt__update__tmp_h2.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h2.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h2.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h2.partitionSelector().clone() }); let mut valueOrError2: Arc>>; let mut _out4: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&newConfig, &newVersion, &src); @@ -138311,7 +140360,7 @@ pub mod _TestBaseBeacon_Compile { }; bv = valueOrError2.Extract(); let mut valueOrError3: Arc, Arc>, Arc>>; - let mut _out5: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&MyItem, &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out5: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&MyItem, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); valueOrError3 = _out5.clone(); if !(!valueOrError3.IsFailure()) { panic!("Halt") @@ -138345,7 +140394,7 @@ pub mod _TestBaseBeacon_Compile { names: Arc::new(Option::, Sequence>>::None {}) }); let mut valueOrError4: Arc, Arc>>; - let mut _out6: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&bv, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out6: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&bv, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); valueOrError4 = _out6.clone(); if !(!valueOrError4.IsFailure()) { panic!("Halt") @@ -138368,7 +140417,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(745,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(758,3) pub fn TestBeaconSetQuery() -> () { let mut context: Arc = Arc::new(ExprContext::ExprContext { keyExpr: Arc::new(Option::>::None {}), @@ -138390,7 +140439,8 @@ pub mod _TestBaseBeacon_Compile { value: Arc::new(BeaconStyle::asSet { asSet: Arc::new(AsSet::AsSet {}) }) - }) + }), + numberOfPartitions: Arc::new(Option::::None {}) }); let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -138406,7 +140456,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update__tmp_h0.compoundBeacons().clone(), virtualFields: _dt__update__tmp_h0.virtualFields().clone(), encryptedParts: _dt__update__tmp_h0.encryptedParts().clone(), - signedParts: _dt__update__tmp_h0.signedParts().clone() + signedParts: _dt__update__tmp_h0.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut newConfig: Arc; let mut _dt__update__tmp_h1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); @@ -138436,7 +140489,7 @@ pub mod _TestBaseBeacon_Compile { }; let mut bv: ValidBeaconVersion = valueOrError0.Extract(); let mut valueOrError1: Arc, Arc>>; - let mut _out3: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&bv, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out3: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&bv, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); valueOrError1 = _out3.clone(); if !(!valueOrError1.IsFailure()) { panic!("Halt") @@ -138468,7 +140521,7 @@ pub mod _TestBaseBeacon_Compile { names: Arc::new(Option::, Sequence>>::None {}) }); let mut valueOrError2: Arc, Arc>>; - let mut _out4: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&bv, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out4: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&bv, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); valueOrError2 = _out4.clone(); if !(!valueOrError2.IsFailure()) { panic!("Halt") @@ -138487,7 +140540,7 @@ pub mod _TestBaseBeacon_Compile { names: Arc::new(Option::, Sequence>>::None {}) }); let mut badQuery: Arc, Arc>>; - let mut _out5: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&bv, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out5: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&bv, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); badQuery = _out5.clone(); if !matches!((&badQuery).as_ref(), Failure{ .. }) { panic!("Halt") @@ -138503,7 +140556,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(790,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(803,3) pub fn TestSetNotSet() -> () { let mut MyItem: Map, Arc> = map![(string_utf16_of("std2")) => (Arc::new(AttributeValue::S { S: string_utf16_of("abc") @@ -138524,7 +140577,8 @@ pub mod _TestBaseBeacon_Compile { value: Arc::new(BeaconStyle::asSet { asSet: Arc::new(AsSet::AsSet {}) }) - }) + }), + numberOfPartitions: Arc::new(Option::::None {}) }); let mut newVersion: Arc; let mut _dt__update__tmp_h0: Arc = version.clone(); @@ -138537,7 +140591,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update__tmp_h0.compoundBeacons().clone(), virtualFields: _dt__update__tmp_h0.virtualFields().clone(), encryptedParts: _dt__update__tmp_h0.encryptedParts().clone(), - signedParts: _dt__update__tmp_h0.signedParts().clone() + signedParts: _dt__update__tmp_h0.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut newConfig: Arc; let mut _dt__update__tmp_h1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); @@ -138573,7 +140630,7 @@ pub mod _TestBaseBeacon_Compile { panic!("Halt") }; let mut goodAttrs: Arc, Arc>, Arc>>; - let mut _out3: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&MyItem, &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out3: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&MyItem, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); goodAttrs = _out3.clone(); if matches!((&goodAttrs).as_ref(), Failure{ .. }) { print!("{}", DafnyPrintWrapper(&string_utf16_of("\n"))); @@ -138600,7 +140657,7 @@ pub mod _TestBaseBeacon_Compile { S: string_utf16_of("abc") })); let mut badAttrs: Arc, Arc>, Arc>>; - let mut _out4: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&BadItem, &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out4: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&BadItem, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); badAttrs = _out4.clone(); if !matches!((&badAttrs).as_ref(), Failure{ .. }) { panic!("Halt") @@ -138616,7 +140673,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(836,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(849,3) pub fn TestSharedSet() -> () { let mut MyItem: Map, Arc> = map![(string_utf16_of("std2")) => (Arc::new(AttributeValue::S { S: string_utf16_of("abc") @@ -138639,7 +140696,8 @@ pub mod _TestBaseBeacon_Compile { other: string_utf16_of("std2") }) }) - }) + }), + numberOfPartitions: Arc::new(Option::::None {}) }); let mut newVersion: Arc; let mut _dt__update__tmp_h0: Arc = version.clone(); @@ -138652,7 +140710,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update__tmp_h0.compoundBeacons().clone(), virtualFields: _dt__update__tmp_h0.virtualFields().clone(), encryptedParts: _dt__update__tmp_h0.encryptedParts().clone(), - signedParts: _dt__update__tmp_h0.signedParts().clone() + signedParts: _dt__update__tmp_h0.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut newConfig: Arc; let mut _dt__update__tmp_h1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); @@ -138688,7 +140749,7 @@ pub mod _TestBaseBeacon_Compile { panic!("Halt") }; let mut goodAttrs: Arc, Arc>, Arc>>; - let mut _out3: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&MyItem, &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out3: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&MyItem, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); goodAttrs = _out3.clone(); if matches!((&goodAttrs).as_ref(), Failure{ .. }) { print!("{}", DafnyPrintWrapper(&string_utf16_of("\n"))); @@ -138713,7 +140774,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(873,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(886,3) pub fn GlobalPartNotExist() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -138734,7 +140795,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update__tmp_h0.compoundBeacons().clone(), virtualFields: _dt__update__tmp_h0.virtualFields().clone(), encryptedParts: _dt__update_hencryptedParts_h0.clone(), - signedParts: _dt__update__tmp_h0.signedParts().clone() + signedParts: _dt__update__tmp_h0.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut src: Arc; let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); @@ -138756,7 +140820,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(885,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(898,3) pub fn DuplicateGlobalSigned() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -138774,7 +140838,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update_hcompoundBeacons_h0.clone(), virtualFields: _dt__update__tmp_h0.virtualFields().clone(), encryptedParts: _dt__update__tmp_h0.encryptedParts().clone(), - signedParts: _dt__update_hsignedParts_h0.clone() + signedParts: _dt__update_hsignedParts_h0.clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut src: Arc; let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); @@ -138796,7 +140863,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(895,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(908,3) pub fn DuplicateGlobalEncrypted() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -138814,7 +140881,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update_hcompoundBeacons_h0.clone(), virtualFields: _dt__update__tmp_h0.virtualFields().clone(), encryptedParts: _dt__update_hencryptedParts_h0.clone(), - signedParts: _dt__update__tmp_h0.signedParts().clone() + signedParts: _dt__update__tmp_h0.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut src: Arc; let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); @@ -138836,7 +140906,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(905,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(918,3) pub fn DuplicateGlobalPrefix() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -138858,7 +140928,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update_hcompoundBeacons_h0.clone(), virtualFields: _dt__update__tmp_h0.virtualFields().clone(), encryptedParts: _dt__update_hencryptedParts_h0.clone(), - signedParts: _dt__update__tmp_h0.signedParts().clone() + signedParts: _dt__update__tmp_h0.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut src: Arc; let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); @@ -138880,7 +140953,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(916,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(929,3) pub fn DuplicateGlobalVsLocalEncrypted() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -138897,7 +140970,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update__tmp_h0.compoundBeacons().clone(), virtualFields: _dt__update__tmp_h0.virtualFields().clone(), encryptedParts: _dt__update_hencryptedParts_h0.clone(), - signedParts: _dt__update__tmp_h0.signedParts().clone() + signedParts: _dt__update__tmp_h0.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut src: Arc; let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); @@ -138919,7 +140995,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(926,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(939,3) pub fn DuplicateGlobalVsLocalSigned() -> () { let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -138936,7 +141012,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update__tmp_h0.compoundBeacons().clone(), virtualFields: _dt__update__tmp_h0.virtualFields().clone(), encryptedParts: _dt__update__tmp_h0.encryptedParts().clone(), - signedParts: _dt__update_hsignedParts_h0.clone() + signedParts: _dt__update_hsignedParts_h0.clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut src: Arc; let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); @@ -138958,7 +141037,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(936,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(949,3) pub fn CompoundNoConstructor() -> () { let mut compoundDefault: Arc = Arc::new(CompoundBeacon::CompoundBeacon { name: string_utf16_of("compoundDefault"), @@ -138988,7 +141067,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update_hcompoundBeacons_h0.clone(), virtualFields: _dt__update__tmp_h0.virtualFields().clone(), encryptedParts: _dt__update_hencryptedParts_h0.clone(), - signedParts: _dt__update_hsignedParts_h0.clone() + signedParts: _dt__update_hsignedParts_h0.clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut src: Arc; let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); @@ -139010,7 +141092,7 @@ pub mod _TestBaseBeacon_Compile { }; return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(954,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(967,3) pub fn CompoundMixed() -> () { let mut Mixed: Arc = Arc::new(CompoundBeacon::CompoundBeacon { name: string_utf16_of("Mixed"), @@ -139062,7 +141144,10 @@ pub mod _TestBaseBeacon_Compile { compoundBeacons: _dt__update_hcompoundBeacons_h0.clone(), virtualFields: _dt__update__tmp_h0.virtualFields().clone(), encryptedParts: _dt__update_hencryptedParts_h0.clone(), - signedParts: _dt__update_hsignedParts_h0.clone() + signedParts: _dt__update_hsignedParts_h0.clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut src: Arc; let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); @@ -139076,7 +141161,7 @@ pub mod _TestBaseBeacon_Compile { let mut bv: ValidBeaconVersion = valueOrError0.Extract(); return (); } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(973,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(986,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); @@ -139166,216 +141251,2381 @@ pub mod _TestBaseBeacon_Compile { _default::TestBeacon() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(43,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(55,3) #[test] pub fn TestBadPrefix() { _default::TestBadPrefix() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(63,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(75,3) #[test] pub fn TestContainsSplit() { _default::TestContainsSplit() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(76,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(88,3) #[test] pub fn TestOneBeaconValue() { _default::TestOneBeaconValue() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(96,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(108,3) #[test] pub fn TestNumbersNormalize() { _default::TestNumbersNormalize() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(113,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(125,3) #[test] pub fn TestSharedCacheBeaconsSingleKeyStoreWithSamePartitionId() { _default::TestSharedCacheBeaconsSingleKeyStoreWithSamePartitionId() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(149,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(161,3) #[test] pub fn TestSharedCacheBeaconsSingleKeyStoreWithDifferentPartitionId() { _default::TestSharedCacheBeaconsSingleKeyStoreWithDifferentPartitionId() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(186,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(198,3) #[test] pub fn TestSharedCacheBeaconsSingleKeyStoreWithUnspecifiedPartitionId() { _default::TestSharedCacheBeaconsSingleKeyStoreWithUnspecifiedPartitionId() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(222,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(234,3) #[test] pub fn TestSharedCacheBeaconsMultiKeyStoreWithSamePartitionId() { _default::TestSharedCacheBeaconsMultiKeyStoreWithSamePartitionId() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(259,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(271,3) #[test] pub fn TestSharedCacheBeaconsMultiKeyStoreWithDifferentPartitionId() { _default::TestSharedCacheBeaconsMultiKeyStoreWithDifferentPartitionId() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(299,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(311,3) #[test] pub fn TestSharedCacheBeaconsMultiKeyStoreWithUnspecifiedPartitionId() { _default::TestSharedCacheBeaconsMultiKeyStoreWithUnspecifiedPartitionId() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(338,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(350,3) #[test] pub fn TestBeaconValues() { _default::TestBeaconValues() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(393,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(406,3) #[test] pub fn TestCompoundQueries() { _default::TestCompoundQueries() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(433,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(446,3) #[test] pub fn TestQueryBeacons() { _default::TestQueryBeacons() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(477,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(490,3) #[test] pub fn TestUnusedPartOnly() { _default::TestUnusedPartOnly() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(492,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(505,3) #[test] pub fn TestCompoundWithUnknown() { _default::TestCompoundWithUnknown() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(512,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(525,3) #[test] pub fn TesSetInCompound() { _default::TesSetInCompound() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(537,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(550,3) #[test] pub fn SharedBadReferenceToCompound() { _default::SharedBadReferenceToCompound() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(553,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(566,3) #[test] pub fn ChainedShare() { _default::ChainedShare() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(573,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(586,3) #[test] pub fn SelfShare() { _default::SelfShare() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(589,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(602,3) #[test] pub fn SharedBadReferenceNonExistent() { _default::SharedBadReferenceNonExistent() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(606,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(619,3) #[test] pub fn SharedBadLength() { _default::SharedBadLength() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(622,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(635,3) #[test] pub fn TestPartOnlyNotStored() { _default::TestPartOnlyNotStored() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(691,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(704,3) #[test] pub fn TestShareSameBeacon() { _default::TestShareSameBeacon() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(745,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(758,3) #[test] pub fn TestBeaconSetQuery() { _default::TestBeaconSetQuery() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(790,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(803,3) #[test] pub fn TestSetNotSet() { _default::TestSetNotSet() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(836,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(849,3) #[test] pub fn TestSharedSet() { _default::TestSharedSet() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(873,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(886,3) #[test] pub fn GlobalPartNotExist() { _default::GlobalPartNotExist() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(885,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(898,3) #[test] pub fn DuplicateGlobalSigned() { _default::DuplicateGlobalSigned() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(895,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(908,3) #[test] pub fn DuplicateGlobalEncrypted() { _default::DuplicateGlobalEncrypted() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(905,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(918,3) #[test] pub fn DuplicateGlobalPrefix() { _default::DuplicateGlobalPrefix() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(916,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(929,3) #[test] pub fn DuplicateGlobalVsLocalEncrypted() { _default::DuplicateGlobalVsLocalEncrypted() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(926,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(939,3) #[test] pub fn DuplicateGlobalVsLocalSigned() { _default::DuplicateGlobalVsLocalSigned() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(936,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(949,3) #[test] pub fn CompoundNoConstructor() { _default::CompoundNoConstructor() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(954,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(967,3) #[test] pub fn CompoundMixed() { _default::CompoundMixed() } - /// dafny/DynamoDbEncryption/test/Beacon.dfy(973,3) + /// dafny/DynamoDbEncryption/test/Beacon.dfy(986,3) #[test] pub fn CheckBytesToHex() { _default::CheckBytesToHex() } } +/// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(8,1) +pub mod _TestBeaconPartition_Compile { + pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::ValidStore; + pub use ::std::sync::Arc; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::StandardBeacon; + pub use ::dafny_runtime::string_utf16_of; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; + pub use ::dafny_runtime::Sequence; + pub use ::dafny_runtime::DafnyCharUTF16; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconStyle; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionCount; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconKeySource; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::SingleKeyStore; + pub use crate::implementation_from_dafny::software::amazon::cryptography::materialproviders::internaldafny::types::CacheType; + pub use ::dafny_runtime::seq; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::CompoundBeaconList; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::VirtualFieldList; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::EncryptedPartsList; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::SignedPartsList; + pub use ::dafny_runtime::Object; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::IPartitionSelector; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::DynamoDbTableEncryptionConfig; + pub use ::dafny_runtime::Map; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::structuredencryption::internaldafny::types::CryptoAction; + pub use ::dafny_runtime::map; + pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::KeySource; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Result; + pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::ValidBeaconVersion; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::Error; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Failure; + pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue; + pub use crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::MaybeKeyId; + pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue::S; + pub use ::dafny_runtime::int; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::SearchConfig; + pub use crate::implementation_from_dafny::_Wrappers_Compile::Result::Success; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionNumber; + pub use crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::ExprContext; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::StandardBeaconList; + pub use ::dafny_runtime::DafnyPrintWrapper; + 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::Select; + pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeNameList; + 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::Condition; + 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::ReturnConsumedCapacity; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::CompoundBeacon; + + pub struct _default {} + + impl _default { + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(20,3) + pub fn TestEmptyBeaconName() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut emptyNameBeacon: Arc = Arc::new(StandardBeacon::StandardBeacon { + name: string_utf16_of(""), + length: 24, + loc: Arc::new(Option::>::None {}), + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::None {}) + }); + let mut version: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![emptyNameBeacon.clone()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::None {}), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut emptyConfig: Arc; + let mut _dt__update__tmp_h0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); + let mut _dt__update_hattributeActionsOnEncrypt_h0: Map, Arc> = map![(string_utf16_of("")) => (Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}))]; + emptyConfig = Arc::new(DynamoDbTableEncryptionConfig::DynamoDbTableEncryptionConfig { + logicalTableName: _dt__update__tmp_h0.logicalTableName().clone(), + partitionKeyName: _dt__update__tmp_h0.partitionKeyName().clone(), + sortKeyName: _dt__update__tmp_h0.sortKeyName().clone(), + search: _dt__update__tmp_h0.search().clone(), + attributeActionsOnEncrypt: _dt__update_hattributeActionsOnEncrypt_h0.clone(), + allowedUnsignedAttributes: _dt__update__tmp_h0.allowedUnsignedAttributes().clone(), + allowedUnsignedAttributePrefix: _dt__update__tmp_h0.allowedUnsignedAttributePrefix().clone(), + algorithmSuiteId: _dt__update__tmp_h0.algorithmSuiteId().clone(), + keyring: _dt__update__tmp_h0.keyring().clone(), + cmm: _dt__update__tmp_h0.cmm().clone(), + legacyOverride: _dt__update__tmp_h0.legacyOverride().clone(), + plaintextOverride: _dt__update__tmp_h0.plaintextOverride().clone() + }); + let mut src: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); + src = _out1.clone(); + let mut res: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&emptyConfig, &version, &src); + res = _out2.clone(); + if !matches!((&res).as_ref(), Failure{ .. }) { + panic!("Halt") + }; + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(41,3) + pub fn TestUnicodeBeaconName() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut unicodeNameBeacon: Arc = Arc::new(StandardBeacon::StandardBeacon { + name: seq![DafnyCharUTF16(99 as u16), DafnyCharUTF16(97 as u16), DafnyCharUTF16(102 as u16), DafnyCharUTF16(233 as u16)], + length: 24, + loc: Arc::new(Option::>::None {}), + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::None {}) + }); + let mut unicodeVersion: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![unicodeNameBeacon.clone()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::None {}), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut unicodeConfig: Arc; + let mut _dt__update__tmp_h0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); + let mut _dt__update_hattributeActionsOnEncrypt_h0: Map, Arc> = map![(seq![DafnyCharUTF16(99 as u16), DafnyCharUTF16(97 as u16), DafnyCharUTF16(102 as u16), DafnyCharUTF16(233 as u16)]) => (Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}))]; + unicodeConfig = Arc::new(DynamoDbTableEncryptionConfig::DynamoDbTableEncryptionConfig { + logicalTableName: _dt__update__tmp_h0.logicalTableName().clone(), + partitionKeyName: _dt__update__tmp_h0.partitionKeyName().clone(), + sortKeyName: _dt__update__tmp_h0.sortKeyName().clone(), + search: _dt__update__tmp_h0.search().clone(), + attributeActionsOnEncrypt: _dt__update_hattributeActionsOnEncrypt_h0.clone(), + allowedUnsignedAttributes: _dt__update__tmp_h0.allowedUnsignedAttributes().clone(), + allowedUnsignedAttributePrefix: _dt__update__tmp_h0.allowedUnsignedAttributePrefix().clone(), + algorithmSuiteId: _dt__update__tmp_h0.algorithmSuiteId().clone(), + keyring: _dt__update__tmp_h0.keyring().clone(), + cmm: _dt__update__tmp_h0.cmm().clone(), + legacyOverride: _dt__update__tmp_h0.legacyOverride().clone(), + plaintextOverride: _dt__update__tmp_h0.plaintextOverride().clone() + }); + let mut unicodeSrc: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &unicodeVersion); + unicodeSrc = _out1.clone(); + let mut valueOrError0: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&unicodeConfig, &unicodeVersion, &unicodeSrc); + valueOrError0 = _out2.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + let mut unicodeRes: Arc = valueOrError0.Extract(); + let mut cafeValueItem: Map, Arc> = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem().update_index(&seq![DafnyCharUTF16(99 as u16), DafnyCharUTF16(97 as u16), DafnyCharUTF16(102 as u16), DafnyCharUTF16(233 as u16)], &Arc::new(AttributeValue::S { + S: seq![DafnyCharUTF16(99 as u16), DafnyCharUTF16(97 as u16), DafnyCharUTF16(102 as u16), DafnyCharUTF16(233 as u16)] + })); + let mut valueOrError1: Arc, Arc>, Arc>>; + let mut _out3: Arc, Arc>, Arc>> = unicodeRes.GenerateEncryptedBeacons(&cafeValueItem, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); + valueOrError1 = _out3.clone(); + if !(!valueOrError1.IsFailure()) { + panic!("Halt") + }; + let mut cafeValueAttrs: Map, Arc> = valueOrError1.Extract(); + if !cafeValueAttrs.contains(&seq![DafnyCharUTF16(97 as u16), DafnyCharUTF16(119 as u16), DafnyCharUTF16(115 as u16), DafnyCharUTF16(95 as u16), DafnyCharUTF16(100 as u16), DafnyCharUTF16(98 as u16), DafnyCharUTF16(101 as u16), DafnyCharUTF16(95 as u16), DafnyCharUTF16(98 as u16), DafnyCharUTF16(95 as u16), DafnyCharUTF16(99 as u16), DafnyCharUTF16(97 as u16), DafnyCharUTF16(102 as u16), DafnyCharUTF16(233 as u16)]) { + panic!("Halt") + }; + if !matches!((&cafeValueAttrs.get(&seq![DafnyCharUTF16(97 as u16), DafnyCharUTF16(119 as u16), DafnyCharUTF16(115 as u16), DafnyCharUTF16(95 as u16), DafnyCharUTF16(100 as u16), DafnyCharUTF16(98 as u16), DafnyCharUTF16(101 as u16), DafnyCharUTF16(95 as u16), DafnyCharUTF16(98 as u16), DafnyCharUTF16(95 as u16), DafnyCharUTF16(99 as u16), DafnyCharUTF16(97 as u16), DafnyCharUTF16(102 as u16), DafnyCharUTF16(233 as u16)])).as_ref(), S{ .. }) { + panic!("Halt") + }; + if !(int!(0) < cafeValueAttrs.get(&seq![DafnyCharUTF16(97 as u16), DafnyCharUTF16(119 as u16), DafnyCharUTF16(115 as u16), DafnyCharUTF16(95 as u16), DafnyCharUTF16(100 as u16), DafnyCharUTF16(98 as u16), DafnyCharUTF16(101 as u16), DafnyCharUTF16(95 as u16), DafnyCharUTF16(98 as u16), DafnyCharUTF16(95 as u16), DafnyCharUTF16(99 as u16), DafnyCharUTF16(97 as u16), DafnyCharUTF16(102 as u16), DafnyCharUTF16(233 as u16)]).S().cardinality()) { + panic!("Halt") + }; + let mut lotsaVersion: Arc; + let mut _out4: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); + lotsaVersion = _out4.clone(); + let mut lotsaSrc: Arc; + let mut _out5: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &lotsaVersion); + lotsaSrc = _out5.clone(); + let mut valueOrError2: Arc>>; + let mut _out6: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(), &lotsaVersion, &lotsaSrc); + valueOrError2 = _out6.clone(); + if !(!valueOrError2.IsFailure()) { + panic!("Halt") + }; + let mut bv: Arc = valueOrError2.Extract(); + let mut emptyValueItem: Map, Arc> = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem().update_index(&string_utf16_of("Name"), &Arc::new(AttributeValue::S { + S: string_utf16_of("") + })); + let mut valueOrError3: Arc, Arc>, Arc>>; + let mut _out7: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&emptyValueItem, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); + valueOrError3 = _out7.clone(); + if !(!valueOrError3.IsFailure()) { + panic!("Halt") + }; + let mut emptyValueAttrs: Map, Arc> = valueOrError3.Extract(); + if !emptyValueAttrs.contains(&string_utf16_of("aws_dbe_b_Name")) { + panic!("Halt") + }; + if !matches!((&emptyValueAttrs.get(&string_utf16_of("aws_dbe_b_Name"))).as_ref(), S{ .. }) { + panic!("Halt") + }; + if !(int!(0) < emptyValueAttrs.get(&string_utf16_of("aws_dbe_b_Name")).S().cardinality()) { + panic!("Halt") + }; + let mut unicodeValueItem: Map, Arc> = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem().update_index(&string_utf16_of("Name"), &Arc::new(AttributeValue::S { + S: seq![DafnyCharUTF16(21517 as u16), DafnyCharUTF16(21069 as u16)] + })); + let mut valueOrError4: Arc, Arc>, Arc>>; + let mut _out8: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&unicodeValueItem, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); + valueOrError4 = _out8.clone(); + if !(!valueOrError4.IsFailure()) { + panic!("Halt") + }; + let mut unicodeValueAttrs: Map, Arc> = valueOrError4.Extract(); + if !unicodeValueAttrs.contains(&string_utf16_of("aws_dbe_b_Name")) { + panic!("Halt") + }; + if !matches!((&unicodeValueAttrs.get(&string_utf16_of("aws_dbe_b_Name"))).as_ref(), S{ .. }) { + panic!("Halt") + }; + if !(int!(0) < unicodeValueAttrs.get(&string_utf16_of("aws_dbe_b_Name")).S().cardinality()) { + panic!("Halt") + }; + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(86,3) + pub fn TestInvalidMaxNumberOfPartitionsConfigError() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut version1: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::std2()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::Some { + value: 5 + }), + defaultNumberOfPartitions: Arc::new(Option::::Some { + value: 5 + }), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src1: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version1); + src1 = _out1.clone(); + let mut res1: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(), &version1, &src1); + res1 = _out2.clone(); + if !matches!((&res1).as_ref(), Failure{ .. }) { + panic!("Halt") + }; + crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::expect_equal::>(res1.error(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid defaultNumberOfPartitions specified, 5, must be 0 < defaultNumberOfPartitions < maximumNumberOfPartitions."))); + let mut version2: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::std2()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::Some { + value: 5 + }), + defaultNumberOfPartitions: Arc::new(Option::::Some { + value: 10 + }), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src2: Arc; + let mut _out3: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version2); + src2 = _out3.clone(); + let mut res2: Arc>>; + let mut _out4: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(), &version2, &src2); + res2 = _out4.clone(); + if !matches!((&res2).as_ref(), Failure{ .. }) { + panic!("Halt") + }; + crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::expect_equal::>(res2.error(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid defaultNumberOfPartitions specified, 10, must be 0 < defaultNumberOfPartitions < maximumNumberOfPartitions."))); + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(126,3) + pub fn TestConstrainedBeaconConfigErrorsNumPartitionsEqConstrainedBeaconPartionsFail() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut constrainedBeacon: Arc = Arc::new(StandardBeacon::StandardBeacon { + name: string_utf16_of("std2"), + length: 24, + loc: Arc::new(Option::>::None {}), + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::Some { + value: 5 + }) + }); + let mut version1: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![constrainedBeacon.clone()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::Some { + value: 5 + }), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src1: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version1); + src1 = _out1.clone(); + let mut res1: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&({ + let __pat_let76_0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); + { + let _dt__update__tmp_h0: Arc = __pat_let76_0.clone(); + { + let __pat_let77_0: Arc>> = Arc::new(Option::>::Some { + value: Arc::new(SearchConfig::SearchConfig { + versions: seq![version1.clone()], + writeVersion: 1 + }) + }); + { + let _dt__update_hsearch_h0: Arc>> = __pat_let77_0.clone(); + Arc::new(DynamoDbTableEncryptionConfig::DynamoDbTableEncryptionConfig { + logicalTableName: _dt__update__tmp_h0.logicalTableName().clone(), + partitionKeyName: _dt__update__tmp_h0.partitionKeyName().clone(), + sortKeyName: _dt__update__tmp_h0.sortKeyName().clone(), + search: _dt__update_hsearch_h0.clone(), + attributeActionsOnEncrypt: _dt__update__tmp_h0.attributeActionsOnEncrypt().clone(), + allowedUnsignedAttributes: _dt__update__tmp_h0.allowedUnsignedAttributes().clone(), + allowedUnsignedAttributePrefix: _dt__update__tmp_h0.allowedUnsignedAttributePrefix().clone(), + algorithmSuiteId: _dt__update__tmp_h0.algorithmSuiteId().clone(), + keyring: _dt__update__tmp_h0.keyring().clone(), + cmm: _dt__update__tmp_h0.cmm().clone(), + legacyOverride: _dt__update__tmp_h0.legacyOverride().clone(), + plaintextOverride: _dt__update__tmp_h0.plaintextOverride().clone() + }) + } + } + } + }), &version1, &src1); + res1 = _out2.clone(); + if !matches!((&res1).as_ref(), Failure{ .. }) { + panic!("Halt") + }; + crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::expect_equal::>(res1.error(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Constrained numberOfPartitions for std2 is 5 but it must be less than the maximumNumberOfPartitions 5"))); + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(152,3) + pub fn TestConstrainedBeaconPartitionGreaterThanMaxNumPartitionsFail() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut overBeacon: Arc = Arc::new(StandardBeacon::StandardBeacon { + name: string_utf16_of("std2"), + length: 24, + loc: Arc::new(Option::>::None {}), + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::Some { + value: 10 + }) + }); + let mut version2: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![overBeacon.clone()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::Some { + value: 5 + }), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src2: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version2); + src2 = _out1.clone(); + let mut res2: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&({ + let __pat_let78_0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); + { + let _dt__update__tmp_h0: Arc = __pat_let78_0.clone(); + { + let __pat_let79_0: Arc>> = Arc::new(Option::>::Some { + value: Arc::new(SearchConfig::SearchConfig { + versions: seq![version2.clone()], + writeVersion: 1 + }) + }); + { + let _dt__update_hsearch_h0: Arc>> = __pat_let79_0.clone(); + Arc::new(DynamoDbTableEncryptionConfig::DynamoDbTableEncryptionConfig { + logicalTableName: _dt__update__tmp_h0.logicalTableName().clone(), + partitionKeyName: _dt__update__tmp_h0.partitionKeyName().clone(), + sortKeyName: _dt__update__tmp_h0.sortKeyName().clone(), + search: _dt__update_hsearch_h0.clone(), + attributeActionsOnEncrypt: _dt__update__tmp_h0.attributeActionsOnEncrypt().clone(), + allowedUnsignedAttributes: _dt__update__tmp_h0.allowedUnsignedAttributes().clone(), + allowedUnsignedAttributePrefix: _dt__update__tmp_h0.allowedUnsignedAttributePrefix().clone(), + algorithmSuiteId: _dt__update__tmp_h0.algorithmSuiteId().clone(), + keyring: _dt__update__tmp_h0.keyring().clone(), + cmm: _dt__update__tmp_h0.cmm().clone(), + legacyOverride: _dt__update__tmp_h0.legacyOverride().clone(), + plaintextOverride: _dt__update__tmp_h0.plaintextOverride().clone() + }) + } + } + } + }), &version2, &src2); + res2 = _out2.clone(); + if !matches!((&res2).as_ref(), Failure{ .. }) { + panic!("Halt") + }; + crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::expect_equal::>(res2.error(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Constrained numberOfPartitions for std2 is 10 but it must be less than the maximumNumberOfPartitions 5"))); + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(178,3) + pub fn TestConstrainedBeaconNumPartitionLessThanMaxNumPartitionsSucceed() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut validBeacon: Arc = Arc::new(StandardBeacon::StandardBeacon { + name: string_utf16_of("std2"), + length: 24, + loc: Arc::new(Option::>::None {}), + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::Some { + value: 3 + }) + }); + let mut version3: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![validBeacon.clone()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::Some { + value: 10 + }), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src3: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version3); + src3 = _out1.clone(); + let mut res3: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(), &version3, &src3); + res3 = _out2.clone(); + if !matches!((&res3).as_ref(), Success{ .. }) { + panic!("Halt") + }; + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(199,3) + pub fn TestInvalidPartitionOnQuery() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut version: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::std2(), crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::NameB(), crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::TitleB()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::Some { + value: 5 + }), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); + src = _out1.clone(); + let mut valueOrError0: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(), &version, &src); + valueOrError0 = _out2.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + let mut bv: ValidBeaconVersion = valueOrError0.Extract(); + let mut values1: Map, Arc> = map![(string_utf16_of(":aws_dbe_partition")) => (Arc::new(AttributeValue::N { + N: string_utf16_of("5") + }))]; + let mut res1: Arc, Arc>>>, PartitionNumber), Arc>>; + let mut _out3: Arc, Arc>>>, PartitionNumber), Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::ExtractPartition(&bv, &Arc::new(Option::>::None {}), &Arc::new(Option::>::Some { + value: string_utf16_of("Name = :val") + }), &Arc::new(Option::, Sequence>>::None {}), &Arc::new(Option::, Arc>>::Some { + value: values1.clone() + }), crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig().attributeActionsOnEncrypt()); + res1 = _out3.clone(); + if !matches!((&res1).as_ref(), Failure{ .. }) { + panic!("Halt") + }; + crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::expect_equal::>(res1.error(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of(":aws_dbe_partition specified in FilterExpression was 5 must be less than the number of partitions: 5"))); + let mut noPartVersion: Arc; + let mut _out4: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); + noPartVersion = _out4.clone(); + let mut noPartSrc: Arc; + let mut _out5: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &noPartVersion); + noPartSrc = _out5.clone(); + let mut valueOrError1: Arc>>; + let mut _out6: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(), &noPartVersion, &noPartSrc); + valueOrError1 = _out6.clone(); + if !(!valueOrError1.IsFailure()) { + panic!("Halt") + }; + let mut noPartBv: ValidBeaconVersion = valueOrError1.Extract(); + let mut values2: Map, Arc> = map![(string_utf16_of(":aws_dbe_partition")) => (Arc::new(AttributeValue::N { + N: string_utf16_of("0") + }))]; + let mut res2: Arc, Arc>>>, PartitionNumber), Arc>>; + let mut _out7: Arc, Arc>>>, PartitionNumber), Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::ExtractPartition(&noPartBv, &Arc::new(Option::>::None {}), &Arc::new(Option::>::Some { + value: string_utf16_of("Name = :val") + }), &Arc::new(Option::, Sequence>>::None {}), &Arc::new(Option::, Arc>>::Some { + value: values2.clone() + }), crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig().attributeActionsOnEncrypt()); + res2 = _out7.clone(); + if !matches!((&res2).as_ref(), Failure{ .. }) { + panic!("Halt") + }; + crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::expect_equal::>(res2.error(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("If no partitions are configured, do not specify :aws_dbe_partition"))); + let mut res3: Arc, Arc>>>, PartitionNumber), Arc>>; + let mut _out8: Arc, Arc>>>, PartitionNumber), Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::ExtractPartition(&bv, &Arc::new(Option::>::None {}), &Arc::new(Option::>::Some { + value: string_utf16_of("Name = :val") + }), &Arc::new(Option::, Sequence>>::None {}), &Arc::new(Option::, Arc>>::None {}), crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig().attributeActionsOnEncrypt()); + res3 = _out8.clone(); + if !matches!((&res3).as_ref(), Failure{ .. }) { + panic!("Halt") + }; + crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::expect_equal::>(res3.error(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("When numberOfPartitions is greater than one, Values must contain :aws_dbe_partition"))); + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(237,3) + pub fn TestLongAttributeNameForPartitionBeacon() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut longName: Sequence = string_utf16_of("aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"); + let mut longNameBeacon: Arc = Arc::new(StandardBeacon::StandardBeacon { + name: longName.clone(), + length: 24, + loc: Arc::new(Option::>::None {}), + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::Some { + value: 3 + }) + }); + let mut longNameVersion: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![longNameBeacon.clone()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::Some { + value: 10 + }), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut longNameConfig: Arc; + let mut _dt__update__tmp_h0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); + let mut _dt__update_hattributeActionsOnEncrypt_h0: Map, Arc> = map![(longName.clone()) => (Arc::new(CryptoAction::ENCRYPT_AND_SIGN {}))]; + longNameConfig = Arc::new(DynamoDbTableEncryptionConfig::DynamoDbTableEncryptionConfig { + logicalTableName: _dt__update__tmp_h0.logicalTableName().clone(), + partitionKeyName: _dt__update__tmp_h0.partitionKeyName().clone(), + sortKeyName: _dt__update__tmp_h0.sortKeyName().clone(), + search: _dt__update__tmp_h0.search().clone(), + attributeActionsOnEncrypt: _dt__update_hattributeActionsOnEncrypt_h0.clone(), + allowedUnsignedAttributes: _dt__update__tmp_h0.allowedUnsignedAttributes().clone(), + allowedUnsignedAttributePrefix: _dt__update__tmp_h0.allowedUnsignedAttributePrefix().clone(), + algorithmSuiteId: _dt__update__tmp_h0.algorithmSuiteId().clone(), + keyring: _dt__update__tmp_h0.keyring().clone(), + cmm: _dt__update__tmp_h0.cmm().clone(), + legacyOverride: _dt__update__tmp_h0.legacyOverride().clone(), + plaintextOverride: _dt__update__tmp_h0.plaintextOverride().clone() + }); + let mut src3: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &longNameVersion); + src3 = _out1.clone(); + let mut res3: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&longNameConfig, &longNameVersion, &src3); + res3 = _out2.clone(); + if !matches!((&res3).as_ref(), Success{ .. }) { + panic!("Halt") + }; + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(261,3) + pub fn TestQueryMixedTableBeaconPartitions() -> () { + let mut context: Arc = Arc::new(ExprContext::ExprContext { + keyExpr: Arc::new(Option::>::None {}), + filterExpr: Arc::new(Option::>::Some { + value: string_utf16_of("std2 = :std2 AND std4 = :std4 AND :std6 = std6 AND Name = :Name AND Mixed = :Mixed").concat(&string_utf16_of(" AND :NameTitle = NameTitle AND NameTitle = :NameTitleN AND NameTitle = :NameTitleT AND NameTitle = :NameTitleTN")).concat(&string_utf16_of(" AND NameTitleField = :NameTitleField And Title = :Title AND YearName = :YearName")) + }), + values: Arc::new(Option::, Arc>>::Some { + value: map![(string_utf16_of(":std2")) => (crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Std2String()), (string_utf16_of(":std4")) => (crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Std4String()), (string_utf16_of(":std6")) => (crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Std6String()), (string_utf16_of(":Name")) => (crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::NameString()), (string_utf16_of(":Title")) => (crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::TitleString()), (string_utf16_of(":Mixed")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("N_MyName.Y_1984") + })), (string_utf16_of(":NameTitle")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("N_MyName.T_MyTitle") + })), (string_utf16_of(":NameTitleN")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("N_MyName") + })), (string_utf16_of(":NameTitleT")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("T_MyTitle") + })), (string_utf16_of(":NameTitleTN")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("N_MyName.T_MyTitle") + })), (string_utf16_of(":NameTitleField")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("MyName__mytitle") + })), (string_utf16_of(":YearName")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("Y_1984.N_MyName") + }))] + }), + names: Arc::new(Option::, Sequence>>::None {}) + }); + let mut version: Arc; + let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); + version = _out0.clone(); + let mut partionedVersion: Arc; + let mut _dt__update__tmp_h0: Arc = version.clone(); + let mut _dt__update_hmaximumNumberOfPartitions_h0: Arc> = Arc::new(Option::::Some { + value: 10 + }); + let mut _dt__update_hstandardBeacons_h0: StandardBeaconList = seq![crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::std2(), crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::std4Partitioned(), crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::std6(), crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::NameTitleBeacon(), crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::NameB(), crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::TitleB()]; + partionedVersion = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: _dt__update__tmp_h0.version().clone(), + keyStore: _dt__update__tmp_h0.keyStore().clone(), + keySource: _dt__update__tmp_h0.keySource().clone(), + standardBeacons: _dt__update_hstandardBeacons_h0.clone(), + compoundBeacons: _dt__update__tmp_h0.compoundBeacons().clone(), + virtualFields: _dt__update__tmp_h0.virtualFields().clone(), + encryptedParts: _dt__update__tmp_h0.encryptedParts().clone(), + signedParts: _dt__update__tmp_h0.signedParts().clone(), + maximumNumberOfPartitions: _dt__update_hmaximumNumberOfPartitions_h0.clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() + }); + let mut src: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &partionedVersion); + src = _out1.clone(); + let mut valueOrError0: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&({ + let __pat_let80_0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); + { + let _dt__update__tmp_h1: Arc = __pat_let80_0.clone(); + { + let __pat_let81_0: Arc>> = Arc::new(Option::>::Some { + value: Arc::new(SearchConfig::SearchConfig { + versions: seq![partionedVersion.clone()], + writeVersion: 1 + }) + }); + { + let _dt__update_hsearch_h0: Arc>> = __pat_let81_0.clone(); + Arc::new(DynamoDbTableEncryptionConfig::DynamoDbTableEncryptionConfig { + logicalTableName: _dt__update__tmp_h1.logicalTableName().clone(), + partitionKeyName: _dt__update__tmp_h1.partitionKeyName().clone(), + sortKeyName: _dt__update__tmp_h1.sortKeyName().clone(), + search: _dt__update_hsearch_h0.clone(), + attributeActionsOnEncrypt: _dt__update__tmp_h1.attributeActionsOnEncrypt().clone(), + allowedUnsignedAttributes: _dt__update__tmp_h1.allowedUnsignedAttributes().clone(), + allowedUnsignedAttributePrefix: _dt__update__tmp_h1.allowedUnsignedAttributePrefix().clone(), + algorithmSuiteId: _dt__update__tmp_h1.algorithmSuiteId().clone(), + keyring: _dt__update__tmp_h1.keyring().clone(), + cmm: _dt__update__tmp_h1.cmm().clone(), + legacyOverride: _dt__update__tmp_h1.legacyOverride().clone(), + plaintextOverride: _dt__update__tmp_h1.plaintextOverride().clone() + }) + } + } + } + }), &partionedVersion, &src); + valueOrError0 = _out2.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + let mut beaconVersion: ValidBeaconVersion = valueOrError0.Extract(); + let mut valueOrError1: Arc, Arc>>; + let mut _out3: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); + valueOrError1 = _out3.clone(); + if !(!valueOrError1.IsFailure()) { + panic!("Halt") + }; + let mut newContext: Arc = valueOrError1.Extract(); + let mut _e00: Arc, Arc>>> = newContext.values().clone(); + let mut _e10: Arc, Arc>>> = Arc::new(Option::, Arc>>::Some { + value: map![(string_utf16_of(":Mixed")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("N_").concat(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Name_beacon()).concat(&string_utf16_of(".Y_1984")) + })), (string_utf16_of(":Name")) => (Arc::new(AttributeValue::S { + S: crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Name_beacon() + })), (string_utf16_of(":NameTitle")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("N_").concat(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Name_beacon()).concat(&string_utf16_of(".T_")).concat(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Title_beacon()) + })), (string_utf16_of(":NameTitleTN")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("N_").concat(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Name_beacon()).concat(&string_utf16_of(".T_")).concat(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Title_beacon()) + })), (string_utf16_of(":NameTitleN")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("N_").concat(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Name_beacon()) + })), (string_utf16_of(":NameTitleT")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("T_").concat(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Title_beacon()) + })), (string_utf16_of(":NameTitleField")) => (Arc::new(AttributeValue::S { + S: crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::NameTitle_beacon() + })), (string_utf16_of(":std2")) => (Arc::new(AttributeValue::S { + S: crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::std2_beacon() + })), (string_utf16_of(":Title")) => (Arc::new(AttributeValue::S { + S: crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Title_beacon() + })), (string_utf16_of(":std6")) => (Arc::new(AttributeValue::S { + S: crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::std6_beacon() + })), (string_utf16_of(":std4")) => (Arc::new(AttributeValue::S { + S: crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::std4_beacon() + })), (string_utf16_of(":YearName")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("Y_1984.N_").concat(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Name_beacon()) + }))] + }); + 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") + }; + let mut _e01: Arc, Sequence>>> = newContext.names().clone(); + let mut _e11: Arc, Sequence>>> = Arc::new(Option::, Sequence>>::None {}); + if !(_e01.clone() == _e11.clone()) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e01)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e11)); + panic!("Halt") + }; + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(311,3) + pub fn TestNumberOfQueriesPartition1() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut validBeacon: Arc = Arc::new(StandardBeacon::StandardBeacon { + name: string_utf16_of("std2"), + length: 24, + loc: Arc::new(Option::>::None {}), + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::None {}) + }); + let mut version: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![validBeacon.clone()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::None {}), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); + src = _out1.clone(); + let mut longNameConfig: Arc; + let mut _dt__update__tmp_h0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); + let mut _dt__update_hsearch_h0: Arc>> = Arc::new(Option::>::Some { + value: Arc::new(SearchConfig::SearchConfig { + versions: seq![version.clone()], + writeVersion: 1 + }) + }); + longNameConfig = Arc::new(DynamoDbTableEncryptionConfig::DynamoDbTableEncryptionConfig { + logicalTableName: _dt__update__tmp_h0.logicalTableName().clone(), + partitionKeyName: _dt__update__tmp_h0.partitionKeyName().clone(), + sortKeyName: _dt__update__tmp_h0.sortKeyName().clone(), + search: _dt__update_hsearch_h0.clone(), + attributeActionsOnEncrypt: _dt__update__tmp_h0.attributeActionsOnEncrypt().clone(), + allowedUnsignedAttributes: _dt__update__tmp_h0.allowedUnsignedAttributes().clone(), + allowedUnsignedAttributePrefix: _dt__update__tmp_h0.allowedUnsignedAttributePrefix().clone(), + algorithmSuiteId: _dt__update__tmp_h0.algorithmSuiteId().clone(), + keyring: _dt__update__tmp_h0.keyring().clone(), + cmm: _dt__update__tmp_h0.cmm().clone(), + legacyOverride: _dt__update__tmp_h0.legacyOverride().clone(), + plaintextOverride: _dt__update__tmp_h0.plaintextOverride().clone() + }); + let mut valueOrError0: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&longNameConfig, &version, &src); + valueOrError0 = _out2.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + let mut beaconVersion: ValidBeaconVersion = valueOrError0.Extract(); + let mut queryInput: Arc = Arc::new(QueryInput::QueryInput { + TableName: string_utf16_of("SomeTable"), + IndexName: Arc::new(Option::>::None {}), + Select: Arc::new(Option::>::None {}), + AttributesToGet: Arc::new(Option::::None {}), + Limit: Arc::new(Option::::None {}), + ConsistentRead: Arc::new(Option::::None {}), + KeyConditions: Arc::new(Option::, Arc>>::None {}), + QueryFilter: Arc::new(Option::, Arc>>::None {}), + ConditionalOperator: Arc::new(Option::>::None {}), + ScanIndexForward: Arc::new(Option::::None {}), + ExclusiveStartKey: Arc::new(Option::, Arc>>::None {}), + ReturnConsumedCapacity: Arc::new(Option::>::None {}), + ProjectionExpression: Arc::new(Option::>::None {}), + FilterExpression: Arc::new(Option::>::None {}), + KeyConditionExpression: Arc::new(Option::>::Some { + value: string_utf16_of("std2 = :std2") + }), + ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), + ExpressionAttributeValues: Arc::new(Option::, Arc>>::Some { + value: map![(string_utf16_of(":std2")) => (crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Std2String())] + }) + }); + let mut res: Arc>>; + let mut _out3: Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::GetNumberOfQueries(&beaconVersion, &queryInput); + res = _out3.clone(); + if !matches!((&res).as_ref(), Success{ .. }) { + panic!("Halt") + }; + let mut _e00: PartitionCount = res.value().clone(); + let mut _e10: i32 = 1; + if !(_e00 == _e10) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e00)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e10)); + panic!("Halt") + }; + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(344,3) + pub fn TestNumberOfQueriesPartition5() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut validBeacon: Arc = Arc::new(StandardBeacon::StandardBeacon { + name: string_utf16_of("std2"), + length: 24, + loc: Arc::new(Option::>::None {}), + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::Some { + value: 5 + }) + }); + let mut version: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![validBeacon.clone()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::Some { + value: 6 + }), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); + src = _out1.clone(); + let mut longNameConfig: Arc; + let mut _dt__update__tmp_h0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); + let mut _dt__update_hsearch_h0: Arc>> = Arc::new(Option::>::Some { + value: Arc::new(SearchConfig::SearchConfig { + versions: seq![version.clone()], + writeVersion: 1 + }) + }); + longNameConfig = Arc::new(DynamoDbTableEncryptionConfig::DynamoDbTableEncryptionConfig { + logicalTableName: _dt__update__tmp_h0.logicalTableName().clone(), + partitionKeyName: _dt__update__tmp_h0.partitionKeyName().clone(), + sortKeyName: _dt__update__tmp_h0.sortKeyName().clone(), + search: _dt__update_hsearch_h0.clone(), + attributeActionsOnEncrypt: _dt__update__tmp_h0.attributeActionsOnEncrypt().clone(), + allowedUnsignedAttributes: _dt__update__tmp_h0.allowedUnsignedAttributes().clone(), + allowedUnsignedAttributePrefix: _dt__update__tmp_h0.allowedUnsignedAttributePrefix().clone(), + algorithmSuiteId: _dt__update__tmp_h0.algorithmSuiteId().clone(), + keyring: _dt__update__tmp_h0.keyring().clone(), + cmm: _dt__update__tmp_h0.cmm().clone(), + legacyOverride: _dt__update__tmp_h0.legacyOverride().clone(), + plaintextOverride: _dt__update__tmp_h0.plaintextOverride().clone() + }); + let mut valueOrError0: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&longNameConfig, &version, &src); + valueOrError0 = _out2.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + let mut beaconVersion: ValidBeaconVersion = valueOrError0.Extract(); + let mut queryInput: Arc = Arc::new(QueryInput::QueryInput { + TableName: string_utf16_of("SomeTable"), + IndexName: Arc::new(Option::>::None {}), + Select: Arc::new(Option::>::None {}), + AttributesToGet: Arc::new(Option::::None {}), + Limit: Arc::new(Option::::None {}), + ConsistentRead: Arc::new(Option::::None {}), + KeyConditions: Arc::new(Option::, Arc>>::None {}), + QueryFilter: Arc::new(Option::, Arc>>::None {}), + ConditionalOperator: Arc::new(Option::>::None {}), + ScanIndexForward: Arc::new(Option::::None {}), + ExclusiveStartKey: Arc::new(Option::, Arc>>::None {}), + ReturnConsumedCapacity: Arc::new(Option::>::None {}), + ProjectionExpression: Arc::new(Option::>::None {}), + FilterExpression: Arc::new(Option::>::None {}), + KeyConditionExpression: Arc::new(Option::>::Some { + value: string_utf16_of("std2 = :std2") + }), + ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), + ExpressionAttributeValues: Arc::new(Option::, Arc>>::Some { + value: map![(string_utf16_of(":std2")) => (crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Std2String())] + }) + }); + let mut res: Arc>>; + let mut _out3: Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::GetNumberOfQueries(&beaconVersion, &queryInput); + res = _out3.clone(); + if !matches!((&res).as_ref(), Success{ .. }) { + panic!("Halt") + }; + let mut _e00: PartitionCount = res.value().clone(); + let mut _e10: i32 = 5; + if !(_e00 == _e10) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e00)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e10)); + panic!("Halt") + }; + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(378,3) + pub fn TestNumberOfQueriesPartition25() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut validBeacon: Arc = Arc::new(StandardBeacon::StandardBeacon { + name: string_utf16_of("std2"), + length: 24, + loc: Arc::new(Option::>::None {}), + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::Some { + value: 25 + }) + }); + let mut version: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![validBeacon.clone()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::Some { + value: 26 + }), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); + src = _out1.clone(); + let mut longNameConfig: Arc; + let mut _dt__update__tmp_h0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); + let mut _dt__update_hsearch_h0: Arc>> = Arc::new(Option::>::Some { + value: Arc::new(SearchConfig::SearchConfig { + versions: seq![version.clone()], + writeVersion: 1 + }) + }); + longNameConfig = Arc::new(DynamoDbTableEncryptionConfig::DynamoDbTableEncryptionConfig { + logicalTableName: _dt__update__tmp_h0.logicalTableName().clone(), + partitionKeyName: _dt__update__tmp_h0.partitionKeyName().clone(), + sortKeyName: _dt__update__tmp_h0.sortKeyName().clone(), + search: _dt__update_hsearch_h0.clone(), + attributeActionsOnEncrypt: _dt__update__tmp_h0.attributeActionsOnEncrypt().clone(), + allowedUnsignedAttributes: _dt__update__tmp_h0.allowedUnsignedAttributes().clone(), + allowedUnsignedAttributePrefix: _dt__update__tmp_h0.allowedUnsignedAttributePrefix().clone(), + algorithmSuiteId: _dt__update__tmp_h0.algorithmSuiteId().clone(), + keyring: _dt__update__tmp_h0.keyring().clone(), + cmm: _dt__update__tmp_h0.cmm().clone(), + legacyOverride: _dt__update__tmp_h0.legacyOverride().clone(), + plaintextOverride: _dt__update__tmp_h0.plaintextOverride().clone() + }); + let mut valueOrError0: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&longNameConfig, &version, &src); + valueOrError0 = _out2.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + let mut beaconVersion: ValidBeaconVersion = valueOrError0.Extract(); + let mut queryInput: Arc = Arc::new(QueryInput::QueryInput { + TableName: string_utf16_of("SomeTable"), + IndexName: Arc::new(Option::>::None {}), + Select: Arc::new(Option::>::None {}), + AttributesToGet: Arc::new(Option::::None {}), + Limit: Arc::new(Option::::None {}), + ConsistentRead: Arc::new(Option::::None {}), + KeyConditions: Arc::new(Option::, Arc>>::None {}), + QueryFilter: Arc::new(Option::, Arc>>::None {}), + ConditionalOperator: Arc::new(Option::>::None {}), + ScanIndexForward: Arc::new(Option::::None {}), + ExclusiveStartKey: Arc::new(Option::, Arc>>::None {}), + ReturnConsumedCapacity: Arc::new(Option::>::None {}), + ProjectionExpression: Arc::new(Option::>::None {}), + FilterExpression: Arc::new(Option::>::None {}), + KeyConditionExpression: Arc::new(Option::>::Some { + value: string_utf16_of("std2 = :std2") + }), + ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), + ExpressionAttributeValues: Arc::new(Option::, Arc>>::Some { + value: map![(string_utf16_of(":std2")) => (crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Std2String())] + }) + }); + let mut res: Arc>>; + let mut _out3: Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::GetNumberOfQueries(&beaconVersion, &queryInput); + res = _out3.clone(); + if !matches!((&res).as_ref(), Success{ .. }) { + panic!("Halt") + }; + let mut _e00: PartitionCount = res.value().clone(); + let mut _e10: i32 = 25; + if !(_e00 == _e10) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e00)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e10)); + panic!("Halt") + }; + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(412,3) + pub fn TestNumberOfQueriesWithMultipleBeaconsConfigured() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut beacon3: Arc = Arc::new(StandardBeacon::StandardBeacon { + name: string_utf16_of("std2"), + length: 24, + loc: Arc::new(Option::>::None {}), + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::Some { + value: 3 + }) + }); + let mut beacon5: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::std4Partitioned(); + let mut version: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![beacon3.clone(), beacon5.clone()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::Some { + value: 16 + }), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); + src = _out1.clone(); + let mut config: Arc; + let mut _dt__update__tmp_h0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); + let mut _dt__update_hsearch_h0: Arc>> = Arc::new(Option::>::Some { + value: Arc::new(SearchConfig::SearchConfig { + versions: seq![version.clone()], + writeVersion: 1 + }) + }); + config = Arc::new(DynamoDbTableEncryptionConfig::DynamoDbTableEncryptionConfig { + logicalTableName: _dt__update__tmp_h0.logicalTableName().clone(), + partitionKeyName: _dt__update__tmp_h0.partitionKeyName().clone(), + sortKeyName: _dt__update__tmp_h0.sortKeyName().clone(), + search: _dt__update_hsearch_h0.clone(), + attributeActionsOnEncrypt: _dt__update__tmp_h0.attributeActionsOnEncrypt().clone(), + allowedUnsignedAttributes: _dt__update__tmp_h0.allowedUnsignedAttributes().clone(), + allowedUnsignedAttributePrefix: _dt__update__tmp_h0.allowedUnsignedAttributePrefix().clone(), + algorithmSuiteId: _dt__update__tmp_h0.algorithmSuiteId().clone(), + keyring: _dt__update__tmp_h0.keyring().clone(), + cmm: _dt__update__tmp_h0.cmm().clone(), + legacyOverride: _dt__update__tmp_h0.legacyOverride().clone(), + plaintextOverride: _dt__update__tmp_h0.plaintextOverride().clone() + }); + let mut valueOrError0: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&config, &version, &src); + valueOrError0 = _out2.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + let mut beaconVersion: ValidBeaconVersion = valueOrError0.Extract(); + let mut queryInput: Arc = Arc::new(QueryInput::QueryInput { + TableName: string_utf16_of("SomeTable"), + IndexName: Arc::new(Option::>::None {}), + Select: Arc::new(Option::>::None {}), + AttributesToGet: Arc::new(Option::::None {}), + Limit: Arc::new(Option::::None {}), + ConsistentRead: Arc::new(Option::::None {}), + KeyConditions: Arc::new(Option::, Arc>>::None {}), + QueryFilter: Arc::new(Option::, Arc>>::None {}), + ConditionalOperator: Arc::new(Option::>::None {}), + ScanIndexForward: Arc::new(Option::::None {}), + ExclusiveStartKey: Arc::new(Option::, Arc>>::None {}), + ReturnConsumedCapacity: Arc::new(Option::>::None {}), + ProjectionExpression: Arc::new(Option::>::None {}), + FilterExpression: Arc::new(Option::>::None {}), + KeyConditionExpression: Arc::new(Option::>::Some { + value: string_utf16_of("std4 = :std4 AND std2 = :std2") + }), + ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), + ExpressionAttributeValues: Arc::new(Option::, Arc>>::Some { + value: map![(string_utf16_of(":std4")) => (crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Std4String()), (string_utf16_of(":std2")) => (crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Std2String())] + }) + }); + let mut res: Arc>>; + let mut _out3: Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::GetNumberOfQueries(&beaconVersion, &queryInput); + res = _out3.clone(); + if !matches!((&res).as_ref(), Success{ .. }) { + panic!("Halt") + }; + let mut _e00: PartitionCount = res.value().clone(); + let mut _e10: i32 = 15; + if !(_e00 == _e10) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e00)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e10)); + panic!("Halt") + }; + let mut _dt__update__tmp_h1: Arc = version.clone(); + let mut _dt__update_hmaximumNumberOfPartitions_h0: Arc> = Arc::new(Option::::Some { + value: 6 + }); + version = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: _dt__update__tmp_h1.version().clone(), + keyStore: _dt__update__tmp_h1.keyStore().clone(), + keySource: _dt__update__tmp_h1.keySource().clone(), + standardBeacons: _dt__update__tmp_h1.standardBeacons().clone(), + compoundBeacons: _dt__update__tmp_h1.compoundBeacons().clone(), + virtualFields: _dt__update__tmp_h1.virtualFields().clone(), + encryptedParts: _dt__update__tmp_h1.encryptedParts().clone(), + signedParts: _dt__update__tmp_h1.signedParts().clone(), + maximumNumberOfPartitions: _dt__update_hmaximumNumberOfPartitions_h0.clone(), + defaultNumberOfPartitions: _dt__update__tmp_h1.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h1.partitionSelector().clone() + }); + let mut valueOrError1: Arc>>; + let mut _out4: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&config, &version, &src); + valueOrError1 = _out4.clone(); + if !(!valueOrError1.IsFailure()) { + panic!("Halt") + }; + beaconVersion = valueOrError1.Extract(); + let mut _out5: Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::GetNumberOfQueries(&beaconVersion, &queryInput); + res = _out5.clone(); + if !matches!((&res).as_ref(), Success{ .. }) { + panic!("Halt") + }; + let mut _e01: PartitionCount = res.value().clone(); + let mut _e11: i32 = 6; + if !(_e01 == _e11) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e01)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e11)); + panic!("Halt") + }; + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(466,3) + pub fn TestNumberOfQueriesForCompoundBeacons() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut namePartitioned: Arc = Arc::new(StandardBeacon::StandardBeacon { + name: string_utf16_of("Name"), + length: 32, + loc: Arc::new(Option::>::None {}), + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::Some { + value: 3 + }) + }); + let mut titlePartitioned: Arc = Arc::new(StandardBeacon::StandardBeacon { + name: string_utf16_of("Title"), + length: 32, + loc: Arc::new(Option::>::None {}), + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::Some { + value: 5 + }) + }); + let mut version: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![namePartitioned.clone(), titlePartitioned.clone()], + compoundBeacons: Arc::new(Option::>>::Some { + value: seq![crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::NameTitle()] + }), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::Some { + value: 16 + }), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); + src = _out1.clone(); + let mut config: Arc; + let mut _dt__update__tmp_h0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); + let mut _dt__update_hsearch_h0: Arc>> = Arc::new(Option::>::Some { + value: Arc::new(SearchConfig::SearchConfig { + versions: seq![version.clone()], + writeVersion: 1 + }) + }); + config = Arc::new(DynamoDbTableEncryptionConfig::DynamoDbTableEncryptionConfig { + logicalTableName: _dt__update__tmp_h0.logicalTableName().clone(), + partitionKeyName: _dt__update__tmp_h0.partitionKeyName().clone(), + sortKeyName: _dt__update__tmp_h0.sortKeyName().clone(), + search: _dt__update_hsearch_h0.clone(), + attributeActionsOnEncrypt: _dt__update__tmp_h0.attributeActionsOnEncrypt().clone(), + allowedUnsignedAttributes: _dt__update__tmp_h0.allowedUnsignedAttributes().clone(), + allowedUnsignedAttributePrefix: _dt__update__tmp_h0.allowedUnsignedAttributePrefix().clone(), + algorithmSuiteId: _dt__update__tmp_h0.algorithmSuiteId().clone(), + keyring: _dt__update__tmp_h0.keyring().clone(), + cmm: _dt__update__tmp_h0.cmm().clone(), + legacyOverride: _dt__update__tmp_h0.legacyOverride().clone(), + plaintextOverride: _dt__update__tmp_h0.plaintextOverride().clone() + }); + let mut valueOrError0: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&config, &version, &src); + valueOrError0 = _out2.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + let mut beaconVersion: ValidBeaconVersion = valueOrError0.Extract(); + let mut queryInput: Arc = Arc::new(QueryInput::QueryInput { + TableName: string_utf16_of("SomeTable"), + IndexName: Arc::new(Option::>::None {}), + Select: Arc::new(Option::>::None {}), + AttributesToGet: Arc::new(Option::::None {}), + Limit: Arc::new(Option::::None {}), + ConsistentRead: Arc::new(Option::::None {}), + KeyConditions: Arc::new(Option::, Arc>>::None {}), + QueryFilter: Arc::new(Option::, Arc>>::None {}), + ConditionalOperator: Arc::new(Option::>::None {}), + ScanIndexForward: Arc::new(Option::::None {}), + ExclusiveStartKey: Arc::new(Option::, Arc>>::None {}), + ReturnConsumedCapacity: Arc::new(Option::>::None {}), + ProjectionExpression: Arc::new(Option::>::None {}), + FilterExpression: Arc::new(Option::>::None {}), + KeyConditionExpression: Arc::new(Option::>::Some { + value: string_utf16_of("NameTitle = :nt") + }), + ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), + ExpressionAttributeValues: Arc::new(Option::, Arc>>::Some { + value: map![(string_utf16_of(":nt")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("N_MyName.T_MyTitle") + }))] + }) + }); + let mut res: Arc>>; + let mut _out3: Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::GetNumberOfQueries(&beaconVersion, &queryInput); + res = _out3.clone(); + if !matches!((&res).as_ref(), Success{ .. }) { + panic!("Halt") + }; + let mut _e00: PartitionCount = res.value().clone(); + let mut _e10: i32 = 15; + if !(_e00 == _e10) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e00)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e10)); + panic!("Halt") + }; + let mut queryInput2: Arc = Arc::new(QueryInput::QueryInput { + TableName: string_utf16_of("SomeTable"), + IndexName: Arc::new(Option::>::None {}), + Select: Arc::new(Option::>::None {}), + AttributesToGet: Arc::new(Option::::None {}), + Limit: Arc::new(Option::::None {}), + ConsistentRead: Arc::new(Option::::None {}), + KeyConditions: Arc::new(Option::, Arc>>::None {}), + QueryFilter: Arc::new(Option::, Arc>>::None {}), + ConditionalOperator: Arc::new(Option::>::None {}), + ScanIndexForward: Arc::new(Option::::None {}), + ExclusiveStartKey: Arc::new(Option::, Arc>>::None {}), + ReturnConsumedCapacity: Arc::new(Option::>::None {}), + ProjectionExpression: Arc::new(Option::>::None {}), + FilterExpression: Arc::new(Option::>::None {}), + KeyConditionExpression: Arc::new(Option::>::Some { + value: string_utf16_of("NameTitle = :nt") + }), + ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), + ExpressionAttributeValues: Arc::new(Option::, Arc>>::Some { + value: map![(string_utf16_of(":nt")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("N_MyName") + }))] + }) + }); + let mut res2: Arc>>; + let mut _out4: Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::GetNumberOfQueries(&beaconVersion, &queryInput2); + res2 = _out4.clone(); + if !matches!((&res2).as_ref(), Success{ .. }) { + panic!("Halt") + }; + let mut _e01: PartitionCount = res2.value().clone(); + let mut _e11: i32 = 3; + if !(_e01 == _e11) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e01)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e11)); + panic!("Halt") + }; + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(509,3) + pub fn TestDefaultPartitionsWithoutMaxPartitionsFail() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut version: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::std2()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::None {}), + defaultNumberOfPartitions: Arc::new(Option::::Some { + value: 3 + }), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); + src = _out1.clone(); + let mut res: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(), &version, &src); + res = _out2.clone(); + if !matches!((&res).as_ref(), Failure{ .. }) { + panic!("Halt") + }; + crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::expect_equal::>(res.error(), &crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("Invalid defaultNumberOfPartitions specified, 3, must be 0 < defaultNumberOfPartitions < maximumNumberOfPartitions."))); + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(531,3) + pub fn TestBoundaryPartitionValues() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut beacon254: Arc = Arc::new(StandardBeacon::StandardBeacon { + name: string_utf16_of("std2"), + length: 24, + loc: Arc::new(Option::>::None {}), + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::Some { + value: 253 + }) + }); + let mut version255: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![beacon254.clone()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::Some { + value: 255 + }), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version255); + src = _out1.clone(); + let mut res: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(), &version255, &src); + res = _out2.clone(); + if !matches!((&res).as_ref(), Failure{ .. }) { + panic!("Halt") + }; + let mut beacon253: Arc = Arc::new(StandardBeacon::StandardBeacon { + name: string_utf16_of("std2"), + length: 24, + loc: Arc::new(Option::>::None {}), + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::Some { + value: 253 + }) + }); + let mut version254: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![beacon253.clone()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::Some { + value: 254 + }), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src1: Arc; + let mut _out3: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version254); + src1 = _out3.clone(); + let mut res1: Arc>>; + let mut _out4: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(), &version254, &src1); + res1 = _out4.clone(); + if !matches!((&res1).as_ref(), Success{ .. }) { + panic!("Halt") + }; + let mut beacon64: Arc = Arc::new(StandardBeacon::StandardBeacon { + name: string_utf16_of("std2"), + length: 24, + loc: Arc::new(Option::>::None {}), + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::Some { + value: 64 + }) + }); + let mut version128: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![beacon64.clone()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::Some { + value: 128 + }), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src2: Arc; + let mut _out5: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version128); + src2 = _out5.clone(); + let mut res2: Arc>>; + let mut _out6: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(), &version128, &src2); + res2 = _out6.clone(); + if !matches!((&res2).as_ref(), Success{ .. }) { + panic!("Halt") + }; + let mut config: Arc; + let mut _dt__update__tmp_h0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); + let mut _dt__update_hsearch_h0: Arc>> = Arc::new(Option::>::Some { + value: Arc::new(SearchConfig::SearchConfig { + versions: seq![version128.clone()], + writeVersion: 1 + }) + }); + config = Arc::new(DynamoDbTableEncryptionConfig::DynamoDbTableEncryptionConfig { + logicalTableName: _dt__update__tmp_h0.logicalTableName().clone(), + partitionKeyName: _dt__update__tmp_h0.partitionKeyName().clone(), + sortKeyName: _dt__update__tmp_h0.sortKeyName().clone(), + search: _dt__update_hsearch_h0.clone(), + attributeActionsOnEncrypt: _dt__update__tmp_h0.attributeActionsOnEncrypt().clone(), + allowedUnsignedAttributes: _dt__update__tmp_h0.allowedUnsignedAttributes().clone(), + allowedUnsignedAttributePrefix: _dt__update__tmp_h0.allowedUnsignedAttributePrefix().clone(), + algorithmSuiteId: _dt__update__tmp_h0.algorithmSuiteId().clone(), + keyring: _dt__update__tmp_h0.keyring().clone(), + cmm: _dt__update__tmp_h0.cmm().clone(), + legacyOverride: _dt__update__tmp_h0.legacyOverride().clone(), + plaintextOverride: _dt__update__tmp_h0.plaintextOverride().clone() + }); + let mut valueOrError0: Arc>>; + let mut _out7: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&config, &version128, &src2); + valueOrError0 = _out7.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + let mut bv: ValidBeaconVersion = valueOrError0.Extract(); + let mut queryInput: Arc = Arc::new(QueryInput::QueryInput { + TableName: string_utf16_of("SomeTable"), + IndexName: Arc::new(Option::>::None {}), + Select: Arc::new(Option::>::None {}), + AttributesToGet: Arc::new(Option::::None {}), + Limit: Arc::new(Option::::None {}), + ConsistentRead: Arc::new(Option::::None {}), + KeyConditions: Arc::new(Option::, Arc>>::None {}), + QueryFilter: Arc::new(Option::, Arc>>::None {}), + ConditionalOperator: Arc::new(Option::>::None {}), + ScanIndexForward: Arc::new(Option::::None {}), + ExclusiveStartKey: Arc::new(Option::, Arc>>::None {}), + ReturnConsumedCapacity: Arc::new(Option::>::None {}), + ProjectionExpression: Arc::new(Option::>::None {}), + FilterExpression: Arc::new(Option::>::None {}), + KeyConditionExpression: Arc::new(Option::>::Some { + value: string_utf16_of("std2 = :std2") + }), + ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), + ExpressionAttributeValues: Arc::new(Option::, Arc>>::Some { + value: map![(string_utf16_of(":std2")) => (crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Std2String())] + }) + }); + let mut qRes: Arc>>; + let mut _out8: Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::GetNumberOfQueries(&bv, &queryInput); + qRes = _out8.clone(); + if !matches!((&qRes).as_ref(), Success{ .. }) { + panic!("Halt") + }; + let mut _e00: PartitionCount = qRes.value().clone(); + let mut _e10: i32 = 64; + if !(_e00 == _e10) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e00)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e10)); + panic!("Halt") + }; + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(598,3) + pub fn TestBeaconPartitionEncoding() -> () { + let mut lotsaVersion: Arc; + let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); + lotsaVersion = _out0.clone(); + let mut partitionedVersion: Arc; + let mut _dt__update__tmp_h0: Arc = lotsaVersion.clone(); + let mut _dt__update_hdefaultNumberOfPartitions_h0: Arc> = Arc::new(Option::::Some { + value: 5 + }); + let mut _dt__update_hmaximumNumberOfPartitions_h0: Arc> = Arc::new(Option::::Some { + value: 10 + }); + partitionedVersion = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: _dt__update__tmp_h0.version().clone(), + keyStore: _dt__update__tmp_h0.keyStore().clone(), + keySource: _dt__update__tmp_h0.keySource().clone(), + standardBeacons: _dt__update__tmp_h0.standardBeacons().clone(), + compoundBeacons: _dt__update__tmp_h0.compoundBeacons().clone(), + virtualFields: _dt__update__tmp_h0.virtualFields().clone(), + encryptedParts: _dt__update__tmp_h0.encryptedParts().clone(), + signedParts: _dt__update__tmp_h0.signedParts().clone(), + maximumNumberOfPartitions: _dt__update_hmaximumNumberOfPartitions_h0.clone(), + defaultNumberOfPartitions: _dt__update_hdefaultNumberOfPartitions_h0.clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() + }); + let mut src: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &partitionedVersion); + src = _out1.clone(); + let mut config: Arc; + let mut _dt__update__tmp_h1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); + let mut _dt__update_hsearch_h0: Arc>> = Arc::new(Option::>::Some { + value: Arc::new(SearchConfig::SearchConfig { + versions: seq![partitionedVersion.clone()], + writeVersion: 1 + }) + }); + config = Arc::new(DynamoDbTableEncryptionConfig::DynamoDbTableEncryptionConfig { + logicalTableName: _dt__update__tmp_h1.logicalTableName().clone(), + partitionKeyName: _dt__update__tmp_h1.partitionKeyName().clone(), + sortKeyName: _dt__update__tmp_h1.sortKeyName().clone(), + search: _dt__update_hsearch_h0.clone(), + attributeActionsOnEncrypt: _dt__update__tmp_h1.attributeActionsOnEncrypt().clone(), + allowedUnsignedAttributes: _dt__update__tmp_h1.allowedUnsignedAttributes().clone(), + allowedUnsignedAttributePrefix: _dt__update__tmp_h1.allowedUnsignedAttributePrefix().clone(), + algorithmSuiteId: _dt__update__tmp_h1.algorithmSuiteId().clone(), + keyring: _dt__update__tmp_h1.keyring().clone(), + cmm: _dt__update__tmp_h1.cmm().clone(), + legacyOverride: _dt__update__tmp_h1.legacyOverride().clone(), + plaintextOverride: _dt__update__tmp_h1.plaintextOverride().clone() + }); + let mut valueOrError0: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&config, &partitionedVersion, &src); + valueOrError0 = _out2.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + let mut bv: Arc = valueOrError0.Extract(); + let mut valueOrError1: Arc, Arc>, Arc>>; + let mut _out3: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); + valueOrError1 = _out3.clone(); + if !(!valueOrError1.IsFailure()) { + panic!("Halt") + }; + let mut attrs0: Map, Arc> = valueOrError1.Extract(); + let mut valueOrError2: Arc, Arc>, Arc>>; + let mut _out4: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {}), 1); + valueOrError2 = _out4.clone(); + if !(!valueOrError2.IsFailure()) { + panic!("Halt") + }; + let mut attrs1: Map, Arc> = valueOrError2.Extract(); + if !attrs0.contains(&string_utf16_of("aws_dbe_b_Name")) { + panic!("Halt") + }; + if !attrs1.contains(&string_utf16_of("aws_dbe_b_Name")) { + panic!("Halt") + }; + if !matches!((&attrs0.get(&string_utf16_of("aws_dbe_b_Name"))).as_ref(), S{ .. }) { + panic!("Halt") + }; + if !matches!((&attrs1.get(&string_utf16_of("aws_dbe_b_Name"))).as_ref(), S{ .. }) { + panic!("Halt") + }; + if !(attrs0.get(&string_utf16_of("aws_dbe_b_Name")) != attrs1.get(&string_utf16_of("aws_dbe_b_Name"))) { + panic!("Halt") + }; + let mut noPartVersion: Arc; + let mut _out5: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); + noPartVersion = _out5.clone(); + let mut noPartSrc: Arc; + let mut _out6: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &noPartVersion); + noPartSrc = _out6.clone(); + let mut valueOrError3: Arc>>; + let mut _out7: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(), &noPartVersion, &noPartSrc); + valueOrError3 = _out7.clone(); + if !(!valueOrError3.IsFailure()) { + panic!("Halt") + }; + let mut noPartBv: Arc = valueOrError3.Extract(); + let mut valueOrError4: Arc, Arc>, Arc>>; + let mut _out8: Arc, Arc>, Arc>> = noPartBv.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); + valueOrError4 = _out8.clone(); + if !(!valueOrError4.IsFailure()) { + panic!("Halt") + }; + let mut noPartAttrs: Map, Arc> = valueOrError4.Extract(); + if !noPartAttrs.contains(&string_utf16_of("aws_dbe_b_Name")) { + panic!("Halt") + }; + let mut _e00: Arc = attrs0.get(&string_utf16_of("aws_dbe_b_Name")); + let mut _e10: Arc = noPartAttrs.get(&string_utf16_of("aws_dbe_b_Name")); + 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/DynamoDbEncryption/test/BeaconPartition.dfy(632,3) + pub fn TestDefaultPartitionInheritance() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut unconstrainedBeacon: Arc = Arc::new(StandardBeacon::StandardBeacon { + name: string_utf16_of("std2"), + length: 24, + loc: Arc::new(Option::>::None {}), + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::None {}) + }); + let mut version: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![unconstrainedBeacon.clone()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::Some { + value: 10 + }), + defaultNumberOfPartitions: Arc::new(Option::::Some { + value: 3 + }), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); + src = _out1.clone(); + let mut config: Arc; + let mut _dt__update__tmp_h0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); + let mut _dt__update_hsearch_h0: Arc>> = Arc::new(Option::>::Some { + value: Arc::new(SearchConfig::SearchConfig { + versions: seq![version.clone()], + writeVersion: 1 + }) + }); + config = Arc::new(DynamoDbTableEncryptionConfig::DynamoDbTableEncryptionConfig { + logicalTableName: _dt__update__tmp_h0.logicalTableName().clone(), + partitionKeyName: _dt__update__tmp_h0.partitionKeyName().clone(), + sortKeyName: _dt__update__tmp_h0.sortKeyName().clone(), + search: _dt__update_hsearch_h0.clone(), + attributeActionsOnEncrypt: _dt__update__tmp_h0.attributeActionsOnEncrypt().clone(), + allowedUnsignedAttributes: _dt__update__tmp_h0.allowedUnsignedAttributes().clone(), + allowedUnsignedAttributePrefix: _dt__update__tmp_h0.allowedUnsignedAttributePrefix().clone(), + algorithmSuiteId: _dt__update__tmp_h0.algorithmSuiteId().clone(), + keyring: _dt__update__tmp_h0.keyring().clone(), + cmm: _dt__update__tmp_h0.cmm().clone(), + legacyOverride: _dt__update__tmp_h0.legacyOverride().clone(), + plaintextOverride: _dt__update__tmp_h0.plaintextOverride().clone() + }); + let mut valueOrError0: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&config, &version, &src); + valueOrError0 = _out2.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + let mut bv: ValidBeaconVersion = valueOrError0.Extract(); + let mut queryInput: Arc = Arc::new(QueryInput::QueryInput { + TableName: string_utf16_of("SomeTable"), + IndexName: Arc::new(Option::>::None {}), + Select: Arc::new(Option::>::None {}), + AttributesToGet: Arc::new(Option::::None {}), + Limit: Arc::new(Option::::None {}), + ConsistentRead: Arc::new(Option::::None {}), + KeyConditions: Arc::new(Option::, Arc>>::None {}), + QueryFilter: Arc::new(Option::, Arc>>::None {}), + ConditionalOperator: Arc::new(Option::>::None {}), + ScanIndexForward: Arc::new(Option::::None {}), + ExclusiveStartKey: Arc::new(Option::, Arc>>::None {}), + ReturnConsumedCapacity: Arc::new(Option::>::None {}), + ProjectionExpression: Arc::new(Option::>::None {}), + FilterExpression: Arc::new(Option::>::None {}), + KeyConditionExpression: Arc::new(Option::>::Some { + value: string_utf16_of("std2 = :std2") + }), + ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), + ExpressionAttributeValues: Arc::new(Option::, Arc>>::Some { + value: map![(string_utf16_of(":std2")) => (crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Std2String())] + }) + }); + let mut res: Arc>>; + let mut _out3: Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::GetNumberOfQueries(&bv, &queryInput); + res = _out3.clone(); + if !matches!((&res).as_ref(), Success{ .. }) { + panic!("Halt") + }; + let mut _e00: PartitionCount = res.value().clone(); + let mut _e10: i32 = 3; + if !(_e00 == _e10) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e00)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e10)); + panic!("Halt") + }; + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(665,3) + pub fn TestInvalidPartitionType() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut version: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::std2(), crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::NameB(), crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::TitleB()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::Some { + value: 5 + }), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); + src = _out1.clone(); + let mut valueOrError0: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(), &version, &src); + valueOrError0 = _out2.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + let mut bv: ValidBeaconVersion = valueOrError0.Extract(); + let mut valuesS: Map, Arc> = map![(string_utf16_of(":aws_dbe_partition")) => (Arc::new(AttributeValue::S { + S: string_utf16_of("2") + }))]; + let mut resS: Arc, Arc>>>, PartitionNumber), Arc>>; + let mut _out3: Arc, Arc>>>, PartitionNumber), Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::ExtractPartition(&bv, &Arc::new(Option::>::None {}), &Arc::new(Option::>::Some { + value: string_utf16_of("Name = :val") + }), &Arc::new(Option::, Sequence>>::None {}), &Arc::new(Option::, Arc>>::Some { + value: valuesS.clone() + }), crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig().attributeActionsOnEncrypt()); + resS = _out3.clone(); + if !matches!((&resS).as_ref(), Failure{ .. }) { + panic!("Halt") + }; + let mut valuesB: Map, Arc> = map![(string_utf16_of(":aws_dbe_partition")) => (Arc::new(AttributeValue::BOOL { + BOOL: true + }))]; + let mut resB: Arc, Arc>>>, PartitionNumber), Arc>>; + let mut _out4: Arc, Arc>>>, PartitionNumber), Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::ExtractPartition(&bv, &Arc::new(Option::>::None {}), &Arc::new(Option::>::Some { + value: string_utf16_of("Name = :val") + }), &Arc::new(Option::, Sequence>>::None {}), &Arc::new(Option::, Arc>>::Some { + value: valuesB.clone() + }), crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig().attributeActionsOnEncrypt()); + resB = _out4.clone(); + if !matches!((&resB).as_ref(), Failure{ .. }) { + panic!("Halt") + }; + return (); + } + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(692,3) + pub fn TestMissingBeaconAttributeWithPartitions() -> () { + let mut store: ValidStore; + let mut _out0: ValidStore = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetKeyStore(); + store = _out0.clone(); + let mut version: Arc = Arc::new(crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion::BeaconVersion { + version: 1, + keyStore: store.clone(), + keySource: Arc::new(BeaconKeySource::single { + single: Arc::new(SingleKeyStore::SingleKeyStore { + keyId: string_utf16_of("foo"), + cacheTTL: 42, + cache: Arc::new(Option::>::None {}), + partitionId: Arc::new(Option::>::None {}) + }) + }), + standardBeacons: seq![crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::NameB()], + compoundBeacons: Arc::new(Option::::None {}), + virtualFields: Arc::new(Option::::None {}), + encryptedParts: Arc::new(Option::::None {}), + signedParts: Arc::new(Option::::None {}), + maximumNumberOfPartitions: Arc::new(Option::::Some { + value: 5 + }), + defaultNumberOfPartitions: Arc::new(Option::::None {}), + partitionSelector: Arc::new(Option::>::None {}) + }); + let mut src: Arc; + let mut _out1: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLiteralSource(&seq![1, 2, 3, 4, 5], &version); + src = _out1.clone(); + let mut config: Arc; + let mut _dt__update__tmp_h0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(); + let mut _dt__update_hsearch_h0: Arc>> = Arc::new(Option::>::Some { + value: Arc::new(SearchConfig::SearchConfig { + versions: seq![version.clone()], + writeVersion: 1 + }) + }); + config = Arc::new(DynamoDbTableEncryptionConfig::DynamoDbTableEncryptionConfig { + logicalTableName: _dt__update__tmp_h0.logicalTableName().clone(), + partitionKeyName: _dt__update__tmp_h0.partitionKeyName().clone(), + sortKeyName: _dt__update__tmp_h0.sortKeyName().clone(), + search: _dt__update_hsearch_h0.clone(), + attributeActionsOnEncrypt: _dt__update__tmp_h0.attributeActionsOnEncrypt().clone(), + allowedUnsignedAttributes: _dt__update__tmp_h0.allowedUnsignedAttributes().clone(), + allowedUnsignedAttributePrefix: _dt__update__tmp_h0.allowedUnsignedAttributePrefix().clone(), + algorithmSuiteId: _dt__update__tmp_h0.algorithmSuiteId().clone(), + keyring: _dt__update__tmp_h0.keyring().clone(), + cmm: _dt__update__tmp_h0.cmm().clone(), + legacyOverride: _dt__update__tmp_h0.legacyOverride().clone(), + plaintextOverride: _dt__update__tmp_h0.plaintextOverride().clone() + }); + let mut valueOrError0: Arc>>; + let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&config, &version, &src); + valueOrError0 = _out2.clone(); + if !(!valueOrError0.IsFailure()) { + panic!("Halt") + }; + let mut bv: Arc = valueOrError0.Extract(); + let mut itemMissingName: Map, Arc> = map![(string_utf16_of("std2")) => (crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::Std2String()), (string_utf16_of("Title")) => (crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::TitleString())]; + let mut valueOrError1: Arc, Arc>, Arc>>; + let mut _out3: Arc, Arc>, Arc>> = bv.GenerateEncryptedBeacons(&itemMissingName, &Arc::new(MaybeKeyId::DontUseKeyId {}), 2); + valueOrError1 = _out3.clone(); + if !(!valueOrError1.IsFailure()) { + panic!("Halt") + }; + let mut attrs: Map, Arc> = valueOrError1.Extract(); + if !(!attrs.contains(&string_utf16_of("aws_dbe_b_Name"))) { + panic!("Halt") + }; + return (); + } + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(20,3) + #[test] + pub fn TestEmptyBeaconName() { + _default::TestEmptyBeaconName() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(41,3) + #[test] + pub fn TestUnicodeBeaconName() { + _default::TestUnicodeBeaconName() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(86,3) + #[test] + pub fn TestInvalidMaxNumberOfPartitionsConfigError() { + _default::TestInvalidMaxNumberOfPartitionsConfigError() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(126,3) + #[test] + pub fn TestConstrainedBeaconConfigErrorsNumPartitionsEqConstrainedBeaconPartionsFail() { + _default::TestConstrainedBeaconConfigErrorsNumPartitionsEqConstrainedBeaconPartionsFail() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(152,3) + #[test] + pub fn TestConstrainedBeaconPartitionGreaterThanMaxNumPartitionsFail() { + _default::TestConstrainedBeaconPartitionGreaterThanMaxNumPartitionsFail() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(178,3) + #[test] + pub fn TestConstrainedBeaconNumPartitionLessThanMaxNumPartitionsSucceed() { + _default::TestConstrainedBeaconNumPartitionLessThanMaxNumPartitionsSucceed() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(199,3) + #[test] + pub fn TestInvalidPartitionOnQuery() { + _default::TestInvalidPartitionOnQuery() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(237,3) + #[test] + pub fn TestLongAttributeNameForPartitionBeacon() { + _default::TestLongAttributeNameForPartitionBeacon() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(261,3) + #[test] + pub fn TestQueryMixedTableBeaconPartitions() { + _default::TestQueryMixedTableBeaconPartitions() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(311,3) + #[test] + pub fn TestNumberOfQueriesPartition1() { + _default::TestNumberOfQueriesPartition1() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(344,3) + #[test] + pub fn TestNumberOfQueriesPartition5() { + _default::TestNumberOfQueriesPartition5() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(378,3) + #[test] + pub fn TestNumberOfQueriesPartition25() { + _default::TestNumberOfQueriesPartition25() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(412,3) + #[test] + pub fn TestNumberOfQueriesWithMultipleBeaconsConfigured() { + _default::TestNumberOfQueriesWithMultipleBeaconsConfigured() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(466,3) + #[test] + pub fn TestNumberOfQueriesForCompoundBeacons() { + _default::TestNumberOfQueriesForCompoundBeacons() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(509,3) + #[test] + pub fn TestDefaultPartitionsWithoutMaxPartitionsFail() { + _default::TestDefaultPartitionsWithoutMaxPartitionsFail() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(531,3) + #[test] + pub fn TestBoundaryPartitionValues() { + _default::TestBoundaryPartitionValues() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(598,3) + #[test] + pub fn TestBeaconPartitionEncoding() { + _default::TestBeaconPartitionEncoding() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(632,3) + #[test] + pub fn TestDefaultPartitionInheritance() { + _default::TestDefaultPartitionInheritance() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(665,3) + #[test] + pub fn TestInvalidPartitionType() { + _default::TestInvalidPartitionType() + } + + /// dafny/DynamoDbEncryption/test/BeaconPartition.dfy(692,3) + #[test] + pub fn TestMissingBeaconAttributeWithPartitions() { + _default::TestMissingBeaconAttributeWithPartitions() + } +} /// dafny/DynamoDbEncryption/test/DDBSupport.dfy(7,1) pub mod _TestDDBSupport_Compile { pub use ::std::sync::Arc; @@ -139402,6 +143652,14 @@ pub mod _TestDDBSupport_Compile { pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::Condition; 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::ReturnConsumedCapacity; + pub use ::dafny_runtime::DafnyInt; + pub use ::dafny_runtime::integer_range; + pub use ::dafny_runtime::Zero; + pub use ::dafny_runtime::_System::nat; + pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::ValidSearchInfo; + 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::ScanTotalSegments; + pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::ScanSegment; pub struct _default {} @@ -139428,7 +143686,7 @@ pub mod _TestDDBSupport_Compile { let mut valueOrError1: Arc, Arc>, Arc>>; let mut _out3: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::AddSignedBeacons(&Arc::new(Option::>::Some { value: search.clone() - }), &crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem()); + }), &crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), 0); valueOrError1 = _out3.clone(); if !(!valueOrError1.IsFailure()) { panic!("Halt") @@ -139619,6 +143877,213 @@ pub mod _TestDDBSupport_Compile { result = valueOrError3.Extract(); return (); } + /// dafny/DynamoDbEncryption/test/DDBSupport.dfy(95,3) + pub fn TestValidateExpressionLength() -> () { + let mut _e00: Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::ValidateExpressionLength(&Arc::new(Option::>::None {}), &string_utf16_of("FilterExpression")); + let mut _e10: Arc>> = Arc::new(Result::>::Success { + value: true + }); + 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") + }; + let mut _e01: Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::ValidateExpressionLength(&Arc::new(Option::>::Some { + value: string_utf16_of("") + }), &string_utf16_of("FilterExpression")); + let mut _e11: Arc>> = Arc::new(Result::>::Success { + value: true + }); + if !(_e01.clone() == _e11.clone()) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e01)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e11)); + panic!("Halt") + }; + let mut _e02: Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::ValidateExpressionLength(&Arc::new(Option::>::Some { + value: string_utf16_of("a < :b") + }), &string_utf16_of("FilterExpression")); + let mut _e12: Arc>> = Arc::new(Result::>::Success { + value: true + }); + if !(_e02.clone() == _e12.clone()) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e02)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e12)); + panic!("Halt") + }; + let mut atLimit: Sequence = { + let _initializer = { + Arc::new(move |_v0: &DafnyInt| -> DafnyCharUTF16{ + DafnyCharUTF16(32 as u16) + }) + }; + integer_range(Zero::zero(), crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::MAX_EXPRESSION_LENGTH()).map(move |i| _initializer(&i)).collect::>() + }; + let mut _e03: DafnyInt = atLimit.cardinality(); + let mut _e13: nat = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::MAX_EXPRESSION_LENGTH(); + if !(_e03.clone() == _e13.clone()) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e03)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e13)); + panic!("Halt") + }; + let mut _e04: Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::ValidateExpressionLength(&Arc::new(Option::>::Some { + value: atLimit.clone() + }), &string_utf16_of("KeyConditionExpression")); + let mut _e14: Arc>> = Arc::new(Result::>::Success { + value: true + }); + if !(_e04.clone() == _e14.clone()) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e04)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e14)); + panic!("Halt") + }; + let mut overLimit: Sequence = { + let _initializer = { + Arc::new(move |_v1: &DafnyInt| -> DafnyCharUTF16{ + DafnyCharUTF16(32 as u16) + }) + }; + integer_range(Zero::zero(), crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::MAX_EXPRESSION_LENGTH() + int!(1)).map(move |i| _initializer(&i)).collect::>() + }; + let mut _e05: DafnyInt = overLimit.cardinality(); + let mut _e15: DafnyInt = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::MAX_EXPRESSION_LENGTH() + int!(1); + if !(_e05.clone() == _e15.clone()) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e05)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e15)); + panic!("Halt") + }; + let mut _e06: Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::ValidateExpressionLength(&Arc::new(Option::>::Some { + value: overLimit.clone() + }), &string_utf16_of("KeyConditionExpression")); + let mut _e16: Arc>> = Arc::new(Result::>::Failure { + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("KeyConditionExpression exceeds maximum length of 4096 characters.")) + }); + if !(_e06.clone() == _e16.clone()) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e06)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e16)); + panic!("Halt") + }; + let mut _e07: Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::ValidateExpressionLength(&Arc::new(Option::>::Some { + value: overLimit.clone() + }), &string_utf16_of("FilterExpression")); + let mut _e17: Arc>> = Arc::new(Result::>::Failure { + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("FilterExpression exceeds maximum length of 4096 characters.")) + }); + if !(_e07.clone() == _e17.clone()) { + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nLeft:\n"))); + print!("{}", DafnyPrintWrapper(&_e07)); + print!("{}", DafnyPrintWrapper(&string_utf16_of("\nRight:\n"))); + print!("{}", DafnyPrintWrapper(&_e17)); + panic!("Halt") + }; + return (); + } + /// dafny/DynamoDbEncryption/test/DDBSupport.dfy(125,3) + pub fn TestQueryInputForBeaconsRejectsLongKeyExpression() -> () { + let mut overLimit: Sequence = { + let _initializer = { + Arc::new(move |_v2: &DafnyInt| -> DafnyCharUTF16{ + DafnyCharUTF16(32 as u16) + }) + }; + integer_range(Zero::zero(), crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::MAX_EXPRESSION_LENGTH() + int!(1)).map(move |i| _initializer(&i)).collect::>() + }; + let mut queryInput: Arc = Arc::new(QueryInput::QueryInput { + TableName: string_utf16_of("SomeTable"), + IndexName: Arc::new(Option::>::None {}), + Select: Arc::new(Option::>::None {}), + AttributesToGet: Arc::new(Option::::None {}), + Limit: Arc::new(Option::::None {}), + ConsistentRead: Arc::new(Option::::None {}), + KeyConditions: Arc::new(Option::, Arc>>::None {}), + QueryFilter: Arc::new(Option::, Arc>>::None {}), + ConditionalOperator: Arc::new(Option::>::None {}), + ScanIndexForward: Arc::new(Option::::None {}), + ExclusiveStartKey: Arc::new(Option::, Arc>>::None {}), + ReturnConsumedCapacity: Arc::new(Option::>::None {}), + ProjectionExpression: Arc::new(Option::>::None {}), + FilterExpression: Arc::new(Option::>::None {}), + KeyConditionExpression: Arc::new(Option::>::Some { + value: overLimit.clone() + }), + ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), + ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}) + }); + let mut result: Arc, Arc>>; + let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::QueryInputForBeacons(&Arc::new(Option::::None {}), &map![], &queryInput); + result = _out0.clone(); + let mut _e00: Arc, Arc>> = result.clone(); + let mut _e10: Arc, Arc>> = Arc::new(Result::, Arc>::Failure { + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("KeyConditionExpression exceeds maximum length of 4096 characters.")) + }); + 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/DynamoDbEncryption/test/DDBSupport.dfy(136,3) + pub fn TestScanInputForBeaconsRejectsLongFilterExpression() -> () { + let mut overLimit: Sequence = { + let _initializer = { + Arc::new(move |_v3: &DafnyInt| -> DafnyCharUTF16{ + DafnyCharUTF16(32 as u16) + }) + }; + integer_range(Zero::zero(), crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::MAX_EXPRESSION_LENGTH() + int!(1)).map(move |i| _initializer(&i)).collect::>() + }; + let mut scanInput: Arc = Arc::new(ScanInput::ScanInput { + TableName: string_utf16_of("SomeTable"), + IndexName: Arc::new(Option::>::None {}), + AttributesToGet: Arc::new(Option::::None {}), + Limit: Arc::new(Option::::None {}), + Select: Arc::new(Option::>::None {}), + ScanFilter: Arc::new(Option::, Arc>>::None {}), + ConditionalOperator: Arc::new(Option::>::None {}), + ExclusiveStartKey: Arc::new(Option::, Arc>>::None {}), + ReturnConsumedCapacity: Arc::new(Option::>::None {}), + TotalSegments: Arc::new(Option::::None {}), + Segment: Arc::new(Option::::None {}), + ProjectionExpression: Arc::new(Option::>::None {}), + FilterExpression: Arc::new(Option::>::Some { + value: overLimit.clone() + }), + ExpressionAttributeNames: Arc::new(Option::, Sequence>>::None {}), + ExpressionAttributeValues: Arc::new(Option::, Arc>>::None {}), + ConsistentRead: Arc::new(Option::::None {}) + }); + let mut result: Arc, Arc>>; + let mut _out0: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBSupport_Compile::_default::ScanInputForBeacons(&Arc::new(Option::::None {}), &map![], &scanInput); + result = _out0.clone(); + let mut _e00: Arc, Arc>> = result.clone(); + let mut _e10: Arc, Arc>> = Arc::new(Result::, Arc>::Failure { + error: crate::implementation_from_dafny::_DynamoDbEncryptionUtil_Compile::_default::E(&string_utf16_of("FilterExpression exceeds maximum length of 4096 characters.")) + }); + 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/DynamoDbEncryption/test/DDBSupport.dfy(20,3) @@ -139632,6 +144097,24 @@ pub mod _TestDDBSupport_Compile { pub fn TestMulti() { _default::TestMulti() } + + /// dafny/DynamoDbEncryption/test/DDBSupport.dfy(95,3) + #[test] + pub fn TestValidateExpressionLength() { + _default::TestValidateExpressionLength() + } + + /// dafny/DynamoDbEncryption/test/DDBSupport.dfy(125,3) + #[test] + pub fn TestQueryInputForBeaconsRejectsLongKeyExpression() { + _default::TestQueryInputForBeaconsRejectsLongKeyExpression() + } + + /// dafny/DynamoDbEncryption/test/DDBSupport.dfy(136,3) + #[test] + pub fn TestScanInputForBeaconsRejectsLongFilterExpression() { + _default::TestScanInputForBeaconsRejectsLongFilterExpression() + } } /// dafny/DynamoDbEncryption/test/Virtual.dfy(7,1) pub mod _TestDdbVirtualFields_Compile { @@ -140469,6 +144952,7 @@ pub mod _TestDynamoDBConfigToInfo_Compile { pub use ::dafny_runtime::Sequence; pub use ::dafny_runtime::DafnyCharUTF16; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconStyle; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionCount; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::BeaconVersion; pub use crate::implementation_from_dafny::_SearchableEncryptionInfo_Compile::KeySource; pub use ::dafny_runtime::seq; @@ -140499,7 +144983,8 @@ pub mod _TestDynamoDBConfigToInfo_Compile { loc: Arc::new(Option::>::Some { value: string_utf16_of("std6[0]") }), - style: Arc::new(Option::>::None {}) + style: Arc::new(Option::>::None {}), + numberOfPartitions: Arc::new(Option::::None {}) }); let mut version: Arc; let mut _out0: Arc = crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::GetLotsaBeacons(); @@ -140518,7 +145003,10 @@ pub mod _TestDynamoDBConfigToInfo_Compile { compoundBeacons: _dt__update__tmp_h0.compoundBeacons().clone(), virtualFields: _dt__update__tmp_h0.virtualFields().clone(), encryptedParts: _dt__update__tmp_h0.encryptedParts().clone(), - signedParts: _dt__update__tmp_h0.signedParts().clone() + signedParts: _dt__update__tmp_h0.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut beaconVersion: Arc>>; let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(), &newBeacons, &src); @@ -140562,7 +145050,10 @@ pub mod _TestDynamoDBConfigToInfo_Compile { compoundBeacons: _dt__update__tmp_h0.compoundBeacons().clone(), virtualFields: _dt__update_hvirtualFields_h0.clone(), encryptedParts: _dt__update__tmp_h0.encryptedParts().clone(), - signedParts: _dt__update__tmp_h0.signedParts().clone() + signedParts: _dt__update__tmp_h0.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut beaconVersion: Arc>>; let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(), &newBeacons, &src); @@ -140602,7 +145093,10 @@ pub mod _TestDynamoDBConfigToInfo_Compile { compoundBeacons: _dt__update__tmp_h0.compoundBeacons().clone(), virtualFields: _dt__update_hvirtualFields_h0.clone(), encryptedParts: _dt__update__tmp_h0.encryptedParts().clone(), - signedParts: _dt__update__tmp_h0.signedParts().clone() + signedParts: _dt__update__tmp_h0.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h0.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h0.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h0.partitionSelector().clone() }); let mut beaconVersion: Arc>>; let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(), &newBeacons, &src); @@ -140664,7 +145158,10 @@ pub mod _TestDynamoDBConfigToInfo_Compile { compoundBeacons: _dt__update_hcompoundBeacons_h0.clone(), virtualFields: _dt__update__tmp_h1.virtualFields().clone(), encryptedParts: _dt__update__tmp_h1.encryptedParts().clone(), - signedParts: _dt__update__tmp_h1.signedParts().clone() + signedParts: _dt__update__tmp_h1.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h1.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h1.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h1.partitionSelector().clone() }); let mut beaconVersion: Arc>>; let mut _out2: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(), &newBeacons, &src); @@ -140684,7 +145181,10 @@ pub mod _TestDynamoDBConfigToInfo_Compile { compoundBeacons: _dt__update_hcompoundBeacons_h1.clone(), virtualFields: _dt__update__tmp_h2.virtualFields().clone(), encryptedParts: _dt__update__tmp_h2.encryptedParts().clone(), - signedParts: _dt__update__tmp_h2.signedParts().clone() + signedParts: _dt__update__tmp_h2.signedParts().clone(), + maximumNumberOfPartitions: _dt__update__tmp_h2.maximumNumberOfPartitions().clone(), + defaultNumberOfPartitions: _dt__update__tmp_h2.defaultNumberOfPartitions().clone(), + partitionSelector: _dt__update__tmp_h2.partitionSelector().clone() }); let mut _out3: Arc>> = crate::implementation_from_dafny::_SearchConfigToInfo_Compile::_default::ConvertVersionWithSource(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::FullTableConfig(), &newBeacons, &src); beaconVersion = _out3.clone(); @@ -140922,7 +145422,7 @@ pub mod _TestDynamoDBFilterExpr_Compile { }; let mut beaconVersion: ValidBeaconVersion = valueOrError0.Extract(); let mut valueOrError1: Arc, Arc>>; - let mut _out3: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out3: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); valueOrError1 = _out3.clone(); if !(!valueOrError1.IsFailure()) { panic!("Halt") @@ -141007,7 +145507,7 @@ pub mod _TestDynamoDBFilterExpr_Compile { print!("{}", DafnyPrintWrapper(&_e12)); panic!("Halt") }; - let mut valueOrError1: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::BeaconizeParsedExpr(&beaconVersion, &parsed, &int!(0), context.values().value(), context.names(), &Arc::new(MaybeKeyMap::DontUseKeys {}), &map![], &(seq![] as Sequence>)); + let mut valueOrError1: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::BeaconizeParsedExpr(&beaconVersion, &parsed, &int!(0), context.values().value(), context.names(), &Arc::new(MaybeKeyMap::DontUseKeys {}), &map![], 0, &(seq![] as Sequence>)); if !(!valueOrError1.IsFailure()) { panic!("Halt") }; @@ -141092,7 +145592,7 @@ pub mod _TestDynamoDBFilterExpr_Compile { print!("{}", DafnyPrintWrapper(&_e12)); panic!("Halt") }; - let mut newContext: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::BeaconizeParsedExpr(&beaconVersion, &parsed, &int!(0), context.values().value(), context.names(), &Arc::new(MaybeKeyMap::DontUseKeys {}), &map![], &(seq![] as Sequence>)); + let mut newContext: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::BeaconizeParsedExpr(&beaconVersion, &parsed, &int!(0), context.values().value(), context.names(), &Arc::new(MaybeKeyMap::DontUseKeys {}), &map![], 0, &(seq![] as Sequence>)); if !matches!((&newContext).as_ref(), Failure{ .. }) { panic!("Halt") }; @@ -141168,7 +145668,7 @@ pub mod _TestDynamoDBFilterExpr_Compile { }; let mut beaconVersion: Arc = valueOrError0.Extract(); let mut valueOrError1: Arc, Arc>>; - let mut _out3: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out3: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); valueOrError1 = _out3.clone(); if !(!valueOrError1.IsFailure()) { panic!("Halt") @@ -141186,7 +145686,7 @@ pub mod _TestDynamoDBFilterExpr_Compile { value: expectedNames.clone() })); let mut valueOrError2: Arc, Arc>, Arc>>; - let mut _out4: Arc, Arc>, Arc>> = beaconVersion.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {})); + let mut _out4: Arc, Arc>, Arc>> = beaconVersion.GenerateEncryptedBeacons(&crate::implementation_from_dafny::_BeaconTestFixtures_Compile::_default::SimpleItem(), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0); valueOrError2 = _out4.clone(); if !(!valueOrError2.IsFailure()) { panic!("Halt") @@ -141229,7 +145729,7 @@ pub mod _TestDynamoDBFilterExpr_Compile { }; let mut beaconVersion: ValidBeaconVersion = valueOrError0.Extract(); let mut newContext: Arc, Arc>>; - let mut _out3: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out3: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); newContext = _out3.clone(); if !matches!((&newContext).as_ref(), Failure{ .. }) { panic!("Halt") @@ -141253,7 +145753,7 @@ pub mod _TestDynamoDBFilterExpr_Compile { }), names: Arc::new(Option::, Sequence>>::None {}) }); - let mut _out4: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out4: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); newContext = _out4.clone(); if !matches!((&newContext).as_ref(), Failure{ .. }) { panic!("Halt") @@ -141279,7 +145779,7 @@ pub mod _TestDynamoDBFilterExpr_Compile { }), names: Arc::new(Option::, Sequence>>::None {}) }); - let mut _out5: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + let mut _out5: Arc, Arc>> = crate::implementation_from_dafny::_DynamoDBFilterExpr_Compile::_default::Beaconize(&beaconVersion, &context, &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); newContext = _out5.clone(); if !matches!((&newContext).as_ref(), Failure{ .. }) { panic!("Halt") @@ -142832,7 +147332,7 @@ pub mod _TestDynamoDBFilterExpr_Compile { value: values.clone() }), names: Arc::new(Option::, Sequence>>::None {}) - }), &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + }), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); valueOrError1 = _out12.clone(); if !(!valueOrError1.IsFailure()) { panic!("Halt") @@ -142863,7 +147363,7 @@ pub mod _TestDynamoDBFilterExpr_Compile { value: values.clone() }), names: Arc::new(Option::, Sequence>>::None {}) - }), &Arc::new(MaybeKeyId::DontUseKeyId {}), false); + }), &Arc::new(MaybeKeyId::DontUseKeyId {}), 0, false); valueOrError2 = _out13.clone(); if !(!valueOrError2.IsFailure()) { panic!("Halt") @@ -145047,15 +149547,15 @@ pub mod _TransactGetItemsTransform_Compile { output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: Arc::new(TransactGetItemsOutputTransformOutput::TransactGetItemsOutputTransformOutput { transformedOutput: { - let __pat_let76_0: Arc = input.sdkOutput().clone(); + let __pat_let82_0: Arc = input.sdkOutput().clone(); { - let _dt__update__tmp_h0: Arc = __pat_let76_0.clone(); + let _dt__update__tmp_h0: Arc = __pat_let82_0.clone(); { - let __pat_let77_0: Arc>>> = Arc::new(Option::>>::Some { + let __pat_let83_0: Arc>>> = Arc::new(Option::>>::Some { value: decryptedItems.clone() }); { - let _dt__update_hResponses_h0: Arc> = __pat_let77_0.clone(); + let _dt__update_hResponses_h0: Arc> = __pat_let83_0.clone(); Arc::new(TransactGetItemsOutput::TransactGetItemsOutput { ConsumedCapacity: _dt__update__tmp_h0.ConsumedCapacity().clone(), Responses: _dt__update_hResponses_h0.clone() @@ -145207,6 +149707,7 @@ pub mod _TransactWriteItemsTransform_Compile { pub use crate::implementation_from_dafny::_Wrappers_Compile::Option; pub use ::dafny_runtime::DafnyCharUTF16; pub use crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::TableConfig; + pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::internaldafny::types::PartitionNumber; pub use ::dafny_runtime::Map; pub use crate::implementation_from_dafny::software::amazon::cryptography::services::dynamodb::internaldafny::types::AttributeValue; pub use crate::implementation_from_dafny::software::amazon::cryptography::dbencryptionsdk::dynamodb::itemencryptor::internaldafny::types::EncryptItemOutput; @@ -145298,48 +149799,56 @@ pub mod _TransactWriteItemsTransform_Compile { return output.read(); }; let mut _v5: bool = valueOrError6.Extract(); - let mut valueOrError7: Arc, Arc>, Arc>>; - let mut _out1: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::AddSignedBeacons(&tableConfig, item.Put().value().Item()); + let mut valueOrError7: Arc>>; + let mut _out1: Arc>> = crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::GetRandomPartition(&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 _out2: Arc, Arc>> = IDynamoDbItemEncryptorClient::EncryptItem(rd!(tableConfig.itemEncryptor().clone()), &Arc::new(EncryptItemInput::EncryptItemInput { - plaintextItem: beaconItem.clone() - })); - encryptRes = _out2.clone(); - let mut valueOrError8: Arc, Arc>> = crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::MapError::>(&encryptRes); + let mut partition: PartitionNumber = valueOrError7.Extract(); + let mut valueOrError8: Arc, Arc>, Arc>>; + let mut _out2: Arc, Arc>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::AddSignedBeacons(&tableConfig, item.Put().value().Item(), partition); + valueOrError8 = _out2.clone(); if valueOrError8.IsFailure() { output = MaybePlacebo::from(valueOrError8.PropagateFailure::>()); return output.read(); }; - let mut encrypted: Arc = valueOrError8.Extract(); - let mut valueOrError9: Arc>>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetKeyIdFromHeader(&tableConfig, &encrypted); + let mut beaconItem: Map, Arc> = valueOrError8.Extract(); + let mut encryptRes: Arc, Arc>>; + let mut _out3: Arc, Arc>> = IDynamoDbItemEncryptorClient::EncryptItem(rd!(tableConfig.itemEncryptor().clone()), &Arc::new(EncryptItemInput::EncryptItemInput { + plaintextItem: beaconItem.clone() + })); + encryptRes = _out3.clone(); + let mut valueOrError9: Arc, Arc>> = crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::MapError::>(&encryptRes); if valueOrError9.IsFailure() { output = MaybePlacebo::from(valueOrError9.PropagateFailure::>()); return output.read(); }; - let mut keyId: Arc>> = valueOrError9.Extract(); - let mut valueOrError10: Arc, Arc>, Arc>>; - 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(); + let mut encrypted: Arc = valueOrError9.Extract(); + let mut valueOrError10: Arc>>, Arc>> = crate::implementation_from_dafny::_DynamoDbMiddlewareSupport_Compile::_default::GetKeyIdFromHeader(&tableConfig, &encrypted); if valueOrError10.IsFailure() { output = MaybePlacebo::from(valueOrError10.PropagateFailure::>()); return output.read(); }; - let mut beaconAttrs: Map, Arc> = valueOrError10.Extract(); + let mut keyId: Arc>> = valueOrError10.Extract(); + let mut valueOrError11: Arc, Arc>, Arc>>; + let mut _out4: 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), partition); + valueOrError11 = _out4.clone(); + if valueOrError11.IsFailure() { + output = MaybePlacebo::from(valueOrError11.PropagateFailure::>()); + return output.read(); + }; + let mut beaconAttrs: Map, Arc> = valueOrError11.Extract(); let mut put: Arc>> = Arc::new(Option::>::Some { value: { - let __pat_let78_0: Arc = item.Put().value().clone(); + let __pat_let84_0: Arc = item.Put().value().clone(); { - let _dt__update__tmp_h0: Arc = __pat_let78_0.clone(); + let _dt__update__tmp_h0: Arc = __pat_let84_0.clone(); { - let __pat_let79_0: Map, Arc> = encrypted.encryptedItem().merge(&beaconAttrs); + let __pat_let85_0: Map, Arc> = encrypted.encryptedItem().merge(&beaconAttrs); { - let _dt__update_hItem_h0: Map, Arc> = __pat_let79_0.clone(); + let _dt__update_hItem_h0: Map, Arc> = __pat_let85_0.clone(); Arc::new(Put::Put { Item: _dt__update_hItem_h0.clone(), TableName: _dt__update__tmp_h0.TableName().clone(), @@ -145367,21 +149876,21 @@ pub mod _TransactWriteItemsTransform_Compile { result = result.concat(&seq![item.clone()]); } } - let mut valueOrError11: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(input.sdkInput().TransactItems().cardinality() == result.cardinality(), &crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::E(&string_utf16_of(""))); - if valueOrError11.IsFailure() { - output = MaybePlacebo::from(valueOrError11.PropagateFailure::>()); + let mut valueOrError12: Arc>> = crate::implementation_from_dafny::_Wrappers_Compile::_default::Need::>(input.sdkInput().TransactItems().cardinality() == result.cardinality(), &crate::implementation_from_dafny::_DdbMiddlewareConfig_Compile::_default::E(&string_utf16_of(""))); + if valueOrError12.IsFailure() { + output = MaybePlacebo::from(valueOrError12.PropagateFailure::>()); return output.read(); }; output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: Arc::new(TransactWriteItemsInputTransformOutput::TransactWriteItemsInputTransformOutput { transformedInput: { - let __pat_let80_0: Arc = input.sdkInput().clone(); + let __pat_let86_0: Arc = input.sdkInput().clone(); { - let _dt__update__tmp_h2: Arc = __pat_let80_0.clone(); + let _dt__update__tmp_h2: Arc = __pat_let86_0.clone(); { - let __pat_let81_0: Sequence> = result.clone(); + let __pat_let87_0: Sequence> = result.clone(); { - let _dt__update_hTransactItems_h0: TransactWriteItemList = __pat_let81_0.clone(); + let _dt__update_hTransactItems_h0: TransactWriteItemList = __pat_let87_0.clone(); Arc::new(TransactWriteItemsInput::TransactWriteItemsInput { TransactItems: _dt__update_hTransactItems_h0.clone(), ReturnConsumedCapacity: _dt__update__tmp_h2.ReturnConsumedCapacity().clone(), @@ -145396,7 +149905,7 @@ pub mod _TransactWriteItemsTransform_Compile { })); return output.read(); } - /// dafny/DynamoDbEncryptionTransforms/src/TransactWriteItemsTransform.dfy(127,3) + /// dafny/DynamoDbEncryptionTransforms/src/TransactWriteItemsTransform.dfy(129,3) pub fn Output(config: &Arc, input: &Arc) -> Arc, Arc>> { let mut output: Arc, Arc>>; let mut finalResult: Arc = input.sdkOutput().clone(); @@ -146069,15 +150578,15 @@ pub mod _UpdateItemTransform_Compile { output = MaybePlacebo::from(Arc::new(Result::, Arc>::Success { value: Arc::new(UpdateItemOutputTransformOutput::UpdateItemOutputTransformOutput { transformedOutput: { - let __pat_let82_0: Arc = input.sdkOutput().clone(); + let __pat_let88_0: Arc = input.sdkOutput().clone(); { - let _dt__update__tmp_h0: Arc = __pat_let82_0.clone(); + let _dt__update__tmp_h0: Arc = __pat_let88_0.clone(); { - let __pat_let83_0: Arc, Arc>>> = Arc::new(Option::, Arc>>::Some { + let __pat_let89_0: Arc, Arc>>> = Arc::new(Option::, Arc>>::Some { value: item.clone() }); { - let _dt__update_hAttributes_h0: Arc, Arc>>> = __pat_let83_0.clone(); + let _dt__update_hAttributes_h0: Arc, Arc>>> = __pat_let89_0.clone(); Arc::new(UpdateItemOutput::UpdateItemOutput { Attributes: _dt__update_hAttributes_h0.clone(), ConsumedCapacity: _dt__update__tmp_h0.ConsumedCapacity().clone(), diff --git a/releases/rust/db_esdk/src/lib.rs b/releases/rust/db_esdk/src/lib.rs index 8f3b32d89e..5fabecb240 100644 --- a/releases/rust/db_esdk/src/lib.rs +++ b/releases/rust/db_esdk/src/lib.rs @@ -116,6 +116,8 @@ pub(crate) use crate::deps::aws_cryptography_primitives; pub(crate) mod implementation_from_dafny; pub(crate) use crate::deps::com_amazonaws_dynamodb::client::Client as DdbClient; pub(crate) use crate::deps::com_amazonaws_kms::client::Client as KmsClient; +pub(crate) use crate::implementation_from_dafny::_LocalCMC_Compile; +pub(crate) use crate::implementation_from_dafny::_StormTracker_Compile; pub(crate) use crate::implementation_from_dafny::_Wrappers_Compile; pub(crate) use crate::implementation_from_dafny::software; pub(crate) use crate::implementation_from_dafny::AesKdfCtr; @@ -125,8 +127,6 @@ pub(crate) use crate::implementation_from_dafny::ExternDigest; pub(crate) use crate::implementation_from_dafny::ExternRandom; pub(crate) use crate::implementation_from_dafny::Signature; pub(crate) use crate::implementation_from_dafny::Time; -pub(crate) use crate::implementation_from_dafny::_LocalCMC_Compile; -pub(crate) use crate::implementation_from_dafny::_StormTracker_Compile; pub(crate) use crate::implementation_from_dafny::ECDH; pub(crate) use crate::implementation_from_dafny::HMAC; pub(crate) use crate::implementation_from_dafny::UTF8; diff --git a/releases/rust/db_esdk/src/operation.rs b/releases/rust/db_esdk/src/operation.rs index 08ed85caf0..448a68e8b1 100644 --- a/releases/rust/db_esdk/src/operation.rs +++ b/releases/rust/db_esdk/src/operation.rs @@ -43,6 +43,9 @@ pub mod get_item_input_transform; /// Types for the `GetItemOutputTransform` operation. pub mod get_item_output_transform; +/// Types for the `GetNumberOfQueries` operation. +pub mod get_number_of_queries; + /// Types for the `PutItemInputTransform` operation. pub mod put_item_input_transform; diff --git a/releases/rust/db_esdk/src/operation/get_number_of_queries.rs b/releases/rust/db_esdk/src/operation/get_number_of_queries.rs new file mode 100644 index 0000000000..a0f6dfa307 --- /dev/null +++ b/releases/rust/db_esdk/src/operation/get_number_of_queries.rs @@ -0,0 +1,53 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +/// Orchestration and serialization glue logic for `GetNumberOfQueries`. +#[derive(::std::clone::Clone, ::std::default::Default, ::std::fmt::Debug)] +#[non_exhaustive] +pub struct GetNumberOfQueries; +impl GetNumberOfQueries { + /// Creates a new `GetNumberOfQueries` + pub fn new() -> Self { + Self + } + + pub(crate) async fn send( + client: &crate::client::Client, + input: crate::operation::get_number_of_queries::GetNumberOfQueriesInput, + ) -> ::std::result::Result< + crate::operation::get_number_of_queries::GetNumberOfQueriesOutput, + crate::types::error::Error, + > { + crate::validation::validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_Ptransforms_HGetNumberOfQueriesInput_for_DynamoDbEncryptionTransforms_GetNumberOfQueries(&input) + .map_err(crate::types::error::Error::wrap_validation_err)?; + let inner_input = + crate::conversions::get_number_of_queries::_get_number_of_queries_input::to_dafny( + input, + ); + let inner_result = + ::dafny_runtime::md!(client.dafny_client.clone()).GetNumberOfQueries(&inner_input); + if matches!( + inner_result.as_ref(), + crate::r#_Wrappers_Compile::Result::Success { .. } + ) { + Ok( + crate::conversions::get_number_of_queries::_get_number_of_queries_output::from_dafny(inner_result.value().clone()), + ) + } else { + Err(crate::conversions::error::from_dafny( + inner_result.error().clone(), + )) + } + } +} + +pub use crate::operation::get_number_of_queries::_get_number_of_queries_output::GetNumberOfQueriesOutput; + +pub use crate::operation::get_number_of_queries::_get_number_of_queries_input::GetNumberOfQueriesInput; + +pub(crate) mod _get_number_of_queries_output; + +pub(crate) mod _get_number_of_queries_input; + +/// Builders +pub mod builders; diff --git a/releases/rust/db_esdk/src/operation/get_number_of_queries/_get_number_of_queries_input.rs b/releases/rust/db_esdk/src/operation/get_number_of_queries/_get_number_of_queries_input.rs new file mode 100644 index 0000000000..5de362d2ce --- /dev/null +++ b/releases/rust/db_esdk/src/operation/get_number_of_queries/_get_number_of_queries_input.rs @@ -0,0 +1,67 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +#[non_exhaustive] +#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)] +#[allow(missing_docs)] +pub struct GetNumberOfQueriesInput { + #[allow(missing_docs)] + pub input: ::std::option::Option, +} +impl GetNumberOfQueriesInput { + #[allow(missing_docs)] + pub fn input(&self) -> &::std::option::Option { + &self.input + } +} +impl GetNumberOfQueriesInput { + /// Creates a new builder-style object to manufacture [`GetNumberOfQueriesInput`](crate::operation::get_number_of_queries::builders::GetNumberOfQueriesInput). + pub fn builder( + ) -> crate::operation::get_number_of_queries::builders::GetNumberOfQueriesInputBuilder { + crate::operation::get_number_of_queries::builders::GetNumberOfQueriesInputBuilder::default() + } +} + +/// A builder for [`GetNumberOfQueriesInput`](crate::operation::operation::GetNumberOfQueriesInput). +#[non_exhaustive] +#[derive( + ::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug, +)] +pub struct GetNumberOfQueriesInputBuilder { + pub(crate) input: ::std::option::Option, +} +impl GetNumberOfQueriesInputBuilder { + #[allow(missing_docs)] + pub fn input( + mut self, + input: impl ::std::convert::Into, + ) -> Self { + self.input = ::std::option::Option::Some(input.into()); + self + } + #[allow(missing_docs)] + pub fn set_input( + mut self, + input: ::std::option::Option, + ) -> Self { + self.input = input; + self + } + #[allow(missing_docs)] + pub fn get_input( + &self, + ) -> &::std::option::Option { + &self.input + } + /// Consumes the builder and constructs a [`GetNumberOfQueriesInput`](crate::operation::operation::GetNumberOfQueriesInput). + pub fn build( + self, + ) -> ::std::result::Result< + crate::operation::get_number_of_queries::GetNumberOfQueriesInput, + ::aws_smithy_types::error::operation::BuildError, + > { + ::std::result::Result::Ok( + crate::operation::get_number_of_queries::GetNumberOfQueriesInput { input: self.input }, + ) + } +} diff --git a/releases/rust/db_esdk/src/operation/get_number_of_queries/_get_number_of_queries_output.rs b/releases/rust/db_esdk/src/operation/get_number_of_queries/_get_number_of_queries_output.rs new file mode 100644 index 0000000000..0513f1c411 --- /dev/null +++ b/releases/rust/db_esdk/src/operation/get_number_of_queries/_get_number_of_queries_output.rs @@ -0,0 +1,68 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +#[non_exhaustive] +#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)] +#[allow(missing_docs)] +pub struct GetNumberOfQueriesOutput { + #[allow(missing_docs)] + pub number_of_queries: ::std::option::Option<::std::primitive::i32>, +} +impl GetNumberOfQueriesOutput { + #[allow(missing_docs)] + pub fn number_of_queries(&self) -> &::std::option::Option<::std::primitive::i32> { + &self.number_of_queries + } +} +impl GetNumberOfQueriesOutput { + /// Creates a new builder-style object to manufacture [`GetNumberOfQueriesOutput`](crate::operation::get_number_of_queries::builders::GetNumberOfQueriesOutput). + pub fn builder( + ) -> crate::operation::get_number_of_queries::builders::GetNumberOfQueriesOutputBuilder { + crate::operation::get_number_of_queries::builders::GetNumberOfQueriesOutputBuilder::default( + ) + } +} + +/// A builder for [`GetNumberOfQueriesOutput`](crate::operation::operation::GetNumberOfQueriesOutput). +#[non_exhaustive] +#[derive( + ::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug, +)] +pub struct GetNumberOfQueriesOutputBuilder { + pub(crate) number_of_queries: ::std::option::Option<::std::primitive::i32>, +} +impl GetNumberOfQueriesOutputBuilder { + #[allow(missing_docs)] + pub fn number_of_queries( + mut self, + input: impl ::std::convert::Into<::std::primitive::i32>, + ) -> Self { + self.number_of_queries = ::std::option::Option::Some(input.into()); + self + } + #[allow(missing_docs)] + pub fn set_number_of_queries( + mut self, + input: ::std::option::Option<::std::primitive::i32>, + ) -> Self { + self.number_of_queries = input; + self + } + #[allow(missing_docs)] + pub fn get_number_of_queries(&self) -> &::std::option::Option<::std::primitive::i32> { + &self.number_of_queries + } + /// Consumes the builder and constructs a [`GetNumberOfQueriesOutput`](crate::operation::operation::GetNumberOfQueriesOutput). + pub fn build( + self, + ) -> ::std::result::Result< + crate::operation::get_number_of_queries::GetNumberOfQueriesOutput, + ::aws_smithy_types::error::operation::BuildError, + > { + ::std::result::Result::Ok( + crate::operation::get_number_of_queries::GetNumberOfQueriesOutput { + number_of_queries: self.number_of_queries, + }, + ) + } +} diff --git a/releases/rust/db_esdk/src/operation/get_number_of_queries/builders.rs b/releases/rust/db_esdk/src/operation/get_number_of_queries/builders.rs new file mode 100644 index 0000000000..5ee3b97f55 --- /dev/null +++ b/releases/rust/db_esdk/src/operation/get_number_of_queries/builders.rs @@ -0,0 +1,91 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +pub use crate::operation::get_number_of_queries::_get_number_of_queries_output::GetNumberOfQueriesOutputBuilder; + +pub use crate::operation::get_number_of_queries::_get_number_of_queries_input::GetNumberOfQueriesInputBuilder; + +impl GetNumberOfQueriesInputBuilder { + /// Sends a request with this input using the given client. + pub async fn send_with( + self, + client: &crate::client::Client, + ) -> ::std::result::Result< + crate::operation::get_number_of_queries::GetNumberOfQueriesOutput, + crate::types::error::Error, + > { + let mut fluent_builder = client.get_number_of_queries(); + fluent_builder.inner = self; + fluent_builder.send().await + } +} +/// Fluent builder constructing a request to `GetNumberOfQueries`. +/// +/// Return the necessary number of query operations for this query, based on partition usage. +#[derive(::std::clone::Clone, ::std::fmt::Debug)] +pub struct GetNumberOfQueriesFluentBuilder { + client: crate::client::Client, + pub(crate) inner: + crate::operation::get_number_of_queries::builders::GetNumberOfQueriesInputBuilder, +} +impl GetNumberOfQueriesFluentBuilder { + /// Creates a new `GetNumberOfQueries`. + pub(crate) fn new(client: crate::client::Client) -> Self { + Self { + client, + inner: ::std::default::Default::default(), + } + } + /// Access the GetNumberOfQueries as a reference. + pub fn as_input( + &self, + ) -> &crate::operation::get_number_of_queries::builders::GetNumberOfQueriesInputBuilder { + &self.inner + } + /// Sends the request and returns the response. + pub async fn send( + self, + ) -> ::std::result::Result< + crate::operation::get_number_of_queries::GetNumberOfQueriesOutput, + crate::types::error::Error, + > { + let input = self + .inner + .build() + // Using Opaque since we don't have a validation-specific error yet. + // Operations' models don't declare their own validation error, + // and smithy-rs seems to not generate a ValidationError case unless there is. + // Vanilla smithy-rs uses SdkError::construction_failure, but we aren't using SdkError. + .map_err(|mut e| { + let msg = format!("{:?}", e); + crate::types::error::Error::OpaqueWithText { + obj: ::dafny_runtime::Object::from_ref(&mut e as &mut ::dafny_runtime::DynAny), + objMessage: msg, + } + })?; + crate::operation::get_number_of_queries::GetNumberOfQueries::send(&self.client, input).await + } + + #[allow(missing_docs)] + pub fn input( + mut self, + input: impl ::std::convert::Into, + ) -> Self { + self.inner = self.inner.input(input.into()); + self + } + #[allow(missing_docs)] + pub fn set_input( + mut self, + input: ::std::option::Option, + ) -> Self { + self.inner = self.inner.set_input(input); + self + } + #[allow(missing_docs)] + pub fn get_input( + &self, + ) -> &::std::option::Option { + self.inner.get_input() + } +} diff --git a/releases/rust/db_esdk/src/types.rs b/releases/rust/db_esdk/src/types.rs index 0fe6309cbe..08ca83bada 100644 --- a/releases/rust/db_esdk/src/types.rs +++ b/releases/rust/db_esdk/src/types.rs @@ -63,6 +63,10 @@ mod _get_item_output_transform_input; pub use crate::types::_get_item_output_transform_input::GetItemOutputTransformInput; mod _get_item_output_transform_output; pub use crate::types::_get_item_output_transform_output::GetItemOutputTransformOutput; +mod _get_number_of_queries_input; +pub use crate::types::_get_number_of_queries_input::GetNumberOfQueriesInput; +mod _get_number_of_queries_output; +pub use crate::types::_get_number_of_queries_output::GetNumberOfQueriesOutput; mod _put_item_input_transform_input; pub use crate::types::_put_item_input_transform_input::PutItemInputTransformInput; mod _put_item_input_transform_output; diff --git a/releases/rust/db_esdk/src/types/_get_number_of_queries_input.rs b/releases/rust/db_esdk/src/types/_get_number_of_queries_input.rs new file mode 100644 index 0000000000..a83ba68743 --- /dev/null +++ b/releases/rust/db_esdk/src/types/_get_number_of_queries_input.rs @@ -0,0 +1,64 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +#[non_exhaustive] +#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)] +#[allow(missing_docs)] +pub struct GetNumberOfQueriesInput { + #[allow(missing_docs)] + pub input: ::std::option::Option, +} +impl GetNumberOfQueriesInput { + #[allow(missing_docs)] + pub fn input(&self) -> &::std::option::Option { + &self.input + } +} +impl GetNumberOfQueriesInput { + /// Creates a new builder-style object to manufacture [`GetNumberOfQueriesInput`](crate::types::GetNumberOfQueriesInput). + pub fn builder() -> crate::types::builders::GetNumberOfQueriesInputBuilder { + crate::types::builders::GetNumberOfQueriesInputBuilder::default() + } +} + +/// A builder for [`GetNumberOfQueriesInput`](crate::types::GetNumberOfQueriesInput). +#[non_exhaustive] +#[derive( + ::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug, +)] +pub struct GetNumberOfQueriesInputBuilder { + pub(crate) input: ::std::option::Option, +} +impl GetNumberOfQueriesInputBuilder { + #[allow(missing_docs)] + pub fn input( + mut self, + input: impl ::std::convert::Into, + ) -> Self { + self.input = ::std::option::Option::Some(input.into()); + self + } + #[allow(missing_docs)] + pub fn set_input( + mut self, + input: ::std::option::Option, + ) -> Self { + self.input = input; + self + } + #[allow(missing_docs)] + pub fn get_input( + &self, + ) -> &::std::option::Option { + &self.input + } + /// Consumes the builder and constructs a [`GetNumberOfQueriesInput`](crate::types::GetNumberOfQueriesInput). + pub fn build( + self, + ) -> ::std::result::Result< + crate::types::GetNumberOfQueriesInput, + ::aws_smithy_types::error::operation::BuildError, + > { + ::std::result::Result::Ok(crate::types::GetNumberOfQueriesInput { input: self.input }) + } +} diff --git a/releases/rust/db_esdk/src/types/_get_number_of_queries_output.rs b/releases/rust/db_esdk/src/types/_get_number_of_queries_output.rs new file mode 100644 index 0000000000..d4d6aa540b --- /dev/null +++ b/releases/rust/db_esdk/src/types/_get_number_of_queries_output.rs @@ -0,0 +1,64 @@ +// Copyright Amazon.com Inc. or its affiliates. All Rights Reserved. +// SPDX-License-Identifier: Apache-2.0 +// Do not modify this file. This file is machine generated, and any changes to it will be overwritten. +#[non_exhaustive] +#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)] +#[allow(missing_docs)] +pub struct GetNumberOfQueriesOutput { + #[allow(missing_docs)] + pub number_of_queries: ::std::option::Option<::std::primitive::i32>, +} +impl GetNumberOfQueriesOutput { + #[allow(missing_docs)] + pub fn number_of_queries(&self) -> &::std::option::Option<::std::primitive::i32> { + &self.number_of_queries + } +} +impl GetNumberOfQueriesOutput { + /// Creates a new builder-style object to manufacture [`GetNumberOfQueriesOutput`](crate::types::GetNumberOfQueriesOutput). + pub fn builder() -> crate::types::builders::GetNumberOfQueriesOutputBuilder { + crate::types::builders::GetNumberOfQueriesOutputBuilder::default() + } +} + +/// A builder for [`GetNumberOfQueriesOutput`](crate::types::GetNumberOfQueriesOutput). +#[non_exhaustive] +#[derive( + ::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug, +)] +pub struct GetNumberOfQueriesOutputBuilder { + pub(crate) number_of_queries: ::std::option::Option<::std::primitive::i32>, +} +impl GetNumberOfQueriesOutputBuilder { + #[allow(missing_docs)] + pub fn number_of_queries( + mut self, + input: impl ::std::convert::Into<::std::primitive::i32>, + ) -> Self { + self.number_of_queries = ::std::option::Option::Some(input.into()); + self + } + #[allow(missing_docs)] + pub fn set_number_of_queries( + mut self, + input: ::std::option::Option<::std::primitive::i32>, + ) -> Self { + self.number_of_queries = input; + self + } + #[allow(missing_docs)] + pub fn get_number_of_queries(&self) -> &::std::option::Option<::std::primitive::i32> { + &self.number_of_queries + } + /// Consumes the builder and constructs a [`GetNumberOfQueriesOutput`](crate::types::GetNumberOfQueriesOutput). + pub fn build( + self, + ) -> ::std::result::Result< + crate::types::GetNumberOfQueriesOutput, + ::aws_smithy_types::error::operation::BuildError, + > { + ::std::result::Result::Ok(crate::types::GetNumberOfQueriesOutput { + number_of_queries: self.number_of_queries, + }) + } +} diff --git a/releases/rust/db_esdk/src/types/builders.rs b/releases/rust/db_esdk/src/types/builders.rs index 0f35787c6e..64237b2d64 100644 --- a/releases/rust/db_esdk/src/types/builders.rs +++ b/releases/rust/db_esdk/src/types/builders.rs @@ -57,6 +57,10 @@ pub use crate::types::_get_item_output_transform_input::GetItemOutputTransformIn pub use crate::types::_get_item_output_transform_output::GetItemOutputTransformOutputBuilder; +pub use crate::types::_get_number_of_queries_input::GetNumberOfQueriesInputBuilder; + +pub use crate::types::_get_number_of_queries_output::GetNumberOfQueriesOutputBuilder; + pub use crate::types::_put_item_input_transform_input::PutItemInputTransformInputBuilder; pub use crate::types::_put_item_input_transform_output::PutItemInputTransformOutputBuilder; diff --git a/releases/rust/db_esdk/src/validation.rs b/releases/rust/db_esdk/src/validation.rs index fe6fd7f7d0..52742912bb 100644 --- a/releases/rust/db_esdk/src/validation.rs +++ b/releases/rust/db_esdk/src/validation.rs @@ -148,6 +148,11 @@ pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HBeaconVersi validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HBeaconVersion_DsignedParts( &input.r#signed_parts, )?; + validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HBeaconVersion_DmaximumNumberOfPartitions(&input.r#maximum_number_of_partitions)?; + validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HBeaconVersion_DdefaultNumberOfPartitions(&input.r#default_number_of_partitions)?; + validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HBeaconVersion_DpartitionSelector( + &input.r#partition_selector, + )?; Ok(()) } pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HBeaconVersion_DcompoundBeacons( @@ -171,6 +176,22 @@ pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HBeaconVersi validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HCompoundBeaconList(input)?; Ok(()) } +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HBeaconVersion_DdefaultNumberOfPartitions( + input: &::std::option::Option<::std::primitive::i32>, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + if input.is_none() { + return ::std::result::Result::Ok(()); + } + let input = input.as_ref().unwrap(); + + if !(1..=255).contains(input) { + return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field( + "default_number_of_partitions", + "default_number_of_partitions failed to satisfy constraint: Member must be between 1 and 255, inclusive", + )); + } + Ok(()) +} pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HBeaconVersion_DencryptedParts( input: &::std::option::Option< ::std::vec::Vec< @@ -232,6 +253,33 @@ pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HBeaconVersi validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HKeyStoreReference(input)?; Ok(()) } +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HBeaconVersion_DmaximumNumberOfPartitions( + input: &::std::option::Option<::std::primitive::i32>, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + if input.is_none() { + return ::std::result::Result::Ok(()); + } + let input = input.as_ref().unwrap(); + + if !(1..=255).contains(input) { + return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field( + "maximum_number_of_partitions", + "maximum_number_of_partitions failed to satisfy constraint: Member must be between 1 and 255, inclusive", + )); + } + Ok(()) +} +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HBeaconVersion_DpartitionSelector( + 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(); + + validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HPartitionSelectorReference(input)?; + Ok(()) +} pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HBeaconVersion_DsignedParts( input: &::std::option::Option< ::std::vec::Vec, @@ -1354,6 +1402,11 @@ pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HMultiKeySto Ok(()) } +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HPartitionSelectorReference( + input: &crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::partition_selector::PartitionSelectorRef, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + Ok(()) +} pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HPartOnly( input: &crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::PartOnly, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { @@ -1642,6 +1695,9 @@ pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HStandardBea validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HStandardBeacon_Dlength(&input.r#length)?; validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HStandardBeacon_Dloc(&input.r#loc)?; validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HStandardBeacon_Dstyle(&input.r#style)?; + validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HStandardBeacon_DnumberOfPartitions( + &input.r#number_of_partitions, + )?; Ok(()) } pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HStandardBeacon_Dlength( @@ -1709,6 +1765,22 @@ pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HStandardBea Ok(()) } +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HStandardBeacon_DnumberOfPartitions( + input: &::std::option::Option<::std::primitive::i32>, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + if input.is_none() { + return ::std::result::Result::Ok(()); + } + let input = input.as_ref().unwrap(); + + if !(1..=255).contains(input) { + return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field( + "number_of_partitions", + "number_of_partitions failed to satisfy constraint: Member must be between 1 and 255, inclusive", + )); + } + Ok(()) +} pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_HStandardBeacon_Dstyle( input: &::std::option::Option< crate::deps::aws_cryptography_dbEncryptionSdk_dynamoDb::types::BeaconStyle, @@ -3047,6 +3119,73 @@ pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_Ptransforms_ validate_com_Pamazonaws_Pdynamodb_HGetItemOutput(input)?; Ok(()) } +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_Ptransforms_HGetNumberOfQueriesInput( + input: &crate::types::GetNumberOfQueriesInput, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_Ptransforms_HGetNumberOfQueriesInput_Dinput(&input.r#input)?; + Ok(()) +} +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_Ptransforms_HGetNumberOfQueriesInput_for_DynamoDbEncryptionTransforms_GetNumberOfQueries( + input: &crate::operation::get_number_of_queries::GetNumberOfQueriesInput, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_Ptransforms_HGetNumberOfQueriesInput_Dinput(&input.r#input)?; + Ok(()) +} +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_Ptransforms_HGetNumberOfQueriesInput_Dinput( + input: &::std::option::Option, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + if input.is_none() { + return ::std::result::Result::Err( + ::aws_smithy_types::error::operation::BuildError::missing_field( + "input", + "input is required but was not specified", + ), + ); + } + if input.is_none() { + return ::std::result::Result::Ok(()); + } + let input = input.as_ref().unwrap(); + + validate_com_Pamazonaws_Pdynamodb_HQueryInput(input)?; + Ok(()) +} +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_Ptransforms_HGetNumberOfQueriesOutput( + input: &crate::types::GetNumberOfQueriesOutput, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_Ptransforms_HGetNumberOfQueriesOutput_DnumberOfQueries(&input.r#number_of_queries)?; + Ok(()) +} +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_Ptransforms_HGetNumberOfQueriesOutput_for_DynamoDbEncryptionTransforms_GetNumberOfQueries( + input: &crate::operation::get_number_of_queries::GetNumberOfQueriesOutput, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_Ptransforms_HGetNumberOfQueriesOutput_DnumberOfQueries(&input.r#number_of_queries)?; + Ok(()) +} +pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_Ptransforms_HGetNumberOfQueriesOutput_DnumberOfQueries( + input: &::std::option::Option<::std::primitive::i32>, +) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> { + if input.is_none() { + return ::std::result::Result::Err( + ::aws_smithy_types::error::operation::BuildError::missing_field( + "number_of_queries", + "number_of_queries is required but was not specified", + ), + ); + } + if input.is_none() { + return ::std::result::Result::Ok(()); + } + let input = input.as_ref().unwrap(); + + if !(1..=255).contains(input) { + return ::std::result::Result::Err(::aws_smithy_types::error::operation::BuildError::invalid_field( + "number_of_queries", + "number_of_queries failed to satisfy constraint: Member must be between 1 and 255, inclusive", + )); + } + Ok(()) +} pub(crate) fn validate_aws_Pcryptography_PdbEncryptionSdk_PdynamoDb_Ptransforms_HPutItemInputTransformInput( input: &crate::types::PutItemInputTransformInput, ) -> ::std::result::Result<(), ::aws_smithy_types::error::operation::BuildError> {