commit 91723999aad87509277ddbdbd498042935e34624
parent 0ce463c99c75c4238a1e806a51ad1025e21300f7
Author: ThomasV <thomasv@gitorious>
Date: Fri, 22 Aug 2014 17:22:08 +0200
add_cosigner_seed
Diffstat:
2 files changed, 41 insertions(+), 23 deletions(-)
diff --git a/gui/qt/installwizard.py b/gui/qt/installwizard.py
@@ -501,20 +501,20 @@ class InstallWizard(QDialog):
else:
password = None
+ if Wallet.is_seed(text2) and Wallet.is_xpub(text1):
+ c = text1
+ text1 = text2
+ text2 = c
+
if Wallet.is_seed(text1):
wallet.add_seed(text1, password)
- if Wallet.is_seed(text2):
- wallet.add_cold_seed(text2, password)
- else:
- wallet.add_master_public_key("x2/", text2)
else:
- assert Wallet.is_xpub(text1)
- if Wallet.is_seed(text2):
- wallet.add_seed(text2, password)
- wallet.add_master_public_key("x2/", text1)
- else:
- wallet.add_master_public_key("x1/", text1)
- wallet.add_master_public_key("x2/", text2)
+ wallet.add_master_public_key("x1/", text1)
+
+ if Wallet.is_seed(text2):
+ wallet.add_cosigner_seed(text2, "x2/", password)
+ elif Wallet.is_xpub(text2):
+ wallet.add_master_public_key("x2/", text2)
wallet.create_main_account(password)
@@ -530,20 +530,30 @@ class InstallWizard(QDialog):
else:
password = None
+ if Wallet.is_xpub(text1) and Wallet.is_seed(text2):
+ temp = text1
+ text1 = text2
+ text2 = temp
+
+ if Wallet.is_xpub(text1) and Wallet.is_seed(text3):
+ temp = text1
+ text1 = text3
+ text3 = temp
+
if Wallet.is_seed(text1):
wallet.add_seed(text1, password)
- if Wallet.is_seed(text2):
- wallet.add_cold_seed(text2, password)
- else:
- wallet.add_master_public_key("x2/", text2)
-
- elif Wallet.is_xpub(text1):
- if Wallet.is_seed(text2):
- wallet.add_seed(text2, password)
- wallet.add_master_public_key("x2/", text1)
- else:
- wallet.add_master_public_key("x1/", text1)
- wallet.add_master_public_key("x2/", text2)
+ else:
+ wallet.add_master_public_key("x1/", text1)
+
+ if Wallet.is_seed(text2):
+ wallet.add_cosigner_seed(text2, "x2/", password)
+ elif Wallet.is_xpub(text2):
+ wallet.add_master_public_key("x2/", text2)
+
+ if Wallet.is_seed(text3):
+ wallet.add_cosigner_seed(text3, "x3/", password)
+ elif Wallet.is_xpub(text3):
+ wallet.add_master_public_key("x3/", text2)
wallet.create_main_account(password)
diff --git a/lib/wallet.py b/lib/wallet.py
@@ -1457,6 +1457,14 @@ class Wallet_2of2(BIP39_Wallet):
if not self.accounts:
return 'create_accounts'
+ def add_cosigner_seed(self, seed, name, password):
+ # we don't store the seed, only the master xpriv
+ xprv, xpub = bip32_root(seed)
+ xprv, xpub = bip32_private_derivation(xprv, "m/", self.root_derivation)
+ self.add_master_public_key(name, xpub)
+ self.add_master_private_key(name, xprv, password)
+
+
class Wallet_2of3(Wallet_2of2):
# multisig 2 of 3