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