@@ -11,34 +11,45 @@ def __init__(self, access_key, secret_key, session_token=None):
1111
1212 def add_auth (self , method , headers , body ):
1313 if body :
14- headers [' Content-Length' ] = str (len (body ))
15- timestamp = datetime .utcnow ().strftime (' %Y%m%dT%H%M%SZ' )
16- headers [' X-Amz-Date' ] = timestamp
14+ headers [" Content-Length" ] = str (len (body ))
15+ timestamp = datetime .utcnow ().strftime (" %Y%m%dT%H%M%SZ" )
16+ headers [" X-Amz-Date" ] = timestamp
1717
1818 if self .session_token :
19- headers [' X-Amz-Security-Token' ] = self .session_token
19+ headers [" X-Amz-Security-Token" ] = self .session_token
2020
2121 # https://docs.aws.amazon.com/general/latest/gr/sigv4-create-canonical-request.html
22- canonical_headers = '' .join ('{0}:{1}\n ' .format (k .lower (), headers [k ]) for k in sorted (headers ))
23- signed_headers = ';' .join (k .lower () for k in sorted (headers ))
24- payload_hash = sha256 (body .encode ('utf-8' )).hexdigest ()
25- canonical_request = '\n ' .join ([method , '/' , '' , canonical_headers , signed_headers , payload_hash ])
22+ canonical_headers = "" .join (
23+ "{0}:{1}\n " .format (k .lower (), headers [k ]) for k in sorted (headers )
24+ )
25+ signed_headers = ";" .join (k .lower () for k in sorted (headers ))
26+ payload_hash = sha256 (body .encode ("utf-8" )).hexdigest ()
27+ canonical_request = "\n " .join (
28+ [method , "/" , "" , canonical_headers , signed_headers , payload_hash ]
29+ )
2630
2731 # https://docs.aws.amazon.com/general/latest/gr/sigv4-create-string-to-sign.html
28- algorithm = 'AWS4-HMAC-SHA256'
29- credential_scope = '/' .join ([timestamp [0 :8 ], 'us-east-1' , 'sts' , 'aws4_request' ])
30- canonical_request_hash = sha256 (canonical_request .encode ('utf-8' )).hexdigest ()
31- string_to_sign = '\n ' .join ([algorithm , timestamp , credential_scope , canonical_request_hash ])
32+ algorithm = "AWS4-HMAC-SHA256"
33+ credential_scope = "/" .join (
34+ [timestamp [0 :8 ], "us-east-1" , "sts" , "aws4_request" ]
35+ )
36+ canonical_request_hash = sha256 (canonical_request .encode ("utf-8" )).hexdigest ()
37+ string_to_sign = "\n " .join (
38+ [algorithm , timestamp , credential_scope , canonical_request_hash ]
39+ )
3240
3341 # https://docs.aws.amazon.com/general/latest/gr/sigv4-calculate-signature.html
34- key = ' AWS4{0}' .format (self .secret_key ).encode (' utf-8' )
35- key = hmac .new (key , timestamp [0 :8 ].encode (' utf-8' ), sha256 ).digest ()
36- key = hmac .new (key , ' us-east-1' .encode (' utf-8' ), sha256 ).digest ()
37- key = hmac .new (key , ' sts' .encode (' utf-8' ), sha256 ).digest ()
38- key = hmac .new (key , ' aws4_request' .encode (' utf-8' ), sha256 ).digest ()
39- signature = hmac .new (key , string_to_sign .encode (' utf-8' ), sha256 ).hexdigest ()
42+ key = " AWS4{0}" .format (self .secret_key ).encode (" utf-8" )
43+ key = hmac .new (key , timestamp [0 :8 ].encode (" utf-8" ), sha256 ).digest ()
44+ key = hmac .new (key , " us-east-1" .encode (" utf-8" ), sha256 ).digest ()
45+ key = hmac .new (key , " sts" .encode (" utf-8" ), sha256 ).digest ()
46+ key = hmac .new (key , " aws4_request" .encode (" utf-8" ), sha256 ).digest ()
47+ signature = hmac .new (key , string_to_sign .encode (" utf-8" ), sha256 ).hexdigest ()
4048
4149 # https://docs.aws.amazon.com/general/latest/gr/sigv4-add-signature-to-request.html
42- authorization = '{0} Credential={1}/{2}, SignedHeaders={3}, Signature={4}' .format (
43- algorithm , self .access_key , credential_scope , signed_headers , signature )
44- headers ['Authorization' ] = authorization
50+ authorization = (
51+ "{0} Credential={1}/{2}, SignedHeaders={3}, Signature={4}" .format (
52+ algorithm , self .access_key , credential_scope , signed_headers , signature
53+ )
54+ )
55+ headers ["Authorization" ] = authorization
0 commit comments