def create_keystore(self, wizard, seed, passphrase): # this overloads the wizard's method xprv1, xpub1, xprv2, xpub2 = self.xkeys_from_seed(seed, passphrase) k1 = keystore.from_xprv(xprv1) k2 = keystore.from_xpub(xpub2) wizard.request_password(run_next=lambda pw, encrypt: self.on_password( wizard, pw, encrypt, k1, k2))
def create_keystore(self, wizard, seed, passphrase): xprv1, xpub1, xprv2, xpub2 = self.xkeys_from_seed(seed, passphrase) # 创建钱包所需的公钥 k1 = keystore.from_xprv(xprv1) k2 = keystore.from_xpub(xpub2) wizard.request_password(run_next=lambda pw, encrypt: self.on_password( wizard, pw, encrypt, k1, k2))
def do_auth(self, wizard, short_id, otp, xpub3): try: server.auth(short_id, otp) except: wizard.show_message(_('Incorrect password')) return k3 = keystore.from_xpub(xpub3) wizard.storage.put('x3/', k3.dump()) wizard.storage.put('use_trustedcoin', True) wizard.storage.write() wizard.wallet = Wallet_2fa(wizard.storage) wizard.run('create_addresses')
def on_restore_pw(self, wizard, seed, password): # FIXME # wallet.add_seed(seed, password) storage = wizard.storage words = seed.split() n = len(words) / 2 keystore1 = keystore.xprv_from_seed(' '.join(words[0:n]), password) keystore2 = keystore.xprv_from_seed(' '.join(words[n:]), password) keystore1.save(storage, 'x1/') keystore2.save(storage, 'x2/') long_user_id, short_id = get_user_id(storage) xpub3 = make_xpub(signing_xpub, long_user_id) keystore3 = keystore.from_xpub(xpub3) keystore3.save(storage, 'x3/') wizard.wallet = Wallet(storage) wizard.create_addresses()
def on_restore_pw(self, wizard, seed, password): # FIXME # wallet.add_seed(seed, password) storage = wizard.storage words = seed.split() n = len(words)/2 keystore1 = keystore.xprv_from_seed(' '.join(words[0:n]), password) keystore2 = keystore.xprv_from_seed(' '.join(words[n:]), password) keystore1.save(storage, 'x1/') keystore2.save(storage, 'x2/') long_user_id, short_id = get_user_id(storage) xpub3 = make_xpub(signing_xpub, long_user_id) keystore3 = keystore.from_xpub(xpub3) keystore3.save(storage, 'x3/') wizard.wallet = Wallet(storage) wizard.create_addresses()
def on_restore_pw(self, wizard, seed, passphrase, password, encrypt_storage): xprv1, xpub1, xprv2, xpub2 = self.xkeys_from_seed(seed, passphrase) k1 = keystore.from_xprv(xprv1) k2 = keystore.from_xprv(xprv2) k1.add_seed(seed) k1.update_password(None, password) k2.update_password(None, password) wizard.data['x1/'] = k1.dump() wizard.data['x2/'] = k2.dump() long_user_id, short_id = get_user_id(wizard.data) xtype = xpub_type(xpub1) xpub3 = make_xpub(get_signing_xpub(xtype), long_user_id) k3 = keystore.from_xpub(xpub3) wizard.data['x3/'] = k3.dump() wizard.pw_args = password, encrypt_storage, STO_EV_USER_PW wizard.terminate()
def on_restore_pw(self, wizard, seed, passphrase, password): storage = wizard.storage xprv1, xpub1, xprv2, xpub2 = self.xkeys_from_seed(seed, passphrase) k1 = keystore.from_xprv(xprv1) k2 = keystore.from_xprv(xprv2) k1.add_seed(seed) k1.update_password(None, password) k2.update_password(None, password) storage.put('x1/', k1.dump()) storage.put('x2/', k2.dump()) long_user_id, short_id = get_user_id(storage) xpub3 = make_xpub(signing_xpub, long_user_id) k3 = keystore.from_xpub(xpub3) storage.put('use_encryption', bool(password)) storage.put('x3/', k3.dump()) wizard.wallet = Wallet_2fa(storage) wizard.create_addresses()
def on_restore_pw(self, wizard, seed, passphrase, password, encrypt): storage = wizard.storage xprv1, xpub1, xprv2, xpub2 = self.xkeys_from_seed(seed, passphrase) k1 = keystore.from_xprv(xprv1) k2 = keystore.from_xprv(xprv2) k1.add_seed(seed) k1.update_password(None, password) k2.update_password(None, password) storage.put('x1/', k1.dump()) storage.put('x2/', k2.dump()) long_user_id, short_id = get_user_id(storage) xpub3 = make_xpub(signing_xpub, long_user_id) k3 = keystore.from_xpub(xpub3) storage.put('x3/', k3.dump()) storage.set_password(password, encrypt) wizard.wallet = Wallet_2fa(storage) wizard.create_addresses()
def on_restore_pw(self, wizard, seed, password): storage = wizard.storage words = seed.split() n = len(words) / 2 k1 = keystore.xprv_from_seed(' '.join(words[0:n])) k2 = keystore.xprv_from_seed(' '.join(words[n:])) k1.add_seed(seed) k1.update_password(None, password) k2.update_password(None, password) storage.put('x1/', k1.dump()) storage.put('x2/', k2.dump()) long_user_id, short_id = get_user_id(storage) xpub3 = make_xpub(signing_xpub, long_user_id) k3 = keystore.from_xpub(xpub3) storage.put('use_encryption', bool(password)) storage.put('x3/', k3.dump()) wizard.wallet = Wallet_2fa(storage) wizard.create_addresses()
def do_auth(self, wizard, short_id, otp, xpub3): try: server.auth(short_id, otp) except TrustedCoinException as e: if e.status_code == 400: # invalid OTP wizard.show_message(_('Invalid one-time password.')) # ask again for otp self.request_otp_dialog(wizard, short_id, None, xpub3) else: wizard.show_message(str(e)) wizard.terminate() except Exception as e: wizard.show_message(repr(e)) wizard.terminate() else: k3 = keystore.from_xpub(xpub3) wizard.data['x3/'] = k3.dump() wizard.data['use_trustedcoin'] = True wizard.terminate()
def create_remote_key(self, wizard): email = self.accept_terms_of_use(wizard) mpk = wizard.storage.get('master_public_keys') xpub1 = mpk["x1/"] xpub2 = mpk["x2/"] # Generate third key deterministically. long_user_id, short_id = get_user_id(wizard.storage) xpub3 = make_xpub(signing_xpub, long_user_id) # secret must be sent by the server try: r = server.create(xpub1, xpub2, email) except socket.error: wizard.show_message('Server not reachable, aborting') return except TrustedCoinException as e: if e.status_code == 409: r = None else: raise e if r is None: otp_secret = None else: otp_secret = r.get('otp_secret') if not otp_secret: wizard.show_message(_('Error')) return _xpub3 = r['xpubkey_cosigner'] _id = r['id'] try: assert _id == short_id, ("user id error", _id, short_id) assert xpub3 == _xpub3, ("xpub3 error", xpub3, _xpub3) except Exception as e: wizard.show_message(str(e)) return if not self.setup_google_auth(wizard, short_id, otp_secret): wizard.show_message("otp error") return keystore3 = keystore.from_xpub(xpub3) keystore3.save(wizard.storage, 'x3/') wizard.storage.put('use_trustedcoin', True) wizard.storage.write() wizard.wallet = Wallet(wizard.storage) wizard.run('create_addresses')
def do_auth(self, wizard, short_id, otp, xpub3): try: server.auth(short_id, otp) except TrustedCoinException as e: if e.status_code == 400: # invalid OTP wizard.show_message(_('Invalid one-time password.')) # ask again for otp self.request_otp_dialog(wizard, short_id, None, xpub3) else: wizard.show_message(str(e)) wizard.terminate() except Exception as e: wizard.show_message(str(e)) wizard.terminate() else: k3 = keystore.from_xpub(xpub3) wizard.data['x3/'] = k3.dump() wizard.data['use_trustedcoin'] = True wizard.terminate()
def on_restore_pw(self, wizard, seed, passphrase, password, encrypt_storage): xprv1, xpub1, xprv2, xpub2 = self.xkeys_from_seed(seed, passphrase) k1 = keystore.from_xprv(xprv1) k2 = keystore.from_xprv(xprv2) k1.add_seed(seed) k1.update_password(None, password) k2.update_password(None, password) wizard.data['x1/'] = k1.dump() wizard.data['x2/'] = k2.dump() long_user_id, short_id = get_user_id(wizard.data) xtype = xpub_type(xpub1) xpub3 = make_xpub(get_signing_xpub(xtype), long_user_id) k3 = keystore.from_xpub(xpub3) wizard.data['x3/'] = k3.dump() wizard.pw_args = WizardWalletPasswordSetting(password=password, encrypt_storage=encrypt_storage, storage_enc_version=StorageEncryptionVersion.USER_PASSWORD, encrypt_keystore=bool(password)) wizard.terminate()
def do_auth(self, wizard, short_id, otp, xpub3): try: server.auth(short_id, otp) except TrustedCoinException as e: if e.status_code == 400: # invalid OTP wizard.show_message(_('Invalid one-time password.')) # ask again for otp self.request_otp_dialog(wizard, short_id, None, xpub3) else: wizard.show_message(str(e)) wizard.terminate() except Exception as e: wizard.show_message(str(e)) wizard.terminate() else: k3 = keystore.from_xpub(xpub3) wizard.storage.put('x3/', k3.dump()) wizard.storage.put('use_trustedcoin', True) wizard.storage.write() wizard.wallet = Wallet_2fa(wizard.storage) wizard.run('create_addresses')
def on_restore_pw(self, wizard, seed, passphrase, password, encrypt_storage): storage = wizard.storage xprv1, xpub1, xprv2, xpub2 = self.xkeys_from_seed(seed, passphrase) k1 = keystore.from_xprv(xprv1) k2 = keystore.from_xprv(xprv2) k1.add_seed(seed) k1.update_password(None, password) k2.update_password(None, password) storage.put('x1/', k1.dump()) storage.put('x2/', k2.dump()) long_user_id, short_id = get_user_id(storage) xtype = xpub_type(xpub1) xpub3 = make_xpub(get_signing_xpub(xtype), long_user_id) k3 = keystore.from_xpub(xpub3) storage.put('x3/', k3.dump()) storage.set_keystore_encryption(bool(password)) if encrypt_storage: storage.set_password(password, enc_version=STO_EV_USER_PW) wizard.wallet = Wallet_2fa(storage) wizard.create_addresses()
def do_auth(self, wizard, short_id, otp, xpub3): try: # 检查otp server_address = wizard.data['server_address'] tc_requests.auth(server_address, short_id, otp) except TrustedCoinException as e: if e.status_code == 400: # invalid OTP wizard.show_message(_(e.server_message)) # ask again for otp self.request_otp_dialog(wizard, short_id, None, xpub3) else: wizard.show_message(str(e)) wizard.terminate() except Exception as e: wizard.show_message(str(e)) wizard.terminate() else: k3 = keystore.from_xpub(xpub3) wizard.data['x3/'] = k3.dump() wizard.data['use_trustedcoin'] = True wizard.terminate()
def create_keystore(self, wizard, seed, passphrase): # this overloads the wizard's method xprv1, xpub1, xprv2, xpub2 = self.xkeys_from_seed(seed, passphrase) k1 = keystore.from_xprv(xprv1) k2 = keystore.from_xpub(xpub2) wizard.request_password(run_next=lambda pw, encrypt: self.on_password(wizard, pw, encrypt, k1, k2))