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 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()