@@ -272,12 +272,19 @@ pub async fn compute_aws_sigv4_payload(
272
272
let signable_request = SignableRequest :: new (
273
273
request. method ( ) . as_str ( ) ,
274
274
request. uri ( ) . to_string ( ) ,
275
- request. headers ( ) . iter ( ) . map ( |( k, v) | {
276
- (
277
- k. as_str ( ) ,
278
- std:: str:: from_utf8 ( v. as_bytes ( ) ) . expect ( "Header value should be valid UTF-8" ) ,
279
- )
280
- } ) ,
275
+ request
276
+ . headers ( )
277
+ . iter ( )
278
+ . map ( |( k, v) | {
279
+ let value = std:: str:: from_utf8 ( v. as_bytes ( ) ) . map_err ( |_| {
280
+ Error :: authentication_error (
281
+ MECH_NAME ,
282
+ "Failed to convert header value to valid UTF-8" ,
283
+ )
284
+ } ) ?;
285
+ Ok ( ( k. as_str ( ) , value) )
286
+ } )
287
+ . filter_map ( Result :: ok) ,
281
288
SignableBody :: Bytes ( request. body ( ) . as_bytes ( ) ) ,
282
289
)
283
290
. map_err ( |e| {
@@ -287,21 +294,21 @@ pub async fn compute_aws_sigv4_payload(
287
294
let ( signing_instructions, _signature) = sign ( signable_request, & signing_params)
288
295
. map_err ( |e| Error :: authentication_error ( MECH_NAME , & format ! ( "Signing failed: {e}" ) ) ) ?
289
296
. into_parts ( ) ;
290
-
291
297
signing_instructions. apply_to_request_http1x ( & mut request) ;
292
298
293
299
let headers = request. headers ( ) ;
294
300
let authorization_header = headers
295
301
. get ( "authorization" )
296
302
. ok_or_else ( || Error :: authentication_error ( MECH_NAME , "Missing authorization header" ) ) ?
297
303
. to_str ( )
298
- . map_err ( |e| Error :: authentication_error ( MECH_NAME , & format ! ( "Invalid header value: {e}" ) ) ) ?
299
- . to_string ( ) ;
304
+ . map_err ( |e| {
305
+ Error :: authentication_error ( MECH_NAME , & format ! ( "Invalid header value: {e}" ) )
306
+ } ) ?;
300
307
301
308
let token_header = headers
302
309
. get ( "x-amz-security-token" )
303
310
. map ( |v| {
304
- v. to_str ( ) . map ( |s| s . to_string ( ) ) . map_err ( |e| {
311
+ v. to_str ( ) . map_err ( |e| {
305
312
Error :: authentication_error ( MECH_NAME , & format ! ( "Invalid token header: {e}" ) )
306
313
} )
307
314
} )
0 commit comments