Decode a segwit address.
(hrp, addr)
| 100 | |
| 101 | |
| 102 | def decode(hrp, addr): |
| 103 | """Decode a segwit address.""" |
| 104 | hrpgot, data = bech32_decode(addr) |
| 105 | if hrpgot != hrp: |
| 106 | return (None, None) |
| 107 | decoded = convertbits(data[1:], 5, 8, False) |
| 108 | if decoded is None or len(decoded) < 2 or len(decoded) > 40: |
| 109 | return (None, None) |
| 110 | if data[0] > 16: |
| 111 | return (None, None) |
| 112 | if data[0] == 0 and len(decoded) != 20 and len(decoded) != 32: |
| 113 | return (None, None) |
| 114 | return (data[0], decoded) |
| 115 | |
| 116 | |
| 117 | def encode(hrp, witver, witprog): |