def parse_as_public_pair(s): for c in ",/": if c in s: s0, s1 = s.split(c, 1) v0 = parse_as_number(s0) if v0: if s1 in ("even", "odd"): return public_pair_for_x(generator_secp256k1, v0, is_even=(s1 == 'even')) v1 = parse_as_number(s1) if v1: if not is_public_pair_valid(generator_secp256k1, (v0, v1)): sys.stderr.write("invalid (x, y) pair\n") sys.exit(1) return (v0, v1)
def parse_as_public_pair(s): try: if s[:2] in (["02", "03", "04"]): return encoding.sec_to_public_pair(encoding.h2b(s)) except (encoding.EncodingError, binascii.Error): pass for c in ",/": if c in s: s0, s1 = s.split(c, 1) v0 = parse_as_number(s0) if v0: if s1 in ("even", "odd"): return ecdsa.public_pair_for_x(ecdsa.generator_secp256k1, v0, is_even=(s1=='even')) v1 = parse_as_number(s1) if v1: if not ecdsa.is_public_pair_valid(ecdsa.generator_secp256k1, (v0, v1)): sys.stderr.write("invalid (x, y) pair\n") sys.exit(1) return (v0, v1)