From f060ecdca8166e11da6db447b43d062618e8b19e Mon Sep 17 00:00:00 2001 From: MMGen Date: Mon, 10 Jun 2019 09:18:27 +0000 Subject: [PATCH] crypto.py: remove 'hash_rounds' arg from scramble_seed() --- mmgen/addr.py | 4 ++-- mmgen/crypto.py | 9 ++++----- mmgen/seed.py | 4 ++-- 3 files changed, 8 insertions(+), 9 deletions(-) diff --git a/mmgen/addr.py b/mmgen/addr.py index 96f55af7..f6bcefad 100755 --- a/mmgen/addr.py +++ b/mmgen/addr.py @@ -494,7 +494,7 @@ Removed {{}} duplicate WIF key{{}} from keylist (also in {pnm} key-address file if g.proto.is_testnet(): scramble_key += ':testnet' dmsg_sc('str',scramble_key) - return scramble_seed(seed,scramble_key.encode(),g.scramble_hash_rounds) + return scramble_seed(seed,scramble_key.encode()) def encrypt(self,desc='new key list'): from mmgen.crypto import mmgen_encrypt @@ -883,7 +883,7 @@ Record this checksum: it will be used to verify the password file in the future # NB: In original implementation, pw_id_str was 'baseN', not 'bN' scramble_key = '{}:{}:{}'.format(self.pw_fmt,self.pw_len,self.pw_id_str) from mmgen.crypto import scramble_seed - return scramble_seed(seed,scramble_key.encode(),g.scramble_hash_rounds) + return scramble_seed(seed,scramble_key.encode()) class AddrData(MMGenObject): msgs = { diff --git a/mmgen/crypto.py b/mmgen/crypto.py index d52bb3a6..f7219035 100755 --- a/mmgen/crypto.py +++ b/mmgen/crypto.py @@ -37,18 +37,17 @@ keystrokes will also be used as a source of randomness. } def sha256_rounds(s,n): - assert is_int(n) and n > 0 for i in range(n): s = sha256(s).digest() return s -def scramble_seed(seed,scramble_key,hash_rounds): +def scramble_seed(seed,scramble_key): import hmac - scr_seed = hmac.new(seed,scramble_key,sha256).digest() + step1 = hmac.new(seed,scramble_key,sha256).digest() if g.debug: fs = 'Seed: {!r}\nScramble key: {}\nScrambled seed: {}\n' - msg(fs.format(seed.hex(),scramble_key,scr_seed.hex())) - return sha256_rounds(scr_seed,hash_rounds) + msg(fs.format(seed.hex(),scramble_key,step1.hex())) + return sha256_rounds(step1,g.scramble_hash_rounds) def encrypt_seed(seed,key): return encrypt_data(seed,key,desc='seed') diff --git a/mmgen/seed.py b/mmgen/seed.py index 1ecad03a..b78ccf91 100755 --- a/mmgen/seed.py +++ b/mmgen/seed.py @@ -241,7 +241,7 @@ class SubSeed(SeedBase): nonce.to_bytes(2,'big',signed=False) + \ short.to_bytes(1,'big',signed=False) byte_len = 16 if short else seed.length // 8 - return scramble_seed(seed.data,scramble_key,g.scramble_hash_rounds)[:byte_len] + return scramble_seed(seed.data,scramble_key)[:byte_len] class SeedSplitList(SubSeedList): have_short = False @@ -325,7 +325,7 @@ class SeedSplit(SubSeed): idx.to_bytes(2,'big',signed=False) + \ nonce.to_bytes(2,'big',signed=False) byte_len = seed.length // 8 - return scramble_seed(seed.data,scramble_key,g.scramble_hash_rounds)[:byte_len] + return scramble_seed(seed.data,scramble_key)[:byte_len] class SeedSplitLast(SubSeed):