1
0
mirror of https://github.com/bitcoin/bips.git synced 2026-09-21 19:04:28 +00:00

BIP-374: add test vectors for out-of-range proof values

This commit is contained in:
Sebastian Falbesoner
2026-08-19 15:42:32 +02:00
parent c88e295d92
commit fc874dd5d3
2 changed files with 15 additions and 0 deletions

View File

@@ -116,6 +116,19 @@ def gen_all_verify_proof_vectors(f):
C.to_bytes_compressed().hex(), proof.hex(), msg_damaged.hex(), "FALSE", f"Tampered message (random bit-flip)")) C.to_bytes_compressed().hex(), proof.hex(), msg_damaged.hex(), "FALSE", f"Tampered message (random bit-flip)"))
idx += 1 idx += 1
# out-of-range proof values should fail (e and s must both be valid scalars)
order_bytes = GE.ORDER.to_bytes(32, "big")
proof_e_out_of_range = order_bytes + proof[32:]
assert not dleq_verify_proof(A, B, C, proof_e_out_of_range, G=G, m=msg)
writer.writerow((idx, G.to_bytes_compressed().hex(), A.to_bytes_compressed().hex(), B.to_bytes_compressed().hex(),
C.to_bytes_compressed().hex(), proof_e_out_of_range.hex(), msg.hex(), "FALSE", f"Proof with e equal to curve order"))
idx += 1
proof_s_out_of_range = proof[:32] + order_bytes
assert not dleq_verify_proof(A, B, C, proof_s_out_of_range, G=G, m=msg)
writer.writerow((idx, G.to_bytes_compressed().hex(), A.to_bytes_compressed().hex(), B.to_bytes_compressed().hex(),
C.to_bytes_compressed().hex(), proof_s_out_of_range.hex(), msg.hex(), "FALSE", f"Proof with s equal to curve order"))
idx += 1
if __name__ == "__main__": if __name__ == "__main__":
print(f"Generating {FILENAME_GENERATE_PROOF_TEST}...") print(f"Generating {FILENAME_GENERATE_PROOF_TEST}...")

View File

@@ -14,3 +14,5 @@ index,point_G,point_A,point_B,point_C,proof,message,result_success,comment
12,0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798,03d9a98624c0c74fc7eebd39ed84175f80d03c774908e75ca737a0745d1c64e20a,021cb81121a00f89769903305a367ad3cc02d5b402b12c026e06ac94bde28cd608,03611410561c35dae13135e4ad8094baac9bbcf2f4e18498181a8ff8a6d43be9d9,78a5544afa75bf152653fe55fb76926f2f65131bf090972a0b0b37d310c28a6bde0e7bfacc10ac12d36f55316ba134b6ba0b844a65ae05cad53c0b296c6639bb,22616bb5fb2d7c68270f305122f2a09e833239c4b1c9a04e285119fb606ac794,FALSE,Swapped points case 5 12,0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798,03d9a98624c0c74fc7eebd39ed84175f80d03c774908e75ca737a0745d1c64e20a,021cb81121a00f89769903305a367ad3cc02d5b402b12c026e06ac94bde28cd608,03611410561c35dae13135e4ad8094baac9bbcf2f4e18498181a8ff8a6d43be9d9,78a5544afa75bf152653fe55fb76926f2f65131bf090972a0b0b37d310c28a6bde0e7bfacc10ac12d36f55316ba134b6ba0b844a65ae05cad53c0b296c6639bb,22616bb5fb2d7c68270f305122f2a09e833239c4b1c9a04e285119fb606ac794,FALSE,Swapped points case 5
13,0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798,03611410561c35dae13135e4ad8094baac9bbcf2f4e18498181a8ff8a6d43be9d9,021cb81121a00f89769903305a367ad3cc02d5b402b12c026e06ac94bde28cd608,03d9a98624c0c74fc7eebd39ed84175f80d03c774908e75ca737a0745d1c64e20a,78a5544afa75bf152653fe55fb76926f2f65131ff090972a0b0b37d310c28a6bde0e7bfacc10ac12d36f55316ba134b6ba0b844a65ae05cad53c0b296c6639bb,22616bb5fb2d7c68270f305122f2a09e833239c4b1c9a04e285119fb606ac794,FALSE,Tampered proof (random bit-flip) 13,0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798,03611410561c35dae13135e4ad8094baac9bbcf2f4e18498181a8ff8a6d43be9d9,021cb81121a00f89769903305a367ad3cc02d5b402b12c026e06ac94bde28cd608,03d9a98624c0c74fc7eebd39ed84175f80d03c774908e75ca737a0745d1c64e20a,78a5544afa75bf152653fe55fb76926f2f65131ff090972a0b0b37d310c28a6bde0e7bfacc10ac12d36f55316ba134b6ba0b844a65ae05cad53c0b296c6639bb,22616bb5fb2d7c68270f305122f2a09e833239c4b1c9a04e285119fb606ac794,FALSE,Tampered proof (random bit-flip)
14,0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798,03611410561c35dae13135e4ad8094baac9bbcf2f4e18498181a8ff8a6d43be9d9,021cb81121a00f89769903305a367ad3cc02d5b402b12c026e06ac94bde28cd608,03d9a98624c0c74fc7eebd39ed84175f80d03c774908e75ca737a0745d1c64e20a,78a5544afa75bf152653fe55fb76926f2f65131bf090972a0b0b37d310c28a6bde0e7bfacc10ac12d36f55316ba134b6ba0b844a65ae05cad53c0b296c6639bb,22616bb5fb6d7c68270f305122f2a09e833239c4b1c9a04e285119fb606ac794,FALSE,Tampered message (random bit-flip) 14,0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798,03611410561c35dae13135e4ad8094baac9bbcf2f4e18498181a8ff8a6d43be9d9,021cb81121a00f89769903305a367ad3cc02d5b402b12c026e06ac94bde28cd608,03d9a98624c0c74fc7eebd39ed84175f80d03c774908e75ca737a0745d1c64e20a,78a5544afa75bf152653fe55fb76926f2f65131bf090972a0b0b37d310c28a6bde0e7bfacc10ac12d36f55316ba134b6ba0b844a65ae05cad53c0b296c6639bb,22616bb5fb6d7c68270f305122f2a09e833239c4b1c9a04e285119fb606ac794,FALSE,Tampered message (random bit-flip)
15,0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798,03611410561c35dae13135e4ad8094baac9bbcf2f4e18498181a8ff8a6d43be9d9,021cb81121a00f89769903305a367ad3cc02d5b402b12c026e06ac94bde28cd608,03d9a98624c0c74fc7eebd39ed84175f80d03c774908e75ca737a0745d1c64e20a,fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141de0e7bfacc10ac12d36f55316ba134b6ba0b844a65ae05cad53c0b296c6639bb,22616bb5fb2d7c68270f305122f2a09e833239c4b1c9a04e285119fb606ac794,FALSE,Proof with e equal to curve order
16,0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798,03611410561c35dae13135e4ad8094baac9bbcf2f4e18498181a8ff8a6d43be9d9,021cb81121a00f89769903305a367ad3cc02d5b402b12c026e06ac94bde28cd608,03d9a98624c0c74fc7eebd39ed84175f80d03c774908e75ca737a0745d1c64e20a,78a5544afa75bf152653fe55fb76926f2f65131bf090972a0b0b37d310c28a6bfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141,22616bb5fb2d7c68270f305122f2a09e833239c4b1c9a04e285119fb606ac794,FALSE,Proof with s equal to curve order
1 index point_G point_A point_B point_C proof message result_success comment
14 12 0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 03d9a98624c0c74fc7eebd39ed84175f80d03c774908e75ca737a0745d1c64e20a 021cb81121a00f89769903305a367ad3cc02d5b402b12c026e06ac94bde28cd608 03611410561c35dae13135e4ad8094baac9bbcf2f4e18498181a8ff8a6d43be9d9 78a5544afa75bf152653fe55fb76926f2f65131bf090972a0b0b37d310c28a6bde0e7bfacc10ac12d36f55316ba134b6ba0b844a65ae05cad53c0b296c6639bb 22616bb5fb2d7c68270f305122f2a09e833239c4b1c9a04e285119fb606ac794 FALSE Swapped points case 5
15 13 0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 03611410561c35dae13135e4ad8094baac9bbcf2f4e18498181a8ff8a6d43be9d9 021cb81121a00f89769903305a367ad3cc02d5b402b12c026e06ac94bde28cd608 03d9a98624c0c74fc7eebd39ed84175f80d03c774908e75ca737a0745d1c64e20a 78a5544afa75bf152653fe55fb76926f2f65131ff090972a0b0b37d310c28a6bde0e7bfacc10ac12d36f55316ba134b6ba0b844a65ae05cad53c0b296c6639bb 22616bb5fb2d7c68270f305122f2a09e833239c4b1c9a04e285119fb606ac794 FALSE Tampered proof (random bit-flip)
16 14 0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 03611410561c35dae13135e4ad8094baac9bbcf2f4e18498181a8ff8a6d43be9d9 021cb81121a00f89769903305a367ad3cc02d5b402b12c026e06ac94bde28cd608 03d9a98624c0c74fc7eebd39ed84175f80d03c774908e75ca737a0745d1c64e20a 78a5544afa75bf152653fe55fb76926f2f65131bf090972a0b0b37d310c28a6bde0e7bfacc10ac12d36f55316ba134b6ba0b844a65ae05cad53c0b296c6639bb 22616bb5fb6d7c68270f305122f2a09e833239c4b1c9a04e285119fb606ac794 FALSE Tampered message (random bit-flip)
17 15 0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 03611410561c35dae13135e4ad8094baac9bbcf2f4e18498181a8ff8a6d43be9d9 021cb81121a00f89769903305a367ad3cc02d5b402b12c026e06ac94bde28cd608 03d9a98624c0c74fc7eebd39ed84175f80d03c774908e75ca737a0745d1c64e20a fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141de0e7bfacc10ac12d36f55316ba134b6ba0b844a65ae05cad53c0b296c6639bb 22616bb5fb2d7c68270f305122f2a09e833239c4b1c9a04e285119fb606ac794 FALSE Proof with e equal to curve order
18 16 0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798 03611410561c35dae13135e4ad8094baac9bbcf2f4e18498181a8ff8a6d43be9d9 021cb81121a00f89769903305a367ad3cc02d5b402b12c026e06ac94bde28cd608 03d9a98624c0c74fc7eebd39ed84175f80d03c774908e75ca737a0745d1c64e20a 78a5544afa75bf152653fe55fb76926f2f65131bf090972a0b0b37d310c28a6bfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141 22616bb5fb2d7c68270f305122f2a09e833239c4b1c9a04e285119fb606ac794 FALSE Proof with s equal to curve order