tupdate ripemd module for python3 - electrum - Electrum Bitcoin wallet (HTM) git clone https://git.parazyd.org/electrum (DIR) Log (DIR) Files (DIR) Refs (DIR) Submodules --- (DIR) commit 227a553a9942d0168ab7611e5ce896eb1c837815 (DIR) parent 4df599794046f4aee7438ac7e5368de470a4de0f (HTM) Author: ThomasV <thomasv@electrum.org> Date: Sat, 26 Aug 2017 07:25:33 +0200 update ripemd module for python3 Diffstat: M lib/bitcoin.py | 5 ++--- M lib/ripemd.py | 22 ++++++++-------------- 2 files changed, 10 insertions(+), 17 deletions(-) --- (DIR) diff --git a/lib/bitcoin.py b/lib/bitcoin.py t@@ -279,9 +279,8 @@ def hash_160(public_key): md = hashlib.new('ripemd160') md.update(sha256(public_key)) return md.digest() - except Exception: - # not available in Android SL4a - import ripemd + except BaseException: + from . import ripemd md = ripemd.new(sha256(public_key)) return md.digest() (DIR) diff --git a/lib/ripemd.py b/lib/ripemd.py t@@ -37,12 +37,6 @@ ## * ftp://ftp.rsasecurity.com/pub/cryptobytes/crypto3n2.pdf ## */ -try: - import psyco - psyco.full() -except ImportError: - pass - #block_size = 1 digest_size = 20 digestsize = 20 t@@ -77,7 +71,7 @@ class RIPEMD160: dig = self.digest() hex_digest = '' for d in dig: - hex_digest += '%02x' % ord(d) + hex_digest += '%02x' % d return hex_digest def copy(self): t@@ -155,7 +149,7 @@ import struct def RMD160Transform(state, block): #uint32 state[5], uchar block[64] x = [0]*16 if sys.byteorder == 'little': - x = struct.unpack('<16L', ''.join([chr(x) for x in block[0:64]])) + x = struct.unpack('<16L', bytes([x for x in block[0:64]])) else: raise "Error!!" a = state[0] t@@ -362,13 +356,13 @@ def RMD160Update(ctx, inp, inplen): if type(inp) == str: inp = [ord(i)&0xff for i in inp] - have = (ctx.count / 8) % 64 + have = (ctx.count // 8) % 64 need = 64 - have ctx.count += 8 * inplen off = 0 if inplen >= need: if have: - for i in xrange(need): + for i in range(need): ctx.buffer[have+i] = inp[i] RMD160Transform(ctx.state, ctx.buffer) off = need t@@ -378,12 +372,12 @@ def RMD160Update(ctx, inp, inplen): off += 64 if off < inplen: # memcpy(ctx->buffer + have, input+off, len-off); - for i in xrange(inplen - off): + for i in range(inplen - off): ctx.buffer[have+i] = inp[off+i] def RMD160Final(ctx): size = struct.pack("<Q", ctx.count) - padlen = 64 - ((ctx.count / 8) % 64) + padlen = 64 - ((ctx.count // 8) % 64) if padlen < 1+8: padlen += 64 RMD160Update(ctx, PADDING, padlen-8) t@@ -392,8 +386,8 @@ def RMD160Final(ctx): assert '37f332f68db77bd9d7edd4969571ad671cf9dd3b' == \ - new('The quick brown fox jumps over the lazy dog').hexdigest() + new(b'The quick brown fox jumps over the lazy dog').hexdigest() assert '132072df690933835eb8b6ad0b77e7b6f14acad7' == \ - new('The quick brown fox jumps over the lazy cog').hexdigest() + new(b'The quick brown fox jumps over the lazy cog').hexdigest() assert '9c1185a5c5e9fc54612808977ee8f548b2258d31' == \ new('').hexdigest()