1from cryptography.hazmat.primitives import hashes 2from cryptography.hazmat.backends import default_backend 3from cryptography.hazmat.primitives.serialization import ( 4 load_pem_private_key, load_pem_public_key 5) 6from cryptography.hazmat.primitives.asymmetric import padding 7from cryptography.exceptions import InvalidSignature 8from authlib.common.encoding import to_bytes 9 10 11def sign_sha1(msg, rsa_private_key): 12 key = load_pem_private_key( 13 to_bytes(rsa_private_key), 14 password=None, 15 backend=default_backend() 16 ) 17 return key.sign(msg, padding.PKCS1v15(), hashes.SHA1()) 18 19 20def verify_sha1(sig, msg, rsa_public_key): 21 key = load_pem_public_key( 22 to_bytes(rsa_public_key), 23 backend=default_backend() 24 ) 25 try: 26 key.verify(sig, msg, padding.PKCS1v15(), hashes.SHA1()) 27 return True 28 except InvalidSignature: 29 return False 30