Added support for decimal output
This commit is contained in:
parent
2e5f7d5907
commit
727714f6b3
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
This project uses Semantic Versioning
|
This project uses Semantic Versioning
|
||||||
|
|
||||||
## 0.0.0
|
## 1.1.0
|
||||||
|
|
||||||
|
Added support for decimal output
|
||||||
|
|
||||||
Initial release
|
|
||||||
|
@ -31,10 +31,12 @@ def _sha3_256_hash(data: bytes) -> int:
|
|||||||
return int.from_bytes(sha3.digest(), byteorder='big')
|
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
|
assert rounds > 1
|
||||||
input_data: int = _sha3_256_hash(data)
|
input_data: int = _sha3_256_hash(data)
|
||||||
|
if not dec:
|
||||||
return hex(reverse_mimc(input_data, rounds)).replace('0x', '')
|
return hex(reverse_mimc(input_data, rounds)).replace('0x', '')
|
||||||
|
return reverse_mimc(input_data, rounds)
|
||||||
|
|
||||||
|
|
||||||
def vdf_verify(
|
def vdf_verify(
|
||||||
@ -44,7 +46,10 @@ def vdf_verify(
|
|||||||
"""Verify data for test_hash generated by vdf_create."""
|
"""Verify data for test_hash generated by vdf_create."""
|
||||||
assert rounds > 1
|
assert rounds > 1
|
||||||
should_match = _sha3_256_hash(data)
|
should_match = _sha3_256_hash(data)
|
||||||
|
try:
|
||||||
test_hash = int(test_hash, 16)
|
test_hash = int(test_hash, 16)
|
||||||
|
except TypeError:
|
||||||
|
pass
|
||||||
return forward_mimc(test_hash, rounds) == should_match
|
return forward_mimc(test_hash, rounds) == should_match
|
||||||
|
|
||||||
|
|
||||||
|
2
setup.py
2
setup.py
@ -1,7 +1,7 @@
|
|||||||
from setuptools import setup, find_packages
|
from setuptools import setup, find_packages
|
||||||
|
|
||||||
setup(name='mimcvdf',
|
setup(name='mimcvdf',
|
||||||
version='1.0.0',
|
version='1.1.0',
|
||||||
description='Generic high level VDF using MiMC',
|
description='Generic high level VDF using MiMC',
|
||||||
author='Kevin Froman',
|
author='Kevin Froman',
|
||||||
author_email='beardog@mailbox.org',
|
author_email='beardog@mailbox.org',
|
||||||
|
@ -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", 1)
|
||||||
self.assertRaises(AssertionError, mimcvdf.vdf_create, b"test", -10000)
|
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()
|
unittest.main()
|
Loading…
Reference in New Issue
Block a user