예제 #1
0
 def test_invalid_address(self):
     """Test whether invalid addresses fail to decode."""
     for test in INVALID_ADDRESS:
         witver, _ = bech32.decode("bc", test)
         self.assertIsNone(witver)
         witver, _ = bech32.decode("tb", test)
         self.assertIsNone(witver)
예제 #2
0
 def test_valid_address(self):
     """Test whether valid addresses decode to the correct output."""
     for (address, hexscript) in VALID_ADDRESS:
         hrp = "bc"
         witver, witprog = bech32.decode(hrp, address)
         if witver is None:
             hrp = "tb"
             witver, witprog = bech32.decode(hrp, address)
         self.assertIsNotNone(witver)
         scriptpubkey = segwit_scriptpubkey(witver, witprog)
         self.assertEqual(scriptpubkey, unhexlify(hexscript))
         addr = bech32.encode(hrp, witver, witprog)
         self.assertEqual(address.lower(), addr)
예제 #3
0
def decode_bech32_address(prefix: str, address: str) -> tuple[int, bytes]:
    witver, raw = bech32.decode(prefix, address)
    if witver not in _BECH32_WITVERS:
        raise wire.ProcessError("Invalid address witness program")
    assert witver is not None
    assert raw is not None
    return witver, bytes(raw)
예제 #4
0
def decode_bech32_address(prefix: str, address: str) -> tuple[int, bytes]:
    witver, raw = bech32.decode(prefix, address)
    if witver not in _BECH32_WITVERS:
        raise wire.DataError("Invalid address witness program")
    assert witver is not None
    assert raw is not None
    # check that P2TR address encodes a valid BIP340 public key
    if witver == 1 and not bip340.verify_publickey(raw):
        raise wire.DataError("Invalid Taproot witness program")
    return witver, raw
예제 #5
0
def decode_bech32_address(prefix: str, address: str) -> bytes:
    witver, raw = bech32.decode(prefix, address)
    if witver != _BECH32_WITVER:
        raise AddressError(FailureType.ProcessError, "Invalid address witness program")
    return bytes(raw)
예제 #6
0
def decode_bech32_address(prefix: str, address: str) -> bytes:
    witver, raw = bech32.decode(prefix, address)
    if witver != _BECH32_WITVER:
        raise wire.ProcessError("Invalid address witness program")
    assert raw is not None
    return bytes(raw)