From 727714f6b3b27c8bbe0f5c05257604256f6d2b2f Mon Sep 17 00:00:00 2001 From: Kevin Froman Date: Wed, 22 Apr 2020 01:50:54 -0500 Subject: [PATCH] Added support for decimal output --- CHANGELOG.md | 5 +++-- mimcvdf/__init__.py | 11 ++++++++--- setup.py | 2 +- tests/test_vdf.py | 16 ++++++++++++++++ 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7a79fdb..863ff32 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ This project uses Semantic Versioning -## 0.0.0 +## 1.1.0 + +Added support for decimal output -Initial release diff --git a/mimcvdf/__init__.py b/mimcvdf/__init__.py index 10538b8..ac4fc90 100644 --- a/mimcvdf/__init__.py +++ b/mimcvdf/__init__.py @@ -31,10 +31,12 @@ def _sha3_256_hash(data: bytes) -> int: return int.from_bytes(sha3.digest(), byteorder='big') -def vdf_create(data: bytes, rounds: int = DEFAULT_ROUNDS) -> str: +def vdf_create(data: bytes, rounds: int = DEFAULT_ROUNDS, dec=False) -> str: assert rounds > 1 input_data: int = _sha3_256_hash(data) - return hex(reverse_mimc(input_data, rounds)).replace('0x', '') + if not dec: + return hex(reverse_mimc(input_data, rounds)).replace('0x', '') + return reverse_mimc(input_data, rounds) def vdf_verify( @@ -44,7 +46,10 @@ def vdf_verify( """Verify data for test_hash generated by vdf_create.""" assert rounds > 1 should_match = _sha3_256_hash(data) - test_hash = int(test_hash, 16) + try: + test_hash = int(test_hash, 16) + except TypeError: + pass return forward_mimc(test_hash, rounds) == should_match diff --git a/setup.py b/setup.py index 596014d..5ec8da6 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup, find_packages setup(name='mimcvdf', - version='1.0.0', + version='1.1.0', description='Generic high level VDF using MiMC', author='Kevin Froman', author_email='beardog@mailbox.org', diff --git a/tests/test_vdf.py b/tests/test_vdf.py index e3d1d4a..db4cdff 100644 --- a/tests/test_vdf.py +++ b/tests/test_vdf.py @@ -22,5 +22,21 @@ class TestVDF(unittest.TestCase): self.assertRaises(AssertionError, mimcvdf.vdf_create, b"test", 1) self.assertRaises(AssertionError, mimcvdf.vdf_create, b"test", -10000) + def test_dec_false(self): + for i in range(3): + h = mimcvdf.vdf_create(os.urandom(i), 2, dec=False) + self.assertTrue(h.isalnum()) + self.assertTrue(len(h) == 63 or len(h) == 64) + self.assertIs(type(h), str) + + def test_dec_true(self): + for i in range(3): + h = mimcvdf.vdf_create(os.urandom(i), 2, dec=True) + self.assertIs(type(h), int) + + def test_dec_true_verify(self): + h = mimcvdf.vdf_create(b"test", dec=True) + self.assertTrue(mimcvdf.vdf_verify(b"test", h)) + unittest.main() \ No newline at end of file