From 72cc044419442cc2c0886dd53825920cb081b4d0 Mon Sep 17 00:00:00 2001 From: Vladimir Svoboda Date: Tue, 12 Mar 2024 14:33:19 +0100 Subject: [PATCH 1/2] feat: pysha3 change pycryptodome --- coinaddrng/__init__.py | 2 +- coinaddrng/validation.py | 27 +++++++-------------------- requirements.txt | 2 +- setup.py | 4 ++-- 4 files changed, 11 insertions(+), 24 deletions(-) diff --git a/coinaddrng/__init__.py b/coinaddrng/__init__.py index 1c86817..9d9b124 100644 --- a/coinaddrng/__init__.py +++ b/coinaddrng/__init__.py @@ -16,7 +16,7 @@ :license: MIT, see LICENSE for more details. """ -__version__ = '1.0.30' +__version__ = '1.1.0' from . import interfaces, currency, validation from .validation import validate diff --git a/coinaddrng/validation.py b/coinaddrng/validation.py index 01c18c8..215acb6 100644 --- a/coinaddrng/validation.py +++ b/coinaddrng/validation.py @@ -15,8 +15,8 @@ from zope.interface import implementer, provider import attr -import sha3 import base58check +from Crypto.Hash import keccak import math from binascii import unhexlify, crc32 import base64 @@ -510,11 +510,14 @@ def validate(self): # Ethereum address is generated by keccak algorithm and has to # hexadecimal - addr_hash = sha3.keccak_256(addr.lower().encode('ascii')).hexdigest() + kh = keccak.new(digest_bits=256) + kh.update(addr.lower().encode('ascii')) + addr_hash = kh.hexdigest() + for i, letter in enumerate(addr): if any([ - int(addr_hash[i], 16) >= 8 and letter.upper() != letter, - int(addr_hash[i], 16) < 8 and letter.lower() != letter + int(addr_hash[i], 16) >= 8 and letter.upper() != letter, + int(addr_hash[i], 16) < 8 and letter.lower() != letter ]): return False return True @@ -522,22 +525,6 @@ def validate(self): def validate_extended(self): return False - #def validate(self): - # """Validate the address.""" - # address = self.request.address.decode() - # if any(bool(pat.match(address)) - # for pat in self.non_checksummed_patterns): - # return True - # addr = address.lstrip('0x') - # addr_hash = sha3.keccak_256(addr.lower().encode('ascii')).hexdigest() - # for i in range(0, len(addr)): - # if any([ - # int(addr_hash[i], 16) > 7 and addr[i].upper() != addr[i], - # int(addr_hash[i], 16) <= 7 and addr[i].lower() != addr[i] - # ]): - # return False - # return True - @property def network(self): """Return network derived from network version bytes.""" diff --git a/requirements.txt b/requirements.txt index 8a00f0b..99e0285 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,6 @@ zope attrs>=17.4.0 -pysha3>=1.0.2 +pycryptodome base58check>=1.0.1 zope.interface>=4.4.3 bech32 diff --git a/setup.py b/setup.py index 81bc4d2..78fe480 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ license='MIT', install_requires=[ 'attrs>=17.4.0', - 'pysha3>=1.0.2', + 'pycryptodome', 'base58check>=1.0.1', 'zope.interface>=4.4.3', 'crc16>=0.1.1', @@ -62,7 +62,7 @@ 'Programming Language :: Python :: 3', 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: >=3.6', 'Programming Language :: Python :: 3 :: Only', 'Topic :: Internet :: WWW/HTTP', 'Topic :: Software Development', From 9d256a2cd4f0f2441dac994dee68184a06a0620b Mon Sep 17 00:00:00 2001 From: Vladimir Svoboda Date: Tue, 12 Mar 2024 15:19:01 +0100 Subject: [PATCH 2/2] feat: refactor, move requirements to just one place --- .travis.yml | 2 +- README.md | 5 +++++ requirements.txt | 10 ---------- setup.py | 13 +++++++------ 4 files changed, 13 insertions(+), 17 deletions(-) delete mode 100644 requirements.txt diff --git a/.travis.yml b/.travis.yml index f957eda..5ba8d69 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,7 +7,7 @@ notifications: on_success: never on_failure: always -install: pip install -r requirements.txt +install: python3 setup.py install before_script: pip install pytest diff --git a/README.md b/README.md index cc368f6..faefb2f 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,11 @@ A cryptocurrency address inspection/validation library for python. * zcash ## Installation +From `setup.py`: +```commandline +python setup.py install +``` +Pip: ```shell pip3 install coinaddrng ``` diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 99e0285..0000000 --- a/requirements.txt +++ /dev/null @@ -1,10 +0,0 @@ -zope -attrs>=17.4.0 -pycryptodome -base58check>=1.0.1 -zope.interface>=4.4.3 -bech32 -cbor -blake256 -groestlcoin_hash2 -crc16 \ No newline at end of file diff --git a/setup.py b/setup.py index 78fe480..0b1a829 100644 --- a/setup.py +++ b/setup.py @@ -41,14 +41,15 @@ license='MIT', install_requires=[ 'attrs>=17.4.0', - 'pycryptodome', 'base58check>=1.0.1', + 'bech32', + 'blake256', + 'cbor', + 'crc16', + 'groestlcoin_hash2', + 'pycryptodome', + 'zope', 'zope.interface>=4.4.3', - 'crc16>=0.1.1', - 'blake256>=0.1.1', - 'cbor>=1.0.0', - 'bech32>=1.1.0', - 'groestlcoin-hash2>=1.1.1' ], zip_safe=False, packages=find_packages(),