fix len check in blech32 decode() in test framework

This commit is contained in:
Dmitry Petukhov 2019-09-13 09:55:12 +05:00
parent cfc4cca1fd
commit 32564b0a99
No known key found for this signature in database
GPG key ID: 2301D26BDC15160D

View file

@ -84,16 +84,19 @@ def convertbits(data, frombits, tobits, pad=True):
def decode(hrp, addr):
"""Decode a segwit address."""
"""Decode a segwit confidential address.
Its payload is longer than the payload for unconfidential address
by 33 bytes (the length of blinding pubkey)"""
hrpgot, data = blech32_decode(addr)
if hrpgot != hrp:
return (None, None)
decoded = convertbits(data[1:], 5, 8, False)
if decoded is None or len(decoded) < 2 or len(decoded) > 40:
if decoded is None or len(decoded) < 2 or len(decoded) > 40+33:
return (None, None)
if data[0] > 16:
return (None, None)
if data[0] == 0 and len(decoded) != 20 and len(decoded) != 32:
if data[0] == 0 and len(decoded) != 20+33 and len(decoded) != 32+33:
return (None, None)
return (data[0], decoded)