use pycryptodome/pycryptodomex for Keccak testing
This commit is contained in:
parent
46dcb5cabe
commit
e1f68963a7
4 changed files with 36 additions and 7 deletions
|
|
@ -399,6 +399,15 @@ def async_run(coro):
|
|||
import asyncio
|
||||
return asyncio.run(coro)
|
||||
|
||||
def load_cryptodomex(called=[]):
|
||||
if not called:
|
||||
try:
|
||||
import Cryptodome
|
||||
except ImportError:
|
||||
import Crypto
|
||||
sys.modules['Cryptodome'] = sys.modules['Crypto']
|
||||
called.append(True)
|
||||
|
||||
def wrap_ripemd160(called=[]):
|
||||
if not called:
|
||||
try:
|
||||
|
|
|
|||
|
|
@ -230,6 +230,8 @@ class GenToolMonero_python(GenTool):
|
|||
|
||||
def __init__(self,*args,**kwargs):
|
||||
super().__init__(*args,**kwargs)
|
||||
from mmgen.util import load_cryptodomex
|
||||
load_cryptodomex()
|
||||
try:
|
||||
from monero.seed import Seed
|
||||
except:
|
||||
|
|
|
|||
|
|
@ -109,12 +109,15 @@ class TestKeccak(TestHashFunc):
|
|||
from mmgen.contrib.keccak import keccak_256
|
||||
self.t_cls = keccak_256
|
||||
from mmgen.pyversion import python_version
|
||||
if python_version >= '3.11':
|
||||
ymsg(f'Skipping keccak random data test for Python version {python_version} (no pysha3)')
|
||||
self.hashlib = None
|
||||
elif gc.platform == 'win':
|
||||
ymsg(f'Skipping keccak random data test for Windows platform (no pysha3)')
|
||||
self.hashlib = None
|
||||
if python_version >= '3.11' or gc.platform == 'win':
|
||||
class hashlib:
|
||||
@staticmethod
|
||||
def keccak_256(data):
|
||||
return keccak.new(data=data,digest_bytes=32)
|
||||
from mmgen.util import load_cryptodomex
|
||||
load_cryptodomex()
|
||||
from Cryptodome.Hash import keccak
|
||||
self.hashlib = hashlib
|
||||
else:
|
||||
import sha3
|
||||
self.hashlib = sha3
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@ from ..include.common import cfg,vmsg,check_solc_ver
|
|||
|
||||
class unit_tests:
|
||||
|
||||
altcoin_deps = ('pysha3','py_ecc','solc')
|
||||
altcoin_deps = ('pysha3','py_ecc','solc','pycryptodomex')
|
||||
win_skip = ('pysha3','led')
|
||||
|
||||
def led(self,name,ut):
|
||||
|
|
@ -36,6 +36,21 @@ class unit_tests:
|
|||
from sha3 import keccak_256
|
||||
return True
|
||||
|
||||
def pycryptodomex(self,name,ut): # ETH,XMR
|
||||
from mmgen.pyversion import python_version
|
||||
if python_version >= '3.11' or gc.platform == 'win':
|
||||
try:
|
||||
from mmgen.util import load_cryptodomex
|
||||
except Exception as e:
|
||||
msg(str(e))
|
||||
ymsg('Please install the ‘pycryptodome’ or ‘pycryptodomex’ package on your system')
|
||||
return False
|
||||
elif gc.platform != 'win':
|
||||
ut.skip_msg(f'platform {gc.platform!r}')
|
||||
else:
|
||||
ut.skip_msg(f'Python version {python_version}')
|
||||
return True
|
||||
|
||||
def py_ecc(self,name,ut): # ETH
|
||||
from py_ecc.secp256k1 import privtopub
|
||||
return True
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue