From 55b5618c3dd0efac3fd33c354ba8f21ebb12f77c Mon Sep 17 00:00:00 2001 From: Adam Gibson Date: Sat, 7 Jan 2017 22:43:00 +0200 Subject: [PATCH] refactor create_wallet, add wallet generate dependencies to -Qt --- jmclient/jmclient/__init__.py | 3 ++- jmclient/jmclient/wallet.py | 12 +++++++++++- scripts/joinmarket-qt.py | 2 +- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/jmclient/jmclient/__init__.py b/jmclient/jmclient/__init__.py index df0e0b9..e315221 100644 --- a/jmclient/jmclient/__init__.py +++ b/jmclient/jmclient/__init__.py @@ -17,7 +17,8 @@ from .old_mnemonic import mn_decode, mn_encode from .slowaes import decryptData, encryptData from .taker import Taker from .wallet import (AbstractWallet, BitcoinCoreInterface, Wallet, - BitcoinCoreWallet, estimate_tx_fee, WalletError) + BitcoinCoreWallet, estimate_tx_fee, WalletError, + create_wallet_file) from .configure import load_program_config, jm_single, get_p2pk_vbyte, \ get_network, jm_single, get_network, validate_address, get_irc_mchannels, \ check_utxo_blacklist diff --git a/jmclient/jmclient/wallet.py b/jmclient/jmclient/wallet.py index 9f27ede..60a7839 100644 --- a/jmclient/jmclient/wallet.py +++ b/jmclient/jmclient/wallet.py @@ -3,13 +3,14 @@ import json import os import pprint import sys +import datetime from decimal import Decimal from ConfigParser import NoSectionError from getpass import getpass import btc -from jmclient.slowaes import decryptData +from jmclient.slowaes import encryptData, decryptData from jmclient.blockchaininterface import BitcoinCoreInterface, RegtestBitcoinCoreInterface from jmclient.configure import jm_single, get_network, get_p2pk_vbyte from jmbase.support import get_log @@ -37,6 +38,15 @@ def estimate_tx_fee(ins, outs, txtype='p2pkh'): log.debug("got estimated tx bytes: "+str(tx_estimated_bytes)) return int((tx_estimated_bytes * fee_per_kb)/Decimal(1000.0)) +def create_wallet_file(pwd, seed): + password_key = btc.bin_dbl_sha256(pwd) + encrypted_seed = encryptData(password_key, seed.decode('hex')) + timestamp = datetime.datetime.now().strftime("%Y/%m/%d %H:%M:%S") + return json.dumps({'creator': 'joinmarket project', + 'creation_time': timestamp, + 'encrypted_seed': encrypted_seed.encode('hex'), + 'network': get_network()}) + class AbstractWallet(object): """ Abstract wallet for use with JoinMarket diff --git a/scripts/joinmarket-qt.py b/scripts/joinmarket-qt.py index c44c2c9..76777a5 100644 --- a/scripts/joinmarket-qt.py +++ b/scripts/joinmarket-qt.py @@ -46,7 +46,7 @@ from jmclient import (load_program_config, get_network, Wallet, get_log, weighted_order_choose, Taker, JMTakerClientProtocolFactory, WalletError, start_reactor, get_schedule, get_tumble_schedule, - schedule_to_text) + schedule_to_text, mn_decode, mn_encode, create_wallet_file) from qtsupport import (ScheduleWizard, warnings, config_tips, config_types, TaskThread, QtHandler, XStream, Buttons, CloseButton,