Exemple #1
0
 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
Exemple #2
0
    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))
Exemple #3
0
 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)
Exemple #4
0
 def test_encrypted_key_str_password(self):
     key = Key.from_encoded_key(
         key=
         'edesk1UrFQK6xJM6SYdLxMQbyKaaYQmzYVvQRpJXUmxj3apZ1ufRu4aHSTqWrJiqcHywSbnF146wkNcpUAW7Qy6H',
         passphrase='12345')
     self.assertEqual(
         'edsk2juUM8ZMUkaCKHWVnzWhp9DxrK93YK1rQjYk3pTEq2ThXpBxkX',
         key.secret_key())
Exemple #5
0
 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)
Exemple #6
0
    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),
        )
Exemple #7
0
 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()
Exemple #8
0
 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')
Exemple #9
0
 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')
Exemple #10
0
 def test_regression_p256_short_sig(self):
     key = Key.from_encoded_key(
         'p2sk3xPfYsoExTVi7bGSH2KoHgpxFNqewUczHkLtQvr1bwnbhzGM9Y')
     key.sign('try25')