mmgen-tool: add ‘hextob58chk’ and ‘b58chktohex’ cmds

This commit is contained in:
The MMGen Project 2018-09-29 10:57:32 +00:00
commit 610d0dd243
Signed by: mmgen
GPG key ID: 3F8B1861E32B7DA2
3 changed files with 11 additions and 0 deletions

View file

@ -72,7 +72,9 @@ General utilities:
b58tostr - convert a base 58 number to a string
strtob58 - convert a string to base 58
b58tohex - convert a base 58 number to hexadecimal
b58chktohex - convert a base58-check encoded number to hexadecimal
hextob58 - convert a hexadecimal number to base 58
hextob58chk - convert a hexadecimal number to base58-check encoding
b32tohex - convert a base 32 number to hexadecimal
hextob32 - convert a hexadecimal number to base 32

View file

@ -56,6 +56,7 @@ def _b58chk_encode(hexstr):
def _b58chk_decode(s):
hexstr = '{:x}'.format(_b58tonum(s))
if len(hexstr) % 2: hexstr = '0' + hexstr
if hexstr[-8:] == hash256(hexstr[:-8])[:8]:
return hexstr[:-8]
raise ValueError,'_b58chk_decode(): checksum incorrect'

View file

@ -38,7 +38,9 @@ cmd_data = OrderedDict([
('Strtob58', ['<string> [str-]','pad [int=0]']),
('B58tostr', ['<b58 number> [str-]']),
('Hextob58', ['<hex number> [str-]','pad [int=0]']),
('Hextob58chk', ['<hex number> [str-]']),
('B58tohex', ['<b58 number> [str-]','pad [int=0]']),
('B58chktohex', ['<b58 number> [str-]']),
('B58randenc', []),
('B32tohex', ['<b32 num> [str-]','pad [int=0]']),
('Hextob32', ['<hex num> [str-]','pad [int=0]']),
@ -327,9 +329,15 @@ def Mn2hex(s,wordlist=dfl_wl_id): Msg(baseconv.tohex(s.split(),wordlist))
def Strtob58(s,pad=None): Msg(baseconv.fromhex(binascii.hexlify(s),'b58',pad,tostr=True))
def Hextob58(s,pad=None): Msg(baseconv.fromhex(s,'b58',pad,tostr=True))
def Hextob58chk(s):
from mmgen.protocol import _b58chk_encode
Msg(_b58chk_encode(s))
def Hextob32(s,pad=None): Msg(baseconv.fromhex(s,'b32',pad,tostr=True))
def B58tostr(s): Msg(binascii.unhexlify(baseconv.tohex(s,'b58')))
def B58tohex(s,pad=None): Msg(baseconv.tohex(s,'b58',pad))
def B58chktohex(s):
from mmgen.protocol import _b58chk_decode
Msg(_b58chk_decode(s))
def B32tohex(s,pad=None): Msg(baseconv.tohex(s.upper(),'b32',pad))
from mmgen.seed import Mnemonic