commit c402163f63d0943da06dbedbcb32f29333659e02
parent 45c7538528ec11e79a9f05440803ee284cad2f2e
Author: lash <dev@holbrook.no>
Date: Thu, 13 Oct 2022 07:37:03 +0000
Merge branch 'dev-0.6.2'
Diffstat:
5 files changed, 21 insertions(+), 7 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
@@ -1,3 +1,9 @@
+* 0.6.2
+ - Enable signing of binary message
+* 0.6.1
+ - Avoid padding of addresses missing one nibble
+* 0.6.0
+ - Upgrade confini
* 0.5.4
- Add message signer cli
- Add pbkdf2 support
diff --git a/funga/eth/encoding.py b/funga/eth/encoding.py
@@ -41,7 +41,7 @@ def private_key_to_address(pk, result_format='hex'):
def is_address(address_hex):
try:
- address_hex = strip_0x(address_hex)
+ address_hex = strip_0x(address_hex, pad=False)
except ValueError:
return False
return len(address_hex) == 40
@@ -57,10 +57,10 @@ def is_checksum_address(address_hex):
def to_checksum_address(address_hex):
- address_hex = strip_0x(address_hex)
- address_hex = uniform(address_hex)
+ address_hex = strip_0x(address_hex, pad=False)
if len(address_hex) != 40:
raise ValueError('Invalid address length')
+ address_hex = uniform(address_hex)
h = sha3.keccak_256()
h.update(address_hex.encode('utf-8'))
z = h.digest()
diff --git a/funga/eth/runnable/msg.py b/funga/eth/runnable/msg.py
@@ -24,6 +24,7 @@ argparser.add_argument('-f', type=str, help='Keyfile to use for signing')
argparser.add_argument('-z', action='store_true', help='zero-length password')
argparser.add_argument('-v', action='store_true', help='be verbose')
argparser.add_argument('-0', dest='nonl', action='store_true', help='no newline at end of output')
+argparser.add_argument('-b', '--binary', dest='binary', action='store_true', help='parse input as binary hex')
argparser.add_argument('msg', type=str, help='Message to sign')
args = argparser.parse_args()
@@ -42,7 +43,14 @@ def main():
address = keystore.import_keystore_file(args.f, password=passphrase)
signer = EIP155Signer(keystore)
- sig = signer.sign_ethereum_message(address, args.msg.encode('utf-8').hex(), password=passphrase)
+
+ msg = None
+ if args.binary:
+ hx = strip_0x(args.msg, pad=True)
+ msg = bytes.fromhex(hx)
+ else:
+ msg = args.msg.encode('utf-8').hex()
+ sig = signer.sign_ethereum_message(address, msg, password=passphrase)
r = sig.hex()
if not args.nonl:
diff --git a/requirements.txt b/requirements.txt
@@ -3,8 +3,8 @@ pysha3==1.0.2
rlp==2.0.1
#rlp==3.0.0
json-rpc==1.13.0
-confini~=0.5.1
+confini~=0.6.0
coincurve==15.0.0
-hexathon~=0.1.0
+hexathon~=0.1.6
pycryptodome==3.10.1
funga==0.5.2
diff --git a/setup.py b/setup.py
@@ -33,7 +33,7 @@ f.close()
setup(
name="funga-eth",
- version="0.5.6",
+ version="0.6.2",
description="Ethereum implementation of the funga keystore and signer",
author="Louis Holbrook",
author_email="dev@holbrook.no",