signature/python2/alibabacloud_darabonba_signature_util/signer.py (48 lines of code) (raw):
# -*- coding: utf-8 -*-
# This file is auto-generated, don't edit it. Thanks.
import hmac
import hashlib
from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding
from cryptography.hazmat.primitives.serialization import load_pem_private_key
from .sm3 import Sm3
class Signer(object):
"""
Signature Util for Darabonba.
"""
def __init__(self):
pass
@staticmethod
def hmac_sha1sign(string_to_sign, secret):
"""
HmacSHA1 Signature
@type string_to_sign: str
@param string_to_sign: string
@type secret: str
@param secret: string
@return: signed bytes
"""
return Signer.hmac_sha1sign_by_bytes(string_to_sign, secret.encode('utf-8'))
@staticmethod
def hmac_sha1sign_by_bytes(string_to_sign, secret):
"""
HmacSHA1 Signature
@type string_to_sign: str
@param string_to_sign: string
@param secret: bytes
@return: signed bytes
"""
string_to_sign = string_to_sign.encode('utf-8')
return hmac.new(secret, string_to_sign,
digestmod=hashlib.sha1).digest()
@staticmethod
def hmac_sha256sign(string_to_sign, secret):
"""
HmacSHA256 Signature
@type string_to_sign: str
@param string_to_sign: string
@type secret: str
@param secret: string
@return: signed bytes
"""
return Signer.hmac_sha256sign_by_bytes(string_to_sign, secret.encode('utf-8'))
@staticmethod
def hmac_sha256sign_by_bytes(string_to_sign, secret):
"""
HmacSHA256 Signature
@type string_to_sign: str
@param string_to_sign: string
@param secret: bytes
@return: signed bytes
"""
string_to_sign = string_to_sign.encode('utf-8')
return hmac.new(secret, string_to_sign, hashlib.sha256).digest()
@staticmethod
def hmac_sm3sign(string_to_sign, secret):
"""
HmacSM3 Signature
@type string_to_sign: str
@param string_to_sign: string
@type secret: str
@param secret: string
@return: signed bytes
"""
return Signer.hmac_sm3sign_by_bytes(string_to_sign, secret.encode('utf-8'))
@staticmethod
def hmac_sm3sign_by_bytes(string_to_sign, secret):
"""
HmacSM3 Signature
@type string_to_sign: str
@param string_to_sign: string
@param secret: bytes
@return: signed bytes
"""
string_to_sign = string_to_sign.encode('utf-8')
return hmac.new(secret, string_to_sign, Sm3).digest()
@staticmethod
def sha256with_rsasign(string_to_sign, secret):
"""
SHA256withRSA Signature
@type string_to_sign: str
@param string_to_sign: string
@type secret: str
@param secret: string
@return: signed bytes
"""
string_to_sign = string_to_sign.encode('utf-8')
secret = secret.encode('utf-8')
if not secret.startswith(b'-----BEGIN RSA PRIVATE KEY-----'):
secret = b'-----BEGIN RSA PRIVATE KEY-----\n%s' % secret
if not secret.endswith(b'-----END RSA PRIVATE KEY-----'):
secret = b'%s\n-----END RSA PRIVATE KEY-----' % secret
key = load_pem_private_key(secret, password=None, backend=default_backend())
return key.sign(string_to_sign, padding.PKCS1v15(), hashes.SHA256())
@staticmethod
def md5sign(string_to_sign):
"""
MD5 Signature
@param string_to_sign: string
@return: signed bytes
"""
return Signer.md5sign_for_bytes(string_to_sign.encode('utf-8'))
@staticmethod
def md5sign_for_bytes(bytes_to_sign):
"""
MD5 Signature
@param string_to_sign: string
@return: signed bytes
"""
return hashlib.md5(bytes_to_sign).digest()