import unittest from onionrblocks.generators import signedby import kasten import hashlib from nacl.signing import SigningKey, VerifyKey from time import time from math import floor def sha3_hash_bytes(data): return hashlib.sha3_256(data).digest() class TestSignedByProof(unittest.TestCase): def test_signed_by_create(self): key = SigningKey.generate() test_data = kasten.generator.pack.pack( b"test", "tst") gen = signedby.Signed.generate(test_data, key) self.assertEqual( gen.get_packed(), test_data ) hashed = hashlib.sha3_256(test_data).digest() signed = key.sign(hashed) self.assertEqual(signed, gen.id) key.verify_key.verify(signed) self.assertEqual(hashlib.sha3_256(test_data).digest(), signed[64:]) def test_signed_by_create_raw_keys(self): key = SigningKey.generate() test_data = kasten.generator.pack.pack( b"test", "tst") gen = signedby.Signed.generate(test_data, key.encode()) self.assertEqual( gen.get_packed(), test_data ) hashed = hashlib.sha3_256(test_data).digest() signed = key.sign(hashed) self.assertEqual(signed, gen.id) key.verify_key.verify(signed) self.assertEqual(hashlib.sha3_256(test_data).digest(), signed[64:]) unittest.main()