diff --git a/monero/address.py b/monero/address.py index 1e1a060..99d26d1 100644 --- a/monero/address.py +++ b/monero/address.py @@ -1,12 +1,18 @@ from binascii import hexlify, unhexlify import re -import struct from sha3 import keccak_256 +import struct +import sys from . import base58 from . import ed25519 from . import numbers +if sys.version_info < (3,): # pragma: no cover + _str_types = (str, bytes, unicode) +else: # pragma: no cover + _str_types = (str, bytes) + _ADDR_REGEX = re.compile(r'^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{95}$') _IADDR_REGEX = re.compile(r'^[123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz]{106}$') @@ -58,7 +64,7 @@ class BaseAddress(object): def __eq__(self, other): if isinstance(other, BaseAddress): return str(self) == str(other) - if isinstance(other, str): + if isinstance(other, _str_types): return str(self) == other return super(BaseAddress, self).__eq__(other) diff --git a/monero/ed25519.py b/monero/ed25519.py index 55de635..1137d86 100644 --- a/monero/ed25519.py +++ b/monero/ed25519.py @@ -9,7 +9,7 @@ import operator as _oper import sys as _sys # Set up byte handling for Python 2 or 3 -if _sys.version_info.major == 2: +if _sys.version_info.major == 2: # pragma: no cover int2byte = chr range = xrange @@ -18,7 +18,7 @@ if _sys.version_info.major == 2: def intlist2bytes(l): return b"".join(chr(c) for c in l) -else: +else: # pragma: no cover indexbytes = _oper.getitem intlist2bytes = bytes int2byte = _oper.methodcaller("to_bytes", 1, "big") @@ -27,9 +27,6 @@ b = 256 q = 2**255 - 19 l = 2**252 + 27742317777372353535851937790883648493 -def H(m): - return hashlib.sha512(m).digest() - def expmod(b, e, m): if e == 0: return 1 t = expmod(b, e//2, m)**2 % m @@ -103,16 +100,6 @@ def encodepoint(P): def bit(h, i): return (indexbytes(h, i//8) >> (i%8)) & 1 -def publickey(sk): - h = H(sk) - a = 2**(b-2) + sum(2**i * bit(h, i) for i in range(3, b-2)) - A = scalarmult(B, a) - return encodepoint(A) - -def Hint(m): - h = H(m) - return sum(2**i * bit(h, i) for i in range(2*b)) - def isoncurve(P): x = P[0] y = P[1] @@ -130,6 +117,19 @@ def decodepoint(s): return P # These are unused but let's keep them +#def H(m): +# return hashlib.sha512(m).digest() +# +#def Hint(m): +# h = H(m) +# return sum(2**i * bit(h, i) for i in range(2*b)) +# +#def publickey(sk): +# h = H(sk) +# a = 2**(b-2) + sum(2**i * bit(h, i) for i in range(3, b-2)) +# A = scalarmult(B, a) +# return encodepoint(A) +# #def signature(m, sk, pk): # h = H(sk) # a = 2**(b-2) + sum(2**i * bit(h, i) for i in range(3, b-2)) diff --git a/monero/numbers.py b/monero/numbers.py index 0590e1f..c2c9973 100644 --- a/monero/numbers.py +++ b/monero/numbers.py @@ -3,10 +3,10 @@ import sys PICONERO = Decimal('0.000000000001') -if sys.version_info < (3,): +if sys.version_info < (3,): # pragma: no cover _integer_types = (int, long,) _str_types = (str, bytes, unicode) -else: +else: # pragma: no cover _integer_types = (int,) _str_types = (str, bytes) diff --git a/monero/transaction.py b/monero/transaction.py index 73afeae..17d74f5 100644 --- a/monero/transaction.py +++ b/monero/transaction.py @@ -86,9 +86,9 @@ class Transaction(object): return self.hash -if sys.version_info < (3,): +if sys.version_info < (3,): # pragma: no cover _str_types = (str, bytes, unicode) -else: +else: # pragma: no cover _str_types = (str, bytes) diff --git a/setup.py b/setup.py index 6a055f0..cca618b 100644 --- a/setup.py +++ b/setup.py @@ -42,13 +42,15 @@ setup( author_email = 'michal@salaban.info', license = 'BSD-3-Clause', classifiers = [ - 'Development Status :: 2 - Pre-Alpha', + 'Development Status :: 4 - Beta', 'Intended Audience :: Developers', 'License :: OSI Approved :: BSD License', 'Operating System :: OS Independent', 'Programming Language :: Python', + 'Programming Language :: Python :: 2.7', 'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.7', + 'Topic :: Software Development :: Libraries :: Python Modules', ], keywords = 'monero cryptocurrency', test_suite='tests',