Skip to content

Commit 12bbfbf

Browse files
authored
fix: support new input validation (#1518)
* fix: support new input validation
1 parent ffc67be commit 12bbfbf

24 files changed

+49
-43
lines changed

DynamoDbEncryption/runtimes/rust/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,5 @@ src/time.rs
3232
src/types
3333
src/types.rs
3434
src/uuid.rs
35+
src/validation.rs
3536
target

DynamoDbEncryption/runtimes/rust/Cargo.toml

+10-9
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name = "aws-db-esdk"
33
version = "0.1.1"
44
edition = "2021"
5-
rust-version = "1.80.0"
5+
rust-version = "1.81.0"
66
keywords = ["cryptography", "security", "dynamodb", "encryption", "client-side"]
77
license = "ISC AND (Apache-2.0 OR ISC)"
88
description = "aws-db-esdk is a library for implementing client side encryption with DynamoDB."
@@ -16,18 +16,19 @@ readme = "README.md"
1616
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
1717

1818
[dependencies]
19-
aws-config = "1.5.10"
20-
aws-lc-rs = "1.11.1"
21-
aws-lc-sys = "0.23.1"
22-
aws-sdk-dynamodb = "1.54.0"
23-
aws-sdk-kms = "1.50.0"
19+
aws-config = "1.5.11"
20+
aws-lc-rs = "1.12.0"
21+
aws-lc-sys = "0.22.0"
22+
aws-sdk-dynamodb = "1.56.0"
23+
aws-sdk-kms = "1.52.0"
2424
aws-smithy-runtime-api = {version = "1.7.3", features = ["client"] }
25-
aws-smithy-types = "1.2.9"
26-
chrono = "0.4.38"
25+
aws-smithy-types = "1.2.10"
26+
chrono = "0.4.39"
27+
cpu-time = "1.0.0"
2728
dafny-runtime = "0.1.1"
2829
dashmap = "6.1.0"
2930
pem = "3.0.4"
30-
tokio = {version = "1.41.1", features = ["full"] }
31+
tokio = {version = "1.42.0", features = ["full"] }
3132
uuid = { version = "1.11.0", features = ["v4"] }
3233

3334
[[example]]

DynamoDbEncryption/runtimes/rust/examples/basic_get_put_example.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ pub async fn put_item_get_item() -> Result<(), crate::BoxError> {
116116
// 5. Create a new AWS SDK DynamoDb client using the TableEncryptionConfigs
117117
let sdk_config = aws_config::load_defaults(aws_config::BehaviorVersion::latest()).await;
118118
let dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
119-
.interceptor(DbEsdkInterceptor::new(table_configs))
119+
.interceptor(DbEsdkInterceptor::new(table_configs)?)
120120
.build();
121121
let ddb = aws_sdk_dynamodb::Client::from_conf(dynamo_config);
122122

DynamoDbEncryption/runtimes/rust/examples/clientsupplier/client_supplier_example.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ pub async fn put_item_get_item() -> Result<(), crate::BoxError> {
123123
// 5. Create a new AWS SDK DynamoDb client using the DynamoDb Config above
124124
let sdk_config = aws_config::load_defaults(aws_config::BehaviorVersion::latest()).await;
125125
let dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
126-
.interceptor(DbEsdkInterceptor::new(table_configs))
126+
.interceptor(DbEsdkInterceptor::new(table_configs)?)
127127
.build();
128128
let ddb = aws_sdk_dynamodb::Client::from_conf(dynamo_config);
129129

@@ -215,7 +215,7 @@ pub async fn put_item_get_item() -> Result<(), crate::BoxError> {
215215
.build()?;
216216

217217
let only_replica_dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
218-
.interceptor(DbEsdkInterceptor::new(only_replica_table_configs))
218+
.interceptor(DbEsdkInterceptor::new(only_replica_table_configs)?)
219219
.build();
220220
let only_replica_ddb = aws_sdk_dynamodb::Client::from_conf(only_replica_dynamo_config);
221221

DynamoDbEncryption/runtimes/rust/examples/keyring/hierarchical_keyring.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ pub async fn put_item_get_item(
181181
// 7. Create a new AWS SDK DynamoDb client using the DynamoDb Encryption Interceptor above
182182
let sdk_config = aws_config::load_defaults(aws_config::BehaviorVersion::latest()).await;
183183
let dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
184-
.interceptor(DbEsdkInterceptor::new(table_configs))
184+
.interceptor(DbEsdkInterceptor::new(table_configs)?)
185185
.build();
186186
let ddb = aws_sdk_dynamodb::Client::from_conf(dynamo_config);
187187

DynamoDbEncryption/runtimes/rust/examples/keyring/kms_rsa_keyring.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ pub async fn put_item_get_item() -> Result<(), crate::BoxError> {
151151

152152
// 6. Create a new AWS SDK DynamoDb client using the DynamoDb Encryption Interceptor above
153153
let dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
154-
.interceptor(DbEsdkInterceptor::new(table_configs))
154+
.interceptor(DbEsdkInterceptor::new(table_configs)?)
155155
.build();
156156
let ddb = aws_sdk_dynamodb::Client::from_conf(dynamo_config);
157157

DynamoDbEncryption/runtimes/rust/examples/keyring/mrk_discovery_multi_keyring.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ pub async fn put_item_get_item() -> Result<(), crate::BoxError> {
115115
// 5. Create a new AWS SDK DynamoDb client using the config above
116116
let sdk_config = aws_config::load_defaults(aws_config::BehaviorVersion::latest()).await;
117117
let dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
118-
.interceptor(DbEsdkInterceptor::new(table_configs))
118+
.interceptor(DbEsdkInterceptor::new(table_configs)?)
119119
.build();
120120
let ddb = aws_sdk_dynamodb::Client::from_conf(dynamo_config);
121121

@@ -182,7 +182,7 @@ pub async fn put_item_get_item() -> Result<(), crate::BoxError> {
182182
.build()?;
183183

184184
let dynamo_config_for_decrypt = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
185-
.interceptor(DbEsdkInterceptor::new(table_configs_for_decrypt))
185+
.interceptor(DbEsdkInterceptor::new(table_configs_for_decrypt)?)
186186
.build();
187187
let ddb_for_decrypt = aws_sdk_dynamodb::Client::from_conf(dynamo_config_for_decrypt);
188188

DynamoDbEncryption/runtimes/rust/examples/keyring/multi_keyring.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@ pub async fn put_item_get_item() -> Result<(), crate::BoxError> {
148148
// 7. Create a new AWS SDK DynamoDb client using the config above
149149
let sdk_config = aws_config::load_defaults(aws_config::BehaviorVersion::latest()).await;
150150
let dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
151-
.interceptor(DbEsdkInterceptor::new(table_configs))
151+
.interceptor(DbEsdkInterceptor::new(table_configs)?)
152152
.build();
153153
let ddb = aws_sdk_dynamodb::Client::from_conf(dynamo_config);
154154

@@ -217,7 +217,7 @@ pub async fn put_item_get_item() -> Result<(), crate::BoxError> {
217217
.build()?;
218218

219219
let only_aes_dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
220-
.interceptor(DbEsdkInterceptor::new(only_aes_table_configs))
220+
.interceptor(DbEsdkInterceptor::new(only_aes_table_configs)?)
221221
.build();
222222
let only_aes_ddb = aws_sdk_dynamodb::Client::from_conf(only_aes_dynamo_config);
223223

DynamoDbEncryption/runtimes/rust/examples/keyring/multi_mrk_keyring.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,7 @@ pub async fn put_item_get_item() -> Result<(), crate::BoxError> {
136136
// 5. Create the DynamoDb Encryption Interceptor
137137
let sdk_config = aws_config::load_defaults(aws_config::BehaviorVersion::latest()).await;
138138
let dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
139-
.interceptor(DbEsdkInterceptor::new(table_configs))
139+
.interceptor(DbEsdkInterceptor::new(table_configs)?)
140140
.build();
141141
let ddb = aws_sdk_dynamodb::Client::from_conf(dynamo_config);
142142

@@ -218,7 +218,7 @@ pub async fn put_item_get_item() -> Result<(), crate::BoxError> {
218218
.build()?;
219219

220220
let only_replica_dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
221-
.interceptor(DbEsdkInterceptor::new(only_replica_table_configs))
221+
.interceptor(DbEsdkInterceptor::new(only_replica_table_configs)?)
222222
.build();
223223
let only_replica_ddb = aws_sdk_dynamodb::Client::from_conf(only_replica_dynamo_config);
224224

@@ -266,7 +266,7 @@ pub async fn put_item_get_item() -> Result<(), crate::BoxError> {
266266
.build()?;
267267

268268
let only_srk_dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
269-
.interceptor(DbEsdkInterceptor::new(only_srk_table_configs))
269+
.interceptor(DbEsdkInterceptor::new(only_srk_table_configs)?)
270270
.build();
271271
let only_srk_ddb = aws_sdk_dynamodb::Client::from_conf(only_srk_dynamo_config);
272272

DynamoDbEncryption/runtimes/rust/examples/keyring/raw_aes_keyring.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ pub async fn put_item_get_item() -> Result<(), crate::BoxError> {
113113
// 5. Create a new AWS SDK DynamoDb client using the Config above
114114
let sdk_config = aws_config::load_defaults(aws_config::BehaviorVersion::latest()).await;
115115
let dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
116-
.interceptor(DbEsdkInterceptor::new(table_configs))
116+
.interceptor(DbEsdkInterceptor::new(table_configs)?)
117117
.build();
118118
let ddb = aws_sdk_dynamodb::Client::from_conf(dynamo_config);
119119

DynamoDbEncryption/runtimes/rust/examples/keyring/raw_rsa_keyring.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ pub async fn put_item_get_item() -> Result<(), crate::BoxError> {
151151
// 6. Create a new AWS SDK DynamoDb client using the config above
152152
let sdk_config = aws_config::load_defaults(aws_config::BehaviorVersion::latest()).await;
153153
let dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
154-
.interceptor(DbEsdkInterceptor::new(table_configs))
154+
.interceptor(DbEsdkInterceptor::new(table_configs)?)
155155
.build();
156156
let ddb = aws_sdk_dynamodb::Client::from_conf(dynamo_config);
157157

DynamoDbEncryption/runtimes/rust/examples/multi_get_put_example.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ pub async fn multi_put_get() -> Result<(), crate::BoxError> {
116116
// 5. Create a new AWS SDK DynamoDb client using the TableEncryptionConfigs
117117
let sdk_config = aws_config::load_defaults(aws_config::BehaviorVersion::latest()).await;
118118
let dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
119-
.interceptor(DbEsdkInterceptor::new(table_configs))
119+
.interceptor(DbEsdkInterceptor::new(table_configs)?)
120120
.build();
121121
let ddb = aws_sdk_dynamodb::Client::from_conf(dynamo_config);
122122

DynamoDbEncryption/runtimes/rust/examples/searchableencryption/basic_searchable_encryption.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -249,7 +249,7 @@ pub async fn put_and_query_with_beacon(branch_key_id: &str) -> Result<(), crate:
249249
// 7. Create a new AWS SDK DynamoDb client using the TableEncryptionConfigs
250250
let sdk_config = aws_config::load_defaults(aws_config::BehaviorVersion::latest()).await;
251251
let dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
252-
.interceptor(DbEsdkInterceptor::new(table_configs))
252+
.interceptor(DbEsdkInterceptor::new(table_configs)?)
253253
.build();
254254
let ddb = aws_sdk_dynamodb::Client::from_conf(dynamo_config);
255255

DynamoDbEncryption/runtimes/rust/examples/searchableencryption/beacon_styles_searchable_encryption.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ pub async fn put_and_query_with_beacon(branch_key_id: &str) -> Result<(), crate:
268268

269269
// 10. Create a new AWS SDK DynamoDb client using the DynamoDb Config above
270270
let dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
271-
.interceptor(DbEsdkInterceptor::new(encryption_config))
271+
.interceptor(DbEsdkInterceptor::new(encryption_config)?)
272272
.build();
273273
let ddb = aws_sdk_dynamodb::Client::from_conf(dynamo_config);
274274

DynamoDbEncryption/runtimes/rust/examples/searchableencryption/complexexample/beacon_config.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,7 @@ pub async fn setup_beacon_config(
547547
// 13. Create a new AWS SDK DynamoDb client using the config above
548548
let sdk_config = aws_config::load_defaults(aws_config::BehaviorVersion::latest()).await;
549549
let dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
550-
.interceptor(DbEsdkInterceptor::new(table_configs))
550+
.interceptor(DbEsdkInterceptor::new(table_configs)?)
551551
.build();
552552

553553
Ok(aws_sdk_dynamodb::Client::from_conf(dynamo_config))

DynamoDbEncryption/runtimes/rust/examples/searchableencryption/compound_beacon_searchable_encryption.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,7 @@ pub async fn put_and_query_with_beacon(branch_key_id: &str) -> Result<(), crate:
260260

261261
// 12. Create a new AWS SDK DynamoDb client using the DynamoDb Encryption Interceptor above
262262
let dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
263-
.interceptor(DbEsdkInterceptor::new(encryption_config))
263+
.interceptor(DbEsdkInterceptor::new(encryption_config)?)
264264
.build();
265265
let ddb = aws_sdk_dynamodb::Client::from_conf(dynamo_config);
266266

DynamoDbEncryption/runtimes/rust/examples/searchableencryption/virtual_beacon_searchable_encryption.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -350,7 +350,7 @@ pub async fn put_and_query_with_beacon(branch_key_id: &str) -> Result<(), crate:
350350

351351
// 13. Create a new AWS SDK DynamoDb client using the DynamoDb Encryption Interceptor above
352352
let dynamo_config = aws_sdk_dynamodb::config::Builder::from(&sdk_config)
353-
.interceptor(DbEsdkInterceptor::new(encryption_config))
353+
.interceptor(DbEsdkInterceptor::new(encryption_config)?)
354354
.build();
355355
let ddb = aws_sdk_dynamodb::Client::from_conf(dynamo_config);
356356

DynamoDbEncryption/runtimes/rust/src/intercept.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -84,9 +84,9 @@ pub struct DbEsdkInterceptor {
8484
impl DbEsdkInterceptor {
8585
pub fn new(
8686
config: crate::types::dynamo_db_tables_encryption_config::DynamoDbTablesEncryptionConfig,
87-
) -> Self {
88-
let client = crate::client::Client::from_conf(config).unwrap(); // FIXME
89-
DbEsdkInterceptor { client }
87+
) -> Result<Self, crate::types::error::Error> {
88+
let client = crate::client::Client::from_conf(config)?;
89+
Ok(DbEsdkInterceptor { client })
9090
}
9191
}
9292

DynamoDbEncryption/runtimes/rust/src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -67,3 +67,4 @@ pub(crate) mod software_externs;
6767
pub(crate) mod storm_tracker;
6868
pub(crate) mod time;
6969
pub(crate) mod uuid;
70+
pub(crate) mod validation;

TestVectors/runtimes/rust/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,5 @@ src/types.rs
3636
src/uuid.rs
3737
src/wrapped
3838
src/wrapped.rs
39+
src/validation.rs
3940
target

TestVectors/runtimes/rust/Cargo.toml

+10-9
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,22 @@
22
name = "aws-db-esdk-test-vectors"
33
version = "0.1.0"
44
edition = "2021"
5-
rust-version = "1.80.0"
5+
rust-version = "1.81.0"
66

77
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
88

99
[dependencies]
10-
aws-config = "1.5.10"
11-
aws-lc-rs = "1.11.1"
12-
aws-lc-sys = "0.23.1"
13-
aws-sdk-dynamodb = "1.54.0"
14-
aws-sdk-kms = "1.50.0"
10+
aws-config = "1.5.11"
11+
aws-lc-rs = "1.12.0"
12+
aws-lc-sys = "0.22.0"
13+
aws-sdk-dynamodb = "1.56.0"
14+
aws-sdk-kms = "1.52.0"
1515
aws-smithy-runtime-api = {version = "1.7.3", features = ["client"] }
16-
aws-smithy-types = "1.2.9"
17-
chrono = "0.4.38"
16+
aws-smithy-types = "1.2.10"
17+
chrono = "0.4.39"
18+
cpu-time = "1.0.0"
1819
dafny_runtime = { path = "../../../submodules/MaterialProviders/smithy-dafny/TestModels/dafny-dependencies/dafny_runtime_rust"}
1920
dashmap = "6.1.0"
2021
pem = "3.0.4"
21-
tokio = {version = "1.41.1", features = ["full"] }
22+
tokio = {version = "1.42.0", features = ["full"] }
2223
uuid = { version = "1.11.0", features = ["v4"] }

TestVectors/runtimes/rust/src/lib.rs

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ pub mod error;
1212
/// All operations that this crate can perform.
1313
pub mod operation;
1414
pub mod types;
15+
pub mod validation;
1516

1617
#[cfg(feature = "wrapped-client")]
1718
pub mod wrapped;

submodules/smithy-dafny

0 commit comments

Comments
 (0)