in rabbitmq/management/commands/resync_cached_commissions.py [0:0]
def sign_request(original_headers:dict, method:str, path:str, content_type:str, content_body:str, shared_secret:str) -> dict:
"""
returns a dictionary including a suitable authorization header
:param original_headers: original content headers
:param content_body: data that is being sent
:return: new headers dictionary
"""
new_headers = copy.deepcopy(original_headers)
content_hasher = hashlib.sha384()
content_hasher.update(content_body.encode("UTF-8"))
nowdate = formatdate(usegmt=True)
checksumstring = content_hasher.hexdigest()
new_headers['Digest'] = "SHA-384=" + checksumstring
new_headers['Content-Length'] = str(len(content_body))
new_headers['Content-Type'] = content_type
new_headers['Date'] = nowdate
string_to_sign = """{path}\n{date}\n{content_type}\n{checksum}\n{method}""".format(
date=nowdate,content_type=content_type,checksum=checksumstring,
method=method,path=path
)
print("debug: string to sign: {0}".format(string_to_sign))
hmaccer = hmac.new(shared_secret.encode("UTF-8"), string_to_sign.encode("UTF-8"), hashlib.sha384)
result = hmaccer.hexdigest()
print("debug: final digest is {0}".format(result))
new_headers['Authorization'] = "HMAC {0}".format(result)
return new_headers