Beispiel #1
0
def read_int(r: BufferReader) -> memoryview:
    if r.get() != 0x02:
        raise ValueError

    n = read_length(r)
    if n == 0:
        raise ValueError

    if r.peek() & 0x80:
        raise ValueError  # negative integer

    if r.peek() == 0x00 and n > 1:
        r.get()
        n -= 1
        if r.peek() & 0x80 == 0x00:
            raise ValueError  # excessive zero-padding

        if r.peek() == 0x00:
            raise ValueError  # excessive zero-padding

    return r.read_memoryview(n)
Beispiel #2
0
def read_memoryview_prefixed(r: BufferReader) -> memoryview:
    n = read_compact_size(r)
    return r.read_memoryview(n)
Beispiel #3
0
def read_memoryview_prefixed(r: BufferReader) -> memoryview:
    n = read_bitcoin_varint(r)
    return r.read_memoryview(n)
Beispiel #4
0
def read_bip322_signature_proof(
        r: utils.BufferReader) -> tuple[memoryview, memoryview]:
    script_sig = read_memoryview_prefixed(r)
    witness = r.read_memoryview()
    return script_sig, witness