Beispiel #1
0
 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))
Beispiel #3
0
 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')
Beispiel #4
0
 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')
Beispiel #5
0
 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()
Beispiel #6
0
 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()
Beispiel #8
0
 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()
Beispiel #9
0
 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()
Beispiel #10
0
 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()
Beispiel #11
0
 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()
Beispiel #12
0
 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()
Beispiel #13
0
 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')
Beispiel #14
0
 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()
Beispiel #15
0
 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 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()
Beispiel #17
0
 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')
Beispiel #18
0
 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')
Beispiel #19
0
    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()
Beispiel #20
0
    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()
Beispiel #22
0
 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))