From 29cf6603af9a13265ba4d164700171090c05907d Mon Sep 17 00:00:00 2001 From: MMGen Date: Fri, 17 May 2019 11:45:10 +0000 Subject: [PATCH] [subseed]: include parent Seed ID in collision check --- mmgen/seed.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/mmgen/seed.py b/mmgen/seed.py index d5e7d42d..ab317ae6 100755 --- a/mmgen/seed.py +++ b/mmgen/seed.py @@ -139,13 +139,16 @@ class Seed(SeedBase): def add_subseed(idx,length): for nonce in range(SubSeed.max_nonce): # use nonce to handle Seed ID collisions sid = make_chksum_8(SubSeedBase.make_subseed_bin(self,idx,nonce,length)) - if not (sid in self.subseeds['long'] or sid in self.subseeds['short']): + if not (sid in self.subseeds['long'] or sid in self.subseeds['short'] or sid == self.sid): self.subseeds[length][sid] = (idx,nonce) return last_sid == sid elif g.debug_subseed: # should get ≈450 collisions for first 1,000,000 subseeds k = ('long','short')[sid in self.subseeds['short']] m1 = 'add_subseed(idx={},{}):'.format(idx,length) - m2 = 'collision with ID {} (idx={},{}),'.format(sid,self.subseeds[k][sid][0],k) + if sid == self.sid: + m2 = 'collision with parent Seed ID {},'.format(sid) + else: + m2 = 'collision with ID {} (idx={},{}),'.format(sid,self.subseeds[k][sid][0],k) msg('{:30} {:46} incrementing nonce to {}'.format(m1,m2,nonce+1)) else: # must exit here, as this could leave self.subseeds in inconsistent state raise SubSeedNonceRangeExceeded('add_subseed(): nonce range exceeded')