From c51b2875df0592c47ccbc9da4689114ae16357d6 Mon Sep 17 00:00:00 2001 From: Dmitri Bogomolov <4glitch@gmail.com> Date: Thu, 9 Dec 2021 19:46:02 +0200 Subject: [PATCH] Tests for keys generation this implementation for deterministic keys requires a passphrase of type bytes --- src/tests/samples.py | 3 ++- src/tests/test_crypto.py | 20 ++++++++++++++++++-- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/src/tests/samples.py b/src/tests/samples.py index d96187ca..9f6c9d5b 100644 --- a/src/tests/samples.py +++ b/src/tests/samples.py @@ -43,8 +43,9 @@ sample_point = ( ) sample_seed = b'TIGER, tiger, burning bright. In the forests of the night' -# Deterministic addresses with stream 1 and versions 3, 4 +# RIPE hash on step 22 with signing key nonce 42 sample_deterministic_ripe = b'00cfb69416ae76f68a81c459de4e13460c7d17eb' +# Deterministic addresses with stream 1 and versions 3, 4 sample_deterministic_addr3 = 'BM-2DBPTgeSawWYZceFD69AbDT5q4iUWtj1ZN' sample_deterministic_addr4 = 'BM-2cWzSnwjJ7yRP3nLEWUV5LisTZyREWSzUK' sample_daddr3_512 = 18875720106589866286514488037355423395410802084648916523381 diff --git a/src/tests/test_crypto.py b/src/tests/test_crypto.py index 0a6f9f96..9fd6ffa6 100644 --- a/src/tests/test_crypto.py +++ b/src/tests/test_crypto.py @@ -17,10 +17,10 @@ except ImportError: RIPEMD160 = None from .samples import ( - sample_double_sha512, sample_hash_data, + sample_deterministic_ripe, sample_double_sha512, sample_hash_data, sample_msg, sample_pubsigningkey, sample_pubencryptionkey, sample_privsigningkey, sample_privencryptionkey, sample_ripe, - sample_sig, sample_sig_sha1 + sample_seed, sample_sig, sample_sig_sha1 ) @@ -81,6 +81,22 @@ class TestHighlevelcrypto(unittest.TestCase): self.assertNotEqual(len(set(data)), 1) self.assertNotEqual(data, highlevelcrypto.randomBytes(n)) + def test_random_keys(self): + """Dummy checks for random keys""" + priv, pub = highlevelcrypto.random_keys() + self.assertEqual(len(priv), 32) + self.assertEqual(highlevelcrypto.pointMult(priv), pub) + + def test_deterministic_keys(self): + """Generate deterministic keys, make ripe and compare it to sample""" + # encodeVarint(42) = b'*' + sigkey = highlevelcrypto.deterministic_keys(sample_seed, b'*')[1] + enkey = highlevelcrypto.deterministic_keys(sample_seed, b'+')[1] + self.assertEqual( + sample_deterministic_ripe, + hexlify(TestHashlib._hashdigest( + hashlib.sha512(sigkey + enkey).digest()))) + def test_signatures(self): """Verify sample signatures and newly generated ones""" pubkey_hex = hexlify(sample_pubsigningkey)