35 logging.basicConfig(level=logging.DEBUG)
36 log = logging.getLogger(__name__)
47 self.
signature =
"%s\n%s\n%s\n" % (
'POST',
'ec2.us-east-1.amazonaws.com',
'/')
58 toSign = parameters.get(
'Method') +
'\n' + parameters.get(
'Endpoint').lower() +
'\n' +
'/\n'
59 keys = parameters.keys()
63 val = parameters[key].encode(
'utf-8')
64 if key ==
'Signature' or key ==
'Method' or key ==
'Endpoint':
66 pairs.append(urllib.quote(key, safe=
'') +
'=' + urllib.quote(val, safe=
'-_~'))
69 h = hmac.new(password, toSign, hashlib.sha256)
70 b64 = base64.b64encode(h.digest())
84 for key
in sorted(parameters.iterkeys(), key=str.lower):
85 if key ==
'Signature' or key ==
'Method' or key ==
'Endpoint':
89 params += str(parameters.get(key))
90 h = hmac.new(password, params, hashlib.sha1)
91 signature = h.digest()
92 signature = base64.b64encode(signature)
111 bucket = parameters.get(
'Bucket')
113 CanonicalizedResource = parameters.get(
'path_info') + parameters.get(
'query_string')
115 CanonicalizedAmdHeaders =
u''
119 for header
in sorted(parameters.iterkeys(), key=unicode.lower):
120 if header.startswith(
'x_amz_'):
121 header_string = str(header) +
':' +
','.join([parameters[header]]) +
'\n'
122 header_string = header_string.replace(
'_',
'-')
123 CanonicalizedAmdHeaders += header_string
125 print CanonicalizedAmdHeaders.__class__
126 print CanonicalizedAmdHeaders, CanonicalizedResource
127 toSign = parameters.get(
'request_method') + \
128 '\n' + parameters.get(
'content_md5') + \
129 '\n' + parameters.get(
'content_type') + \
130 '\n' + parameters.get(
'date') + \
131 '\n' + CanonicalizedAmdHeaders + CanonicalizedResource
133 print 'StringToSign', toSign
135 h = hmac.new(password, toSign, hashlib.sha1)
136 signature = h.digest()
137 signature = base64.b64encode(signature)
138 print 'Signature:', signature
149 if parameters.get(
'authorization'):
150 correctSignature = Signature.generateSignatureS3(str(password), parameters)
152 version = int(parameters.get(
'SignatureVersion'))
153 correctSignature =
None
155 correctSignature = Signature.generateSignatureVer1(str(password), parameters)
157 correctSignature = Signature.generateSignatureVer2(str(password), parameters)
158 return True if correctSignature == signatureToCheck
else False