URI: 
       tdo not base64encode signatures in requests - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 471cab6089e71e49b931ebf0dff602a8d6437c27
   DIR parent 7588519e8eb62fbd72f997a6550fc91194aaf5ef
  HTML Author: ThomasV <thomasv@gitorious>
       Date:   Tue, 14 Jul 2015 16:37:04 +0200
       
       do not base64encode signatures in requests
       
       Diffstat:
         M gui/qt/main_window.py               |       6 ++++--
         M lib/bitcoin.py                      |       5 ++---
         M lib/commands.py                     |       7 +++++--
         M plugins/btchipwallet.py             |       4 +---
         M plugins/greenaddress_instant.py     |       1 +
         M plugins/trezor.py                   |       4 +---
       
       6 files changed, 14 insertions(+), 13 deletions(-)
       ---
   DIR diff --git a/gui/qt/main_window.py b/gui/qt/main_window.py
       t@@ -23,7 +23,7 @@ import socket
        import webbrowser
        import csv
        from decimal import Decimal
       -
       +import base64
        
        import PyQt4
        from PyQt4.QtGui import *
       t@@ -1983,6 +1983,7 @@ class ElectrumWindow(QMainWindow):
                message = message.encode('utf-8')
                try:
                    sig = self.wallet.sign_message(str(address.text()), message, password)
       +            sig = base64.b64encode(sig)
                    signature.setText(sig)
                except Exception as e:
                    self.show_message(str(e))
       t@@ -1990,7 +1991,8 @@ class ElectrumWindow(QMainWindow):
            def do_verify(self, address, message, signature):
                message = unicode(message.toPlainText())
                message = message.encode('utf-8')
       -        if bitcoin.verify_message(address.text(), str(signature.toPlainText()), message):
       +        sig = base64.b64decode(str(signature.toPlainText()))
       +        if bitcoin.verify_message(address.text(), sig, message):
                    self.show_message(_("Signature verified"))
                else:
                    self.show_message(_("Error: wrong signature"))
   DIR diff --git a/lib/bitcoin.py b/lib/bitcoin.py
       t@@ -488,7 +488,7 @@ class EC_KEY(object):
            def sign_message(self, message, compressed, address):
                signature = self.sign(Hash(msg_magic(message)))
                for i in range(4):
       -            sig = base64.b64encode(chr(27 + i + (4 if compressed else 0)) + signature)
       +            sig = chr(27 + i + (4 if compressed else 0)) + signature
                    try:
                        self.verify_message(address, sig, message)
                        return sig
       t@@ -498,8 +498,7 @@ class EC_KEY(object):
                    raise Exception("error: cannot sign message")
        
            @classmethod
       -    def verify_message(self, address, signature, message):
       -        sig = base64.b64decode(signature)
       +    def verify_message(self, address, sig, message):
                if len(sig) != 65:
                    raise Exception("Wrong encoding")
                nV = ord(sig[0])
   DIR diff --git a/lib/commands.py b/lib/commands.py
       t@@ -24,6 +24,7 @@ import copy
        import argparse
        import json
        import ast
       +import base64
        from functools import wraps
        from decimal import Decimal
        
       t@@ -361,12 +362,14 @@ class Commands:
            def signmessage(self, address, message):
                """Sign a message with a key. Use quotes if your message contains
                whitespaces"""
       -        return self.wallet.sign_message(address, message, self.password)
       +        sig = self.wallet.sign_message(address, message, self.password)
       +        return base64.b64encode(sig)
        
            @command('')
            def verifymessage(self, address, signature, message):
                """Verify a signature."""
       -        return bitcoin.verify_message(address, signature, message)
       +        sig = base64.b64decode(signature)
       +        return bitcoin.verify_message(address, sig, message)
        
            def _mktx(self, outputs, fee, change_addr, domain, nocheck, unsigned):
                self.nocheck = nocheck
   DIR diff --git a/plugins/btchipwallet.py b/plugins/btchipwallet.py
       t@@ -5,7 +5,6 @@ from binascii import hexlify
        from struct import pack,unpack
        from sys import stderr
        from time import sleep
       -from base64 import b64encode, b64decode
        
        import electrum
        from electrum_gui.qt.password_dialog import make_password_dialog, run_password_dialog
       t@@ -345,8 +344,7 @@ class BTChipWallet(BIP32_HD_Wallet):
                s = str(s)
        
                # And convert it
       -
       -        return b64encode(chr(27 + 4 + (signature[0] & 0x01)) + r + s)
       +        return chr(27 + 4 + (signature[0] & 0x01)) + r + s
        
            def sign_transaction(self, tx, password):
                if tx.is_complete():
   DIR diff --git a/plugins/greenaddress_instant.py b/plugins/greenaddress_instant.py
       t@@ -80,6 +80,7 @@ class Plugin(BasePlugin):
                    addr = self.get_my_addr(tx)
                    message = "Please verify if %s is GreenAddress instant confirmed" % tx.hash()
                    sig = self.wallet.sign_message(addr, message, password)
       +            sig = base64.b64encode(sig)
        
                    # 2. send the request
                    response = requests.request("GET", ("https://greenaddress.it/verify/?signature=%s&txhash=%s" % (urllib.quote(sig), tx.hash())),
   DIR diff --git a/plugins/trezor.py b/plugins/trezor.py
       t@@ -2,7 +2,6 @@ from binascii import unhexlify
        from struct import pack
        from sys import stderr
        from time import sleep
       -from base64 import b64encode, b64decode
        import unicodedata
        import threading
        import re
       t@@ -459,8 +458,7 @@ class TrezorWallet(BIP32_HD_Wallet):
                    give_error(e)
                finally:
                    self.plugin.handler.stop()
       -        b64_msg_sig = b64encode(msg_sig.signature)
       -        return str(b64_msg_sig)
       +        return msg_sig.signature
        
            def sign_transaction(self, tx, password):
                if tx.is_complete():