use separata class for old wallets; decide with WalletFactory
This commit is contained in:
@@ -1,11 +1,53 @@
|
||||
from version import SEED_VERSION
|
||||
from wallet import OldWallet, Wallet
|
||||
|
||||
class WalletFactory(object):
|
||||
def __new__(cls, config):
|
||||
if config.get('bitkey', False):
|
||||
def __new__(self, storage):
|
||||
|
||||
if storage.get('bitkey', False):
|
||||
# if user requested support for Bitkey device,
|
||||
# import Bitkey driver
|
||||
from wallet_bitkey import WalletBitkey
|
||||
return WalletBitkey(config)
|
||||
|
||||
# Load standard wallet
|
||||
from wallet import Wallet
|
||||
return Wallet(config)
|
||||
seed_version = storage.get('seed_version', SEED_VERSION)
|
||||
if seed_version not in [4, 6]:
|
||||
msg = "This wallet seed is not supported."
|
||||
if seed_version in [5]:
|
||||
msg += "\nTo open this wallet, try 'git checkout seed_v%d'"%seed_version
|
||||
print msg
|
||||
sys.exit(1)
|
||||
|
||||
|
||||
if seed_version == 4:
|
||||
return OldWallet(storage)
|
||||
else:
|
||||
return Wallet(storage)
|
||||
|
||||
|
||||
@classmethod
|
||||
def from_seed(self, seed, storage):
|
||||
import mnemonic
|
||||
words = seed.strip().split()
|
||||
try:
|
||||
mnemonic.mn_decode(words)
|
||||
uses_electrum_words = True
|
||||
except Exception:
|
||||
uses_electrum_words = False
|
||||
|
||||
try:
|
||||
seed.decode('hex')
|
||||
is_hex = True
|
||||
except Exception:
|
||||
is_hex = False
|
||||
|
||||
if is_hex or (uses_electrum_words and len(words) != 13):
|
||||
print "old style wallet", len(words), words
|
||||
w = OldWallet(storage)
|
||||
w.init_seed(seed) #hex
|
||||
else:
|
||||
#assert is_seed(seed)
|
||||
w = Wallet(storage)
|
||||
w.init_seed(seed)
|
||||
|
||||
return w
|
||||
|
||||
Reference in New Issue
Block a user