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)
def read_memoryview_prefixed(r: BufferReader) -> memoryview: n = read_compact_size(r) return r.read_memoryview(n)
def read_memoryview_prefixed(r: BufferReader) -> memoryview: n = read_bitcoin_varint(r) return r.read_memoryview(n)
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