Ejemplo n.º 1
0
    def encrypt(self):
        if not self.original.text():
            return

        try:
            val = hex(self.mm.mnemonic_decode(self.original.text()))[2:]
        except ValueError:
            QMessageBox.question(self, 'Error',
                                 "The seed you entered is invalid.",
                                 QMessageBox.Ok, QMessageBox.Ok)
            return

        shares = HexToHexSecretSharer.split_secret(
            val, self.shares_required.value(), self.shares_to_generate.value())

        for share_no in range(len(shares)):

            ssint = int(shares[share_no].replace("-", "0"), 16)
            ss = self.mm.mnemonic_encode(ssint)
            self.textboxes[share_no].setText(ss)

        self.original.setText("")
Ejemplo n.º 2
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
def split_passphrase(passphrase, share_threshold=2, num_shares=6):
    return HexToHexSecretSharer.split_secret(
        passphrase,
        share_threshold,
        num_shares
    )
Ejemplo n.º 4
0
def split_passphrase(passphrase, share_threshold=2, num_shares=6):
    return HexToHexSecretSharer.split_secret(passphrase, share_threshold,
                                             num_shares)