Пример #1
0
 def fromEncryptedEntropy(self, passphrase, entropy, wallet_path = '.', public=False, testnet=False):
     self.encrypted_entropy = entropy
     p = sha256(passphrase).digest()        
     d = self.decrypt_entropy(p)
     self._root = HDKey.fromEntropy(d, public, testnet)
     self._primary = self._root.ChildKey(0+HD_HARDEN)
     return self
Пример #2
0
 def fromEntropy(self, entropy, passphrase=''):
     self._root = HDKey.fromEntropy(entropy, False, False)
     self.encrypt_entropy(sha256(passphrase).digest(), entropy)
     self._primary = self._root.ChildKey(0)
     self._filename = join_path(WALLET_PATH, self._fn())
     self.save()
     return self
Пример #3
0
 def fromEntropy(self,
                 entropy,
                 wallet_path='.',
                 public=False,
                 testnet=False):
     self._root = HDKey.fromEntropy(entropy, public, testnet)
     self._primary = self._root.ChildKey(0)
     return self
Пример #4
0
 def fromSeed(self, seed, nonce, passphrase, wallet_path = '.', public=False, testnet=False):
     self.seed = seed
     entropy_from_seed = self.entropy_from_seed(seed,nonce)
     self.encrypt_entropy(sha256(passphrase).digest(),entropy_from_seed)
     self._root = HDKey.fromEntropy(entropy_from_seed, public, testnet)
     self._primary = self._root.ChildKey(0+HD_HARDEN)
     self._filename = os.path.join(WALLET_PATH, self._fn())
     self.save()
     return self
Пример #5
0
    def create(self):
        if self.pwd_array is not None and (len(self.pwd_array) != self.shares):
            return None

        #Generate the seed
        self.seed, self.nonce = self.create_seed()
        entropy_from_seed = self.entropy_from_seed(self.seed, self.nonce)

        #Generate deposit addresses
        self._root = HDKey.fromEntropy(entropy_from_seed)
        self._primary = self._root.ChildKey(0)
        start_point = self._primary.ChildKey(0 + HD_HARDEN)
        self.deposit_addresses = {}
        for k in sorted(self.verwif):
            x = 0
            addr = []
            while x < self.num_addr:
                key = start_point.ChildKey(x)
                addr.append(
                    public_key_to_address(key.PublicKey(), self.verwif[k][0]))
                x += 1
            self.deposit_addresses.update({k: addr})

        #Split the seed
        self.shares = HexToHexSecretSharer.split_secret(
            binascii.hexlify(entropy_from_seed), self.shares_required,
            self.num_shares)

        #Encrypt the shares if a pwd_array is provided
        #Shares are encrypte against passwords in the same order provided
        #This is never revealed during use
        if self.pwd_array is not None:
            self.encrypted = True
            x = 0
            for pwd in pwd_array:
                self.shares[x] = self.AESEncrypt(pwd, self.shares[x])
                x += 1
Пример #6
0
 def fromExtendedKey(self, xkey, public=False):
     self._root = HDKey.fromExtendedKey(xkey, public)
     self._primary = self._root.ChildKey(0+HD_HARDEN)
     return self