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()