def test_bip39_multisig_seed_bip45_standard(self): seed_words = 'treat dwarf wealth gasp brass outside high rent blood crowd make initial' self.assertEqual(keystore.bip39_is_checksum_valid(seed_words), (True, True)) ks1 = keystore.from_bip39_seed(seed_words, '', "m/45'/0") self.assertTrue(isinstance(ks1, keystore.BIP32_KeyStore)) self.assertEqual( ks1.xpub, 'xpub69xafV4YxC6o8Yiga5EiGLAtqR7rgNgNUGiYgw3S9g9pp6XYUne1KxdcfYtxwmA3eBrzMFuYcNQKfqsXCygCo4GxQFHfywxpUbKNfYvGJka' ) ks2 = keystore.from_xpub( 'xpub6Bco9vrgo8rNUSi8Bjomn8xLA41DwPXeuPcgJamNRhTTyGVHsp8fZXaGzp9ypHoei16J6X3pumMAP1u3Dy4jTSWjm4GZowL7Dcn9u4uZC9W' ) self._check_xpub_keystore_sanity(ks2) self.assertTrue(isinstance(ks2, keystore.BIP32_KeyStore)) w = self._create_multisig_wallet(ks1, ks2) self.assertEqual( w.get_receiving_addresses()[0], address_from_string('3H3iyACDTLJGD2RMjwKZcCwpdYZLwEZzKb')) self.assertEqual( w.get_change_addresses()[0], address_from_string('31hyfHrkhNjiPZp1t7oky5CGNYqSqDAVM9'))
def on_edit(self): from electrumsv.bitcoin import seed_type s = self.get_seed() b = self.is_seed(s) if not self.is_bip39: t = seed_type(s) label = _('Seed Type') + ': ' + t if t else '' else: from electrumsv.keystore import bip39_is_checksum_valid is_checksum, is_wordlist = bip39_is_checksum_valid(s) status = ('checksum: ' + ('ok' if is_checksum else 'failed') if is_wordlist else 'unknown wordlist') label = 'BIP39' + ' (%s)' % status self.seed_type_label.setText(label) self.parent.next_button.setEnabled(b)
def test_bip39_seed_bip44_standard(self, mock_write): seed_words = 'treat dwarf wealth gasp brass outside high rent blood crowd make initial' self.assertEqual(keystore.bip39_is_checksum_valid(seed_words), (True, True)) ks = keystore.from_bip39_seed(seed_words, '', "m/44'/0'/0'") self.assertTrue(isinstance(ks, keystore.BIP32_KeyStore)) self.assertEqual(ks.xpub, 'xpub6DFh1smUsyqmYD4obDX6ngaxhd53Zx7aeFjoobebm7vbkT6f9awJWFuGzBT9FQJEWFBL7UyhMXtYzRcwDuVbcxtv9Ce2W9eMm4KXLdvdbjv') w = self._create_standard_wallet(ks) self.assertEqual(w.get_receiving_addresses()[0], Address.from_string('16j7Dqk3Z9DdTdBtHcCVLaNQy9MTgywUUo')) self.assertEqual(w.get_change_addresses()[0], Address.from_string('1GG5bVeWgAp5XW7JLCphse14QaC4qiHyWn'))
def test(self): mnemonic_ = u'gravity machine north sort system female filter attitude volume fold club stay feature office ecology stable narrow fog' is_checksum_valid, is_wordlist_valid = keystore.bip39_is_checksum_valid(mnemonic_) self.assertTrue(is_wordlist_valid) self.assertTrue(is_checksum_valid)
def __init__(self, main_window: ElectrumWindow, parent: QWidget, keystore: KeyStore, password: str) -> None: super().__init__(parent) self._main_window = main_window self.setWindowTitle(_("Secured Account Data")) self.setMinimumSize(500, 200) vbox = QVBoxLayout() self._form = form = FormSectionWidget(minimum_label_width=120) assert keystore.derivation_type in (DerivationType.BIP32, DerivationType.ELECTRUM_OLD) self._seed_edit = None if keystore.seed is not None: seed_text = keystore.get_seed(password) seed_type_text = _("Unknown") if keystore.derivation_type == DerivationType.BIP32: if is_new_seed(seed_text): seed_type_text = _("Electrum") is_checksum_valid, is_wordlist_valid = bip39_is_checksum_valid( seed_text) if is_checksum_valid and is_wordlist_valid: seed_type_text = _("BIP39") elif keystore.derivation_type == DerivationType.ELECTRUM_OLD: seed_type_text = _("Old-style Electrum") form.add_row(_("Seed type"), QLabel(seed_type_text)) seed_edit = ShowQRTextEdit(self) seed_edit.setFixedHeight(80) seed_edit.addCopyButton(self._main_window.app) seed_edit.setText(seed_text) form.add_row(_("Seed phrase"), seed_edit, True) self._seed_edit = seed_edit # Ambiguous if empty string or None. passphrase_widget: QWidget if keystore.passphrase: passphrase_text = keystore.get_passphrase(password) passphrase_edit = ShowQRTextEdit(self) passphrase_edit.setFixedHeight(80) passphrase_edit.addCopyButton(self._main_window.app) passphrase_edit.setText(passphrase_text) passphrase_widget = passphrase_edit else: passphrase_widget = QLabel(_("None")) form.add_row(_("Passphrase"), passphrase_widget, True) if keystore.derivation_type == DerivationType.BIP32: if keystore.xprv is not None: xprv_text = keystore.get_master_private_key(password) private_key = bip32_key_from_string(xprv_text) xprv_edit = ShowQRTextEdit(self) xprv_edit.setFixedHeight(80) xprv_edit.addCopyButton(self._main_window.app) xprv_edit.setText(private_key.to_extended_key_string()) form.add_row(_("Master private key"), xprv_edit, True) vbox.addWidget(form) vbox.addStretch(1) vbox.addLayout(Buttons(CloseButton(self))) self.setLayout(vbox)