1 + | 304402205e21d399153f879b0f32c38742d12941299467bfdc213224cc76a97acffd6ec6022035a9be37a38c19e98e5cfc536fabe885e82fbf999081234b364cab5cacff8733
|
\ | No newline at end of file
|
0 2 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/aws-signing-test-suite/v4a/post-x-www-form-urlencoded/query-signed-request.txt b/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/aws-signing-test-suite/v4a/post-x-www-form-urlencoded/query-signed-request.txt
|
1 3 | new file mode 100644
|
2 4 | index 0000000..71d6de9
|
3 - | -- /dev/null
|
5 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/aws-signing-test-suite/v4a/post-x-www-form-urlencoded/query-signed-request.txt
|
4 6 | @@ -0,0 +1,6 @@
|
7 + | POST /?X-Amz-Algorithm=AWS4-ECDSA-P256-SHA256&X-Amz-Credential=AKIDEXAMPLE%2F20150830%2Fservice%2Faws4_request&X-Amz-Date=20150830T123600Z&X-Amz-SignedHeaders=content-length%3Bcontent-type%3Bhost&X-Amz-Expires=3600&X-Amz-Region-Set=us-east-1&X-Amz-Signature=30450221008d8a6aa0bc3f651e6c14c52e9e24dbca58964641c9cb6e55169f9dc74766ae3d022016126756ce1523ac972f66f6bf6e981f44572d3c8916f1f43d428fb2caa0e1ea HTTP/1.1
|
8 + | Content-Type:application/x-www-form-urlencoded
|
9 + | Host:example.amazonaws.com
|
10 + | Content-Length:13
|
11 + |
|
12 + | Param1=value1
|
\ | No newline at end of file
|
5 13 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/aws-sig-v4a-test-suite/post-x-www-form-urlencoded/query-string-to-sign.txt b/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/aws-signing-test-suite/v4a/post-x-www-form-urlencoded/query-string-to-sign.txt
|
6 14 | similarity index 99%
|
7 15 | rename from tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/aws-sig-v4a-test-suite/post-x-www-form-urlencoded/query-string-to-sign.txt
|
8 16 | rename to tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/aws-signing-test-suite/v4a/post-x-www-form-urlencoded/query-string-to-sign.txt
|
9 17 | index bef3143..cc7a224 100644
|
10 18 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/aws-signing-test-suite/v4a/post-x-www-form-urlencoded/request.txt b/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/aws-signing-test-suite/v4a/post-x-www-form-urlencoded/request.txt
|
11 19 | new file mode 100644
|
12 20 | index 0000000..760b2d3
|
13 - | -- /dev/null
|
21 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/aws-signing-test-suite/v4a/post-x-www-form-urlencoded/request.txt
|
14 22 | @@ -0,0 +1,6 @@
|
23 + | POST / HTTP/1.1
|
24 + | Content-Type:application/x-www-form-urlencoded
|
25 + | Host:example.amazonaws.com
|
26 + | Content-Length:13
|
27 + |
|
28 + | Param1=value1
|
\ | No newline at end of file
|
15 29 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/http_request/canonical_request.rs b/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/http_request/canonical_request.rs
|
16 30 | index 9bd636f..b53f33f 100644
|
17 - | -- a/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/http_request/canonical_request.rs
|
31 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/http_request/canonical_request.rs
|
18 32 | @@ -346,67 +346,78 @@ impl CanonicalRequest<'_> {
|
19 33 | params.push((Cow::Borrowed(k), Cow::Borrowed(v)));
|
20 34 | }
|
21 35 |
|
22 36 | if let SignatureValues::QueryParams(values) = values {
|
23 37 | add_param(&mut params, param::X_AMZ_DATE, &values.date_time);
|
24 38 | add_param(&mut params, param::X_AMZ_EXPIRES, &values.expires);
|
25 39 |
|
26 40 | #[cfg(feature = "sigv4a")]
|
27 41 | if let Some(regions) = values.region_set {
|
28 42 | add_param(&mut params, sigv4a::param::X_AMZ_REGION_SET, regions);
|
29 43 | }
|
30 44 |
|
31 45 | add_param(&mut params, param::X_AMZ_ALGORITHM, values.algorithm);
|
32 46 | add_param(&mut params, param::X_AMZ_CREDENTIAL, &values.credential);
|
33 47 | add_param(
|
34 48 | &mut params,
|
35 49 | param::X_AMZ_SIGNED_HEADERS,
|
36 50 | values.signed_headers.as_str(),
|
37 51 | );
|
38 52 |
|
39 53 | if let Some(security_token) = values.security_token {
|
40 54 | add_param(
|
41 55 | &mut params,
|
42 56 | settings
|
43 57 | .session_token_name_override
|
44 58 | .unwrap_or(param::X_AMZ_SECURITY_TOKEN),
|
45 59 | security_token,
|
46 60 | );
|
47 61 | }
|
48 62 | }
|
49 - | // Sort by param name, and then by param value
|
63 + |
|
64 + | // Sort on the _encoded_ key/value pairs
|
65 + | let mut params: Vec<(String, String)> = params
|
66 + | .into_iter()
|
67 + | .map(|x| {
|
68 + | use aws_smithy_http::query::fmt_string;
|
69 + | let enc_k = fmt_string(&x.0);
|
70 + | let enc_v = fmt_string(&x.1);
|
71 + | (enc_k, enc_v)
|
72 + | })
|
73 + | .collect();
|
74 + |
|
50 75 | params.sort();
|
51 76 |
|
52 77 | let mut query = QueryWriter::new(uri);
|
53 78 | query.clear_params();
|
54 79 | for (key, value) in params {
|
55 - | query.insert(&key, &value);
|
80 + | query.insert_encoded(&key, &value);
|
56 81 | }
|
57 82 |
|
58 83 | let query = query.build_query();
|
59 84 | if query.is_empty() {
|
60 85 | None
|
61 86 | } else {
|
62 87 | Some(query)
|
63 88 | }
|
64 89 | }
|
65 90 |
|
66 91 | fn insert_host_header(
|
67 92 | canonical_headers: &mut HeaderMap<HeaderValue>,
|
68 93 | uri: &Uri,
|
69 94 | ) -> HeaderValue {
|
70 95 | match canonical_headers.get(&HOST) {
|
71 96 | Some(header) => header.clone(),
|
72 97 | None => {
|
73 98 | let port = uri.port();
|
74 99 | let scheme = uri.scheme();
|
75 100 | let authority = uri
|
76 101 | .authority()
|
77 102 | .expect("request uri authority must be set for signing")
|
78 103 | .as_str();
|
79 104 | let host = uri
|
80 105 | .host()
|
81 106 | .expect("request uri host must be set for signing");
|
82 107 |
|
83 108 | // Check if port is default (80 for HTTP, 443 for HTTPS) and if so exclude it from the
|
84 109 | // Host header when signing since RFC 2616 indicates that the default port should not be
|
85 110 | // sent in the Host header (and Hyper strips default ports if they are present)
|
86 111 | @@ -642,310 +653,320 @@ impl<'a> StringToSign<'a> {
|
87 112 | service,
|
88 113 | hashed_creq,
|
89 114 | signature_version: SignatureVersion::V4a,
|
90 115 | }
|
91 116 | }
|
92 117 | }
|
93 118 |
|
94 119 | impl fmt::Display for StringToSign<'_> {
|
95 120 | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
|
96 121 | write!(
|
97 122 | f,
|
98 123 | "{}\n{}\n{}\n{}",
|
99 124 | self.algorithm,
|
100 125 | format_date_time(self.time),
|
101 126 | match self.signature_version {
|
102 127 | SignatureVersion::V4 => self.scope.to_string(),
|
103 128 | SignatureVersion::V4a => self.scope.v4a_display(),
|
104 129 | },
|
105 130 | self.hashed_creq
|
106 131 | )
|
107 132 | }
|
108 133 | }
|
109 134 |
|
110 135 | #[cfg(test)]
|
111 136 | mod tests {
|
112 137 | use crate::date_time::test_parsers::parse_date_time;
|
113 138 | use crate::http_request::canonical_request::{
|
114 139 | normalize_header_value, trim_all, CanonicalRequest, SigningScope, StringToSign,
|
115 140 | };
|
116 141 | use crate::http_request::test;
|
142 + | use crate::http_request::test::SigningSuiteTest;
|
117 143 | use crate::http_request::{
|
118 144 | PayloadChecksumKind, SessionTokenMode, SignableBody, SignableRequest, SignatureLocation,
|
119 145 | SigningParams, SigningSettings,
|
120 146 | };
|
121 147 | use crate::sign::v4;
|
122 148 | use crate::sign::v4::sha256_hex_string;
|
123 149 | use aws_credential_types::Credentials;
|
124 150 | use aws_smithy_http::query_writer::QueryWriter;
|
125 151 | use aws_smithy_runtime_api::client::identity::Identity;
|
126 152 | use http0::{HeaderValue, Uri};
|
127 153 | use pretty_assertions::assert_eq;
|
128 154 | use proptest::{prelude::*, proptest};
|
129 155 | use std::borrow::Cow;
|
130 156 | use std::time::Duration;
|
131 157 |
|
132 158 | fn signing_params(identity: &Identity, settings: SigningSettings) -> SigningParams<'_> {
|
133 159 | v4::signing_params::Builder::default()
|
134 160 | .identity(identity)
|
135 161 | .region("test-region")
|
136 162 | .name("testservicename")
|
137 163 | .time(parse_date_time("20210511T154045Z").unwrap())
|
138 164 | .settings(settings)
|
139 165 | .build()
|
140 166 | .unwrap()
|
141 167 | .into()
|
142 168 | }
|
143 169 |
|
144 170 | #[test]
|
145 171 | fn test_repeated_header() {
|
146 - | let mut req = test::v4::test_request("get-vanilla-query-order-key-case");
|
172 + | let test = test::SigningSuiteTest::v4("get-vanilla-query-order-key-case");
|
173 + | let mut req = test.request();
|
147 174 | req.headers.push((
|
148 175 | "x-amz-object-attributes".to_string(),
|
149 176 | "Checksum".to_string(),
|
150 177 | ));
|
151 178 | req.headers.push((
|
152 179 | "x-amz-object-attributes".to_string(),
|
153 180 | "ObjectSize".to_string(),
|
154 181 | ));
|
155 182 | let req = SignableRequest::from(&req);
|
156 183 | let settings = SigningSettings {
|
157 184 | payload_checksum_kind: PayloadChecksumKind::XAmzSha256,
|
158 185 | session_token_mode: SessionTokenMode::Exclude,
|
159 186 | ..Default::default()
|
160 187 | };
|
161 188 | let identity = Credentials::for_tests().into();
|
162 189 | let signing_params = signing_params(&identity, settings);
|
163 190 | let creq = CanonicalRequest::from(&req, &signing_params).unwrap();
|
164 191 |
|
165 192 | assert_eq!(
|
166 193 | creq.values.signed_headers().to_string(),
|
167 194 | "host;x-amz-content-sha256;x-amz-date;x-amz-object-attributes"
|
168 195 | );
|
169 196 | assert_eq!(
|
170 197 | creq.header_values_for("x-amz-object-attributes"),
|
171 198 | "Checksum,ObjectSize",
|
172 199 | );
|
173 200 | }
|
174 201 |
|
175 202 | #[test]
|
176 203 | fn test_host_header_properly_handles_ports() {
|
177 204 | fn host_header_test_setup(endpoint: String) -> String {
|
178 - | let mut req = test::v4::test_request("get-vanilla");
|
205 + | let test = SigningSuiteTest::v4("get-vanilla");
|
206 + | let mut req = test.request();
|
179 207 | req.uri = endpoint;
|
180 208 | let req = SignableRequest::from(&req);
|
181 209 | let settings = SigningSettings {
|
182 210 | payload_checksum_kind: PayloadChecksumKind::XAmzSha256,
|
183 211 | session_token_mode: SessionTokenMode::Exclude,
|
184 212 | ..Default::default()
|
185 213 | };
|
186 214 | let identity = Credentials::for_tests().into();
|
187 215 | let signing_params = signing_params(&identity, settings);
|
188 216 | let creq = CanonicalRequest::from(&req, &signing_params).unwrap();
|
189 217 | creq.header_values_for("host")
|
190 218 | }
|
191 219 |
|
192 220 | // HTTP request with 80 port should not be signed with that port
|
193 221 | let http_80_host_header = host_header_test_setup("http://localhost:80".into());
|
194 222 | assert_eq!(http_80_host_header, "localhost",);
|
195 223 |
|
196 224 | // HTTP request with non-80 port should be signed with that port
|
197 225 | let http_1234_host_header = host_header_test_setup("http://localhost:1234".into());
|
198 226 | assert_eq!(http_1234_host_header, "localhost:1234",);
|
199 227 |
|
200 228 | // HTTPS request with 443 port should not be signed with that port
|
201 229 | let https_443_host_header = host_header_test_setup("https://localhost:443".into());
|
202 230 | assert_eq!(https_443_host_header, "localhost",);
|
203 231 |
|
204 232 | // HTTPS request with non-443 port should be signed with that port
|
205 233 | let https_1234_host_header = host_header_test_setup("https://localhost:1234".into());
|
206 234 | assert_eq!(https_1234_host_header, "localhost:1234",);
|
207 235 | }
|
208 236 |
|
209 237 | #[test]
|
210 238 | fn test_set_xamz_sha_256() {
|
211 - | let req = test::v4::test_request("get-vanilla-query-order-key-case");
|
239 + | let test = SigningSuiteTest::v4("get-vanilla-query-order-key-case");
|
240 + | let req = test.request();
|
212 241 | let req = SignableRequest::from(&req);
|
213 242 | let settings = SigningSettings {
|
214 243 | payload_checksum_kind: PayloadChecksumKind::XAmzSha256,
|
215 244 | session_token_mode: SessionTokenMode::Exclude,
|
216 245 | ..Default::default()
|
217 246 | };
|
218 247 | let identity = Credentials::for_tests().into();
|
219 248 | let mut signing_params = signing_params(&identity, settings);
|
220 249 | let creq = CanonicalRequest::from(&req, &signing_params).unwrap();
|
221 250 | assert_eq!(
|
222 251 | creq.values.content_sha256(),
|
223 252 | "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
224 253 | );
|
225 254 | // assert that the sha256 header was added
|
226 255 | assert_eq!(
|
227 256 | creq.values.signed_headers().as_str(),
|
228 257 | "host;x-amz-content-sha256;x-amz-date"
|
229 258 | );
|
230 259 |
|
231 260 | signing_params.set_payload_checksum_kind(PayloadChecksumKind::NoHeader);
|
232 261 | let creq = CanonicalRequest::from(&req, &signing_params).unwrap();
|
233 262 | assert_eq!(creq.values.signed_headers().as_str(), "host;x-amz-date");
|
234 263 | }
|
235 264 |
|
236 265 | #[test]
|
237 266 | fn test_unsigned_payload() {
|
238 - | let mut req = test::v4::test_request("get-vanilla-query-order-key-case");
|
267 + | let test = SigningSuiteTest::v4("get-vanilla-query-order-key-case");
|
268 + | let mut req = test.request();
|
239 269 | req.set_body(SignableBody::UnsignedPayload);
|
240 270 | let req: SignableRequest<'_> = SignableRequest::from(&req);
|
241 271 |
|
242 272 | let settings = SigningSettings {
|
243 273 | payload_checksum_kind: PayloadChecksumKind::XAmzSha256,
|
244 274 | ..Default::default()
|
245 275 | };
|
246 276 | let identity = Credentials::for_tests().into();
|
247 277 | let signing_params = signing_params(&identity, settings);
|
248 278 | let creq = CanonicalRequest::from(&req, &signing_params).unwrap();
|
249 279 | assert_eq!(creq.values.content_sha256(), "UNSIGNED-PAYLOAD");
|
250 280 | assert!(creq.to_string().ends_with("UNSIGNED-PAYLOAD"));
|
251 281 | }
|
252 282 |
|
253 283 | #[test]
|
254 284 | fn test_precomputed_payload() {
|
255 285 | let payload_hash = "44ce7dd67c959e0d3524ffac1771dfbba87d2b6b4b4e99e42034a8b803f8b072";
|
256 - | let mut req = test::v4::test_request("get-vanilla-query-order-key-case");
|
286 + | let test = SigningSuiteTest::v4("get-vanilla-query-order-key-case");
|
287 + | let mut req = test.request();
|
257 288 | req.set_body(SignableBody::Precomputed(String::from(payload_hash)));
|
258 289 | let req = SignableRequest::from(&req);
|
259 290 | let settings = SigningSettings {
|
260 291 | payload_checksum_kind: PayloadChecksumKind::XAmzSha256,
|
261 292 | ..Default::default()
|
262 293 | };
|
263 294 | let identity = Credentials::for_tests().into();
|
264 295 | let signing_params = signing_params(&identity, settings);
|
265 296 | let creq = CanonicalRequest::from(&req, &signing_params).unwrap();
|
266 297 | assert_eq!(creq.values.content_sha256(), payload_hash);
|
267 298 | assert!(creq.to_string().ends_with(payload_hash));
|
268 299 | }
|
269 300 |
|
270 301 | #[test]
|
271 302 | fn test_generate_scope() {
|
272 303 | let expected = "20150830/us-east-1/iam/aws4_request\n";
|
273 304 | let scope = SigningScope {
|
274 305 | time: parse_date_time("20150830T123600Z").unwrap(),
|
275 306 | region: "us-east-1",
|
276 307 | service: "iam",
|
277 308 | };
|
278 309 | assert_eq!(format!("{}\n", scope), expected);
|
279 310 | }
|
280 311 |
|
281 312 | #[test]
|
282 313 | fn test_string_to_sign() {
|
283 314 | let time = parse_date_time("20150830T123600Z").unwrap();
|
284 - | let creq = test::v4::test_canonical_request("get-vanilla-query-order-key-case");
|
285 - | let expected_sts = test::v4::test_sts("get-vanilla-query-order-key-case");
|
315 + | let test = SigningSuiteTest::v4("get-vanilla-query-order-key-case");
|
316 + | let creq = test.canonical_request(SignatureLocation::Headers);
|
317 + | let expected_sts = test.string_to_sign(SignatureLocation::Headers);
|
286 318 | let encoded = sha256_hex_string(creq.as_bytes());
|
287 319 |
|
288 320 | let actual = StringToSign::new_v4(time, "us-east-1", "service", &encoded);
|
289 321 | assert_eq!(expected_sts, actual.to_string());
|
290 322 | }
|
291 323 |
|
292 324 | #[test]
|
293 325 | fn test_digest_of_canonical_request() {
|
294 - | let creq = test::v4::test_canonical_request("get-vanilla-query-order-key-case");
|
326 + | let test = SigningSuiteTest::v4("get-vanilla-query-order-key-case");
|
327 + | let creq = test.canonical_request(SignatureLocation::Headers);
|
295 328 | let expected = "816cd5b414d056048ba4f7c5386d6e0533120fb1fcfa93762cf0fc39e2cf19e0";
|
296 329 | let actual = sha256_hex_string(creq.as_bytes());
|
297 330 | assert_eq!(expected, actual);
|
298 331 | }
|
299 332 |
|
300 333 | #[test]
|
301 334 | fn test_double_url_encode_path() {
|
302 - | let req = test::v4::test_request("double-encode-path");
|
335 + | let test = SigningSuiteTest::v4("double-encode-path");
|
336 + | let req = test.request();
|
303 337 | let req = SignableRequest::from(&req);
|
304 338 | let identity = Credentials::for_tests().into();
|
305 339 | let signing_params = signing_params(&identity, SigningSettings::default());
|
306 340 | let creq = CanonicalRequest::from(&req, &signing_params).unwrap();
|
307 341 |
|
308 - | let expected = test::v4::test_canonical_request("double-encode-path");
|
342 + | let expected = test.canonical_request(SignatureLocation::Headers);
|
309 343 | let actual = format!("{}", creq);
|
310 344 | assert_eq!(actual, expected);
|
311 345 | }
|
312 346 |
|
313 347 | #[test]
|
314 348 | fn test_double_url_encode() {
|
315 - | let req = test::v4::test_request("double-url-encode");
|
349 + | let test = SigningSuiteTest::v4("double-url-encode");
|
350 + | let req = test.request();
|
316 351 | let req = SignableRequest::from(&req);
|
317 352 | let identity = Credentials::for_tests().into();
|
318 353 | let signing_params = signing_params(&identity, SigningSettings::default());
|
319 354 | let creq = CanonicalRequest::from(&req, &signing_params).unwrap();
|
320 - |
|
321 - | let expected = test::v4::test_canonical_request("double-url-encode");
|
355 + | let expected = test.canonical_request(SignatureLocation::Headers);
|
322 356 | let actual = format!("{}", creq);
|
323 357 | assert_eq!(actual, expected);
|
324 358 | }
|
325 359 |
|
326 360 | #[test]
|
327 361 | fn test_tilde_in_uri() {
|
328 362 | let req = http0::Request::builder()
|
329 363 | .uri("https://s3.us-east-1.amazonaws.com/my-bucket?list-type=2&prefix=~objprefix&single&k=&unreserved=-_.~").body("").unwrap().into();
|
330 364 | let req = SignableRequest::from(&req);
|
331 365 | let identity = Credentials::for_tests().into();
|
332 366 | let signing_params = signing_params(&identity, SigningSettings::default());
|
333 367 | let creq = CanonicalRequest::from(&req, &signing_params).unwrap();
|
334 368 | assert_eq!(
|
335 369 | Some("k=&list-type=2&prefix=~objprefix&single=&unreserved=-_.~"),
|
336 370 | creq.params.as_deref(),
|
337 371 | );
|
338 372 | }
|
339 373 |
|
340 374 | #[test]
|
341 375 | fn test_signing_urls_with_percent_encoded_query_strings() {
|
342 376 | let all_printable_ascii_chars: String = (32u8..127).map(char::from).collect();
|
343 377 | let uri = Uri::from_static("https://s3.us-east-1.amazonaws.com/my-bucket");
|
344 378 |
|
345 379 | let mut query_writer = QueryWriter::new(&uri);
|
346 380 | query_writer.insert("list-type", "2");
|
347 381 | query_writer.insert("prefix", &all_printable_ascii_chars);
|
348 382 |
|
349 383 | let req = http0::Request::builder()
|
350 384 | .uri(query_writer.build_uri())
|
351 385 | .body("")
|
352 386 | .unwrap()
|
353 387 | .into();
|
354 388 | let req = SignableRequest::from(&req);
|
355 389 | let identity = Credentials::for_tests().into();
|
356 390 | let signing_params = signing_params(&identity, SigningSettings::default());
|
357 391 | let creq = CanonicalRequest::from(&req, &signing_params).unwrap();
|
358 392 |
|
359 393 | let expected = "list-type=2&prefix=%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D~";
|
360 394 | let actual = creq.params.unwrap();
|
361 395 | assert_eq!(expected, actual);
|
362 396 | }
|
363 397 |
|
364 398 | #[test]
|
365 399 | fn test_omit_session_token() {
|
366 - | let req = test::v4::test_request("get-vanilla-query-order-key-case");
|
400 + | let test = SigningSuiteTest::v4("get-vanilla-query-order-key-case");
|
401 + | let req = test.request();
|
367 402 | let req = SignableRequest::from(&req);
|
368 403 | let settings = SigningSettings {
|
369 404 | session_token_mode: SessionTokenMode::Include,
|
370 405 | ..Default::default()
|
371 406 | };
|
372 407 | let identity = Credentials::for_tests_with_session_token().into();
|
373 408 | let mut signing_params = signing_params(&identity, settings);
|
374 409 |
|
375 410 | let creq = CanonicalRequest::from(&req, &signing_params).unwrap();
|
376 411 | assert_eq!(
|
377 412 | creq.values.signed_headers().as_str(),
|
378 413 | "host;x-amz-date;x-amz-security-token"
|
379 414 | );
|
380 415 | assert_eq!(
|
381 416 | creq.headers.get("x-amz-security-token").unwrap(),
|
382 417 | "notarealsessiontoken"
|
383 418 | );
|
384 419 |
|
385 420 | signing_params.set_session_token_mode(SessionTokenMode::Exclude);
|
386 421 | let creq = CanonicalRequest::from(&req, &signing_params).unwrap();
|
387 422 | assert_eq!(
|
388 423 | creq.headers.get("x-amz-security-token").unwrap(),
|
389 424 | "notarealsessiontoken"
|
390 425 | );
|
391 426 | assert_eq!(creq.values.signed_headers().as_str(), "host;x-amz-date");
|
392 427 | }
|
393 428 |
|
394 429 | // It should exclude authorization, user-agent, x-amzn-trace-id, and transfer-encoding headers from presigning
|
395 430 | #[test]
|
396 431 | fn non_presigning_header_exclusion() {
|
397 432 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/http_request/sign.rs b/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/http_request/sign.rs
|
398 433 | index c4bbbee..30b4743 100644
|
399 - | -- a/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/http_request/sign.rs
|
434 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/http_request/sign.rs
|
400 435 | @@ -478,436 +478,324 @@ fn add_header(map: &mut Vec<Header>, key: &'static str, value: &str, sensitive:
|
401 436 | sensitive,
|
402 437 | });
|
403 438 | }
|
404 439 |
|
405 440 | // add signature to authorization header
|
406 441 | // Authorization: algorithm Credential=access key ID/credential scope, SignedHeaders=SignedHeaders, Signature=signature
|
407 442 | fn build_authorization_header(
|
408 443 | access_key: &str,
|
409 444 | creq: &CanonicalRequest<'_>,
|
410 445 | sts: StringToSign<'_>,
|
411 446 | signature: &str,
|
412 447 | signature_version: SignatureVersion,
|
413 448 | ) -> String {
|
414 449 | let scope = match signature_version {
|
415 450 | SignatureVersion::V4 => sts.scope.to_string(),
|
416 451 | SignatureVersion::V4a => sts.scope.v4a_display(),
|
417 452 | };
|
418 453 | format!(
|
419 454 | "{} Credential={}/{}, SignedHeaders={}, Signature={}",
|
420 455 | sts.algorithm,
|
421 456 | access_key,
|
422 457 | scope,
|
423 458 | creq.values.signed_headers().as_str(),
|
424 459 | signature
|
425 460 | )
|
426 461 | }
|
427 462 | #[cfg(test)]
|
428 463 | mod tests {
|
429 464 | use crate::date_time::test_parsers::parse_date_time;
|
430 465 | use crate::http_request::sign::{add_header, SignableRequest};
|
466 + | use crate::http_request::test::SigningSuiteTest;
|
431 467 | use crate::http_request::{
|
432 - | sign, test, SessionTokenMode, SignableBody, SignatureLocation, SigningInstructions,
|
468 + | sign, SessionTokenMode, SignableBody, SignatureLocation, SigningInstructions,
|
433 469 | SigningSettings,
|
434 470 | };
|
435 471 | use crate::sign::v4;
|
436 472 | use aws_credential_types::Credentials;
|
437 473 | use http0::{HeaderValue, Request};
|
438 474 | use pretty_assertions::assert_eq;
|
439 475 | use proptest::proptest;
|
440 476 | use std::borrow::Cow;
|
441 477 | use std::iter;
|
442 - | use std::time::Duration;
|
443 478 |
|
444 479 | macro_rules! assert_req_eq {
|
445 480 | (http: $expected:expr, $actual:expr) => {
|
446 481 | let mut expected = ($expected).map(|_b|"body");
|
447 482 | let mut actual = ($actual).map(|_b|"body");
|
448 483 | make_headers_comparable(&mut expected);
|
449 484 | make_headers_comparable(&mut actual);
|
450 485 | assert_eq!(format!("{:?}", expected), format!("{:?}", actual));
|
451 486 | };
|
452 487 | ($expected:tt, $actual:tt) => {
|
453 488 | assert_req_eq!(http: ($expected).as_http_request(), $actual);
|
454 489 | };
|
455 490 | }
|
456 491 |
|
457 492 | pub(crate) fn make_headers_comparable<B>(request: &mut Request<B>) {
|
458 493 | for (_name, value) in request.headers_mut() {
|
459 494 | value.set_sensitive(false);
|
460 495 | }
|
461 496 | }
|
462 497 |
|
463 - | #[test]
|
464 - | fn test_sign_vanilla_with_headers() {
|
465 - | let settings = SigningSettings::default();
|
466 - | let identity = &Credentials::for_tests().into();
|
467 - | let params = v4::SigningParams {
|
468 - | identity,
|
469 - | region: "us-east-1",
|
470 - | name: "service",
|
471 - | time: parse_date_time("20150830T123600Z").unwrap(),
|
472 - | settings,
|
473 - | }
|
474 - | .into();
|
475 - |
|
476 - | let original = test::v4::test_request("get-vanilla-query-order-key-case");
|
477 - | let signable = SignableRequest::from(&original);
|
478 - | let out = sign(signable, ¶ms).unwrap();
|
479 - | assert_eq!(
|
480 - | "5557820e7380d585310524bd93d51a08d7757fb5efd7344ee12088f2b0860947",
|
481 - | out.signature
|
482 - | );
|
483 - |
|
484 - | let mut signed = original.as_http_request();
|
485 - | out.output.apply_to_request_http0x(&mut signed);
|
486 - |
|
487 - | let expected = test::v4::test_signed_request("get-vanilla-query-order-key-case");
|
488 - | assert_req_eq!(expected, signed);
|
489 - | }
|
490 - |
|
498 + | // Sigv4A suite tests
|
491 499 | #[cfg(feature = "sigv4a")]
|
492 - | mod sigv4a_tests {
|
493 - | use super::*;
|
494 - | use crate::http_request::canonical_request::{CanonicalRequest, StringToSign};
|
495 - | use crate::http_request::{sign, test, SigningParams};
|
496 - | use crate::sign::v4a;
|
497 - | use p256::ecdsa::signature::{Signature, Verifier};
|
498 - | use p256::ecdsa::{DerSignature, SigningKey};
|
499 - | use pretty_assertions::assert_eq;
|
500 - |
|
501 - | fn new_v4a_signing_params_from_context(
|
502 - | test_context: &'_ test::v4a::TestContext,
|
503 - | signature_location: SignatureLocation,
|
504 - | ) -> SigningParams<'_> {
|
505 - | let mut params = v4a::SigningParams::from(test_context);
|
506 - | params.settings.signature_location = signature_location;
|
507 - |
|
508 - | params.into()
|
509 - | }
|
510 - |
|
511 - | fn run_v4a_test_suite(test_name: &str, signature_location: SignatureLocation) {
|
512 - | let tc = test::v4a::test_context(test_name);
|
513 - | let params = new_v4a_signing_params_from_context(&tc, signature_location);
|
514 - |
|
515 - | let req = test::v4a::test_request(test_name);
|
516 - | let expected_creq = test::v4a::test_canonical_request(test_name, signature_location);
|
517 - | let signable_req = SignableRequest::from(&req);
|
518 - | let actual_creq = CanonicalRequest::from(&signable_req, ¶ms).unwrap();
|
519 - |
|
520 - | assert_eq!(expected_creq, actual_creq.to_string(), "creq didn't match");
|
500 + | mod v4a_suite {
|
501 + | use crate::http_request::test::v4a::run_test_suite_v4a;
|
521 502 |
|
522 - | let expected_string_to_sign =
|
523 - | test::v4a::test_string_to_sign(test_name, signature_location);
|
524 - | let hashed_creq = &v4::sha256_hex_string(actual_creq.to_string().as_bytes());
|
525 - | let actual_string_to_sign = StringToSign::new_v4a(
|
526 - | *params.time(),
|
527 - | params.region_set().unwrap(),
|
528 - | params.name(),
|
529 - | hashed_creq,
|
530 - | )
|
531 - | .to_string();
|
532 - |
|
533 - | assert_eq!(
|
534 - | expected_string_to_sign, actual_string_to_sign,
|
535 - | "'string to sign' didn't match"
|
536 - | );
|
537 - |
|
538 - | let out = sign(signable_req, ¶ms).unwrap();
|
539 - | // Sigv4a signatures are non-deterministic, so we can't compare the signature directly.
|
540 - | out.output
|
541 - | .apply_to_request_http0x(&mut req.as_http_request());
|
542 - |
|
543 - | let creds = params.credentials().unwrap();
|
544 - | let signing_key =
|
545 - | v4a::generate_signing_key(creds.access_key_id(), creds.secret_access_key());
|
546 - | let sig = DerSignature::from_bytes(&hex::decode(out.signature).unwrap()).unwrap();
|
547 - | let sig = sig
|
548 - | .try_into()
|
549 - | .expect("DER-style signatures are always convertible into fixed-size signatures");
|
550 - |
|
551 - | let signing_key = SigningKey::from_bytes(signing_key.as_ref()).unwrap();
|
552 - | let peer_public_key = signing_key.verifying_key();
|
553 - | let sts = actual_string_to_sign.as_bytes();
|
554 - | peer_public_key.verify(sts, &sig).unwrap();
|
503 + | #[test]
|
504 + | fn test_get_header_key_duplicate() {
|
505 + | run_test_suite_v4a("get-header-key-duplicate")
|
555 506 | }
|
556 507 |
|
557 508 | #[test]
|
558 - | fn test_get_header_key_duplicate() {
|
559 - | run_v4a_test_suite("get-header-key-duplicate", SignatureLocation::Headers);
|
509 + | #[ignore = "httpparse doesn't support parsing multiline headers since they are deprecated in RFC7230"]
|
510 + | fn test_get_header_value_multiline() {
|
511 + | run_test_suite_v4a("get-header-value-multiline")
|
560 512 | }
|
561 513 |
|
562 514 | #[test]
|
563 515 | fn test_get_header_value_order() {
|
564 - | run_v4a_test_suite("get-header-value-order", SignatureLocation::Headers);
|
516 + | run_test_suite_v4a("get-header-value-order")
|
565 517 | }
|
566 518 |
|
567 519 | #[test]
|
568 520 | fn test_get_header_value_trim() {
|
569 - | run_v4a_test_suite("get-header-value-trim", SignatureLocation::Headers);
|
521 + | run_test_suite_v4a("get-header-value-trim");
|
570 522 | }
|
571 523 |
|
572 524 | #[test]
|
573 525 | fn test_get_relative_normalized() {
|
574 - | run_v4a_test_suite("get-relative-normalized", SignatureLocation::Headers);
|
526 + | run_test_suite_v4a("get-relative-normalized");
|
575 527 | }
|
576 528 |
|
577 529 | #[test]
|
578 530 | fn test_get_relative_relative_normalized() {
|
579 - | run_v4a_test_suite(
|
580 - | "get-relative-relative-normalized",
|
581 - | SignatureLocation::Headers,
|
582 - | );
|
531 + | run_test_suite_v4a("get-relative-relative-normalized");
|
583 532 | }
|
584 533 |
|
585 534 | #[test]
|
586 535 | fn test_get_relative_relative_unnormalized() {
|
587 - | run_v4a_test_suite(
|
588 - | "get-relative-relative-unnormalized",
|
589 - | SignatureLocation::Headers,
|
590 - | );
|
536 + | run_test_suite_v4a("get-relative-relative-unnormalized");
|
591 537 | }
|
592 538 |
|
593 539 | #[test]
|
594 540 | fn test_get_relative_unnormalized() {
|
595 - | run_v4a_test_suite("get-relative-unnormalized", SignatureLocation::Headers);
|
541 + | run_test_suite_v4a("get-relative-unnormalized");
|
596 542 | }
|
597 543 |
|
598 544 | #[test]
|
599 545 | fn test_get_slash_dot_slash_normalized() {
|
600 - | run_v4a_test_suite("get-slash-dot-slash-normalized", SignatureLocation::Headers);
|
546 + | run_test_suite_v4a("get-slash-dot-slash-normalized");
|
601 547 | }
|
602 548 |
|
603 549 | #[test]
|
604 550 | fn test_get_slash_dot_slash_unnormalized() {
|
605 - | run_v4a_test_suite(
|
606 - | "get-slash-dot-slash-unnormalized",
|
607 - | SignatureLocation::Headers,
|
608 - | );
|
551 + | run_test_suite_v4a("get-slash-dot-slash-unnormalized");
|
609 552 | }
|
610 553 |
|
611 554 | #[test]
|
612 555 | fn test_get_slash_normalized() {
|
613 - | run_v4a_test_suite("get-slash-normalized", SignatureLocation::Headers);
|
556 + | run_test_suite_v4a("get-slash-normalized");
|
614 557 | }
|
615 558 |
|
616 559 | #[test]
|
617 560 | fn test_get_slash_pointless_dot_normalized() {
|
618 - | run_v4a_test_suite(
|
619 - | "get-slash-pointless-dot-normalized",
|
620 - | SignatureLocation::Headers,
|
621 - | );
|
561 + | run_test_suite_v4a("get-slash-pointless-dot-normalized");
|
622 562 | }
|
623 563 |
|
624 564 | #[test]
|
625 565 | fn test_get_slash_pointless_dot_unnormalized() {
|
626 - | run_v4a_test_suite(
|
627 - | "get-slash-pointless-dot-unnormalized",
|
628 - | SignatureLocation::Headers,
|
629 - | );
|
566 + | run_test_suite_v4a("get-slash-pointless-dot-unnormalized");
|
630 567 | }
|
631 568 |
|
632 569 | #[test]
|
633 570 | fn test_get_slash_unnormalized() {
|
634 - | run_v4a_test_suite("get-slash-unnormalized", SignatureLocation::Headers);
|
571 + | run_test_suite_v4a("get-slash-unnormalized");
|
635 572 | }
|
636 573 |
|
637 574 | #[test]
|
638 575 | fn test_get_slashes_normalized() {
|
639 - | run_v4a_test_suite("get-slashes-normalized", SignatureLocation::Headers);
|
576 + | run_test_suite_v4a("get-slashes-normalized");
|
640 577 | }
|
641 578 |
|
642 579 | #[test]
|
643 580 | fn test_get_slashes_unnormalized() {
|
644 - | run_v4a_test_suite("get-slashes-unnormalized", SignatureLocation::Headers);
|
581 + | run_test_suite_v4a("get-slashes-unnormalized");
|
582 + | }
|
583 + |
|
584 + | #[test]
|
585 + | #[ignore = "relies on single encode of path segments"]
|
586 + | // rely on single encoding of path segments, i.e. string-to-sign contains %20 for spaces rather than %25%20 as it should.
|
587 + | // skipped until we add control over double_uri_encode in context.json
|
588 + | fn test_get_space_normalized() {
|
589 + | run_test_suite_v4a("get-space-normalized");
|
590 + | }
|
591 + |
|
592 + | #[test]
|
593 + | #[ignore = "httpparse fails on unencoded spaces in path"]
|
594 + | // the input request has unencoded space ' ' in the path which fails to parse
|
595 + | fn test_get_space_unnormalized() {
|
596 + | run_test_suite_v4a("get-space-unnormalized");
|
645 597 | }
|
646 598 |
|
647 599 | #[test]
|
648 600 | fn test_get_unreserved() {
|
649 - | run_v4a_test_suite("get-unreserved", SignatureLocation::Headers);
|
601 + | run_test_suite_v4a("get-unreserved");
|
602 + | }
|
603 + |
|
604 + | #[test]
|
605 + | #[ignore = "httparse fails on invalid uri character"]
|
606 + | // relies on /ሴ canonicalized as /%E1%88%B4 when it should be /%25%E1%25%88%25%B4
|
607 + | fn test_get_utf8() {
|
608 + | run_test_suite_v4a("get-utf8");
|
650 609 | }
|
651 610 |
|
652 611 | #[test]
|
653 612 | fn test_get_vanilla() {
|
654 - | run_v4a_test_suite("get-vanilla", SignatureLocation::Headers);
|
613 + | run_test_suite_v4a("get-vanilla");
|
655 614 | }
|
656 615 |
|
657 616 | #[test]
|
658 617 | fn test_get_vanilla_empty_query_key() {
|
659 - | run_v4a_test_suite(
|
660 - | "get-vanilla-empty-query-key",
|
661 - | SignatureLocation::QueryParams,
|
662 - | );
|
618 + | run_test_suite_v4a("get-vanilla-empty-query-key");
|
663 619 | }
|
664 620 |
|
665 621 | #[test]
|
666 622 | fn test_get_vanilla_query() {
|
667 - | run_v4a_test_suite("get-vanilla-query", SignatureLocation::QueryParams);
|
623 + | run_test_suite_v4a("get-vanilla-query");
|
624 + | }
|
625 + |
|
626 + | #[test]
|
627 + | fn test_get_vanilla_query_order_encoded() {
|
628 + | run_test_suite_v4a("get-vanilla-query-order-encoded");
|
668 629 | }
|
669 630 |
|
670 631 | #[test]
|
671 632 | fn test_get_vanilla_query_order_key_case() {
|
672 - | run_v4a_test_suite(
|
673 - | "get-vanilla-query-order-key-case",
|
674 - | SignatureLocation::QueryParams,
|
675 - | );
|
633 + | run_test_suite_v4a("get-vanilla-query-order-key-case");
|
676 634 | }
|
677 635 |
|
678 636 | #[test]
|
679 637 | fn test_get_vanilla_query_unreserved() {
|
680 - | run_v4a_test_suite(
|
681 - | "get-vanilla-query-unreserved",
|
682 - | SignatureLocation::QueryParams,
|
683 - | );
|
638 + | run_test_suite_v4a("get-vanilla-query-unreserved");
|
639 + | }
|
640 + |
|
641 + | #[test]
|
642 + | #[ignore = "httparse fails on invalid uri character"]
|
643 + | // relies on /ሴ canonicalized as /%E1%88%B4 when it should be /%25%E1%25%88%25%B4
|
644 + | fn test_get_vanilla_utf8_query() {
|
645 + | run_test_suite_v4a("get-vanilla-utf8-query");
|
684 646 | }
|
685 647 |
|
686 648 | #[test]
|
687 649 | fn test_get_vanilla_with_session_token() {
|
688 - | run_v4a_test_suite("get-vanilla-with-session-token", SignatureLocation::Headers);
|
650 + | run_test_suite_v4a("get-vanilla-with-session-token")
|
689 651 | }
|
690 652 |
|
691 653 | #[test]
|
692 654 | fn test_post_header_key_case() {
|
693 - | run_v4a_test_suite("post-header-key-case", SignatureLocation::Headers);
|
655 + | run_test_suite_v4a("post-header-key-case");
|
694 656 | }
|
695 657 |
|
696 658 | #[test]
|
697 659 | fn test_post_header_key_sort() {
|
698 - | run_v4a_test_suite("post-header-key-sort", SignatureLocation::Headers);
|
660 + | run_test_suite_v4a("post-header-key-sort");
|
699 661 | }
|
700 662 |
|
701 663 | #[test]
|
702 664 | fn test_post_header_value_case() {
|
703 - | run_v4a_test_suite("post-header-value-case", SignatureLocation::Headers);
|
665 + | run_test_suite_v4a("post-header-value-case");
|
704 666 | }
|
705 667 |
|
706 668 | #[test]
|
707 669 | fn test_post_sts_header_after() {
|
708 - | run_v4a_test_suite("post-sts-header-after", SignatureLocation::Headers);
|
670 + | run_test_suite_v4a("post-sts-header-after");
|
709 671 | }
|
710 672 |
|
711 673 | #[test]
|
712 674 | fn test_post_sts_header_before() {
|
713 - | run_v4a_test_suite("post-sts-header-before", SignatureLocation::Headers);
|
675 + | run_test_suite_v4a("post-sts-header-before");
|
714 676 | }
|
715 677 |
|
716 678 | #[test]
|
717 679 | fn test_post_vanilla() {
|
718 - | run_v4a_test_suite("post-vanilla", SignatureLocation::Headers);
|
680 + | run_test_suite_v4a("post-vanilla");
|
719 681 | }
|
720 682 |
|
721 683 | #[test]
|
722 684 | fn test_post_vanilla_empty_query_value() {
|
723 - | run_v4a_test_suite(
|
724 - | "post-vanilla-empty-query-value",
|
725 - | SignatureLocation::QueryParams,
|
726 - | );
|
685 + | run_test_suite_v4a("post-vanilla-empty-query-value");
|
727 686 | }
|
728 687 |
|
729 688 | #[test]
|
730 689 | fn test_post_vanilla_query() {
|
731 - | run_v4a_test_suite("post-vanilla-query", SignatureLocation::QueryParams);
|
690 + | run_test_suite_v4a("post-vanilla-query");
|
732 691 | }
|
733 692 |
|
734 693 | #[test]
|
735 694 | fn test_post_x_www_form_urlencoded() {
|
736 - | run_v4a_test_suite("post-x-www-form-urlencoded", SignatureLocation::Headers);
|
695 + | run_test_suite_v4a("post-x-www-form-urlencoded");
|
737 696 | }
|
738 697 |
|
739 698 | #[test]
|
740 699 | fn test_post_x_www_form_urlencoded_parameters() {
|
741 - | run_v4a_test_suite(
|
742 - | "post-x-www-form-urlencoded-parameters",
|
743 - | SignatureLocation::QueryParams,
|
744 - | );
|
700 + | run_test_suite_v4a("post-x-www-form-urlencoded-parameters");
|
745 701 | }
|
746 702 | }
|
747 703 |
|
748 704 | #[test]
|
749 705 | fn test_sign_url_escape() {
|
750 - | let test = "double-encode-path";
|
706 + | let test = SigningSuiteTest::v4("double-encode-path");
|
751 707 | let settings = SigningSettings::default();
|
752 708 | let identity = &Credentials::for_tests().into();
|
753 709 | let params = v4::SigningParams {
|
754 710 | identity,
|
755 711 | region: "us-east-1",
|
756 712 | name: "service",
|
757 713 | time: parse_date_time("20150830T123600Z").unwrap(),
|
758 714 | settings,
|
759 715 | }
|
760 716 | .into();
|
761 717 |
|
762 - | let original = test::v4::test_request(test);
|
718 + | let original = test.request();
|
763 719 | let signable = SignableRequest::from(&original);
|
764 720 | let out = sign(signable, ¶ms).unwrap();
|
765 721 | assert_eq!(
|
766 722 | "57d157672191bac40bae387e48bbe14b15303c001fdbb01f4abf295dccb09705",
|
767 723 | out.signature
|
768 724 | );
|
769 725 |
|
770 726 | let mut signed = original.as_http_request();
|
771 727 | out.output.apply_to_request_http0x(&mut signed);
|
772 728 |
|
773 - | let expected = test::v4::test_signed_request(test);
|
774 - | assert_req_eq!(expected, signed);
|
775 - | }
|
776 - |
|
777 - | #[test]
|
778 - | fn test_sign_vanilla_with_query_params() {
|
779 - | let settings = SigningSettings {
|
780 - | signature_location: SignatureLocation::QueryParams,
|
781 - | expires_in: Some(Duration::from_secs(35)),
|
782 - | ..Default::default()
|
783 - | };
|
784 - | let identity = &Credentials::for_tests().into();
|
785 - | let params = v4::SigningParams {
|
786 - | identity,
|
787 - | region: "us-east-1",
|
788 - | name: "service",
|
789 - | time: parse_date_time("20150830T123600Z").unwrap(),
|
790 - | settings,
|
791 - | }
|
792 - | .into();
|
793 - |
|
794 - | let original = test::v4::test_request("get-vanilla-query-order-key-case");
|
795 - | let signable = SignableRequest::from(&original);
|
796 - | let out = sign(signable, ¶ms).unwrap();
|
797 - | assert_eq!(
|
798 - | "ecce208e4b4f7d7e3a4cc22ced6acc2ad1d170ee8ba87d7165f6fa4b9aff09ab",
|
799 - | out.signature
|
800 - | );
|
801 - |
|
802 - | let mut signed = original.as_http_request();
|
803 - | out.output.apply_to_request_http0x(&mut signed);
|
804 - |
|
805 - | let expected =
|
806 - | test::v4::test_signed_request_query_params("get-vanilla-query-order-key-case");
|
729 + | let expected = test.signed_request(SignatureLocation::Headers);
|
807 730 | assert_req_eq!(expected, signed);
|
808 731 | }
|
809 732 |
|
810 733 | #[test]
|
811 734 | fn test_sign_headers_utf8() {
|
812 735 | let settings = SigningSettings::default();
|
813 736 | let identity = &Credentials::for_tests().into();
|
814 737 | let params = v4::SigningParams {
|
815 738 | identity,
|
816 739 | region: "us-east-1",
|
817 740 | name: "service",
|
818 741 | time: parse_date_time("20150830T123600Z").unwrap(),
|
819 742 | settings,
|
820 743 | }
|
821 744 | .into();
|
822 745 |
|
823 746 | let original = http0::Request::builder()
|
824 747 | .uri("https://some-endpoint.some-region.amazonaws.com")
|
825 748 | .header("some-header", HeaderValue::from_str("テスト").unwrap())
|
826 749 | .body("")
|
827 750 | .unwrap()
|
828 751 | .into();
|
829 752 | let signable = SignableRequest::from(&original);
|
830 753 | let out = sign(signable, ¶ms).unwrap();
|
831 754 | assert_eq!(
|
832 755 | "55e16b31f9bde5fd04f9d3b780dd2b5e5f11a5219001f91a8ca9ec83eaf1618f",
|
833 756 | out.signature
|
834 757 | );
|
835 758 |
|
836 759 | let mut signed = original.as_http_request();
|
837 760 | @@ -1138,31 +1026,236 @@ mod tests {
|
838 761 | let mut request = http::Request::builder()
|
839 762 | .uri("https://some-endpoint.some-region.amazonaws.com/some/path")
|
840 763 | .body("")
|
841 764 | .unwrap();
|
842 765 |
|
843 766 | instructions.apply_to_request_http1x(&mut request);
|
844 767 |
|
845 768 | assert_eq!(
|
846 769 | "/some/path?some-param=f%26o%3Fo&some-other-param%3F=bar",
|
847 770 | request.uri().path_and_query().unwrap().to_string()
|
848 771 | );
|
849 772 | }
|
850 773 |
|
851 774 | #[test]
|
852 775 | fn test_debug_signable_body() {
|
853 776 | let sut = SignableBody::Bytes(b"hello signable body");
|
854 777 | assert_eq!(
|
855 778 | "Bytes(\"** REDACTED **. To print 19 bytes of raw data, set environment variable `LOG_SIGNABLE_BODY=true`\")",
|
856 779 | format!("{sut:?}")
|
857 780 | );
|
858 781 |
|
859 782 | let sut = SignableBody::UnsignedPayload;
|
860 783 | assert_eq!("UnsignedPayload", format!("{sut:?}"));
|
861 784 |
|
862 785 | let sut = SignableBody::Precomputed("precomputed".to_owned());
|
863 786 | assert_eq!("Precomputed(\"precomputed\")", format!("{sut:?}"));
|
864 787 |
|
865 788 | let sut = SignableBody::StreamingUnsignedPayloadTrailer;
|
866 789 | assert_eq!("StreamingUnsignedPayloadTrailer", format!("{sut:?}"));
|
867 790 | }
|
791 + |
|
792 + | // v4 test suite
|
793 + | mod v4_suite {
|
794 + | use crate::http_request::test::run_test_suite_v4;
|
795 + |
|
796 + | #[test]
|
797 + | fn test_get_header_key_duplicate() {
|
798 + | run_test_suite_v4("get-header-key-duplicate");
|
799 + | }
|
800 + |
|
801 + | #[test]
|
802 + | #[ignore = "httpparse doesn't support parsing multiline headers since they are deprecated in RFC7230"]
|
803 + | fn test_get_header_value_multiline() {
|
804 + | run_test_suite_v4("get-header-value-multiline");
|
805 + | }
|
806 + |
|
807 + | #[test]
|
808 + | fn test_get_header_value_order() {
|
809 + | run_test_suite_v4("get-header-value-order");
|
810 + | }
|
811 + |
|
812 + | #[test]
|
813 + | fn test_get_header_value_trim() {
|
814 + | run_test_suite_v4("get-header-value-trim");
|
815 + | }
|
816 + |
|
817 + | #[test]
|
818 + | fn test_get_relative_normalized() {
|
819 + | run_test_suite_v4("get-relative-normalized");
|
820 + | }
|
821 + |
|
822 + | #[test]
|
823 + | fn test_get_relative_relative_normalized() {
|
824 + | run_test_suite_v4("get-relative-relative-normalized");
|
825 + | }
|
826 + |
|
827 + | #[test]
|
828 + | fn test_get_relative_relative_unnormalized() {
|
829 + | run_test_suite_v4("get-relative-relative-unnormalized");
|
830 + | }
|
831 + |
|
832 + | #[test]
|
833 + | fn test_get_relative_unnormalized() {
|
834 + | run_test_suite_v4("get-relative-unnormalized");
|
835 + | }
|
836 + |
|
837 + | #[test]
|
838 + | fn test_get_slash_dot_slash_normalized() {
|
839 + | run_test_suite_v4("get-slash-dot-slash-normalized");
|
840 + | }
|
841 + |
|
842 + | #[test]
|
843 + | fn test_get_slash_dot_slash_unnormalized() {
|
844 + | run_test_suite_v4("get-slash-dot-slash-unnormalized");
|
845 + | }
|
846 + |
|
847 + | #[test]
|
848 + | fn test_get_slash_normalized() {
|
849 + | run_test_suite_v4("get-slash-normalized");
|
850 + | }
|
851 + |
|
852 + | #[test]
|
853 + | fn test_get_slash_pointless_dot_normalized() {
|
854 + | run_test_suite_v4("get-slash-pointless-dot-normalized");
|
855 + | }
|
856 + |
|
857 + | #[test]
|
858 + | fn test_get_slash_pointless_dot_unnormalized() {
|
859 + | run_test_suite_v4("get-slash-pointless-dot-unnormalized");
|
860 + | }
|
861 + |
|
862 + | #[test]
|
863 + | fn test_get_slash_unnormalized() {
|
864 + | run_test_suite_v4("get-slash-unnormalized");
|
865 + | }
|
866 + |
|
867 + | #[test]
|
868 + | fn test_get_slashes_normalized() {
|
869 + | run_test_suite_v4("get-slashes-normalized");
|
870 + | }
|
871 + |
|
872 + | #[test]
|
873 + | fn test_get_slashes_unnormalized() {
|
874 + | run_test_suite_v4("get-slashes-unnormalized");
|
875 + | }
|
876 + |
|
877 + | #[test]
|
878 + | #[ignore = "relies on single encode of path segments"]
|
879 + | // rely on single encoding of path segments, i.e. string-to-sign contains %20 for spaces rather than %25%20 as it should.
|
880 + | // skipped until we add control over double_uri_encode in context.json
|
881 + | fn test_get_space_normalized() {
|
882 + | run_test_suite_v4("get-space-normalized");
|
883 + | }
|
884 + |
|
885 + | #[test]
|
886 + | #[ignore = "httpparse fails on unencoded spaces in path"]
|
887 + | // the input request has unencoded space ' ' in the path which fails to parse
|
888 + | fn test_get_space_unnormalized() {
|
889 + | run_test_suite_v4("get-space-unnormalized");
|
890 + | }
|
891 + |
|
892 + | #[test]
|
893 + | fn test_get_unreserved() {
|
894 + | run_test_suite_v4("get-unreserved");
|
895 + | }
|
896 + |
|
897 + | #[test]
|
898 + | #[ignore = "httparse fails on invalid uri character"]
|
899 + | // relies on /ሴ canonicalized as /%E1%88%B4 when it should be /%25%E1%25%88%25%B4
|
900 + | fn test_get_utf8() {
|
901 + | run_test_suite_v4("get-utf8");
|
902 + | }
|
903 + |
|
904 + | #[test]
|
905 + | fn test_get_vanilla() {
|
906 + | run_test_suite_v4("get-vanilla");
|
907 + | }
|
908 + |
|
909 + | #[test]
|
910 + | fn test_get_vanilla_empty_query_key() {
|
911 + | run_test_suite_v4("get-vanilla-empty-query-key");
|
912 + | }
|
913 + |
|
914 + | #[test]
|
915 + | fn test_get_vanilla_query() {
|
916 + | run_test_suite_v4("get-vanilla-query");
|
917 + | }
|
918 + |
|
919 + | #[test]
|
920 + | fn test_get_vanilla_query_order_encoded() {
|
921 + | run_test_suite_v4("get-vanilla-query-order-encoded");
|
922 + | }
|
923 + |
|
924 + | #[test]
|
925 + | fn test_get_vanilla_query_order_key_case() {
|
926 + | run_test_suite_v4("get-vanilla-query-order-key-case");
|
927 + | }
|
928 + |
|
929 + | #[test]
|
930 + | fn test_get_vanilla_query_unreserved() {
|
931 + | run_test_suite_v4("get-vanilla-query-unreserved");
|
932 + | }
|
933 + |
|
934 + | #[test]
|
935 + | #[ignore = "httparse fails on invalid uri character"]
|
936 + | // relies on /ሴ canonicalized as /%E1%88%B4 when it should be /%25%E1%25%88%25%B4
|
937 + | fn test_get_vanilla_utf8_query() {
|
938 + | run_test_suite_v4("get-vanilla-utf8-query");
|
939 + | }
|
940 + |
|
941 + | #[test]
|
942 + | fn test_get_vanilla_with_session_token() {
|
943 + | run_test_suite_v4("get-vanilla-with-session-token");
|
944 + | }
|
945 + |
|
946 + | #[test]
|
947 + | fn test_post_header_key_case() {
|
948 + | run_test_suite_v4("post-header-key-case");
|
949 + | }
|
950 + |
|
951 + | #[test]
|
952 + | fn test_post_header_key_sort() {
|
953 + | run_test_suite_v4("post-header-key-sort");
|
954 + | }
|
955 + |
|
956 + | #[test]
|
957 + | fn test_post_header_value_case() {
|
958 + | run_test_suite_v4("post-header-value-case");
|
959 + | }
|
960 + |
|
961 + | #[test]
|
962 + | fn test_post_sts_header_after() {
|
963 + | run_test_suite_v4("post-sts-header-after");
|
964 + | }
|
965 + |
|
966 + | #[test]
|
967 + | fn test_post_sts_header_before() {
|
968 + | run_test_suite_v4("post-sts-header-before");
|
969 + | }
|
970 + |
|
971 + | #[test]
|
972 + | fn test_post_vanilla() {
|
973 + | run_test_suite_v4("post-vanilla");
|
974 + | }
|
975 + |
|
976 + | #[test]
|
977 + | fn test_post_vanilla_empty_query_value() {
|
978 + | run_test_suite_v4("post-vanilla-empty-query-value");
|
979 + | }
|
980 + |
|
981 + | #[test]
|
982 + | fn test_post_vanilla_query() {
|
983 + | run_test_suite_v4("post-vanilla-query");
|
984 + | }
|
985 + |
|
986 + | #[test]
|
987 + | fn test_post_x_www_form_urlencoded() {
|
988 + | run_test_suite_v4("post-x-www-form-urlencoded");
|
989 + | }
|
990 + |
|
991 + | #[test]
|
992 + | fn test_post_x_www_form_urlencoded_parameters() {
|
993 + | run_test_suite_v4("post-x-www-form-urlencoded-parameters");
|
994 + | }
|
995 + | }
|
868 996 | }
|
869 997 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/http_request/test.rs b/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/http_request/test.rs
|
870 998 | index be6c496..86eec20 100644
|
871 - | -- a/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/http_request/test.rs
|
999 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/http_request/test.rs
|
872 1000 | @@ -1,242 +1,453 @@
|
873 1001 | /*
|
874 1002 | * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
875 1003 | * SPDX-License-Identifier: Apache-2.0
|
876 1004 | */
|
877 1005 |
|
878 1006 | //! Functions shared between the tests of several modules.
|
879 1007 |
|
880 - | use crate::http_request::{SignableBody, SignableRequest};
|
1008 + | use crate::http_request::canonical_request::{CanonicalRequest, StringToSign};
|
1009 + | use crate::http_request::{
|
1010 + | PayloadChecksumKind, SessionTokenMode, SignableBody, SignableRequest, SignatureLocation,
|
1011 + | SigningSettings,
|
1012 + | };
|
1013 + | use aws_credential_types::Credentials;
|
1014 + | use aws_smithy_runtime_api::client::identity::Identity;
|
881 1015 | use http0::{Method, Uri};
|
1016 + | use std::borrow::Cow;
|
882 1017 | use std::error::Error as StdError;
|
1018 + | use std::time::{Duration, SystemTime};
|
1019 + | use time::format_description::well_known::Rfc3339;
|
1020 + | use time::OffsetDateTime;
|
1021 + |
|
1022 + | /// Common test suite collection
|
1023 + | #[derive(Debug, Clone, Copy, Eq, PartialEq)]
|
1024 + | enum Collection {
|
1025 + | V4,
|
1026 + | V4A,
|
1027 + | }
|
883 1028 |
|
884 - | pub(crate) mod v4 {
|
885 - | use super::*;
|
1029 + | /// A test from the common CRT test suite
|
1030 + | #[derive(Debug, Clone)]
|
1031 + | pub(crate) struct SigningSuiteTest {
|
1032 + | test_name: &'static str,
|
1033 + | collection: Collection,
|
1034 + | }
|
886 1035 |
|
887 - | fn path(name: &str, ext: &str) -> String {
|
888 - | format!("aws-sig-v4-test-suite/{}/{}.{}", name, name, ext)
|
1036 + | impl SigningSuiteTest {
|
1037 + | /// Create a new test from the V4 test suite
|
1038 + | pub(crate) fn v4(test_name: &'static str) -> Self {
|
1039 + | Self {
|
1040 + | test_name,
|
1041 + | collection: Collection::V4,
|
889 1042 | }
|
890 - |
|
891 - | pub(crate) fn test_canonical_request(name: &str) -> String {
|
892 - | // Tests fail if there's a trailing newline in the file, and pre-commit requires trailing newlines
|
893 - | read(&path(name, "creq")).trim().to_string()
|
894 1043 | }
|
895 1044 |
|
896 - | pub(crate) fn test_sts(name: &str) -> String {
|
897 - | read(&path(name, "sts"))
|
1045 + | /// Create a new test from the V4a test suite
|
1046 + | pub(crate) fn v4a(test_name: &'static str) -> Self {
|
1047 + | Self {
|
1048 + | test_name,
|
1049 + | collection: Collection::V4A,
|
898 1050 | }
|
899 - |
|
900 - | pub(crate) fn test_request(name: &str) -> TestRequest {
|
901 - | test_parsed_request(name, "req")
|
902 1051 | }
|
903 1052 |
|
904 - | pub(crate) fn test_signed_request(name: &str) -> TestRequest {
|
905 - | test_parsed_request(name, "sreq")
|
1053 + | /// Get the path to a file in this test suite directory
|
1054 + | fn path(&self, filename: &str) -> String {
|
1055 + | let dir = match self.collection {
|
1056 + | Collection::V4 => "v4",
|
1057 + | Collection::V4A => "v4a",
|
1058 + | };
|
1059 + | format!("aws-signing-test-suite/{dir}/{}/{filename}", self.test_name)
|
906 1060 | }
|
907 1061 |
|
908 - | pub(crate) fn test_signed_request_query_params(name: &str) -> TestRequest {
|
909 - | test_parsed_request(name, "qpsreq")
|
1062 + | /// Get the HTTP request for the test
|
1063 + | pub(crate) fn request(&self) -> TestRequest {
|
1064 + | test_parsed_request(&self.path("request.txt"))
|
910 1065 | }
|
911 1066 |
|
912 - | fn test_parsed_request(name: &str, ext: &str) -> TestRequest {
|
913 - | let path = path(name, ext);
|
914 - | match parse_request(read(&path).as_bytes()) {
|
915 - | Ok(parsed) => parsed,
|
916 - | Err(err) => panic!("Failed to parse {}: {}", path, err),
|
1067 + | /// Get the signed HTTP request for the test
|
1068 + | pub(crate) fn signed_request(&self, signature_location: SignatureLocation) -> TestRequest {
|
1069 + | match signature_location {
|
1070 + | SignatureLocation::QueryParams => {
|
1071 + | test_parsed_request(&self.path("query-signed-request.txt"))
|
917 1072 | }
|
1073 + | SignatureLocation::Headers => {
|
1074 + | test_parsed_request(&self.path("header-signed-request.txt"))
|
918 1075 | }
|
919 - |
|
920 - | #[test]
|
921 - | fn test_parse() {
|
922 - | test_request("post-header-key-case");
|
923 1076 | }
|
924 - |
|
925 - | #[test]
|
926 - | fn test_read_query_params() {
|
927 - | test_request("get-vanilla-query-order-key-case");
|
928 1077 | }
|
929 - | }
|
930 - |
|
931 - | #[cfg(feature = "sigv4a")]
|
932 - | pub(crate) mod v4a {
|
933 - | use super::*;
|
934 - | use crate::http_request::{
|
935 - | PayloadChecksumKind, SessionTokenMode, SignatureLocation, SigningSettings,
|
936 - | };
|
937 - | use aws_credential_types::Credentials;
|
938 - | use aws_smithy_runtime_api::client::identity::Identity;
|
939 - | use serde_derive::Deserialize;
|
940 - | use std::time::{Duration, SystemTime};
|
941 - | use time::format_description::well_known::Rfc3339;
|
942 - | use time::OffsetDateTime;
|
943 1078 |
|
944 - | fn path(test_name: &str, definition_name: &str) -> String {
|
945 - | format!("aws-sig-v4a-test-suite/{test_name}/{definition_name}.txt")
|
1079 + | /// Get the canonical request for the test
|
1080 + | pub(crate) fn canonical_request(&self, signature_location: SignatureLocation) -> String {
|
1081 + | match signature_location {
|
1082 + | SignatureLocation::QueryParams => read(&self.path("query-canonical-request.txt")),
|
1083 + | SignatureLocation::Headers => read(&self.path("header-canonical-request.txt")),
|
946 1084 | }
|
947 - |
|
948 - | pub(crate) fn test_request(name: &str) -> TestRequest {
|
949 - | test_parsed_request(&path(name, "request"))
|
950 1085 | }
|
951 1086 |
|
952 - | pub(crate) fn test_canonical_request(
|
953 - | name: &str,
|
954 - | signature_location: SignatureLocation,
|
955 - | ) -> String {
|
1087 + | /// Get the string to sign for the test
|
1088 + | pub(crate) fn string_to_sign(&self, signature_location: SignatureLocation) -> String {
|
956 1089 | match signature_location {
|
957 - | SignatureLocation::QueryParams => read(&path(name, "query-canonical-request")),
|
958 - | SignatureLocation::Headers => read(&path(name, "header-canonical-request")),
|
1090 + | SignatureLocation::QueryParams => read(&self.path("query-string-to-sign.txt")),
|
1091 + | SignatureLocation::Headers => read(&self.path("header-string-to-sign.txt")),
|
959 1092 | }
|
960 1093 | }
|
961 1094 |
|
962 - | pub(crate) fn test_string_to_sign(name: &str, signature_location: SignatureLocation) -> String {
|
1095 + | /// Get the signature for the test
|
1096 + | pub(crate) fn signature(&self, signature_location: SignatureLocation) -> String {
|
963 1097 | match signature_location {
|
964 - | SignatureLocation::QueryParams => read(&path(name, "query-string-to-sign")),
|
965 - | SignatureLocation::Headers => read(&path(name, "header-string-to-sign")),
|
1098 + | SignatureLocation::QueryParams => read(&self.path("query-signature.txt")),
|
1099 + | SignatureLocation::Headers => read(&self.path("header-signature.txt")),
|
1100 + | }
|
966 1101 | }
|
1102 + |
|
1103 + | /// Get the test context for the test
|
1104 + | pub(crate) fn context(&self) -> TestContext {
|
1105 + | let context = read(&self.path("context.json"));
|
1106 + | let tc_builder: TestContextBuilder = serde_json::from_str(&context).unwrap();
|
1107 + | tc_builder.build()
|
967 1108 | }
|
1109 + | }
|
968 1110 |
|
969 - | fn test_parsed_request(path: &str) -> TestRequest {
|
1111 + | fn test_parsed_request(path: &str) -> TestRequest {
|
970 1112 | match parse_request(read(path).as_bytes()) {
|
971 1113 | Ok(parsed) => parsed,
|
972 1114 | Err(err) => panic!("Failed to parse {}: {}", path, err),
|
973 1115 | }
|
974 - | }
|
1116 + | }
|
975 1117 |
|
976 - | pub(crate) fn test_context(test_name: &str) -> TestContext {
|
977 - | let path = format!("aws-sig-v4a-test-suite/{test_name}/context.json");
|
978 - | let context = read(&path);
|
979 - | let tc_builder: TestContextBuilder = serde_json::from_str(&context).unwrap();
|
980 - | tc_builder.build()
|
981 - | }
|
1118 + | fn new_v4_signing_params_from_context(
|
1119 + | test_context: &'_ TestContext,
|
1120 + | signature_location: SignatureLocation,
|
1121 + | ) -> crate::http_request::SigningParams<'_> {
|
1122 + | let mut params = crate::sign::v4::SigningParams::from(test_context);
|
1123 + | params.settings.signature_location = signature_location;
|
1124 + | params.into()
|
1125 + | }
|
1126 + |
|
1127 + | /// Run the given test from the v4 suite for both header and query
|
1128 + | /// signature locations
|
1129 + | pub(crate) fn run_test_suite_v4(test_name: &'static str) {
|
1130 + | run_v4_test(test_name, SignatureLocation::Headers);
|
1131 + | run_v4_test(test_name, SignatureLocation::QueryParams);
|
1132 + | }
|
1133 + |
|
1134 + | fn assert_uri_eq(expected: &Uri, actual: &Uri) {
|
1135 + | assert_eq!(expected.scheme(), actual.scheme());
|
1136 + | assert_eq!(expected.authority(), actual.authority());
|
1137 + | assert_eq!(expected.path(), actual.path());
|
1138 + |
|
1139 + | // query params may be out of order
|
1140 + | let mut expected_params: Vec<(Cow<'_, str>, Cow<'_, str>)> =
|
1141 + | form_urlencoded::parse(expected.query().unwrap_or_default().as_bytes()).collect();
|
1142 + | expected_params.sort();
|
1143 + |
|
1144 + | let mut actual_params: Vec<(Cow<'_, str>, Cow<'_, str>)> =
|
1145 + | form_urlencoded::parse(actual.query().unwrap_or_default().as_bytes()).collect();
|
1146 + | actual_params.sort();
|
1147 + |
|
1148 + | assert_eq!(expected_params, actual_params);
|
1149 + | }
|
982 1150 |
|
983 - | pub(crate) struct TestContext {
|
1151 + | fn assert_requests_eq(expected: TestRequest, actual: http0::Request<&str>) {
|
1152 + | let expected = expected.as_http_request();
|
1153 + | let actual = actual;
|
1154 + | assert_eq!(expected.method(), actual.method());
|
1155 + | assert_eq!(
|
1156 + | expected.headers().len(),
|
1157 + | actual.headers().len(),
|
1158 + | "extra or missing headers"
|
1159 + | );
|
1160 + | assert_eq!(expected.headers(), actual.headers(), "headers mismatch");
|
1161 + | assert_uri_eq(expected.uri(), actual.uri());
|
1162 + | assert_eq!(*expected.body(), *actual.body(), "body mismatch");
|
1163 + | }
|
1164 + |
|
1165 + | /// Run the given test from the v4 suite for the given signature location
|
1166 + | pub(crate) fn run_v4_test(test_name: &'static str, signature_location: SignatureLocation) {
|
1167 + | let test = SigningSuiteTest::v4(test_name);
|
1168 + | let tc = test.context();
|
1169 + | let params = new_v4_signing_params_from_context(&tc, signature_location);
|
1170 + |
|
1171 + | let req = test.request();
|
1172 + | let expected_creq = test.canonical_request(signature_location);
|
1173 + | let signable_req = SignableRequest::from(&req);
|
1174 + | let actual_creq = CanonicalRequest::from(&signable_req, ¶ms).unwrap();
|
1175 + |
|
1176 + | // check canonical request
|
1177 + | assert_eq!(
|
1178 + | expected_creq,
|
1179 + | actual_creq.to_string(),
|
1180 + | "canonical request didn't match (signature location: {signature_location:?})"
|
1181 + | );
|
1182 + |
|
1183 + | let expected_string_to_sign = test.string_to_sign(signature_location);
|
1184 + | let hashed_creq = &crate::sign::v4::sha256_hex_string(actual_creq.to_string().as_bytes());
|
1185 + | let actual_string_to_sign = StringToSign::new_v4(
|
1186 + | *params.time(),
|
1187 + | params.region().unwrap(),
|
1188 + | params.name(),
|
1189 + | hashed_creq,
|
1190 + | )
|
1191 + | .to_string();
|
1192 + |
|
1193 + | // check string to sign
|
1194 + | assert_eq!(
|
1195 + | expected_string_to_sign, actual_string_to_sign,
|
1196 + | "'string to sign' didn't match (signature location: {signature_location:?})"
|
1197 + | );
|
1198 + |
|
1199 + | let out = crate::http_request::sign(signable_req, ¶ms).unwrap();
|
1200 + | let mut signed = req.as_http_request();
|
1201 + | out.output.apply_to_request_http0x(&mut signed);
|
1202 + |
|
1203 + | // check signature
|
1204 + | assert_eq!(
|
1205 + | test.signature(signature_location),
|
1206 + | out.signature,
|
1207 + | "signature didn't match (signature location: {signature_location:?})"
|
1208 + | );
|
1209 + |
|
1210 + | let expected = test.signed_request(signature_location);
|
1211 + | assert_requests_eq(expected, signed);
|
1212 + | }
|
1213 + |
|
1214 + | /// Test suite context.json
|
1215 + | pub(crate) struct TestContext {
|
984 1216 | pub(crate) identity: Identity,
|
985 1217 | pub(crate) expiration_in_seconds: u64,
|
986 1218 | pub(crate) normalize: bool,
|
987 1219 | pub(crate) region: String,
|
988 1220 | pub(crate) service: String,
|
989 1221 | pub(crate) timestamp: String,
|
990 1222 | pub(crate) omit_session_token: bool,
|
991 1223 | pub(crate) sign_body: bool,
|
992 - | }
|
993 - |
|
994 - | impl<'a> From<&'a TestContext> for crate::sign::v4a::SigningParams<'a, SigningSettings> {
|
995 - | fn from(tc: &'a TestContext) -> Self {
|
996 - | crate::sign::v4a::SigningParams {
|
997 - | identity: &tc.identity,
|
998 - | region_set: &tc.region,
|
999 - | name: &tc.service,
|
1000 - | time: OffsetDateTime::parse(&tc.timestamp, &Rfc3339)
|
1001 - | .unwrap()
|
1002 - | .into(),
|
1003 - | settings: SigningSettings {
|
1004 - | // payload_checksum_kind: PayloadChecksumKind::XAmzSha256,
|
1005 - | expires_in: Some(Duration::from_secs(tc.expiration_in_seconds)),
|
1006 - | uri_path_normalization_mode: tc.normalize.into(),
|
1007 - | session_token_mode: if tc.omit_session_token {
|
1008 - | SessionTokenMode::Exclude
|
1009 - | } else {
|
1010 - | SessionTokenMode::Include
|
1011 - | },
|
1012 - | payload_checksum_kind: if tc.sign_body {
|
1013 - | PayloadChecksumKind::XAmzSha256
|
1014 - | } else {
|
1015 - | PayloadChecksumKind::NoHeader
|
1016 - | },
|
1017 - | ..Default::default()
|
1018 - | },
|
1019 - | }
|
1020 - | }
|
1021 - | }
|
1224 + | }
|
1022 1225 |
|
1023 - | // Serde has limitations requiring this odd workaround.
|
1024 - | // See https://github.com/serde-rs/serde/issues/368 for more info.
|
1025 - | fn return_true() -> bool {
|
1226 + | // Serde has limitations requiring this odd workaround.
|
1227 + | // See https://github.com/serde-rs/serde/issues/368 for more info.
|
1228 + | fn return_true() -> bool {
|
1026 1229 | true
|
1027 - | }
|
1230 + | }
|
1028 1231 |
|
1029 - | #[derive(Deserialize)]
|
1030 - | pub(crate) struct TestContextBuilder {
|
1232 + | #[derive(serde_derive::Deserialize)]
|
1233 + | pub(crate) struct TestContextBuilder {
|
1031 1234 | credentials: TestContextCreds,
|
1032 1235 | expiration_in_seconds: u64,
|
1033 1236 | normalize: bool,
|
1034 1237 | region: String,
|
1035 1238 | service: String,
|
1036 1239 | timestamp: String,
|
1037 1240 | #[serde(default)]
|
1038 1241 | omit_session_token: bool,
|
1039 1242 | #[serde(default = "return_true")]
|
1040 1243 | sign_body: bool,
|
1041 - | }
|
1244 + | }
|
1042 1245 |
|
1043 - | impl TestContextBuilder {
|
1246 + | impl TestContextBuilder {
|
1044 1247 | pub(crate) fn build(self) -> TestContext {
|
1045 1248 | let identity = Identity::new(
|
1046 1249 | Credentials::from_keys(
|
1047 1250 | &self.credentials.access_key_id,
|
1048 1251 | &self.credentials.secret_access_key,
|
1049 1252 | self.credentials.token.clone(),
|
1050 1253 | ),
|
1051 1254 | Some(SystemTime::UNIX_EPOCH + Duration::from_secs(self.expiration_in_seconds)),
|
1052 1255 | );
|
1053 1256 |
|
1054 1257 | TestContext {
|
1055 1258 | identity,
|
1056 1259 | expiration_in_seconds: self.expiration_in_seconds,
|
1057 1260 | normalize: self.normalize,
|
1058 1261 | region: self.region,
|
1059 1262 | service: self.service,
|
1060 1263 | timestamp: self.timestamp,
|
1061 1264 | omit_session_token: self.omit_session_token,
|
1062 1265 | sign_body: self.sign_body,
|
1063 1266 | }
|
1064 1267 | }
|
1065 - | }
|
1268 + | }
|
1066 1269 |
|
1067 - | #[derive(Deserialize)]
|
1068 - | pub(crate) struct TestContextCreds {
|
1270 + | #[derive(serde_derive::Deserialize)]
|
1271 + | pub(crate) struct TestContextCreds {
|
1069 1272 | access_key_id: String,
|
1070 1273 | secret_access_key: String,
|
1071 1274 | token: Option<String>,
|
1275 + | }
|
1276 + |
|
1277 + | impl<'a> From<&'a TestContext> for crate::sign::v4::SigningParams<'a, SigningSettings> {
|
1278 + | fn from(tc: &'a TestContext) -> Self {
|
1279 + | crate::sign::v4::SigningParams {
|
1280 + | identity: &tc.identity,
|
1281 + | region: &tc.region,
|
1282 + | name: &tc.service,
|
1283 + | time: OffsetDateTime::parse(&tc.timestamp, &Rfc3339)
|
1284 + | .unwrap()
|
1285 + | .into(),
|
1286 + | settings: SigningSettings {
|
1287 + | // payload_checksum_kind: PayloadChecksumKind::XAmzSha256,
|
1288 + | expires_in: Some(Duration::from_secs(tc.expiration_in_seconds)),
|
1289 + | uri_path_normalization_mode: tc.normalize.into(),
|
1290 + | session_token_mode: if tc.omit_session_token {
|
1291 + | SessionTokenMode::Exclude
|
1292 + | } else {
|
1293 + | SessionTokenMode::Include
|
1294 + | },
|
1295 + | payload_checksum_kind: if tc.sign_body {
|
1296 + | PayloadChecksumKind::XAmzSha256
|
1297 + | } else {
|
1298 + | PayloadChecksumKind::NoHeader
|
1299 + | },
|
1300 + | ..Default::default()
|
1301 + | },
|
1302 + | }
|
1303 + | }
|
1304 + | }
|
1305 + |
|
1306 + | #[cfg(feature = "sigv4a")]
|
1307 + | pub(crate) mod v4a {
|
1308 + | use super::*;
|
1309 + | use crate::http_request::{
|
1310 + | sign, PayloadChecksumKind, SessionTokenMode, SignatureLocation, SigningSettings,
|
1311 + | };
|
1312 + | use crate::sign::v4a;
|
1313 + | use p256::ecdsa::signature::{Signature, Verifier};
|
1314 + | use p256::ecdsa::{DerSignature, SigningKey};
|
1315 + | use std::time::Duration;
|
1316 + | use time::format_description::well_known::Rfc3339;
|
1317 + | use time::OffsetDateTime;
|
1318 + |
|
1319 + | fn new_v4a_signing_params_from_context(
|
1320 + | test_context: &'_ TestContext,
|
1321 + | signature_location: SignatureLocation,
|
1322 + | ) -> crate::http_request::SigningParams<'_> {
|
1323 + | let mut params = crate::sign::v4a::SigningParams::from(test_context);
|
1324 + | params.settings.signature_location = signature_location;
|
1325 + | params.into()
|
1326 + | }
|
1327 + |
|
1328 + | pub(crate) fn run_test_suite_v4a(test_name: &'static str) {
|
1329 + | run_v4a_test(test_name, SignatureLocation::Headers);
|
1330 + | run_v4a_test(test_name, SignatureLocation::QueryParams);
|
1331 + | }
|
1332 + |
|
1333 + | pub(crate) fn run_v4a_test(test_name: &'static str, signature_location: SignatureLocation) {
|
1334 + | let test = SigningSuiteTest::v4a(test_name);
|
1335 + | let tc = test.context();
|
1336 + | let params = new_v4a_signing_params_from_context(&tc, signature_location);
|
1337 + |
|
1338 + | let req = test.request();
|
1339 + | let expected_creq = test.canonical_request(signature_location);
|
1340 + | let signable_req = SignableRequest::from(&req);
|
1341 + | let actual_creq = CanonicalRequest::from(&signable_req, ¶ms).unwrap();
|
1342 + |
|
1343 + | assert_eq!(
|
1344 + | expected_creq,
|
1345 + | actual_creq.to_string(),
|
1346 + | "canonical request didn't match (signature location: {signature_location:?})"
|
1347 + | );
|
1348 + |
|
1349 + | let expected_string_to_sign = test.string_to_sign(signature_location);
|
1350 + | let hashed_creq = &crate::sign::v4::sha256_hex_string(actual_creq.to_string().as_bytes());
|
1351 + | let actual_string_to_sign = StringToSign::new_v4a(
|
1352 + | *params.time(),
|
1353 + | params.region_set().unwrap(),
|
1354 + | params.name(),
|
1355 + | hashed_creq,
|
1356 + | )
|
1357 + | .to_string();
|
1358 + |
|
1359 + | assert_eq!(
|
1360 + | expected_string_to_sign, actual_string_to_sign,
|
1361 + | "'string to sign' didn't match (signature location: {signature_location:?})"
|
1362 + | );
|
1363 + |
|
1364 + | let out = sign(signable_req, ¶ms).unwrap();
|
1365 + | // Sigv4a signatures are non-deterministic, so we can't compare the signature directly.
|
1366 + | out.output
|
1367 + | .apply_to_request_http0x(&mut req.as_http_request());
|
1368 + |
|
1369 + | let creds = params.credentials().unwrap();
|
1370 + | let signing_key =
|
1371 + | v4a::generate_signing_key(creds.access_key_id(), creds.secret_access_key());
|
1372 + | let sig = DerSignature::from_bytes(&hex::decode(out.signature).unwrap()).unwrap();
|
1373 + | let sig = sig
|
1374 + | .try_into()
|
1375 + | .expect("DER-style signatures are always convertible into fixed-size signatures");
|
1376 + |
|
1377 + | let signing_key = SigningKey::from_bytes(signing_key.as_ref()).unwrap();
|
1378 + | let peer_public_key = signing_key.verifying_key();
|
1379 + | let sts = actual_string_to_sign.as_bytes();
|
1380 + | peer_public_key.verify(sts, &sig).unwrap();
|
1381 + | // TODO(sigv4a) - use public.key.json as verifying key?
|
1382 + | }
|
1383 + |
|
1384 + | impl<'a> From<&'a TestContext> for crate::sign::v4a::SigningParams<'a, SigningSettings> {
|
1385 + | fn from(tc: &'a TestContext) -> Self {
|
1386 + | crate::sign::v4a::SigningParams {
|
1387 + | identity: &tc.identity,
|
1388 + | region_set: &tc.region,
|
1389 + | name: &tc.service,
|
1390 + | time: OffsetDateTime::parse(&tc.timestamp, &Rfc3339)
|
1391 + | .unwrap()
|
1392 + | .into(),
|
1393 + | settings: SigningSettings {
|
1394 + | // payload_checksum_kind: PayloadChecksumKind::XAmzSha256,
|
1395 + | expires_in: Some(Duration::from_secs(tc.expiration_in_seconds)),
|
1396 + | uri_path_normalization_mode: tc.normalize.into(),
|
1397 + | session_token_mode: if tc.omit_session_token {
|
1398 + | SessionTokenMode::Exclude
|
1399 + | } else {
|
1400 + | SessionTokenMode::Include
|
1401 + | },
|
1402 + | payload_checksum_kind: if tc.sign_body {
|
1403 + | PayloadChecksumKind::XAmzSha256
|
1404 + | } else {
|
1405 + | PayloadChecksumKind::NoHeader
|
1406 + | },
|
1407 + | ..Default::default()
|
1408 + | },
|
1409 + | }
|
1410 + | }
|
1072 1411 | }
|
1073 1412 |
|
1074 1413 | #[test]
|
1075 1414 | fn test_parse() {
|
1076 - | let req = test_request("post-header-key-case");
|
1415 + | let req = SigningSuiteTest::v4a("post-header-key-case").request();
|
1077 1416 | assert_eq!(req.method, "POST");
|
1078 1417 | assert_eq!(req.uri, "https://example.amazonaws.com/");
|
1079 1418 | assert!(req.headers.is_empty());
|
1080 1419 | }
|
1081 1420 |
|
1082 1421 | #[test]
|
1083 1422 | fn test_read_query_params() {
|
1084 - | let req = test_request("get-header-value-trim");
|
1423 + | let req = SigningSuiteTest::v4a("get-header-value-trim").request();
|
1085 1424 | assert_eq!(req.method, "GET");
|
1086 1425 | assert_eq!(req.uri, "https://example.amazonaws.com/");
|
1087 1426 | assert!(!req.headers.is_empty());
|
1088 1427 | }
|
1089 1428 | }
|
1090 1429 |
|
1091 1430 | fn read(path: &str) -> String {
|
1092 1431 | println!("Loading `{}` for test case...", path);
|
1093 1432 | let v = {
|
1094 1433 | match std::fs::read_to_string(path) {
|
1095 1434 | // This replacement is necessary for tests to pass on Windows, as reading the
|
1096 1435 | // test snapshots from the file system results in CRLF line endings being inserted.
|
1097 1436 | Ok(value) => value.replace("\r\n", "\n"),
|
1098 1437 | Err(err) => {
|
1099 1438 | panic!("failed to load test case `{}`: {}", path, err);
|
1100 1439 | }
|
1101 1440 | }
|
1102 1441 | };
|
1103 1442 |
|
1104 1443 | v.trim().to_string()
|
1105 1444 | }
|
1106 1445 |
|
1107 1446 | pub(crate) struct TestRequest {
|
1108 1447 | pub(crate) uri: String,
|
1109 1448 | pub(crate) method: String,
|
1110 1449 | pub(crate) headers: Vec<(String, String)>,
|
1111 1450 | pub(crate) body: TestSignedBody,
|
1112 1451 | }
|
1113 1452 |
|
1114 1453 | pub(crate) enum TestSignedBody {
|
1115 1454 | @@ -290,79 +501,87 @@ impl<B: AsRef<[u8]>> From<http0::Request<B>> for TestRequest {
|
1116 1455 | String::from_utf8(v.as_bytes().to_vec()).unwrap(),
|
1117 1456 | )
|
1118 1457 | })
|
1119 1458 | .collect::<Vec<_>>(),
|
1120 1459 | body: TestSignedBody::Bytes(value.body().as_ref().to_vec()),
|
1121 1460 | }
|
1122 1461 | }
|
1123 1462 | }
|
1124 1463 |
|
1125 1464 | impl<'a> From<&'a TestRequest> for SignableRequest<'a> {
|
1126 1465 | fn from(request: &'a TestRequest) -> SignableRequest<'a> {
|
1127 1466 | SignableRequest::new(
|
1128 1467 | &request.method,
|
1129 1468 | &request.uri,
|
1130 1469 | request
|
1131 1470 | .headers
|
1132 1471 | .iter()
|
1133 1472 | .map(|(k, v)| (k.as_str(), v.as_str())),
|
1134 1473 | request.body.as_signable_body(),
|
1135 1474 | )
|
1136 1475 | .expect("URI MUST be valid")
|
1137 1476 | }
|
1138 1477 | }
|
1139 1478 |
|
1140 1479 | fn parse_request(s: &[u8]) -> Result<TestRequest, Box<dyn StdError + Send + Sync + 'static>> {
|
1141 1480 | let mut headers = [httparse::EMPTY_HEADER; 64];
|
1142 1481 | // httparse 1.5 requires two trailing newlines to head the header section.
|
1143 1482 | let mut with_newline = Vec::from(s);
|
1144 1483 | with_newline.push(b'\n');
|
1145 1484 | let mut req = httparse::Request::new(&mut headers);
|
1146 - | let _ = req.parse(&with_newline).unwrap();
|
1485 + | let status = req.parse(&with_newline).unwrap();
|
1486 + |
|
1487 + | let body = if status.is_complete() {
|
1488 + | let body_offset = status.unwrap();
|
1489 + | // ignore the newline we added, take from original
|
1490 + | &s[body_offset..]
|
1491 + | } else {
|
1492 + | &[]
|
1493 + | };
|
1147 1494 |
|
1148 1495 | let mut uri_builder = Uri::builder().scheme("https");
|
1149 1496 | if let Some(path) = req.path {
|
1150 1497 | uri_builder = uri_builder.path_and_query(path);
|
1151 1498 | }
|
1152 1499 |
|
1153 1500 | let mut headers = vec![];
|
1154 1501 | for header in req.headers {
|
1155 1502 | let name = header.name.to_lowercase();
|
1156 1503 | if name == "host" {
|
1157 1504 | uri_builder = uri_builder.authority(header.value);
|
1158 1505 | } else if !name.is_empty() {
|
1159 1506 | headers.push((
|
1160 1507 | header.name.to_string(),
|
1161 1508 | std::str::from_utf8(header.value)?.to_string(),
|
1162 1509 | ));
|
1163 1510 | }
|
1164 1511 | }
|
1165 1512 |
|
1166 1513 | Ok(TestRequest {
|
1167 1514 | uri: uri_builder.build()?.to_string(),
|
1168 1515 | method: req.method.unwrap().to_string(),
|
1169 1516 | headers,
|
1170 - | body: TestSignedBody::Bytes(vec![]),
|
1517 + | body: TestSignedBody::Bytes(Vec::from(body)),
|
1171 1518 | })
|
1172 1519 | }
|
1173 1520 |
|
1174 1521 | #[test]
|
1175 1522 | fn test_parse_headers() {
|
1176 1523 | let buf = b"Host:example.amazonaws.com\nX-Amz-Date:20150830T123600Z\n\nblah blah";
|
1177 1524 | let mut headers = [httparse::EMPTY_HEADER; 4];
|
1178 1525 | assert_eq!(
|
1179 1526 | httparse::parse_headers(buf, &mut headers),
|
1180 1527 | Ok(httparse::Status::Complete((
|
1181 1528 | 56,
|
1182 1529 | &[
|
1183 1530 | httparse::Header {
|
1184 1531 | name: "Host",
|
1185 1532 | value: b"example.amazonaws.com",
|
1186 1533 | },
|
1187 1534 | httparse::Header {
|
1188 1535 | name: "X-Amz-Date",
|
1189 1536 | value: b"20150830T123600Z",
|
1190 1537 | }
|
1191 1538 | ][..]
|
1192 1539 | )))
|
1193 1540 | );
|
1194 1541 | }
|
1195 1542 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/sign/v4.rs b/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/sign/v4.rs
|
1196 1543 | index a208453..fc00249 100644
|
1197 - | -- a/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/sign/v4.rs
|
1544 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/aws-sigv4/src/sign/v4.rs
|
1198 1545 | @@ -168,52 +168,54 @@ pub mod signing_params {
|
1199 1546 | );
|
1200 1547 |
|
1201 1548 | /// Builds an instance of [`SigningParams`]. Will yield a [`BuildError`] if
|
1202 1549 | /// a required argument was not given.
|
1203 1550 | pub fn build(self) -> Result<SigningParams<'a, S>, BuildError> {
|
1204 1551 | Ok(SigningParams {
|
1205 1552 | identity: self
|
1206 1553 | .identity
|
1207 1554 | .ok_or_else(|| BuildError::new("identity is required"))?,
|
1208 1555 | region: self
|
1209 1556 | .region
|
1210 1557 | .ok_or_else(|| BuildError::new("region is required"))?,
|
1211 1558 | name: self
|
1212 1559 | .name
|
1213 1560 | .ok_or_else(|| BuildError::new("name is required"))?,
|
1214 1561 | time: self
|
1215 1562 | .time
|
1216 1563 | .ok_or_else(|| BuildError::new("time is required"))?,
|
1217 1564 | settings: self
|
1218 1565 | .settings
|
1219 1566 | .ok_or_else(|| BuildError::new("settings are required"))?,
|
1220 1567 | })
|
1221 1568 | }
|
1222 1569 | }
|
1223 1570 | }
|
1224 1571 |
|
1225 1572 | #[cfg(test)]
|
1226 1573 | mod tests {
|
1227 1574 | use super::{calculate_signature, generate_signing_key, sha256_hex_string};
|
1228 1575 | use crate::date_time::test_parsers::parse_date_time;
|
1229 - | use crate::http_request::test;
|
1230 1576 |
|
1231 1577 | #[test]
|
1232 1578 | fn test_signature_calculation() {
|
1233 1579 | let secret = "wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY";
|
1234 - | let creq = test::v4::test_canonical_request("iam");
|
1580 + | let creq = r#"AWS4-HMAC-SHA256
|
1581 + | 20150830T123600Z
|
1582 + | 20150830/us-east-1/iam/aws4_request
|
1583 + | f536975d06c0309214f805bb90ccff089219ecd68b2577efef23edd43b7e1a59"#;
|
1235 1584 | let time = parse_date_time("20150830T123600Z").unwrap();
|
1236 1585 |
|
1237 1586 | let derived_key = generate_signing_key(secret, time, "us-east-1", "iam");
|
1238 1587 | let signature = calculate_signature(derived_key, creq.as_bytes());
|
1239 1588 |
|
1240 1589 | let expected = "5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7";
|
1241 1590 | assert_eq!(expected, &signature);
|
1242 1591 | }
|
1243 1592 |
|
1244 1593 | #[test]
|
1245 1594 | fn sign_payload_empty_string() {
|
1246 1595 | let expected = "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855";
|
1247 1596 | let actual = sha256_hex_string([]);
|
1248 1597 | assert_eq!(expected, actual);
|
1249 1598 | }
|
1250 1599 | }
|
1251 1600 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-checksums/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-checksums/Cargo.toml
|
1252 1601 | index ce78c38..8c2f591 100644
|
1253 - | -- a/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-checksums/Cargo.toml
|
1602 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-checksums/Cargo.toml
|
1254 1603 | @@ -1,43 +1,43 @@
|
1255 1604 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
1256 1605 | [package]
|
1257 1606 | name = "aws-smithy-checksums"
|
1258 1607 | version = "0.63.5"
|
1259 1608 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Zelda Hessler <zhessler@amazon.com>"]
|
1260 1609 | description = "Checksum calculation and verification callbacks"
|
1261 1610 | edition = "2021"
|
1262 1611 | license = "Apache-2.0"
|
1263 1612 | repository = "https://github.com/smithy-lang/smithy-rs"
|
1264 1613 | [package.metadata.docs.rs]
|
1265 1614 | all-features = true
|
1266 1615 | targets = ["x86_64-unknown-linux-gnu"]
|
1267 1616 | cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
|
1268 1617 | rustdoc-args = ["--cfg", "docsrs"]
|
1269 1618 |
|
1270 1619 | [dependencies]
|
1271 1620 | bytes = "1.10.0"
|
1272 1621 | crc-fast = "1.3.0"
|
1273 1622 | hex = "0.4.3"
|
1274 1623 | http = "0.2.9"
|
1275 1624 | http-body = "0.4.5"
|
1276 1625 | md-5 = "0.10"
|
1277 1626 | pin-project-lite = "0.2.14"
|
1278 1627 | sha1 = "0.10"
|
1279 1628 | sha2 = "0.10"
|
1280 1629 | tracing = "0.1.40"
|
1281 1630 |
|
1282 1631 | [dependencies.aws-smithy-http]
|
1283 1632 | path = "../aws-smithy-http"
|
1284 - | version = "0.62.2"
|
1633 + | version = "0.62.3"
|
1285 1634 |
|
1286 1635 | [dependencies.aws-smithy-types]
|
1287 1636 | path = "../aws-smithy-types"
|
1288 1637 | version = "1.3.2"
|
1289 1638 |
|
1290 1639 | [dev-dependencies]
|
1291 1640 | bytes-utils = "0.1.2"
|
1292 1641 | pretty_assertions = "1.3"
|
1293 1642 | tracing-test = "0.2.1"
|
1294 1643 |
|
1295 1644 | [dev-dependencies.tokio]
|
1296 1645 | version = "1.23.1"
|
1297 1646 | features = ["macros", "rt"]
|
1298 1647 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-http/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-http/Cargo.toml
|
1299 1648 | index 970c99e..d3c7a49 100644
|
1300 - | -- a/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-http/Cargo.toml
|
1649 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-http/Cargo.toml
|
1301 1650 | @@ -1,34 +1,34 @@
|
1302 1651 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
1303 1652 | [package]
|
1304 1653 | name = "aws-smithy-http"
|
1305 - | version = "0.62.2"
|
1654 + | version = "0.62.3"
|
1306 1655 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
1307 1656 | description = "Smithy HTTP logic for smithy-rs."
|
1308 1657 | edition = "2021"
|
1309 1658 | license = "Apache-2.0"
|
1310 1659 | repository = "https://github.com/smithy-lang/smithy-rs"
|
1311 1660 | [package.metadata.docs.rs]
|
1312 1661 | all-features = true
|
1313 1662 | targets = ["x86_64-unknown-linux-gnu"]
|
1314 1663 | cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
|
1315 1664 | rustdoc-args = ["--cfg", "docsrs"]
|
1316 1665 |
|
1317 1666 | [features]
|
1318 1667 | event-stream = ["aws-smithy-eventstream"]
|
1319 1668 | rt-tokio = ["aws-smithy-types/rt-tokio"]
|
1320 1669 |
|
1321 1670 | [dependencies]
|
1322 1671 | bytes = "1.10.0"
|
1323 1672 | bytes-utils = "0.1"
|
1324 1673 | percent-encoding = "2.3.1"
|
1325 1674 | pin-project-lite = "0.2.14"
|
1326 1675 | pin-utils = "0.1.0"
|
1327 1676 | tracing = "0.1.40"
|
1328 1677 | futures-core = "0.3.31"
|
1329 1678 |
|
1330 1679 | [dependencies.aws-smithy-eventstream]
|
1331 1680 | path = "../aws-smithy-eventstream"
|
1332 1681 | optional = true
|
1333 1682 | version = "0.60.10"
|
1334 1683 |
|
1335 1684 | [dependencies.aws-smithy-runtime-api]
|
1336 1685 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-http/fuzz/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-http/fuzz/Cargo.toml
|
1337 1686 | index 508f7a2..361545e 100644
|
1338 - | -- a/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-http/fuzz/Cargo.toml
|
1687 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-http/fuzz/Cargo.toml
|
1339 1688 | @@ -1,27 +1,27 @@
|
1340 1689 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
1341 1690 | [[bin]]
|
1342 1691 | name = "read_many_from_str"
|
1343 1692 | path = "fuzz_targets/read_many_from_str.rs"
|
1344 1693 | test = false
|
1345 1694 | doc = false
|
1346 1695 |
|
1347 1696 | [package]
|
1348 1697 | name = "aws-smithy-http-fuzz"
|
1349 1698 | version = "0.0.0"
|
1350 1699 | authors = ["Automatically generated"]
|
1351 1700 | publish = false
|
1352 1701 | edition = "2021"
|
1353 1702 |
|
1354 1703 | [package.metadata]
|
1355 1704 | cargo-fuzz = true
|
1356 1705 |
|
1357 1706 | [dependencies]
|
1358 1707 | libfuzzer-sys = "=0.4.7"
|
1359 1708 | http = "0.2.3"
|
1360 1709 |
|
1361 1710 | [dependencies.aws-smithy-http]
|
1362 1711 | path = ".."
|
1363 - | version = "0.62.2"
|
1712 + | version = "0.62.3"
|
1364 1713 |
|
1365 1714 | [workspace]
|
1366 1715 | members = ["."]
|
1367 1716 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-http/src/query_writer.rs b/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-http/src/query_writer.rs
|
1368 1717 | index fef41d0..2792229 100644
|
1369 - | -- a/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-http/src/query_writer.rs
|
1718 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-http/src/query_writer.rs
|
1370 1719 | @@ -25,68 +25,74 @@ impl QueryWriter {
|
1371 1720 | pub fn new(uri: &Uri) -> Self {
|
1372 1721 | let new_path_and_query = uri
|
1373 1722 | .path_and_query()
|
1374 1723 | .map(|pq| pq.to_string())
|
1375 1724 | .unwrap_or_default();
|
1376 1725 | let prefix = if uri.query().is_none() {
|
1377 1726 | Some('?')
|
1378 1727 | } else if !uri.query().unwrap_or_default().is_empty() {
|
1379 1728 | Some('&')
|
1380 1729 | } else {
|
1381 1730 | None
|
1382 1731 | };
|
1383 1732 | QueryWriter {
|
1384 1733 | base_uri: uri.clone(),
|
1385 1734 | new_path_and_query,
|
1386 1735 | prefix,
|
1387 1736 | }
|
1388 1737 | }
|
1389 1738 |
|
1390 1739 | /// Clears all query parameters.
|
1391 1740 | pub fn clear_params(&mut self) {
|
1392 1741 | if let Some(index) = self.new_path_and_query.find('?') {
|
1393 1742 | self.new_path_and_query.truncate(index);
|
1394 1743 | self.prefix = Some('?');
|
1395 1744 | }
|
1396 1745 | }
|
1397 1746 |
|
1398 1747 | /// Inserts a new query parameter. The key and value are percent encoded
|
1399 1748 | /// by `QueryWriter`. Passing in percent encoded values will result in double encoding.
|
1400 1749 | pub fn insert(&mut self, k: &str, v: &str) {
|
1750 + | self.insert_encoded(&percent_encode_query(k), &percent_encode_query(v));
|
1751 + | }
|
1752 + |
|
1753 + | /// Inserts a new already encoded query parameter. The key and value will be inserted
|
1754 + | /// as is.
|
1755 + | pub fn insert_encoded(&mut self, encoded_k: &str, encoded_v: &str) {
|
1401 1756 | if let Some(prefix) = self.prefix {
|
1402 1757 | self.new_path_and_query.push(prefix);
|
1403 1758 | }
|
1404 1759 | self.prefix = Some('&');
|
1405 - | self.new_path_and_query.push_str(&percent_encode_query(k));
|
1760 + | self.new_path_and_query.push_str(encoded_k);
|
1406 1761 | self.new_path_and_query.push('=');
|
1762 + | self.new_path_and_query.push_str(encoded_v)
|
1407 1763 |
|
1408 - | self.new_path_and_query.push_str(&percent_encode_query(v));
|
1409 1764 | }
|
1410 1765 |
|
1411 1766 | /// Returns just the built query string.
|
1412 1767 | pub fn build_query(self) -> String {
|
1413 1768 | self.build_uri().query().unwrap_or_default().to_string()
|
1414 1769 | }
|
1415 1770 |
|
1416 1771 | /// Returns a full [`Uri`] with the query string updated.
|
1417 1772 | pub fn build_uri(self) -> Uri {
|
1418 1773 | let mut parts = self.base_uri.into_parts();
|
1419 1774 | parts.path_and_query = Some(
|
1420 1775 | self.new_path_and_query
|
1421 1776 | .parse()
|
1422 1777 | .expect("adding query should not invalidate URI"),
|
1423 1778 | );
|
1424 1779 | Uri::from_parts(parts).expect("a valid URL in should always produce a valid URL out")
|
1425 1780 | }
|
1426 1781 | }
|
1427 1782 |
|
1428 1783 | #[cfg(test)]
|
1429 1784 | mod test {
|
1430 1785 | use super::QueryWriter;
|
1431 1786 | use http_02x::Uri;
|
1432 1787 |
|
1433 1788 | #[test]
|
1434 1789 | fn empty_uri() {
|
1435 1790 | let uri = Uri::from_static("http://www.example.com");
|
1436 1791 | let mut query_writer = QueryWriter::new(&uri);
|
1437 1792 | query_writer.insert("key", "val%ue");
|
1438 1793 | query_writer.insert("another", "value");
|
1439 1794 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-runtime/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-runtime/Cargo.toml
|
1440 1795 | index f108978..df7a9fe 100644
|
1441 - | -- a/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-runtime/Cargo.toml
|
1796 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-runtime/Cargo.toml
|
1442 1797 | @@ -15,61 +15,61 @@ rustdoc-args = ["--cfg", "docsrs"]
|
1443 1798 |
|
1444 1799 | [package.metadata.smithy-rs-release-tooling]
|
1445 1800 | stable = true
|
1446 1801 | [package.metadata.cargo-udeps.ignore]
|
1447 1802 | normal = ["aws-smithy-http"]
|
1448 1803 |
|
1449 1804 | [features]
|
1450 1805 | client = ["aws-smithy-runtime-api/client", "aws-smithy-types/http-body-1-x"]
|
1451 1806 | http-auth = ["aws-smithy-runtime-api/http-auth"]
|
1452 1807 | connector-hyper-0-14-x = ["dep:aws-smithy-http-client", "aws-smithy-http-client?/hyper-014"]
|
1453 1808 | tls-rustls = ["dep:aws-smithy-http-client", "aws-smithy-http-client?/legacy-rustls-ring", "connector-hyper-0-14-x"]
|
1454 1809 | default-https-client = ["dep:aws-smithy-http-client", "aws-smithy-http-client?/rustls-aws-lc"]
|
1455 1810 | rt-tokio = ["tokio/rt"]
|
1456 1811 | test-util = ["aws-smithy-runtime-api/test-util", "dep:tracing-subscriber", "aws-smithy-http-client/test-util", "legacy-test-util"]
|
1457 1812 | legacy-test-util = ["aws-smithy-runtime-api/test-util", "dep:tracing-subscriber", "aws-smithy-http-client/test-util", "connector-hyper-0-14-x", "aws-smithy-http-client/legacy-test-util"]
|
1458 1813 | wire-mock = ["legacy-test-util", "aws-smithy-http-client/wire-mock"]
|
1459 1814 |
|
1460 1815 | [dependencies]
|
1461 1816 | bytes = "1.10.0"
|
1462 1817 | fastrand = "2.3.0"
|
1463 1818 | pin-project-lite = "0.2.14"
|
1464 1819 | pin-utils = "0.1.0"
|
1465 1820 | tracing = "0.1.40"
|
1466 1821 |
|
1467 1822 | [dependencies.aws-smithy-async]
|
1468 1823 | path = "../aws-smithy-async"
|
1469 1824 | version = "1.2.5"
|
1470 1825 |
|
1471 1826 | [dependencies.aws-smithy-http]
|
1472 1827 | path = "../aws-smithy-http"
|
1473 - | version = "0.62.2"
|
1828 + | version = "0.62.3"
|
1474 1829 |
|
1475 1830 | [dependencies.aws-smithy-observability]
|
1476 1831 | path = "../aws-smithy-observability"
|
1477 1832 | version = "0.1.3"
|
1478 1833 |
|
1479 1834 | [dependencies.aws-smithy-runtime-api]
|
1480 1835 | path = "../aws-smithy-runtime-api"
|
1481 1836 | version = "1.8.5"
|
1482 1837 |
|
1483 1838 | [dependencies.aws-smithy-types]
|
1484 1839 | path = "../aws-smithy-types"
|
1485 1840 | features = ["http-body-0-4-x"]
|
1486 1841 | version = "1.3.2"
|
1487 1842 |
|
1488 1843 | [dependencies.aws-smithy-http-client]
|
1489 1844 | path = "../aws-smithy-http-client"
|
1490 1845 | optional = true
|
1491 1846 | version = "1.0.6"
|
1492 1847 |
|
1493 1848 | [dependencies.http-02x]
|
1494 1849 | package = "http"
|
1495 1850 | version = "0.2.9"
|
1496 1851 |
|
1497 1852 | [dependencies.http-1x]
|
1498 1853 | package = "http"
|
1499 1854 | version = "1"
|
1500 1855 |
|
1501 1856 | [dependencies.http-body-04x]
|
1502 1857 | package = "http-body"
|
1503 1858 | version = "0.4.5"
|
1504 1859 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-wasm/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-wasm/Cargo.toml
|
1505 1860 | index 4e050c6..f58eb1c 100644
|
1506 - | -- a/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-wasm/Cargo.toml
|
1861 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/aws-smithy-wasm/Cargo.toml
|
1507 1862 | @@ -1,33 +1,33 @@
|
1508 1863 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
1509 1864 | [package]
|
1510 1865 | name = "aws-smithy-wasm"
|
1511 1866 | version = "0.1.4"
|
1512 1867 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Eduardo Rodrigues <16357187+eduardomourar@users.noreply.github.com>"]
|
1513 1868 | description = "Smithy WebAssembly configuration for smithy-rs."
|
1514 1869 | edition = "2021"
|
1515 1870 | license = "Apache-2.0"
|
1516 1871 | repository = "https://github.com/awslabs/smithy-rs"
|
1517 1872 | [package.metadata.docs.rs]
|
1518 1873 | all-features = true
|
1519 1874 | targets = ["x86_64-unknown-linux-gnu"]
|
1520 1875 | cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"]
|
1521 1876 | rustdoc-args = ["--cfg", "docsrs"]
|
1522 1877 |
|
1523 1878 | [dependencies]
|
1524 1879 | bytes = "1.10.0"
|
1525 1880 | http = "1.0.0"
|
1526 1881 | tracing = "0.1.40"
|
1527 1882 | wasi = "0.12.1"
|
1528 1883 |
|
1529 1884 | [dependencies.aws-smithy-runtime-api]
|
1530 1885 | path = "../aws-smithy-runtime-api"
|
1531 1886 | features = ["http-1x"]
|
1532 1887 | version = "1.8.5"
|
1533 1888 |
|
1534 1889 | [dependencies.aws-smithy-http]
|
1535 1890 | path = "../aws-smithy-http"
|
1536 - | version = "0.62.2"
|
1891 + | version = "0.62.3"
|
1537 1892 |
|
1538 1893 | [dependencies.aws-smithy-types]
|
1539 1894 | path = "../aws-smithy-types"
|
1540 1895 | version = "1.3.2"
|
1541 1896 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/bedrockruntime/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/bedrockruntime/Cargo.toml
|
1542 1897 | index a880648..139e808 100644
|
1543 - | -- a/tmp-codegen-diff/aws-sdk/sdk/bedrockruntime/Cargo.toml
|
1898 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/bedrockruntime/Cargo.toml
|
1544 1899 | @@ -7,61 +7,61 @@ description = "AWS SDK for Amazon Bedrock Runtime"
|
1545 1900 | edition = "2021"
|
1546 1901 | license = "Apache-2.0"
|
1547 1902 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
1548 1903 | rust-version = "1.86.0"
|
1549 1904 | readme = "README.md"
|
1550 1905 | [package.metadata.smithy]
|
1551 1906 | codegen-version = "ci"
|
1552 1907 | [package.metadata.docs.rs]
|
1553 1908 | all-features = true
|
1554 1909 | targets = ["x86_64-unknown-linux-gnu"]
|
1555 1910 | [dependencies.aws-credential-types]
|
1556 1911 | path = "../aws-credential-types"
|
1557 1912 | version = "1.2.4"
|
1558 1913 |
|
1559 1914 | [dependencies.aws-runtime]
|
1560 1915 | path = "../aws-runtime"
|
1561 1916 | features = ["event-stream"]
|
1562 1917 | version = "1.5.9"
|
1563 1918 |
|
1564 1919 | [dependencies.aws-smithy-async]
|
1565 1920 | path = "../aws-smithy-async"
|
1566 1921 | version = "1.2.5"
|
1567 1922 |
|
1568 1923 | [dependencies.aws-smithy-eventstream]
|
1569 1924 | path = "../aws-smithy-eventstream"
|
1570 1925 | version = "0.60.10"
|
1571 1926 |
|
1572 1927 | [dependencies.aws-smithy-http]
|
1573 1928 | path = "../aws-smithy-http"
|
1574 1929 | features = ["event-stream"]
|
1575 - | version = "0.62.2"
|
1930 + | version = "0.62.3"
|
1576 1931 |
|
1577 1932 | [dependencies.aws-smithy-json]
|
1578 1933 | path = "../aws-smithy-json"
|
1579 1934 | version = "0.61.4"
|
1580 1935 |
|
1581 1936 | [dependencies.aws-smithy-runtime]
|
1582 1937 | path = "../aws-smithy-runtime"
|
1583 1938 | features = ["client"]
|
1584 1939 | version = "1.8.5"
|
1585 1940 |
|
1586 1941 | [dependencies.aws-smithy-runtime-api]
|
1587 1942 | path = "../aws-smithy-runtime-api"
|
1588 1943 | features = ["client", "http-02x"]
|
1589 1944 | version = "1.8.5"
|
1590 1945 |
|
1591 1946 | [dependencies.aws-smithy-types]
|
1592 1947 | path = "../aws-smithy-types"
|
1593 1948 | version = "1.3.2"
|
1594 1949 |
|
1595 1950 | [dependencies.aws-types]
|
1596 1951 | path = "../aws-types"
|
1597 1952 | version = "1.3.8"
|
1598 1953 |
|
1599 1954 | [dependencies.bytes]
|
1600 1955 | version = "1.4.0"
|
1601 1956 |
|
1602 1957 | [dependencies.fastrand]
|
1603 1958 | version = "2.0.0"
|
1604 1959 |
|
1605 1960 | [dependencies.http]
|
1606 1961 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/cloudwatchlogs/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/cloudwatchlogs/Cargo.toml
|
1607 1962 | index 415ecc9..667d12b 100644
|
1608 - | -- a/tmp-codegen-diff/aws-sdk/sdk/cloudwatchlogs/Cargo.toml
|
1963 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/cloudwatchlogs/Cargo.toml
|
1609 1964 | @@ -7,61 +7,61 @@ description = "AWS SDK for Amazon CloudWatch Logs"
|
1610 1965 | edition = "2021"
|
1611 1966 | license = "Apache-2.0"
|
1612 1967 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
1613 1968 | rust-version = "1.86.0"
|
1614 1969 | readme = "README.md"
|
1615 1970 | [package.metadata.smithy]
|
1616 1971 | codegen-version = "ci"
|
1617 1972 | [package.metadata.docs.rs]
|
1618 1973 | all-features = true
|
1619 1974 | targets = ["x86_64-unknown-linux-gnu"]
|
1620 1975 | [dependencies.aws-credential-types]
|
1621 1976 | path = "../aws-credential-types"
|
1622 1977 | version = "1.2.4"
|
1623 1978 |
|
1624 1979 | [dependencies.aws-runtime]
|
1625 1980 | path = "../aws-runtime"
|
1626 1981 | features = ["event-stream"]
|
1627 1982 | version = "1.5.9"
|
1628 1983 |
|
1629 1984 | [dependencies.aws-smithy-async]
|
1630 1985 | path = "../aws-smithy-async"
|
1631 1986 | version = "1.2.5"
|
1632 1987 |
|
1633 1988 | [dependencies.aws-smithy-eventstream]
|
1634 1989 | path = "../aws-smithy-eventstream"
|
1635 1990 | version = "0.60.10"
|
1636 1991 |
|
1637 1992 | [dependencies.aws-smithy-http]
|
1638 1993 | path = "../aws-smithy-http"
|
1639 1994 | features = ["event-stream"]
|
1640 - | version = "0.62.2"
|
1995 + | version = "0.62.3"
|
1641 1996 |
|
1642 1997 | [dependencies.aws-smithy-json]
|
1643 1998 | path = "../aws-smithy-json"
|
1644 1999 | version = "0.61.4"
|
1645 2000 |
|
1646 2001 | [dependencies.aws-smithy-runtime]
|
1647 2002 | path = "../aws-smithy-runtime"
|
1648 2003 | features = ["client"]
|
1649 2004 | version = "1.8.5"
|
1650 2005 |
|
1651 2006 | [dependencies.aws-smithy-runtime-api]
|
1652 2007 | path = "../aws-smithy-runtime-api"
|
1653 2008 | features = ["client", "http-02x"]
|
1654 2009 | version = "1.8.5"
|
1655 2010 |
|
1656 2011 | [dependencies.aws-smithy-types]
|
1657 2012 | path = "../aws-smithy-types"
|
1658 2013 | version = "1.3.2"
|
1659 2014 |
|
1660 2015 | [dependencies.aws-types]
|
1661 2016 | path = "../aws-types"
|
1662 2017 | version = "1.3.8"
|
1663 2018 |
|
1664 2019 | [dependencies.bytes]
|
1665 2020 | version = "1.4.0"
|
1666 2021 |
|
1667 2022 | [dependencies.fastrand]
|
1668 2023 | version = "2.0.0"
|
1669 2024 |
|
1670 2025 | [dependencies.http]
|
1671 2026 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/codecatalyst/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/codecatalyst/Cargo.toml
|
1672 2027 | index 8871cab..ed88de6 100644
|
1673 - | -- a/tmp-codegen-diff/aws-sdk/sdk/codecatalyst/Cargo.toml
|
2028 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/codecatalyst/Cargo.toml
|
1674 2029 | @@ -1,61 +1,61 @@
|
1675 2030 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
1676 2031 | [package]
|
1677 2032 | name = "aws-sdk-codecatalyst"
|
1678 2033 | version = "0.0.0-local"
|
1679 2034 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
1680 2035 | description = "AWS SDK for Amazon CodeCatalyst"
|
1681 2036 | edition = "2021"
|
1682 2037 | license = "Apache-2.0"
|
1683 2038 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
1684 2039 | rust-version = "1.86.0"
|
1685 2040 | readme = "README.md"
|
1686 2041 | [package.metadata.smithy]
|
1687 2042 | codegen-version = "ci"
|
1688 2043 | [package.metadata.docs.rs]
|
1689 2044 | all-features = true
|
1690 2045 | targets = ["x86_64-unknown-linux-gnu"]
|
1691 2046 | [dependencies.aws-credential-types]
|
1692 2047 | path = "../aws-credential-types"
|
1693 2048 | version = "1.2.4"
|
1694 2049 |
|
1695 2050 | [dependencies.aws-runtime]
|
1696 2051 | path = "../aws-runtime"
|
1697 2052 | version = "1.5.9"
|
1698 2053 |
|
1699 2054 | [dependencies.aws-smithy-async]
|
1700 2055 | path = "../aws-smithy-async"
|
1701 2056 | version = "1.2.5"
|
1702 2057 |
|
1703 2058 | [dependencies.aws-smithy-http]
|
1704 2059 | path = "../aws-smithy-http"
|
1705 - | version = "0.62.2"
|
2060 + | version = "0.62.3"
|
1706 2061 |
|
1707 2062 | [dependencies.aws-smithy-json]
|
1708 2063 | path = "../aws-smithy-json"
|
1709 2064 | version = "0.61.4"
|
1710 2065 |
|
1711 2066 | [dependencies.aws-smithy-runtime]
|
1712 2067 | path = "../aws-smithy-runtime"
|
1713 2068 | features = ["client", "http-auth"]
|
1714 2069 | version = "1.8.5"
|
1715 2070 |
|
1716 2071 | [dependencies.aws-smithy-runtime-api]
|
1717 2072 | path = "../aws-smithy-runtime-api"
|
1718 2073 | features = ["client", "http-02x", "http-auth"]
|
1719 2074 | version = "1.8.5"
|
1720 2075 |
|
1721 2076 | [dependencies.aws-smithy-types]
|
1722 2077 | path = "../aws-smithy-types"
|
1723 2078 | version = "1.3.2"
|
1724 2079 |
|
1725 2080 | [dependencies.aws-types]
|
1726 2081 | path = "../aws-types"
|
1727 2082 | version = "1.3.8"
|
1728 2083 |
|
1729 2084 | [dependencies.bytes]
|
1730 2085 | version = "1.4.0"
|
1731 2086 |
|
1732 2087 | [dependencies.fastrand]
|
1733 2088 | version = "2.0.0"
|
1734 2089 |
|
1735 2090 | [dependencies.http]
|
1736 2091 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/config/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/config/Cargo.toml
|
1737 2092 | index 89573ff..05238af 100644
|
1738 - | -- a/tmp-codegen-diff/aws-sdk/sdk/config/Cargo.toml
|
2093 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/config/Cargo.toml
|
1739 2094 | @@ -1,61 +1,61 @@
|
1740 2095 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
1741 2096 | [package]
|
1742 2097 | name = "aws-sdk-config"
|
1743 2098 | version = "0.0.0-local"
|
1744 2099 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
1745 2100 | description = "AWS SDK for AWS Config"
|
1746 2101 | edition = "2021"
|
1747 2102 | license = "Apache-2.0"
|
1748 2103 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
1749 2104 | rust-version = "1.86.0"
|
1750 2105 | readme = "README.md"
|
1751 2106 | [package.metadata.smithy]
|
1752 2107 | codegen-version = "ci"
|
1753 2108 | [package.metadata.docs.rs]
|
1754 2109 | all-features = true
|
1755 2110 | targets = ["x86_64-unknown-linux-gnu"]
|
1756 2111 | [dependencies.aws-credential-types]
|
1757 2112 | path = "../aws-credential-types"
|
1758 2113 | version = "1.2.4"
|
1759 2114 |
|
1760 2115 | [dependencies.aws-runtime]
|
1761 2116 | path = "../aws-runtime"
|
1762 2117 | version = "1.5.9"
|
1763 2118 |
|
1764 2119 | [dependencies.aws-smithy-async]
|
1765 2120 | path = "../aws-smithy-async"
|
1766 2121 | version = "1.2.5"
|
1767 2122 |
|
1768 2123 | [dependencies.aws-smithy-http]
|
1769 2124 | path = "../aws-smithy-http"
|
1770 - | version = "0.62.2"
|
2125 + | version = "0.62.3"
|
1771 2126 |
|
1772 2127 | [dependencies.aws-smithy-json]
|
1773 2128 | path = "../aws-smithy-json"
|
1774 2129 | version = "0.61.4"
|
1775 2130 |
|
1776 2131 | [dependencies.aws-smithy-runtime]
|
1777 2132 | path = "../aws-smithy-runtime"
|
1778 2133 | features = ["client"]
|
1779 2134 | version = "1.8.5"
|
1780 2135 |
|
1781 2136 | [dependencies.aws-smithy-runtime-api]
|
1782 2137 | path = "../aws-smithy-runtime-api"
|
1783 2138 | features = ["client", "http-02x"]
|
1784 2139 | version = "1.8.5"
|
1785 2140 |
|
1786 2141 | [dependencies.aws-smithy-types]
|
1787 2142 | path = "../aws-smithy-types"
|
1788 2143 | version = "1.3.2"
|
1789 2144 |
|
1790 2145 | [dependencies.aws-types]
|
1791 2146 | path = "../aws-types"
|
1792 2147 | version = "1.3.8"
|
1793 2148 |
|
1794 2149 | [dependencies.bytes]
|
1795 2150 | version = "1.4.0"
|
1796 2151 |
|
1797 2152 | [dependencies.fastrand]
|
1798 2153 | version = "2.0.0"
|
1799 2154 |
|
1800 2155 | [dependencies.http]
|
1801 2156 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/dynamodb/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/dynamodb/Cargo.toml
|
1802 2157 | index d397c58..2c1062b 100644
|
1803 - | -- a/tmp-codegen-diff/aws-sdk/sdk/dynamodb/Cargo.toml
|
2158 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/dynamodb/Cargo.toml
|
1804 2159 | @@ -1,61 +1,61 @@
|
1805 2160 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
1806 2161 | [package]
|
1807 2162 | name = "aws-sdk-dynamodb"
|
1808 2163 | version = "0.0.0-local"
|
1809 2164 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
1810 2165 | description = "AWS SDK for Amazon DynamoDB"
|
1811 2166 | edition = "2021"
|
1812 2167 | license = "Apache-2.0"
|
1813 2168 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
1814 2169 | rust-version = "1.86.0"
|
1815 2170 | readme = "README.md"
|
1816 2171 | [package.metadata.smithy]
|
1817 2172 | codegen-version = "ci"
|
1818 2173 | [package.metadata.docs.rs]
|
1819 2174 | all-features = true
|
1820 2175 | targets = ["x86_64-unknown-linux-gnu"]
|
1821 2176 | [dependencies.aws-credential-types]
|
1822 2177 | path = "../aws-credential-types"
|
1823 2178 | version = "1.2.4"
|
1824 2179 |
|
1825 2180 | [dependencies.aws-runtime]
|
1826 2181 | path = "../aws-runtime"
|
1827 2182 | version = "1.5.9"
|
1828 2183 |
|
1829 2184 | [dependencies.aws-smithy-async]
|
1830 2185 | path = "../aws-smithy-async"
|
1831 2186 | version = "1.2.5"
|
1832 2187 |
|
1833 2188 | [dependencies.aws-smithy-http]
|
1834 2189 | path = "../aws-smithy-http"
|
1835 - | version = "0.62.2"
|
2190 + | version = "0.62.3"
|
1836 2191 |
|
1837 2192 | [dependencies.aws-smithy-json]
|
1838 2193 | path = "../aws-smithy-json"
|
1839 2194 | version = "0.61.4"
|
1840 2195 |
|
1841 2196 | [dependencies.aws-smithy-runtime]
|
1842 2197 | path = "../aws-smithy-runtime"
|
1843 2198 | features = ["client"]
|
1844 2199 | version = "1.8.5"
|
1845 2200 |
|
1846 2201 | [dependencies.aws-smithy-runtime-api]
|
1847 2202 | path = "../aws-smithy-runtime-api"
|
1848 2203 | features = ["client", "http-02x"]
|
1849 2204 | version = "1.8.5"
|
1850 2205 |
|
1851 2206 | [dependencies.aws-smithy-types]
|
1852 2207 | path = "../aws-smithy-types"
|
1853 2208 | version = "1.3.2"
|
1854 2209 |
|
1855 2210 | [dependencies.aws-types]
|
1856 2211 | path = "../aws-types"
|
1857 2212 | version = "1.3.8"
|
1858 2213 |
|
1859 2214 | [dependencies.bytes]
|
1860 2215 | version = "1.4.0"
|
1861 2216 |
|
1862 2217 | [dependencies.fastrand]
|
1863 2218 | version = "2.0.0"
|
1864 2219 |
|
1865 2220 | [dependencies.http]
|
1866 2221 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/ec2/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/ec2/Cargo.toml
|
1867 2222 | index c0ba315..46168af 100644
|
1868 - | -- a/tmp-codegen-diff/aws-sdk/sdk/ec2/Cargo.toml
|
2223 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/ec2/Cargo.toml
|
1869 2224 | @@ -1,61 +1,61 @@
|
1870 2225 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
1871 2226 | [package]
|
1872 2227 | name = "aws-sdk-ec2"
|
1873 2228 | version = "0.0.0-local"
|
1874 2229 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
1875 2230 | description = "AWS SDK for Amazon Elastic Compute Cloud"
|
1876 2231 | edition = "2021"
|
1877 2232 | license = "Apache-2.0"
|
1878 2233 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
1879 2234 | rust-version = "1.86.0"
|
1880 2235 | readme = "README.md"
|
1881 2236 | [package.metadata.smithy]
|
1882 2237 | codegen-version = "ci"
|
1883 2238 | [package.metadata.docs.rs]
|
1884 2239 | all-features = true
|
1885 2240 | targets = ["x86_64-unknown-linux-gnu"]
|
1886 2241 | [dependencies.aws-credential-types]
|
1887 2242 | path = "../aws-credential-types"
|
1888 2243 | version = "1.2.4"
|
1889 2244 |
|
1890 2245 | [dependencies.aws-runtime]
|
1891 2246 | path = "../aws-runtime"
|
1892 2247 | version = "1.5.9"
|
1893 2248 |
|
1894 2249 | [dependencies.aws-smithy-async]
|
1895 2250 | path = "../aws-smithy-async"
|
1896 2251 | version = "1.2.5"
|
1897 2252 |
|
1898 2253 | [dependencies.aws-smithy-http]
|
1899 2254 | path = "../aws-smithy-http"
|
1900 - | version = "0.62.2"
|
2255 + | version = "0.62.3"
|
1901 2256 |
|
1902 2257 | [dependencies.aws-smithy-json]
|
1903 2258 | path = "../aws-smithy-json"
|
1904 2259 | version = "0.61.4"
|
1905 2260 |
|
1906 2261 | [dependencies.aws-smithy-query]
|
1907 2262 | path = "../aws-smithy-query"
|
1908 2263 | version = "0.60.7"
|
1909 2264 |
|
1910 2265 | [dependencies.aws-smithy-runtime]
|
1911 2266 | path = "../aws-smithy-runtime"
|
1912 2267 | features = ["client"]
|
1913 2268 | version = "1.8.5"
|
1914 2269 |
|
1915 2270 | [dependencies.aws-smithy-runtime-api]
|
1916 2271 | path = "../aws-smithy-runtime-api"
|
1917 2272 | features = ["client", "http-02x"]
|
1918 2273 | version = "1.8.5"
|
1919 2274 |
|
1920 2275 | [dependencies.aws-smithy-types]
|
1921 2276 | path = "../aws-smithy-types"
|
1922 2277 | version = "1.3.2"
|
1923 2278 |
|
1924 2279 | [dependencies.aws-smithy-xml]
|
1925 2280 | path = "../aws-smithy-xml"
|
1926 2281 | version = "0.60.10"
|
1927 2282 |
|
1928 2283 | [dependencies.aws-types]
|
1929 2284 | path = "../aws-types"
|
1930 2285 | version = "1.3.8"
|
1931 2286 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/ecs/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/ecs/Cargo.toml
|
1932 2287 | index 4474d17..095d40e 100644
|
1933 - | -- a/tmp-codegen-diff/aws-sdk/sdk/ecs/Cargo.toml
|
2288 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/ecs/Cargo.toml
|
1934 2289 | @@ -1,61 +1,61 @@
|
1935 2290 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
1936 2291 | [package]
|
1937 2292 | name = "aws-sdk-ecs"
|
1938 2293 | version = "0.0.0-local"
|
1939 2294 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
1940 2295 | description = "AWS SDK for Amazon EC2 Container Service"
|
1941 2296 | edition = "2021"
|
1942 2297 | license = "Apache-2.0"
|
1943 2298 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
1944 2299 | rust-version = "1.86.0"
|
1945 2300 | readme = "README.md"
|
1946 2301 | [package.metadata.smithy]
|
1947 2302 | codegen-version = "ci"
|
1948 2303 | [package.metadata.docs.rs]
|
1949 2304 | all-features = true
|
1950 2305 | targets = ["x86_64-unknown-linux-gnu"]
|
1951 2306 | [dependencies.aws-credential-types]
|
1952 2307 | path = "../aws-credential-types"
|
1953 2308 | version = "1.2.4"
|
1954 2309 |
|
1955 2310 | [dependencies.aws-runtime]
|
1956 2311 | path = "../aws-runtime"
|
1957 2312 | version = "1.5.9"
|
1958 2313 |
|
1959 2314 | [dependencies.aws-smithy-async]
|
1960 2315 | path = "../aws-smithy-async"
|
1961 2316 | version = "1.2.5"
|
1962 2317 |
|
1963 2318 | [dependencies.aws-smithy-http]
|
1964 2319 | path = "../aws-smithy-http"
|
1965 - | version = "0.62.2"
|
2320 + | version = "0.62.3"
|
1966 2321 |
|
1967 2322 | [dependencies.aws-smithy-json]
|
1968 2323 | path = "../aws-smithy-json"
|
1969 2324 | version = "0.61.4"
|
1970 2325 |
|
1971 2326 | [dependencies.aws-smithy-runtime]
|
1972 2327 | path = "../aws-smithy-runtime"
|
1973 2328 | features = ["client"]
|
1974 2329 | version = "1.8.5"
|
1975 2330 |
|
1976 2331 | [dependencies.aws-smithy-runtime-api]
|
1977 2332 | path = "../aws-smithy-runtime-api"
|
1978 2333 | features = ["client", "http-02x"]
|
1979 2334 | version = "1.8.5"
|
1980 2335 |
|
1981 2336 | [dependencies.aws-smithy-types]
|
1982 2337 | path = "../aws-smithy-types"
|
1983 2338 | version = "1.3.2"
|
1984 2339 |
|
1985 2340 | [dependencies.aws-types]
|
1986 2341 | path = "../aws-types"
|
1987 2342 | version = "1.3.8"
|
1988 2343 |
|
1989 2344 | [dependencies.bytes]
|
1990 2345 | version = "1.4.0"
|
1991 2346 |
|
1992 2347 | [dependencies.fastrand]
|
1993 2348 | version = "2.0.0"
|
1994 2349 |
|
1995 2350 | [dependencies.http]
|
1996 2351 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/glacier/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/glacier/Cargo.toml
|
1997 2352 | index 15b1d77..16d7d89 100644
|
1998 - | -- a/tmp-codegen-diff/aws-sdk/sdk/glacier/Cargo.toml
|
2353 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/glacier/Cargo.toml
|
1999 2354 | @@ -1,65 +1,65 @@
|
2000 2355 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2001 2356 | [package]
|
2002 2357 | name = "aws-sdk-glacier"
|
2003 2358 | version = "0.0.0-local"
|
2004 2359 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
2005 2360 | description = "AWS SDK for Amazon Glacier"
|
2006 2361 | edition = "2021"
|
2007 2362 | license = "Apache-2.0"
|
2008 2363 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
2009 2364 | rust-version = "1.86.0"
|
2010 2365 | readme = "README.md"
|
2011 2366 | [package.metadata.smithy]
|
2012 2367 | codegen-version = "ci"
|
2013 2368 | [package.metadata.docs.rs]
|
2014 2369 | all-features = true
|
2015 2370 | targets = ["x86_64-unknown-linux-gnu"]
|
2016 2371 | [dependencies.aws-credential-types]
|
2017 2372 | path = "../aws-credential-types"
|
2018 2373 | version = "1.2.4"
|
2019 2374 |
|
2020 2375 | [dependencies.aws-runtime]
|
2021 2376 | path = "../aws-runtime"
|
2022 2377 | version = "1.5.9"
|
2023 2378 |
|
2024 2379 | [dependencies.aws-sigv4]
|
2025 2380 | path = "../aws-sigv4"
|
2026 - | version = "1.3.3"
|
2381 + | version = "1.3.4"
|
2027 2382 |
|
2028 2383 | [dependencies.aws-smithy-async]
|
2029 2384 | path = "../aws-smithy-async"
|
2030 2385 | version = "1.2.5"
|
2031 2386 |
|
2032 2387 | [dependencies.aws-smithy-http]
|
2033 2388 | path = "../aws-smithy-http"
|
2034 - | version = "0.62.2"
|
2389 + | version = "0.62.3"
|
2035 2390 |
|
2036 2391 | [dependencies.aws-smithy-json]
|
2037 2392 | path = "../aws-smithy-json"
|
2038 2393 | version = "0.61.4"
|
2039 2394 |
|
2040 2395 | [dependencies.aws-smithy-runtime]
|
2041 2396 | path = "../aws-smithy-runtime"
|
2042 2397 | features = ["client"]
|
2043 2398 | version = "1.8.5"
|
2044 2399 |
|
2045 2400 | [dependencies.aws-smithy-runtime-api]
|
2046 2401 | path = "../aws-smithy-runtime-api"
|
2047 2402 | features = ["client", "http-02x"]
|
2048 2403 | version = "1.8.5"
|
2049 2404 |
|
2050 2405 | [dependencies.aws-smithy-types]
|
2051 2406 | path = "../aws-smithy-types"
|
2052 2407 | version = "1.3.2"
|
2053 2408 |
|
2054 2409 | [dependencies.aws-types]
|
2055 2410 | path = "../aws-types"
|
2056 2411 | version = "1.3.8"
|
2057 2412 |
|
2058 2413 | [dependencies.bytes]
|
2059 2414 | version = "1.4.0"
|
2060 2415 |
|
2061 2416 | [dependencies.fastrand]
|
2062 2417 | version = "2.0.0"
|
2063 2418 |
|
2064 2419 | [dependencies.hex]
|
2065 2420 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/iam/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/iam/Cargo.toml
|
2066 2421 | index d718a3a..65e6f24 100644
|
2067 - | -- a/tmp-codegen-diff/aws-sdk/sdk/iam/Cargo.toml
|
2422 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/iam/Cargo.toml
|
2068 2423 | @@ -1,61 +1,61 @@
|
2069 2424 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2070 2425 | [package]
|
2071 2426 | name = "aws-sdk-iam"
|
2072 2427 | version = "0.0.0-local"
|
2073 2428 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
2074 2429 | description = "AWS SDK for AWS Identity and Access Management"
|
2075 2430 | edition = "2021"
|
2076 2431 | license = "Apache-2.0"
|
2077 2432 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
2078 2433 | rust-version = "1.86.0"
|
2079 2434 | readme = "README.md"
|
2080 2435 | [package.metadata.smithy]
|
2081 2436 | codegen-version = "ci"
|
2082 2437 | [package.metadata.docs.rs]
|
2083 2438 | all-features = true
|
2084 2439 | targets = ["x86_64-unknown-linux-gnu"]
|
2085 2440 | [dependencies.aws-credential-types]
|
2086 2441 | path = "../aws-credential-types"
|
2087 2442 | version = "1.2.4"
|
2088 2443 |
|
2089 2444 | [dependencies.aws-runtime]
|
2090 2445 | path = "../aws-runtime"
|
2091 2446 | version = "1.5.9"
|
2092 2447 |
|
2093 2448 | [dependencies.aws-smithy-async]
|
2094 2449 | path = "../aws-smithy-async"
|
2095 2450 | version = "1.2.5"
|
2096 2451 |
|
2097 2452 | [dependencies.aws-smithy-http]
|
2098 2453 | path = "../aws-smithy-http"
|
2099 - | version = "0.62.2"
|
2454 + | version = "0.62.3"
|
2100 2455 |
|
2101 2456 | [dependencies.aws-smithy-json]
|
2102 2457 | path = "../aws-smithy-json"
|
2103 2458 | version = "0.61.4"
|
2104 2459 |
|
2105 2460 | [dependencies.aws-smithy-query]
|
2106 2461 | path = "../aws-smithy-query"
|
2107 2462 | version = "0.60.7"
|
2108 2463 |
|
2109 2464 | [dependencies.aws-smithy-runtime]
|
2110 2465 | path = "../aws-smithy-runtime"
|
2111 2466 | features = ["client"]
|
2112 2467 | version = "1.8.5"
|
2113 2468 |
|
2114 2469 | [dependencies.aws-smithy-runtime-api]
|
2115 2470 | path = "../aws-smithy-runtime-api"
|
2116 2471 | features = ["client", "http-02x"]
|
2117 2472 | version = "1.8.5"
|
2118 2473 |
|
2119 2474 | [dependencies.aws-smithy-types]
|
2120 2475 | path = "../aws-smithy-types"
|
2121 2476 | version = "1.3.2"
|
2122 2477 |
|
2123 2478 | [dependencies.aws-smithy-xml]
|
2124 2479 | path = "../aws-smithy-xml"
|
2125 2480 | version = "0.60.10"
|
2126 2481 |
|
2127 2482 | [dependencies.aws-types]
|
2128 2483 | path = "../aws-types"
|
2129 2484 | version = "1.3.8"
|
2130 2485 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/kms/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/kms/Cargo.toml
|
2131 2486 | index 0ed4302..3d828a5 100644
|
2132 - | -- a/tmp-codegen-diff/aws-sdk/sdk/kms/Cargo.toml
|
2487 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/kms/Cargo.toml
|
2133 2488 | @@ -1,61 +1,61 @@
|
2134 2489 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2135 2490 | [package]
|
2136 2491 | name = "aws-sdk-kms"
|
2137 2492 | version = "0.0.0-local"
|
2138 2493 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
2139 2494 | description = "AWS SDK for AWS Key Management Service"
|
2140 2495 | edition = "2021"
|
2141 2496 | license = "Apache-2.0"
|
2142 2497 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
2143 2498 | rust-version = "1.86.0"
|
2144 2499 | readme = "README.md"
|
2145 2500 | [package.metadata.smithy]
|
2146 2501 | codegen-version = "ci"
|
2147 2502 | [package.metadata.docs.rs]
|
2148 2503 | all-features = true
|
2149 2504 | targets = ["x86_64-unknown-linux-gnu"]
|
2150 2505 | [dependencies.aws-credential-types]
|
2151 2506 | path = "../aws-credential-types"
|
2152 2507 | version = "1.2.4"
|
2153 2508 |
|
2154 2509 | [dependencies.aws-runtime]
|
2155 2510 | path = "../aws-runtime"
|
2156 2511 | version = "1.5.9"
|
2157 2512 |
|
2158 2513 | [dependencies.aws-smithy-async]
|
2159 2514 | path = "../aws-smithy-async"
|
2160 2515 | version = "1.2.5"
|
2161 2516 |
|
2162 2517 | [dependencies.aws-smithy-http]
|
2163 2518 | path = "../aws-smithy-http"
|
2164 - | version = "0.62.2"
|
2519 + | version = "0.62.3"
|
2165 2520 |
|
2166 2521 | [dependencies.aws-smithy-json]
|
2167 2522 | path = "../aws-smithy-json"
|
2168 2523 | version = "0.61.4"
|
2169 2524 |
|
2170 2525 | [dependencies.aws-smithy-runtime]
|
2171 2526 | path = "../aws-smithy-runtime"
|
2172 2527 | features = ["client"]
|
2173 2528 | version = "1.8.5"
|
2174 2529 |
|
2175 2530 | [dependencies.aws-smithy-runtime-api]
|
2176 2531 | path = "../aws-smithy-runtime-api"
|
2177 2532 | features = ["client", "http-02x"]
|
2178 2533 | version = "1.8.5"
|
2179 2534 |
|
2180 2535 | [dependencies.aws-smithy-types]
|
2181 2536 | path = "../aws-smithy-types"
|
2182 2537 | version = "1.3.2"
|
2183 2538 |
|
2184 2539 | [dependencies.aws-types]
|
2185 2540 | path = "../aws-types"
|
2186 2541 | version = "1.3.8"
|
2187 2542 |
|
2188 2543 | [dependencies.bytes]
|
2189 2544 | version = "1.4.0"
|
2190 2545 |
|
2191 2546 | [dependencies.fastrand]
|
2192 2547 | version = "2.0.0"
|
2193 2548 |
|
2194 2549 | [dependencies.http]
|
2195 2550 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/lambda/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/lambda/Cargo.toml
|
2196 2551 | index 6518dfc..6b94752 100644
|
2197 - | -- a/tmp-codegen-diff/aws-sdk/sdk/lambda/Cargo.toml
|
2552 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/lambda/Cargo.toml
|
2198 2553 | @@ -7,61 +7,61 @@ description = "AWS SDK for AWS Lambda"
|
2199 2554 | edition = "2021"
|
2200 2555 | license = "Apache-2.0"
|
2201 2556 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
2202 2557 | rust-version = "1.86.0"
|
2203 2558 | readme = "README.md"
|
2204 2559 | [package.metadata.smithy]
|
2205 2560 | codegen-version = "ci"
|
2206 2561 | [package.metadata.docs.rs]
|
2207 2562 | all-features = true
|
2208 2563 | targets = ["x86_64-unknown-linux-gnu"]
|
2209 2564 | [dependencies.aws-credential-types]
|
2210 2565 | path = "../aws-credential-types"
|
2211 2566 | version = "1.2.4"
|
2212 2567 |
|
2213 2568 | [dependencies.aws-runtime]
|
2214 2569 | path = "../aws-runtime"
|
2215 2570 | features = ["event-stream"]
|
2216 2571 | version = "1.5.9"
|
2217 2572 |
|
2218 2573 | [dependencies.aws-smithy-async]
|
2219 2574 | path = "../aws-smithy-async"
|
2220 2575 | version = "1.2.5"
|
2221 2576 |
|
2222 2577 | [dependencies.aws-smithy-eventstream]
|
2223 2578 | path = "../aws-smithy-eventstream"
|
2224 2579 | version = "0.60.10"
|
2225 2580 |
|
2226 2581 | [dependencies.aws-smithy-http]
|
2227 2582 | path = "../aws-smithy-http"
|
2228 2583 | features = ["event-stream"]
|
2229 - | version = "0.62.2"
|
2584 + | version = "0.62.3"
|
2230 2585 |
|
2231 2586 | [dependencies.aws-smithy-json]
|
2232 2587 | path = "../aws-smithy-json"
|
2233 2588 | version = "0.61.4"
|
2234 2589 |
|
2235 2590 | [dependencies.aws-smithy-runtime]
|
2236 2591 | path = "../aws-smithy-runtime"
|
2237 2592 | features = ["client"]
|
2238 2593 | version = "1.8.5"
|
2239 2594 |
|
2240 2595 | [dependencies.aws-smithy-runtime-api]
|
2241 2596 | path = "../aws-smithy-runtime-api"
|
2242 2597 | features = ["client", "http-02x"]
|
2243 2598 | version = "1.8.5"
|
2244 2599 |
|
2245 2600 | [dependencies.aws-smithy-types]
|
2246 2601 | path = "../aws-smithy-types"
|
2247 2602 | version = "1.3.2"
|
2248 2603 |
|
2249 2604 | [dependencies.aws-types]
|
2250 2605 | path = "../aws-types"
|
2251 2606 | version = "1.3.8"
|
2252 2607 |
|
2253 2608 | [dependencies.bytes]
|
2254 2609 | version = "1.4.0"
|
2255 2610 |
|
2256 2611 | [dependencies.fastrand]
|
2257 2612 | version = "2.0.0"
|
2258 2613 |
|
2259 2614 | [dependencies.http]
|
2260 2615 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/polly/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/polly/Cargo.toml
|
2261 2616 | index dabb0e0..34cbc15 100644
|
2262 - | -- a/tmp-codegen-diff/aws-sdk/sdk/polly/Cargo.toml
|
2617 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/polly/Cargo.toml
|
2263 2618 | @@ -1,65 +1,65 @@
|
2264 2619 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2265 2620 | [package]
|
2266 2621 | name = "aws-sdk-polly"
|
2267 2622 | version = "0.0.0-local"
|
2268 2623 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
2269 2624 | description = "AWS SDK for Amazon Polly"
|
2270 2625 | edition = "2021"
|
2271 2626 | license = "Apache-2.0"
|
2272 2627 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
2273 2628 | rust-version = "1.86.0"
|
2274 2629 | readme = "README.md"
|
2275 2630 | [package.metadata.smithy]
|
2276 2631 | codegen-version = "ci"
|
2277 2632 | [package.metadata.docs.rs]
|
2278 2633 | all-features = true
|
2279 2634 | targets = ["x86_64-unknown-linux-gnu"]
|
2280 2635 | [dependencies.aws-credential-types]
|
2281 2636 | path = "../aws-credential-types"
|
2282 2637 | version = "1.2.4"
|
2283 2638 |
|
2284 2639 | [dependencies.aws-runtime]
|
2285 2640 | path = "../aws-runtime"
|
2286 2641 | version = "1.5.9"
|
2287 2642 |
|
2288 2643 | [dependencies.aws-sigv4]
|
2289 2644 | path = "../aws-sigv4"
|
2290 - | version = "1.3.3"
|
2645 + | version = "1.3.4"
|
2291 2646 |
|
2292 2647 | [dependencies.aws-smithy-async]
|
2293 2648 | path = "../aws-smithy-async"
|
2294 2649 | version = "1.2.5"
|
2295 2650 |
|
2296 2651 | [dependencies.aws-smithy-http]
|
2297 2652 | path = "../aws-smithy-http"
|
2298 - | version = "0.62.2"
|
2653 + | version = "0.62.3"
|
2299 2654 |
|
2300 2655 | [dependencies.aws-smithy-json]
|
2301 2656 | path = "../aws-smithy-json"
|
2302 2657 | version = "0.61.4"
|
2303 2658 |
|
2304 2659 | [dependencies.aws-smithy-runtime]
|
2305 2660 | path = "../aws-smithy-runtime"
|
2306 2661 | features = ["client"]
|
2307 2662 | version = "1.8.5"
|
2308 2663 |
|
2309 2664 | [dependencies.aws-smithy-runtime-api]
|
2310 2665 | path = "../aws-smithy-runtime-api"
|
2311 2666 | features = ["client", "http-02x"]
|
2312 2667 | version = "1.8.5"
|
2313 2668 |
|
2314 2669 | [dependencies.aws-smithy-types]
|
2315 2670 | path = "../aws-smithy-types"
|
2316 2671 | version = "1.3.2"
|
2317 2672 |
|
2318 2673 | [dependencies.aws-types]
|
2319 2674 | path = "../aws-types"
|
2320 2675 | version = "1.3.8"
|
2321 2676 |
|
2322 2677 | [dependencies.bytes]
|
2323 2678 | version = "1.4.0"
|
2324 2679 |
|
2325 2680 | [dependencies.fastrand]
|
2326 2681 | version = "2.0.0"
|
2327 2682 |
|
2328 2683 | [dependencies.http]
|
2329 2684 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/Cargo.toml
|
2330 2685 | index a884716..f3d8713 100644
|
2331 - | -- a/tmp-codegen-diff/aws-sdk/sdk/qldbsession/Cargo.toml
|
2686 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/qldbsession/Cargo.toml
|
2332 2687 | @@ -1,61 +1,61 @@
|
2333 2688 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2334 2689 | [package]
|
2335 2690 | name = "aws-sdk-qldbsession"
|
2336 2691 | version = "0.0.0-local"
|
2337 2692 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
2338 2693 | description = "AWS SDK for Amazon QLDB Session"
|
2339 2694 | edition = "2021"
|
2340 2695 | license = "Apache-2.0"
|
2341 2696 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
2342 2697 | rust-version = "1.86.0"
|
2343 2698 | readme = "README.md"
|
2344 2699 | [package.metadata.smithy]
|
2345 2700 | codegen-version = "ci"
|
2346 2701 | [package.metadata.docs.rs]
|
2347 2702 | all-features = true
|
2348 2703 | targets = ["x86_64-unknown-linux-gnu"]
|
2349 2704 | [dependencies.aws-credential-types]
|
2350 2705 | path = "../aws-credential-types"
|
2351 2706 | version = "1.2.4"
|
2352 2707 |
|
2353 2708 | [dependencies.aws-runtime]
|
2354 2709 | path = "../aws-runtime"
|
2355 2710 | version = "1.5.9"
|
2356 2711 |
|
2357 2712 | [dependencies.aws-smithy-async]
|
2358 2713 | path = "../aws-smithy-async"
|
2359 2714 | version = "1.2.5"
|
2360 2715 |
|
2361 2716 | [dependencies.aws-smithy-http]
|
2362 2717 | path = "../aws-smithy-http"
|
2363 - | version = "0.62.2"
|
2718 + | version = "0.62.3"
|
2364 2719 |
|
2365 2720 | [dependencies.aws-smithy-json]
|
2366 2721 | path = "../aws-smithy-json"
|
2367 2722 | version = "0.61.4"
|
2368 2723 |
|
2369 2724 | [dependencies.aws-smithy-runtime]
|
2370 2725 | path = "../aws-smithy-runtime"
|
2371 2726 | features = ["client"]
|
2372 2727 | version = "1.8.5"
|
2373 2728 |
|
2374 2729 | [dependencies.aws-smithy-runtime-api]
|
2375 2730 | path = "../aws-smithy-runtime-api"
|
2376 2731 | features = ["client", "http-02x"]
|
2377 2732 | version = "1.8.5"
|
2378 2733 |
|
2379 2734 | [dependencies.aws-smithy-types]
|
2380 2735 | path = "../aws-smithy-types"
|
2381 2736 | version = "1.3.2"
|
2382 2737 |
|
2383 2738 | [dependencies.aws-types]
|
2384 2739 | path = "../aws-types"
|
2385 2740 | version = "1.3.8"
|
2386 2741 |
|
2387 2742 | [dependencies.bytes]
|
2388 2743 | version = "1.4.0"
|
2389 2744 |
|
2390 2745 | [dependencies.fastrand]
|
2391 2746 | version = "2.0.0"
|
2392 2747 |
|
2393 2748 | [dependencies.http]
|
2394 2749 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/route53/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/route53/Cargo.toml
|
2395 2750 | index 32a7dc9..a2c752d 100644
|
2396 - | -- a/tmp-codegen-diff/aws-sdk/sdk/route53/Cargo.toml
|
2751 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/route53/Cargo.toml
|
2397 2752 | @@ -1,61 +1,61 @@
|
2398 2753 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2399 2754 | [package]
|
2400 2755 | name = "aws-sdk-route53"
|
2401 2756 | version = "0.0.0-local"
|
2402 2757 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
2403 2758 | description = "AWS SDK for Amazon Route 53"
|
2404 2759 | edition = "2021"
|
2405 2760 | license = "Apache-2.0"
|
2406 2761 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
2407 2762 | rust-version = "1.86.0"
|
2408 2763 | readme = "README.md"
|
2409 2764 | [package.metadata.smithy]
|
2410 2765 | codegen-version = "ci"
|
2411 2766 | [package.metadata.docs.rs]
|
2412 2767 | all-features = true
|
2413 2768 | targets = ["x86_64-unknown-linux-gnu"]
|
2414 2769 | [dependencies.aws-credential-types]
|
2415 2770 | path = "../aws-credential-types"
|
2416 2771 | version = "1.2.4"
|
2417 2772 |
|
2418 2773 | [dependencies.aws-runtime]
|
2419 2774 | path = "../aws-runtime"
|
2420 2775 | version = "1.5.9"
|
2421 2776 |
|
2422 2777 | [dependencies.aws-smithy-async]
|
2423 2778 | path = "../aws-smithy-async"
|
2424 2779 | version = "1.2.5"
|
2425 2780 |
|
2426 2781 | [dependencies.aws-smithy-http]
|
2427 2782 | path = "../aws-smithy-http"
|
2428 - | version = "0.62.2"
|
2783 + | version = "0.62.3"
|
2429 2784 |
|
2430 2785 | [dependencies.aws-smithy-json]
|
2431 2786 | path = "../aws-smithy-json"
|
2432 2787 | version = "0.61.4"
|
2433 2788 |
|
2434 2789 | [dependencies.aws-smithy-runtime]
|
2435 2790 | path = "../aws-smithy-runtime"
|
2436 2791 | features = ["client"]
|
2437 2792 | version = "1.8.5"
|
2438 2793 |
|
2439 2794 | [dependencies.aws-smithy-runtime-api]
|
2440 2795 | path = "../aws-smithy-runtime-api"
|
2441 2796 | features = ["client", "http-02x"]
|
2442 2797 | version = "1.8.5"
|
2443 2798 |
|
2444 2799 | [dependencies.aws-smithy-types]
|
2445 2800 | path = "../aws-smithy-types"
|
2446 2801 | version = "1.3.2"
|
2447 2802 |
|
2448 2803 | [dependencies.aws-smithy-xml]
|
2449 2804 | path = "../aws-smithy-xml"
|
2450 2805 | version = "0.60.10"
|
2451 2806 |
|
2452 2807 | [dependencies.aws-types]
|
2453 2808 | path = "../aws-types"
|
2454 2809 | version = "1.3.8"
|
2455 2810 |
|
2456 2811 | [dependencies.fastrand]
|
2457 2812 | version = "2.0.0"
|
2458 2813 |
|
2459 2814 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/s3/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/s3/Cargo.toml
|
2460 2815 | index f65e261..2f6bec0 100644
|
2461 - | -- a/tmp-codegen-diff/aws-sdk/sdk/s3/Cargo.toml
|
2816 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/s3/Cargo.toml
|
2462 2817 | @@ -1,75 +1,75 @@
|
2463 2818 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2464 2819 | [package]
|
2465 2820 | name = "aws-sdk-s3"
|
2466 2821 | version = "0.0.0-local"
|
2467 2822 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
2468 2823 | description = "AWS SDK for Amazon Simple Storage Service"
|
2469 2824 | edition = "2021"
|
2470 2825 | license = "Apache-2.0"
|
2471 2826 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
2472 2827 | rust-version = "1.86.0"
|
2473 2828 | readme = "README.md"
|
2474 2829 | [package.metadata.smithy]
|
2475 2830 | codegen-version = "ci"
|
2476 2831 | [package.metadata.docs.rs]
|
2477 2832 | all-features = true
|
2478 2833 | targets = ["x86_64-unknown-linux-gnu"]
|
2479 2834 | [dependencies.aws-credential-types]
|
2480 2835 | path = "../aws-credential-types"
|
2481 2836 | version = "1.2.4"
|
2482 2837 |
|
2483 2838 | [dependencies.aws-runtime]
|
2484 2839 | path = "../aws-runtime"
|
2485 2840 | features = ["event-stream", "http-02x"]
|
2486 2841 | version = "1.5.9"
|
2487 2842 |
|
2488 2843 | [dependencies.aws-sigv4]
|
2489 2844 | path = "../aws-sigv4"
|
2490 - | version = "1.3.3"
|
2845 + | version = "1.3.4"
|
2491 2846 |
|
2492 2847 | [dependencies.aws-smithy-async]
|
2493 2848 | path = "../aws-smithy-async"
|
2494 2849 | version = "1.2.5"
|
2495 2850 |
|
2496 2851 | [dependencies.aws-smithy-checksums]
|
2497 2852 | path = "../aws-smithy-checksums"
|
2498 2853 | version = "0.63.5"
|
2499 2854 |
|
2500 2855 | [dependencies.aws-smithy-eventstream]
|
2501 2856 | path = "../aws-smithy-eventstream"
|
2502 2857 | version = "0.60.10"
|
2503 2858 |
|
2504 2859 | [dependencies.aws-smithy-http]
|
2505 2860 | path = "../aws-smithy-http"
|
2506 2861 | features = ["event-stream"]
|
2507 - | version = "0.62.2"
|
2862 + | version = "0.62.3"
|
2508 2863 |
|
2509 2864 | [dependencies.aws-smithy-json]
|
2510 2865 | path = "../aws-smithy-json"
|
2511 2866 | version = "0.61.4"
|
2512 2867 |
|
2513 2868 | [dependencies.aws-smithy-runtime]
|
2514 2869 | path = "../aws-smithy-runtime"
|
2515 2870 | features = ["client"]
|
2516 2871 | version = "1.8.5"
|
2517 2872 |
|
2518 2873 | [dependencies.aws-smithy-runtime-api]
|
2519 2874 | path = "../aws-smithy-runtime-api"
|
2520 2875 | features = ["client", "http-02x"]
|
2521 2876 | version = "1.8.5"
|
2522 2877 |
|
2523 2878 | [dependencies.aws-smithy-types]
|
2524 2879 | path = "../aws-smithy-types"
|
2525 2880 | version = "1.3.2"
|
2526 2881 |
|
2527 2882 | [dependencies.aws-smithy-xml]
|
2528 2883 | path = "../aws-smithy-xml"
|
2529 2884 | version = "0.60.10"
|
2530 2885 |
|
2531 2886 | [dependencies.aws-types]
|
2532 2887 | path = "../aws-types"
|
2533 2888 | version = "1.3.8"
|
2534 2889 |
|
2535 2890 | [dependencies.bytes]
|
2536 2891 | version = "1.4.0"
|
2537 2892 |
|
2538 2893 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/s3control/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/s3control/Cargo.toml
|
2539 2894 | index b4d1cdd..861c0cc 100644
|
2540 - | -- a/tmp-codegen-diff/aws-sdk/sdk/s3control/Cargo.toml
|
2895 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/s3control/Cargo.toml
|
2541 2896 | @@ -1,61 +1,61 @@
|
2542 2897 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2543 2898 | [package]
|
2544 2899 | name = "aws-sdk-s3control"
|
2545 2900 | version = "0.0.0-local"
|
2546 2901 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
2547 2902 | description = "AWS SDK for AWS S3 Control"
|
2548 2903 | edition = "2021"
|
2549 2904 | license = "Apache-2.0"
|
2550 2905 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
2551 2906 | rust-version = "1.86.0"
|
2552 2907 | readme = "README.md"
|
2553 2908 | [package.metadata.smithy]
|
2554 2909 | codegen-version = "ci"
|
2555 2910 | [package.metadata.docs.rs]
|
2556 2911 | all-features = true
|
2557 2912 | targets = ["x86_64-unknown-linux-gnu"]
|
2558 2913 | [dependencies.aws-credential-types]
|
2559 2914 | path = "../aws-credential-types"
|
2560 2915 | version = "1.2.4"
|
2561 2916 |
|
2562 2917 | [dependencies.aws-runtime]
|
2563 2918 | path = "../aws-runtime"
|
2564 2919 | version = "1.5.9"
|
2565 2920 |
|
2566 2921 | [dependencies.aws-smithy-async]
|
2567 2922 | path = "../aws-smithy-async"
|
2568 2923 | version = "1.2.5"
|
2569 2924 |
|
2570 2925 | [dependencies.aws-smithy-http]
|
2571 2926 | path = "../aws-smithy-http"
|
2572 - | version = "0.62.2"
|
2927 + | version = "0.62.3"
|
2573 2928 |
|
2574 2929 | [dependencies.aws-smithy-json]
|
2575 2930 | path = "../aws-smithy-json"
|
2576 2931 | version = "0.61.4"
|
2577 2932 |
|
2578 2933 | [dependencies.aws-smithy-runtime]
|
2579 2934 | path = "../aws-smithy-runtime"
|
2580 2935 | features = ["client"]
|
2581 2936 | version = "1.8.5"
|
2582 2937 |
|
2583 2938 | [dependencies.aws-smithy-runtime-api]
|
2584 2939 | path = "../aws-smithy-runtime-api"
|
2585 2940 | features = ["client", "http-02x"]
|
2586 2941 | version = "1.8.5"
|
2587 2942 |
|
2588 2943 | [dependencies.aws-smithy-types]
|
2589 2944 | path = "../aws-smithy-types"
|
2590 2945 | version = "1.3.2"
|
2591 2946 |
|
2592 2947 | [dependencies.aws-smithy-xml]
|
2593 2948 | path = "../aws-smithy-xml"
|
2594 2949 | version = "0.60.10"
|
2595 2950 |
|
2596 2951 | [dependencies.aws-types]
|
2597 2952 | path = "../aws-types"
|
2598 2953 | version = "1.3.8"
|
2599 2954 |
|
2600 2955 | [dependencies.fastrand]
|
2601 2956 | version = "2.0.0"
|
2602 2957 |
|
2603 2958 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/sso/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/sso/Cargo.toml
|
2604 2959 | index 2cde182..fc367f4 100644
|
2605 - | -- a/tmp-codegen-diff/aws-sdk/sdk/sso/Cargo.toml
|
2960 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/sso/Cargo.toml
|
2606 2961 | @@ -1,61 +1,61 @@
|
2607 2962 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2608 2963 | [package]
|
2609 2964 | name = "aws-sdk-sso"
|
2610 2965 | version = "0.0.0-local"
|
2611 2966 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
2612 2967 | description = "AWS SDK for AWS Single Sign-On"
|
2613 2968 | edition = "2021"
|
2614 2969 | license = "Apache-2.0"
|
2615 2970 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
2616 2971 | rust-version = "1.86.0"
|
2617 2972 | readme = "README.md"
|
2618 2973 | [package.metadata.smithy]
|
2619 2974 | codegen-version = "ci"
|
2620 2975 | [package.metadata.docs.rs]
|
2621 2976 | all-features = true
|
2622 2977 | targets = ["x86_64-unknown-linux-gnu"]
|
2623 2978 | [dependencies.aws-credential-types]
|
2624 2979 | path = "../aws-credential-types"
|
2625 2980 | version = "1.2.4"
|
2626 2981 |
|
2627 2982 | [dependencies.aws-runtime]
|
2628 2983 | path = "../aws-runtime"
|
2629 2984 | version = "1.5.9"
|
2630 2985 |
|
2631 2986 | [dependencies.aws-smithy-async]
|
2632 2987 | path = "../aws-smithy-async"
|
2633 2988 | version = "1.2.5"
|
2634 2989 |
|
2635 2990 | [dependencies.aws-smithy-http]
|
2636 2991 | path = "../aws-smithy-http"
|
2637 - | version = "0.62.2"
|
2992 + | version = "0.62.3"
|
2638 2993 |
|
2639 2994 | [dependencies.aws-smithy-json]
|
2640 2995 | path = "../aws-smithy-json"
|
2641 2996 | version = "0.61.4"
|
2642 2997 |
|
2643 2998 | [dependencies.aws-smithy-runtime]
|
2644 2999 | path = "../aws-smithy-runtime"
|
2645 3000 | features = ["client"]
|
2646 3001 | version = "1.8.5"
|
2647 3002 |
|
2648 3003 | [dependencies.aws-smithy-runtime-api]
|
2649 3004 | path = "../aws-smithy-runtime-api"
|
2650 3005 | features = ["client", "http-02x"]
|
2651 3006 | version = "1.8.5"
|
2652 3007 |
|
2653 3008 | [dependencies.aws-smithy-types]
|
2654 3009 | path = "../aws-smithy-types"
|
2655 3010 | version = "1.3.2"
|
2656 3011 |
|
2657 3012 | [dependencies.aws-types]
|
2658 3013 | path = "../aws-types"
|
2659 3014 | version = "1.3.8"
|
2660 3015 |
|
2661 3016 | [dependencies.bytes]
|
2662 3017 | version = "1.4.0"
|
2663 3018 |
|
2664 3019 | [dependencies.fastrand]
|
2665 3020 | version = "2.0.0"
|
2666 3021 |
|
2667 3022 | [dependencies.http]
|
2668 3023 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/ssooidc/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/ssooidc/Cargo.toml
|
2669 3024 | index 7a34c16..588d0bd 100644
|
2670 - | -- a/tmp-codegen-diff/aws-sdk/sdk/ssooidc/Cargo.toml
|
3025 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/ssooidc/Cargo.toml
|
2671 3026 | @@ -1,61 +1,61 @@
|
2672 3027 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2673 3028 | [package]
|
2674 3029 | name = "aws-sdk-ssooidc"
|
2675 3030 | version = "0.0.0-local"
|
2676 3031 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
2677 3032 | description = "AWS SDK for AWS SSO OIDC"
|
2678 3033 | edition = "2021"
|
2679 3034 | license = "Apache-2.0"
|
2680 3035 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
2681 3036 | rust-version = "1.86.0"
|
2682 3037 | readme = "README.md"
|
2683 3038 | [package.metadata.smithy]
|
2684 3039 | codegen-version = "ci"
|
2685 3040 | [package.metadata.docs.rs]
|
2686 3041 | all-features = true
|
2687 3042 | targets = ["x86_64-unknown-linux-gnu"]
|
2688 3043 | [dependencies.aws-credential-types]
|
2689 3044 | path = "../aws-credential-types"
|
2690 3045 | version = "1.2.4"
|
2691 3046 |
|
2692 3047 | [dependencies.aws-runtime]
|
2693 3048 | path = "../aws-runtime"
|
2694 3049 | version = "1.5.9"
|
2695 3050 |
|
2696 3051 | [dependencies.aws-smithy-async]
|
2697 3052 | path = "../aws-smithy-async"
|
2698 3053 | version = "1.2.5"
|
2699 3054 |
|
2700 3055 | [dependencies.aws-smithy-http]
|
2701 3056 | path = "../aws-smithy-http"
|
2702 - | version = "0.62.2"
|
3057 + | version = "0.62.3"
|
2703 3058 |
|
2704 3059 | [dependencies.aws-smithy-json]
|
2705 3060 | path = "../aws-smithy-json"
|
2706 3061 | version = "0.61.4"
|
2707 3062 |
|
2708 3063 | [dependencies.aws-smithy-runtime]
|
2709 3064 | path = "../aws-smithy-runtime"
|
2710 3065 | features = ["client"]
|
2711 3066 | version = "1.8.5"
|
2712 3067 |
|
2713 3068 | [dependencies.aws-smithy-runtime-api]
|
2714 3069 | path = "../aws-smithy-runtime-api"
|
2715 3070 | features = ["client", "http-02x"]
|
2716 3071 | version = "1.8.5"
|
2717 3072 |
|
2718 3073 | [dependencies.aws-smithy-types]
|
2719 3074 | path = "../aws-smithy-types"
|
2720 3075 | version = "1.3.2"
|
2721 3076 |
|
2722 3077 | [dependencies.aws-types]
|
2723 3078 | path = "../aws-types"
|
2724 3079 | version = "1.3.8"
|
2725 3080 |
|
2726 3081 | [dependencies.bytes]
|
2727 3082 | version = "1.4.0"
|
2728 3083 |
|
2729 3084 | [dependencies.fastrand]
|
2730 3085 | version = "2.0.0"
|
2731 3086 |
|
2732 3087 | [dependencies.http]
|
2733 3088 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/sts/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/sts/Cargo.toml
|
2734 3089 | index 895dfb3..f2ce34e 100644
|
2735 - | -- a/tmp-codegen-diff/aws-sdk/sdk/sts/Cargo.toml
|
3090 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/sts/Cargo.toml
|
2736 3091 | @@ -1,61 +1,61 @@
|
2737 3092 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2738 3093 | [package]
|
2739 3094 | name = "aws-sdk-sts"
|
2740 3095 | version = "0.0.0-local"
|
2741 3096 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
2742 3097 | description = "AWS SDK for AWS Security Token Service"
|
2743 3098 | edition = "2021"
|
2744 3099 | license = "Apache-2.0"
|
2745 3100 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
2746 3101 | rust-version = "1.86.0"
|
2747 3102 | readme = "README.md"
|
2748 3103 | [package.metadata.smithy]
|
2749 3104 | codegen-version = "ci"
|
2750 3105 | [package.metadata.docs.rs]
|
2751 3106 | all-features = true
|
2752 3107 | targets = ["x86_64-unknown-linux-gnu"]
|
2753 3108 | [dependencies.aws-credential-types]
|
2754 3109 | path = "../aws-credential-types"
|
2755 3110 | version = "1.2.4"
|
2756 3111 |
|
2757 3112 | [dependencies.aws-runtime]
|
2758 3113 | path = "../aws-runtime"
|
2759 3114 | version = "1.5.9"
|
2760 3115 |
|
2761 3116 | [dependencies.aws-smithy-async]
|
2762 3117 | path = "../aws-smithy-async"
|
2763 3118 | version = "1.2.5"
|
2764 3119 |
|
2765 3120 | [dependencies.aws-smithy-http]
|
2766 3121 | path = "../aws-smithy-http"
|
2767 - | version = "0.62.2"
|
3122 + | version = "0.62.3"
|
2768 3123 |
|
2769 3124 | [dependencies.aws-smithy-json]
|
2770 3125 | path = "../aws-smithy-json"
|
2771 3126 | version = "0.61.4"
|
2772 3127 |
|
2773 3128 | [dependencies.aws-smithy-query]
|
2774 3129 | path = "../aws-smithy-query"
|
2775 3130 | version = "0.60.7"
|
2776 3131 |
|
2777 3132 | [dependencies.aws-smithy-runtime]
|
2778 3133 | path = "../aws-smithy-runtime"
|
2779 3134 | features = ["client"]
|
2780 3135 | version = "1.8.5"
|
2781 3136 |
|
2782 3137 | [dependencies.aws-smithy-runtime-api]
|
2783 3138 | path = "../aws-smithy-runtime-api"
|
2784 3139 | features = ["client", "http-02x"]
|
2785 3140 | version = "1.8.5"
|
2786 3141 |
|
2787 3142 | [dependencies.aws-smithy-types]
|
2788 3143 | path = "../aws-smithy-types"
|
2789 3144 | version = "1.3.2"
|
2790 3145 |
|
2791 3146 | [dependencies.aws-smithy-xml]
|
2792 3147 | path = "../aws-smithy-xml"
|
2793 3148 | version = "0.60.10"
|
2794 3149 |
|
2795 3150 | [dependencies.aws-types]
|
2796 3151 | path = "../aws-types"
|
2797 3152 | version = "1.3.8"
|
2798 3153 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/timestreamquery/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/timestreamquery/Cargo.toml
|
2799 3154 | index d556561..91178b6 100644
|
2800 - | -- a/tmp-codegen-diff/aws-sdk/sdk/timestreamquery/Cargo.toml
|
3155 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/timestreamquery/Cargo.toml
|
2801 3156 | @@ -1,61 +1,61 @@
|
2802 3157 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2803 3158 | [package]
|
2804 3159 | name = "aws-sdk-timestreamquery"
|
2805 3160 | version = "0.0.0-local"
|
2806 3161 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
2807 3162 | description = "AWS SDK for Amazon Timestream Query"
|
2808 3163 | edition = "2021"
|
2809 3164 | license = "Apache-2.0"
|
2810 3165 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
2811 3166 | rust-version = "1.86.0"
|
2812 3167 | readme = "README.md"
|
2813 3168 | [package.metadata.smithy]
|
2814 3169 | codegen-version = "ci"
|
2815 3170 | [package.metadata.docs.rs]
|
2816 3171 | all-features = true
|
2817 3172 | targets = ["x86_64-unknown-linux-gnu"]
|
2818 3173 | [dependencies.aws-credential-types]
|
2819 3174 | path = "../aws-credential-types"
|
2820 3175 | version = "1.2.4"
|
2821 3176 |
|
2822 3177 | [dependencies.aws-runtime]
|
2823 3178 | path = "../aws-runtime"
|
2824 3179 | version = "1.5.9"
|
2825 3180 |
|
2826 3181 | [dependencies.aws-smithy-async]
|
2827 3182 | path = "../aws-smithy-async"
|
2828 3183 | version = "1.2.5"
|
2829 3184 |
|
2830 3185 | [dependencies.aws-smithy-http]
|
2831 3186 | path = "../aws-smithy-http"
|
2832 - | version = "0.62.2"
|
3187 + | version = "0.62.3"
|
2833 3188 |
|
2834 3189 | [dependencies.aws-smithy-json]
|
2835 3190 | path = "../aws-smithy-json"
|
2836 3191 | version = "0.61.4"
|
2837 3192 |
|
2838 3193 | [dependencies.aws-smithy-runtime]
|
2839 3194 | path = "../aws-smithy-runtime"
|
2840 3195 | features = ["client"]
|
2841 3196 | version = "1.8.5"
|
2842 3197 |
|
2843 3198 | [dependencies.aws-smithy-runtime-api]
|
2844 3199 | path = "../aws-smithy-runtime-api"
|
2845 3200 | features = ["client", "http-02x"]
|
2846 3201 | version = "1.8.5"
|
2847 3202 |
|
2848 3203 | [dependencies.aws-smithy-types]
|
2849 3204 | path = "../aws-smithy-types"
|
2850 3205 | version = "1.3.2"
|
2851 3206 |
|
2852 3207 | [dependencies.aws-types]
|
2853 3208 | path = "../aws-types"
|
2854 3209 | version = "1.3.8"
|
2855 3210 |
|
2856 3211 | [dependencies.bytes]
|
2857 3212 | version = "1.4.0"
|
2858 3213 |
|
2859 3214 | [dependencies.fastrand]
|
2860 3215 | version = "2.0.0"
|
2861 3216 |
|
2862 3217 | [dependencies.http]
|
2863 3218 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/timestreamwrite/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/timestreamwrite/Cargo.toml
|
2864 3219 | index 0c56e4c..95731e3 100644
|
2865 - | -- a/tmp-codegen-diff/aws-sdk/sdk/timestreamwrite/Cargo.toml
|
3220 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/timestreamwrite/Cargo.toml
|
2866 3221 | @@ -1,61 +1,61 @@
|
2867 3222 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2868 3223 | [package]
|
2869 3224 | name = "aws-sdk-timestreamwrite"
|
2870 3225 | version = "0.0.0-local"
|
2871 3226 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
2872 3227 | description = "AWS SDK for Amazon Timestream Write"
|
2873 3228 | edition = "2021"
|
2874 3229 | license = "Apache-2.0"
|
2875 3230 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
2876 3231 | rust-version = "1.86.0"
|
2877 3232 | readme = "README.md"
|
2878 3233 | [package.metadata.smithy]
|
2879 3234 | codegen-version = "ci"
|
2880 3235 | [package.metadata.docs.rs]
|
2881 3236 | all-features = true
|
2882 3237 | targets = ["x86_64-unknown-linux-gnu"]
|
2883 3238 | [dependencies.aws-credential-types]
|
2884 3239 | path = "../aws-credential-types"
|
2885 3240 | version = "1.2.4"
|
2886 3241 |
|
2887 3242 | [dependencies.aws-runtime]
|
2888 3243 | path = "../aws-runtime"
|
2889 3244 | version = "1.5.9"
|
2890 3245 |
|
2891 3246 | [dependencies.aws-smithy-async]
|
2892 3247 | path = "../aws-smithy-async"
|
2893 3248 | version = "1.2.5"
|
2894 3249 |
|
2895 3250 | [dependencies.aws-smithy-http]
|
2896 3251 | path = "../aws-smithy-http"
|
2897 - | version = "0.62.2"
|
3252 + | version = "0.62.3"
|
2898 3253 |
|
2899 3254 | [dependencies.aws-smithy-json]
|
2900 3255 | path = "../aws-smithy-json"
|
2901 3256 | version = "0.61.4"
|
2902 3257 |
|
2903 3258 | [dependencies.aws-smithy-runtime]
|
2904 3259 | path = "../aws-smithy-runtime"
|
2905 3260 | features = ["client"]
|
2906 3261 | version = "1.8.5"
|
2907 3262 |
|
2908 3263 | [dependencies.aws-smithy-runtime-api]
|
2909 3264 | path = "../aws-smithy-runtime-api"
|
2910 3265 | features = ["client", "http-02x"]
|
2911 3266 | version = "1.8.5"
|
2912 3267 |
|
2913 3268 | [dependencies.aws-smithy-types]
|
2914 3269 | path = "../aws-smithy-types"
|
2915 3270 | version = "1.3.2"
|
2916 3271 |
|
2917 3272 | [dependencies.aws-types]
|
2918 3273 | path = "../aws-types"
|
2919 3274 | version = "1.3.8"
|
2920 3275 |
|
2921 3276 | [dependencies.bytes]
|
2922 3277 | version = "1.4.0"
|
2923 3278 |
|
2924 3279 | [dependencies.fastrand]
|
2925 3280 | version = "2.0.0"
|
2926 3281 |
|
2927 3282 | [dependencies.http]
|
2928 3283 | diff --git a/tmp-codegen-diff/aws-sdk/sdk/transcribestreaming/Cargo.toml b/tmp-codegen-diff/aws-sdk/sdk/transcribestreaming/Cargo.toml
|
2929 3284 | index 5b35037..9fb220a 100644
|
2930 - | -- a/tmp-codegen-diff/aws-sdk/sdk/transcribestreaming/Cargo.toml
|
3285 + | ++ b/tmp-codegen-diff/aws-sdk/sdk/transcribestreaming/Cargo.toml
|
2931 3286 | @@ -1,71 +1,71 @@
|
2932 3287 | # Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
|
2933 3288 | [package]
|
2934 3289 | name = "aws-sdk-transcribestreaming"
|
2935 3290 | version = "0.0.0-local"
|
2936 3291 | authors = ["AWS Rust SDK Team <aws-sdk-rust@amazon.com>", "Russell Cohen <rcoh@amazon.com>"]
|
2937 3292 | description = "AWS SDK for Amazon Transcribe Streaming Service"
|
2938 3293 | edition = "2021"
|
2939 3294 | license = "Apache-2.0"
|
2940 3295 | repository = "https://github.com/awslabs/aws-sdk-rust"
|
2941 3296 | rust-version = "1.86.0"
|
2942 3297 | readme = "README.md"
|
2943 3298 | [package.metadata.smithy]
|
2944 3299 | codegen-version = "ci"
|
2945 3300 | [package.metadata.docs.rs]
|
2946 3301 | all-features = true
|
2947 3302 | targets = ["x86_64-unknown-linux-gnu"]
|
2948 3303 | [dependencies.aws-credential-types]
|
2949 3304 | path = "../aws-credential-types"
|
2950 3305 | version = "1.2.4"
|
2951 3306 |
|
2952 3307 | [dependencies.aws-runtime]
|
2953 3308 | path = "../aws-runtime"
|
2954 3309 | features = ["event-stream"]
|
2955 3310 | version = "1.5.9"
|
2956 3311 |
|
2957 3312 | [dependencies.aws-sigv4]
|
2958 3313 | path = "../aws-sigv4"
|
2959 - | version = "1.3.3"
|
3314 + | version = "1.3.4"
|
2960 3315 |
|
2961 3316 | [dependencies.aws-smithy-async]
|
2962 3317 | path = "../aws-smithy-async"
|
2963 3318 | version = "1.2.5"
|
2964 3319 |
|
2965 3320 | [dependencies.aws-smithy-eventstream]
|
2966 3321 | path = "../aws-smithy-eventstream"
|
2967 3322 | version = "0.60.10"
|
2968 3323 |
|
2969 3324 | [dependencies.aws-smithy-http]
|
2970 3325 | path = "../aws-smithy-http"
|
2971 3326 | features = ["event-stream"]
|
2972 - | version = "0.62.2"
|
3327 + | version = "0.62.3"
|
2973 3328 |
|
2974 3329 | [dependencies.aws-smithy-json]
|
2975 3330 | path = "../aws-smithy-json"
|
2976 3331 | version = "0.61.4"
|
2977 3332 |
|
2978 3333 | [dependencies.aws-smithy-runtime]
|
2979 3334 | path = "../aws-smithy-runtime"
|
2980 3335 | features = ["client"]
|
2981 3336 | version = "1.8.5"
|
2982 3337 |
|