def sign(privkey, data): if not ecdsa: raise custom_exceptions.SigningNotAvailableException("ecdsa not installed") hash = hashlib.sha256(data).digest() signature = privkey.sign_digest(hash, sigencode=ecdsa.util.sigencode_der) return base64.b64encode(signature)
def generate_keypair(): if not ecdsa: raise custom_exceptions.SigningNotAvailableException("ecdsa not installed") private_key = ecdsa.SigningKey.generate(curve=SECP256k1) public_key = private_key.get_verifying_key() return (private_key, public_key)
def verify(pubkey, signature, data): if not ecdsa: raise custom_exceptions.SigningNotAvailableException("ecdsa not installed") hash = hashlib.sha256(data).digest() sign = base64.b64decode(signature) try: return pubkey.verify_digest(sign, hash, sigdecode=ecdsa.util.sigdecode_der) except: return False