import hmac
|
|
import json
|
|
from base64 import b64encode, urlsafe_b64encode
|
|
from hashlib import sha256
|
|
|
|
|
|
def sha256_base64(payload):
|
|
out = payload.encode('utf-8')
|
|
out = sha256(out).digest()
|
|
out = b64encode(out)
|
|
return out.decode('utf-8')
|
|
|
|
|
|
def hmac_sha256(key, message):
|
|
hm = hmac.new(key.encode('utf-8'), digestmod=sha256)
|
|
hm.update(message.encode('utf-8'))
|
|
digest = hm.digest()
|
|
return urlsafe_b64encode(digest).decode('utf-8').replace('=', '')
|
|
|
|
|
|
class RequestFailure(Exception):
|
|
def __init__(self, message, ans, error_code=None):
|
|
super().__init__(message)
|
|
self.ans = ans
|
|
self.error_code = error_code
|