def ecrecover(): sig = "7c1886d96dc50f07a48fa7d72006809ac9f45d6b1c34b7a072ace679674c64a230aac08d000000000000000000000000000000000000000000000000000000000000001c9c88b967e65708ae5b744502ec117fae31b7f787753e63d8cea7047e789bd55d1d5557b6eca94f4f7473c862cfb5488980d7e1e3eb764f5f11b0fe2281931d2e" pubkey = "0000000000000000000000003f17f1962b36e491b30a40b2405849e597ba5fb5" sig = Signature(binascii.a2b_hex(sig)) sig.recover_public_key_from_msg()
def _stamp_has_valid_wallet_signature(self): signature_bytes = self._evidence_of_decentralized_identity if signature_bytes is constants.NOT_SIGNED: return False else: signature = EthSignature(signature_bytes) proper_pubkey = signature.recover_public_key_from_msg(bytes(self.stamp)) proper_address = proper_pubkey.to_checksum_address() return proper_address == self.checksum_public_address
def test_blockchain_ursula_substantiates_stamp(blockchain_ursulas): first_ursula = list(blockchain_ursulas)[0] signature_as_bytes = first_ursula._evidence_of_decentralized_identity signature = EthSignature(signature_bytes=signature_as_bytes) proper_public_key_for_first_ursula = signature.recover_public_key_from_msg(bytes(first_ursula.stamp)) proper_address_for_first_ursula = proper_public_key_for_first_ursula.to_checksum_address() assert proper_address_for_first_ursula == first_ursula.checksum_public_address # This method is a shortcut for the above. assert first_ursula._stamp_has_valid_wallet_signature
def recover_public_key(message, signature_bytes): signature = Signature(signature_bytes) public_key = signature.recover_public_key_from_msg(message) return public_key
def ecdsa_verify(signature: bytes, data: bytes, address: bytes) -> bool: signature_obj = Signature(signature) recovered_pubkey = signature_obj.recover_public_key_from_msg(data) return recovered_pubkey.to_canonical_address() == address