1
0

do not base64encode signatures in requests

This commit is contained in:
ThomasV
2015-07-14 16:37:04 +02:00
parent 7588519e8e
commit 471cab6089
6 changed files with 14 additions and 13 deletions

View File

@@ -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
@@ -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])

View File

@@ -24,6 +24,7 @@ import copy
import argparse
import json
import ast
import base64
from functools import wraps
from decimal import Decimal
@@ -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