URI: 
       tmerge signtxwithwallet and signtxwithkey - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit cc610d352f3a835b28d463a3928400f2986d51db
   DIR parent 1d5f04c58840196f96e1a7f1a7a4969f6386da7d
  HTML Author: ThomasV <thomasv@gitorious>
       Date:   Sun, 31 May 2015 09:28:47 +0200
       
       merge signtxwithwallet and signtxwithkey
       
       Diffstat:
         M electrum                            |       9 ++++-----
         M lib/commands.py                     |      22 ++++++++++------------
       
       2 files changed, 14 insertions(+), 17 deletions(-)
       ---
   DIR diff --git a/electrum b/electrum
       t@@ -291,11 +291,6 @@ def run_cmdline(config):
            else:
                network = None
        
       -    # See if they specificed a key on the cmd line, if not prompt
       -    if (cmd.name == 'importprivkey' and len(args)==1)\
       -       or (cmd.name == 'signtxwithkey' and len(args)==2):
       -        args.append(prompt_password('Enter PrivateKey (will not echo):', False))
       -
            # run the command
            if cmd.name == 'deseed':
                if not wallet.seed:
       t@@ -390,6 +385,10 @@ if __name__ == '__main__':
            if config_options.get('portable') and config_options.get('wallet_path') is None:
                config_options['electrum_path'] = os.path.join(os.path.dirname(os.path.realpath(__file__)), 'electrum_data')
        
       +    # If private key is passed on the command line, '?' triggers prompt.
       +    if config_options.get('privkey') and config_options['privkey'] == '?':
       +        config_options['privkey'] = prompt_password('Enter PrivateKey (will not echo):', False)
       +
            set_verbosity(config_options.get('verbose'))
            config = SimpleConfig(config_options)
        
   DIR diff --git a/lib/commands.py b/lib/commands.py
       t@@ -76,7 +76,7 @@ register_command('getseed',            0, 1, 1, [], [], 'Get seed phrase', 'Prin
        register_command('getmpk',             0, 1, 0, [], [], 'Get Master Public Key', 'Return your wallet\'s master public key')
        register_command('help',               0, 0, 0, [], [], 'Print help on a command.', '')
        register_command('history',            1, 1, 0, [], [], 'Wallet history', 'Returns the transaction history of your wallet')
       -register_command('importprivkey',      0, 1, 1, [('privkey', 'Private key')], [], 'Import a private key', '')
       +register_command('importprivkey',      0, 1, 1, [('privkey', 'Private key. Set value to \'?\' if you want to get a prompt')], [], 'Import a private key', '')
        register_command('ismine',             0, 1, 0, [('address', 'Bitcoin address')], [], 'Check if address is in wallet', 'Return true if and only if address is in wallet')
        register_command('listaddresses',      0, 1, 0, [], ['show_all', 'show_labels', 'frozen', 'unused', 'funded', 'show_balance'],
                         'List wallet addresses', 'Returns your list of addresses.')
       t@@ -94,8 +94,8 @@ register_command('searchcontacts',     0, 1, 0, [('query', '')], [], 'Search thr
        register_command('setconfig',          0, 0, 0, [('key', ''), ('value', '')], [], 'Set a configuration variable', '')
        register_command('setlabel',           0, 1, 0, [('txid', 'Transaction ID'), ('label', '')], [], 'Assign a label to an item', '')
        register_command('sendrawtx',          1, 0, 0, [('tx', 'Serialized transaction')], [], 'Broadcast a transaction to the network.', '')
       -register_command('signtxwithkey',      0, 0, 0, [('tx', 'raw_tx'), ('key', '')], [], 'Sign a serialized transaction with a key', '')
       -register_command('signtxwithwallet',   0, 1, 1, [('tx', 'raw_tx')], [], 'Sign a serialized transaction with a wallet', '')
       +register_command('signtransaction',    0, 0, 0, [('tx', 'raw_tx')], ['privkey'],
       +                 'Sign a transaction', 'The wallet keys will be used unless a private key is provided.')
        register_command('signmessage',        0, 1, 1, [('address', 'Bitcoin address'), ('message', 'Message to sign.')], [],
                         'Sign a message with a key.', 'Use quotes if your message contains whitespaces')
        register_command('unfreeze',           0, 1, 0, [('address', 'Bitcoin address')], [], 'Unfreeze the funds at one of your wallet\'s address', '')
       t@@ -114,7 +114,6 @@ register_command('make_seed',          0, 0, 0, [], ['nbits', 'entropy', 'langua
        register_command('check_seed',         0, 0, 0, [('seed', 'Seed phrase')], ['entropy', 'language'], 'Check that a seed was generated with external entropy.', '')
        
        
       -
        command_options = {
            'password':    ("-W", "--password",    None,  "Password"),
            'concealed':   ("-C", "--concealed",   False, "Don't echo seed to console when restoring"),
       t@@ -133,6 +132,7 @@ command_options = {
            'gap_limit':   ("-G", "--gap",         None,  "Gap limit"),
            'mpk':         (None, "--mpk",         None,  "Restore from master public key"),
            'deserialize': ("-d", "--deserialize", False, "Deserialize transaction"),
       +    'privkey':     (None, "--privkey",     None,  "private key. Use --privkey='?' to get a prompt."),
        }
        
        
       t@@ -295,16 +295,14 @@ class Commands:
                tx = Transaction.from_io(tx_inputs, outputs)
                return tx
        
       -    def signtxwithkey(self, raw_tx, sec):
       -        tx = Transaction(raw_tx)
       -        pubkey = bitcoin.public_key_from_private_key(sec)
       -        tx.sign({ pubkey:sec })
       -        return tx
       -
       -    def signtxwithwallet(self, raw_tx):
       +    def signtransaction(self, raw_tx, privkey=None):
                tx = Transaction(raw_tx)
                tx.deserialize()
       -        self.wallet.sign_transaction(tx, self.password)
       +        if privkey:
       +            pubkey = bitcoin.public_key_from_private_key(sec)
       +            tx.sign({pubkey:sec})
       +        else:
       +            self.wallet.sign_transaction(tx, self.password)
                return tx
        
            def decoderawtransaction(self, raw):