parent
fa389a4e06
commit
8f5f0e46aa
@ -31,7 +31,7 @@ from typing import Union
|
|||||||
|
|
||||||
import pyaes
|
import pyaes
|
||||||
|
|
||||||
from .util import assert_bytes, InvalidPassword, to_bytes, to_string
|
from .util import assert_bytes, InvalidPassword, to_bytes, to_string, WalletFileException
|
||||||
from .i18n import _
|
from .i18n import _
|
||||||
|
|
||||||
|
|
||||||
@ -123,7 +123,7 @@ assert PW_HASH_VERSION_LATEST in KNOWN_PW_HASH_VERSIONS
|
|||||||
assert PW_HASH_VERSION_LATEST in SUPPORTED_PW_HASH_VERSIONS
|
assert PW_HASH_VERSION_LATEST in SUPPORTED_PW_HASH_VERSIONS
|
||||||
|
|
||||||
|
|
||||||
class UnexpectedPasswordHashVersion(InvalidPassword):
|
class UnexpectedPasswordHashVersion(InvalidPassword, WalletFileException):
|
||||||
def __init__(self, version):
|
def __init__(self, version):
|
||||||
self.version = version
|
self.version = version
|
||||||
|
|
||||||
@ -134,7 +134,7 @@ class UnexpectedPasswordHashVersion(InvalidPassword):
|
|||||||
instruction=_('You are most likely using an outdated version of Electrum. Please update.'))
|
instruction=_('You are most likely using an outdated version of Electrum. Please update.'))
|
||||||
|
|
||||||
|
|
||||||
class UnsupportedPasswordHashVersion(InvalidPassword):
|
class UnsupportedPasswordHashVersion(InvalidPassword, WalletFileException):
|
||||||
def __init__(self, version):
|
def __init__(self, version):
|
||||||
self.version = version
|
self.version = version
|
||||||
|
|
||||||
|
|||||||
@ -35,7 +35,8 @@ from .bip32 import (bip32_public_derivation, deserialize_xpub, CKD_pub,
|
|||||||
bip32_private_key, bip32_derivation, BIP32_PRIME,
|
bip32_private_key, bip32_derivation, BIP32_PRIME,
|
||||||
is_xpub, is_xprv)
|
is_xpub, is_xprv)
|
||||||
from .ecc import string_to_number, number_to_string
|
from .ecc import string_to_number, number_to_string
|
||||||
from .crypto import (pw_decode, pw_encode, sha256d, PW_HASH_VERSION_LATEST)
|
from .crypto import (pw_decode, pw_encode, sha256d, PW_HASH_VERSION_LATEST,
|
||||||
|
SUPPORTED_PW_HASH_VERSIONS, UnsupportedPasswordHashVersion)
|
||||||
from .util import (PrintError, InvalidPassword, hfu, WalletFileException,
|
from .util import (PrintError, InvalidPassword, hfu, WalletFileException,
|
||||||
BitcoinException, bh2u, bfh, print_error, inv_dict)
|
BitcoinException, bh2u, bfh, print_error, inv_dict)
|
||||||
from .mnemonic import Mnemonic, load_wordlist
|
from .mnemonic import Mnemonic, load_wordlist
|
||||||
@ -95,6 +96,8 @@ class Software_KeyStore(KeyStore):
|
|||||||
def __init__(self, d):
|
def __init__(self, d):
|
||||||
KeyStore.__init__(self)
|
KeyStore.__init__(self)
|
||||||
self.pw_hash_version = d.get('pw_hash_version', 1)
|
self.pw_hash_version = d.get('pw_hash_version', 1)
|
||||||
|
if self.pw_hash_version not in SUPPORTED_PW_HASH_VERSIONS:
|
||||||
|
raise UnsupportedPasswordHashVersion(self.pw_hash_version)
|
||||||
|
|
||||||
def may_have_password(self):
|
def may_have_password(self):
|
||||||
return not self.is_watching_only()
|
return not self.is_watching_only()
|
||||||
|
|||||||
@ -575,6 +575,11 @@ class WalletStorage(JsonDB):
|
|||||||
self.put('verified_tx3', None)
|
self.put('verified_tx3', None)
|
||||||
self.put('seed_version', 18)
|
self.put('seed_version', 18)
|
||||||
|
|
||||||
|
# def convert_version_19(self):
|
||||||
|
# TODO for "next" upgrade:
|
||||||
|
# - move "pw_hash_version" from keystore to storage
|
||||||
|
# pass
|
||||||
|
|
||||||
def convert_imported(self):
|
def convert_imported(self):
|
||||||
if not self._is_upgrade_method_needed(0, 13):
|
if not self._is_upgrade_method_needed(0, 13):
|
||||||
return
|
return
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user