wallet: disable_keystore() not to destroy get_key_origin_info()
This commit is contained in:
@@ -525,3 +525,10 @@ class KeyOriginInfo:
|
|||||||
xfp.extend(self.path)
|
xfp.extend(self.path)
|
||||||
return xfp
|
return xfp
|
||||||
|
|
||||||
|
def __eq__(self, other) -> bool:
|
||||||
|
if not isinstance(other, KeyOriginInfo):
|
||||||
|
return False
|
||||||
|
return self.serialize() == other.serialize()
|
||||||
|
|
||||||
|
def __repr__(self) -> str:
|
||||||
|
return f"<KeyOriginInfo {self.to_string()}>"
|
||||||
|
|||||||
@@ -643,7 +643,7 @@ class BIP32_KeyStore(Xpub, Deterministic_KeyStore):
|
|||||||
return BIP32_KeyStore({
|
return BIP32_KeyStore({
|
||||||
'xpub': self.xpub,
|
'xpub': self.xpub,
|
||||||
'root_fingerprint': self.get_root_fingerprint(),
|
'root_fingerprint': self.get_root_fingerprint(),
|
||||||
'derivation_prefix': self.get_derivation_prefix(),
|
'derivation': self.get_derivation_prefix(),
|
||||||
})
|
})
|
||||||
|
|
||||||
def format_seed(self, seed):
|
def format_seed(self, seed):
|
||||||
@@ -903,7 +903,7 @@ class Hardware_KeyStore(Xpub, KeyStore):
|
|||||||
return BIP32_KeyStore({
|
return BIP32_KeyStore({
|
||||||
'xpub': self.xpub,
|
'xpub': self.xpub,
|
||||||
'root_fingerprint': self.get_root_fingerprint(),
|
'root_fingerprint': self.get_root_fingerprint(),
|
||||||
'derivation_prefix': self.get_derivation_prefix(),
|
'derivation': self.get_derivation_prefix(),
|
||||||
})
|
})
|
||||||
|
|
||||||
def set_label(self, label: Optional[str]) -> None:
|
def set_label(self, label: Optional[str]) -> None:
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ from electrum.daemon import Daemon
|
|||||||
from electrum.wallet import Abstract_Wallet
|
from electrum.wallet import Abstract_Wallet
|
||||||
from electrum import util
|
from electrum import util
|
||||||
from electrum import slip39
|
from electrum import slip39
|
||||||
|
from electrum.bip32 import KeyOriginInfo
|
||||||
|
|
||||||
from . import ElectrumTestCase
|
from . import ElectrumTestCase
|
||||||
from .test_wallet_vertical import UNICODE_HORROR
|
from .test_wallet_vertical import UNICODE_HORROR
|
||||||
@@ -169,13 +170,20 @@ class KeystoreWizardTestCase(WizardTestCase):
|
|||||||
wallet = Daemon._load_wallet(wallet_path, password=None, config=self.config)
|
wallet = Daemon._load_wallet(wallet_path, password=None, config=self.config)
|
||||||
return wallet
|
return wallet
|
||||||
|
|
||||||
def _sanity_checks_after_disabling_keystore(self, *, ks: 'KeyStore', xpub: str) -> None:
|
def _sanity_checks_after_disabling_keystore(
|
||||||
|
self,
|
||||||
|
*,
|
||||||
|
ks: 'KeyStore',
|
||||||
|
xpub: str,
|
||||||
|
key_origin_info: KeyOriginInfo,
|
||||||
|
) -> None:
|
||||||
self.assertTrue(ks.is_watching_only())
|
self.assertTrue(ks.is_watching_only())
|
||||||
self.assertTrue(ks.type in ('bip32', 'old'))
|
self.assertTrue(ks.type in ('bip32', 'old'))
|
||||||
self.assertFalse(ks.has_seed())
|
self.assertFalse(ks.has_seed())
|
||||||
self.assertEqual(ks.get_master_public_key(), xpub)
|
self.assertEqual(ks.get_master_public_key(), xpub)
|
||||||
if isinstance(ks, BIP32_KeyStore):
|
if isinstance(ks, BIP32_KeyStore):
|
||||||
self.assertEqual(ks.xprv, None)
|
self.assertEqual(ks.xprv, None)
|
||||||
|
self.assertEqual(ks.get_key_origin_info(), key_origin_info)
|
||||||
|
|
||||||
async def test_haveseed_electrum(self):
|
async def test_haveseed_electrum(self):
|
||||||
w, v = self._wizard_for()
|
w, v = self._wizard_for()
|
||||||
@@ -200,8 +208,9 @@ class KeystoreWizardTestCase(WizardTestCase):
|
|||||||
self.assertEqual(myseed, wallet.get_keystore().get_seed(None))
|
self.assertEqual(myseed, wallet.get_keystore().get_seed(None))
|
||||||
self.assertEqual(mypassphrase, wallet.get_keystore().get_passphrase(None))
|
self.assertEqual(mypassphrase, wallet.get_keystore().get_passphrase(None))
|
||||||
|
|
||||||
|
my_keyorigininfo = wallet.get_keystore().get_key_origin_info()
|
||||||
wallet.disable_keystore(wallet.get_keystore())
|
wallet.disable_keystore(wallet.get_keystore())
|
||||||
self._sanity_checks_after_disabling_keystore(ks=wallet.get_keystore(), xpub=myxpub)
|
self._sanity_checks_after_disabling_keystore(ks=wallet.get_keystore(), xpub=myxpub, key_origin_info=my_keyorigininfo)
|
||||||
|
|
||||||
async def test_haveseed_ext_electrum(self):
|
async def test_haveseed_ext_electrum(self):
|
||||||
w, v = self._wizard_for()
|
w, v = self._wizard_for()
|
||||||
@@ -230,8 +239,9 @@ class KeystoreWizardTestCase(WizardTestCase):
|
|||||||
self.assertEqual(myseed, wallet.get_keystore().get_seed(None))
|
self.assertEqual(myseed, wallet.get_keystore().get_seed(None))
|
||||||
self.assertEqual(mypassphrase, wallet.get_keystore().get_passphrase(None))
|
self.assertEqual(mypassphrase, wallet.get_keystore().get_passphrase(None))
|
||||||
|
|
||||||
|
my_keyorigininfo = wallet.get_keystore().get_key_origin_info()
|
||||||
wallet.disable_keystore(wallet.get_keystore())
|
wallet.disable_keystore(wallet.get_keystore())
|
||||||
self._sanity_checks_after_disabling_keystore(ks=wallet.get_keystore(), xpub=myxpub)
|
self._sanity_checks_after_disabling_keystore(ks=wallet.get_keystore(), xpub=myxpub, key_origin_info=my_keyorigininfo)
|
||||||
|
|
||||||
async def test_haveseed_electrum_oldseed(self):
|
async def test_haveseed_electrum_oldseed(self):
|
||||||
w, v = self._wizard_for()
|
w, v = self._wizard_for()
|
||||||
@@ -257,8 +267,9 @@ class KeystoreWizardTestCase(WizardTestCase):
|
|||||||
self.assertEqual(myseed, wallet.get_keystore().get_seed(None))
|
self.assertEqual(myseed, wallet.get_keystore().get_seed(None))
|
||||||
self.assertEqual(mypassphrase, wallet.get_keystore().get_passphrase(None))
|
self.assertEqual(mypassphrase, wallet.get_keystore().get_passphrase(None))
|
||||||
|
|
||||||
|
my_keyorigininfo = wallet.get_keystore().get_key_origin_info()
|
||||||
wallet.disable_keystore(wallet.get_keystore())
|
wallet.disable_keystore(wallet.get_keystore())
|
||||||
self._sanity_checks_after_disabling_keystore(ks=wallet.get_keystore(), xpub=myxpub)
|
self._sanity_checks_after_disabling_keystore(ks=wallet.get_keystore(), xpub=myxpub, key_origin_info=my_keyorigininfo)
|
||||||
|
|
||||||
async def test_haveseed_bip39(self):
|
async def test_haveseed_bip39(self):
|
||||||
w, v = self._wizard_for()
|
w, v = self._wizard_for()
|
||||||
@@ -283,8 +294,9 @@ class KeystoreWizardTestCase(WizardTestCase):
|
|||||||
wallet.enable_keystore(ks, ishww, None)
|
wallet.enable_keystore(ks, ishww, None)
|
||||||
self.assertFalse(wallet.get_keystore().is_watching_only())
|
self.assertFalse(wallet.get_keystore().is_watching_only())
|
||||||
|
|
||||||
|
my_keyorigininfo = wallet.get_keystore().get_key_origin_info()
|
||||||
wallet.disable_keystore(wallet.get_keystore())
|
wallet.disable_keystore(wallet.get_keystore())
|
||||||
self._sanity_checks_after_disabling_keystore(ks=wallet.get_keystore(), xpub=myxpub)
|
self._sanity_checks_after_disabling_keystore(ks=wallet.get_keystore(), xpub=myxpub, key_origin_info=my_keyorigininfo)
|
||||||
|
|
||||||
async def test_haveseed_ext_bip39(self):
|
async def test_haveseed_ext_bip39(self):
|
||||||
w, v = self._wizard_for()
|
w, v = self._wizard_for()
|
||||||
@@ -313,8 +325,9 @@ class KeystoreWizardTestCase(WizardTestCase):
|
|||||||
wallet.enable_keystore(ks, ishww, None)
|
wallet.enable_keystore(ks, ishww, None)
|
||||||
self.assertFalse(wallet.get_keystore().is_watching_only())
|
self.assertFalse(wallet.get_keystore().is_watching_only())
|
||||||
|
|
||||||
|
my_keyorigininfo = wallet.get_keystore().get_key_origin_info()
|
||||||
wallet.disable_keystore(wallet.get_keystore())
|
wallet.disable_keystore(wallet.get_keystore())
|
||||||
self._sanity_checks_after_disabling_keystore(ks=wallet.get_keystore(), xpub=myxpub)
|
self._sanity_checks_after_disabling_keystore(ks=wallet.get_keystore(), xpub=myxpub, key_origin_info=my_keyorigininfo)
|
||||||
|
|
||||||
async def test_hww(self):
|
async def test_hww(self):
|
||||||
w, v = self._wizard_for(hww=True)
|
w, v = self._wizard_for(hww=True)
|
||||||
@@ -354,8 +367,9 @@ class KeystoreWizardTestCase(WizardTestCase):
|
|||||||
self.assertFalse(wallet.get_keystore().is_watching_only())
|
self.assertFalse(wallet.get_keystore().is_watching_only())
|
||||||
self.assertTrue(isinstance(wallet.get_keystore(), Hardware_KeyStore))
|
self.assertTrue(isinstance(wallet.get_keystore(), Hardware_KeyStore))
|
||||||
|
|
||||||
|
my_keyorigininfo = wallet.get_keystore().get_key_origin_info()
|
||||||
wallet.disable_keystore(wallet.get_keystore())
|
wallet.disable_keystore(wallet.get_keystore())
|
||||||
self._sanity_checks_after_disabling_keystore(ks=wallet.get_keystore(), xpub=myxpub)
|
self._sanity_checks_after_disabling_keystore(ks=wallet.get_keystore(), xpub=myxpub, key_origin_info=my_keyorigininfo)
|
||||||
|
|
||||||
|
|
||||||
class WalletWizardTestCase(WizardTestCase):
|
class WalletWizardTestCase(WizardTestCase):
|
||||||
|
|||||||
Reference in New Issue
Block a user