def __init__(self, context: Optional[ExecutionContext] = None): super(ContextMixin, self).__init__() if context is None: context = ExecutionContext( shell=ShellQuery(RpcNode(nodes[default_network][0])), key=Key.from_encoded_key(default_key) if is_installed() else KeyHash(default_key_hash)) self.context = context
def test_encrypted_keys(self, sk, passphrase, salt, pk): key = Key.from_encoded_key(sk, passphrase=passphrase) self.assertEqual(pk, key.public_key()) with patch('pytezos.crypto.key.pysodium.randombytes', return_value=salt): self.assertEqual(sk, key.secret_key(passphrase))
def test_deterministic_signatures(self, sk, msg, sig): """ See RFC6979 for explanation https://tools.ietf.org/html/rfc6979#section-3.2 """ key = Key.from_encoded_key(sk) signature = key.sign(msg) self.assertEqual(sig, signature)
def test_encrypted_key_str_password(self): key = Key.from_encoded_key( key= 'edesk1UrFQK6xJM6SYdLxMQbyKaaYQmzYVvQRpJXUmxj3apZ1ufRu4aHSTqWrJiqcHywSbnF146wkNcpUAW7Qy6H', passphrase='12345') self.assertEqual( 'edsk2juUM8ZMUkaCKHWVnzWhp9DxrK93YK1rQjYk3pTEq2ThXpBxkX', key.secret_key())
def execute(cls, stack: MichelsonStack, stdout: List[str], context: AbstractContext): a = cast(KeyType, stack.pop1()) a.assert_type_equal(KeyType) key = Key.from_encoded_key(str(a)) res = KeyHashType.from_value(key.public_key_hash()) stack.push(res) stdout.append(format_stdout(cls.prim, [a], [res])) # type: ignore return cls(stack_items_added=1)
def check_message(self, message: str, public_key: str, signature: str, block: str = 'genesis') -> None: """Check message signature :param message: Signed operation :param public_key: Signer's public key :param signature: Message signature :param block: Specify block, defaults to genesis """ pk = Key.from_encoded_key(public_key) pk.verify( signature=signature, message=self.failing_noop(message).message(block=block), )
def execute(cls, stack: MichelsonStack, stdout: List[str], context: AbstractContext): pk, sig, msg = cast(Tuple[KeyType, SignatureType, BytesType], stack.pop3()) pk.assert_type_equal(KeyType) sig.assert_type_equal(SignatureType) msg.assert_type_equal(BytesType) key = Key.from_encoded_key(str(pk)) try: key.verify(signature=str(sig), message=bytes(msg)) except ValueError: res = BoolType(False) else: res = BoolType(True) stack.push(res) stdout.append(format_stdout(cls.prim, [pk, sig, msg], [res])) return cls()
def test_sign_and_verify(self, sk, msg): key = Key.from_encoded_key(sk) sig = key.sign(msg) key.verify(sig, msg) self.assertRaises(ValueError, key.verify, sig, b'fake')
def test_verify_ext_signatures(self, pk, msg, sig): key = Key.from_encoded_key(pk) key.verify(sig, msg) self.assertRaises(ValueError, key.verify, sig, b'fake')
def test_regression_p256_short_sig(self): key = Key.from_encoded_key( 'p2sk3xPfYsoExTVi7bGSH2KoHgpxFNqewUczHkLtQvr1bwnbhzGM9Y') key.sign('try25')