tcustom entropy in make_seed - electrum - Electrum Bitcoin wallet
 (HTM) git clone https://git.parazyd.org/electrum
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Submodules
       ---
 (DIR) commit b93cde14e7d002f59cde7845892f6aed2c8fa7ab
 (DIR) parent 06cdb7ff39bc2a2617c6d038d4cc1c4f61ff32e2
 (HTM) Author: ThomasV <thomasv@gitorious>
       Date:   Fri,  1 Aug 2014 12:04:38 +0200
       
       custom entropy in make_seed
       
       Diffstat:
         M lib/wallet.py                       |      26 ++++++++++++++++++--------
       
       1 file changed, 18 insertions(+), 8 deletions(-)
       ---
 (DIR) diff --git a/lib/wallet.py b/lib/wallet.py
       t@@ -1368,19 +1368,29 @@ class NewWallet(Deterministic_Wallet):
                account = BIP32_Account({'xpub':xpub})
                return account
        
       -    def make_seed(self):
       -        import mnemonic, ecdsa
       -        entropy = ecdsa.util.randrange( pow(2,160) )
       +
       +    @classmethod
       +    def make_seed(self, custom_entropy=1):
       +        import mnemonic
       +        import ecdsa
       +        import math
       +
       +        n = int(math.ceil(math.log(custom_entropy,2)))
       +        n_added = max(16, 160-n)
       +        print_error("make_seed: adding %d bits"%n_added)
       +        my_entropy = ecdsa.util.randrange( pow(2, n_added) )
                nonce = 0
                while True:
       -            ss = "%040x"%(entropy+nonce)
       -            s = hashlib.sha256(ss.decode('hex')).digest().encode('hex')
       -            # we keep only 13 words, that's approximately 139 bits of entropy
       -            words = mnemonic.mn_encode(s)[0:13]
       +            s = "%x"% ( custom_entropy * (my_entropy + nonce))
       +            if len(s) % 8:
       +                s = "0"* (8 - len(s) % 8) + s
       +            words = mnemonic.mn_encode(s)
                    seed = ' '.join(words)
       +            # this removes 8 bits of entropy
                    if is_new_seed(seed):
       -                break  # this will remove 8 bits of entropy
       +                break
                    nonce += 1
       +        print_error(seed)
                return seed
        
            def prepare_seed(self, seed):