mirror of
https://github.com/bitcoin/bips.git
synced 2026-11-09 19:47:16 +00:00
All vectors were tested against libsecp256k1, and all verification vectors were checked against OpenSSL. A check was also added to the `verify` specification to reject pubkeys with x or y coordinates greater than or equal to `p`.
5.8 KiB
5.8 KiB
| 1 | pubkey | msghash | sig | result | comment |
|---|---|---|---|---|---|
| 2 | 046cb5d4539027cde94700dbc595a8743b20188e45096ec83e6af0cf8e3c7baa428c0f0d7b20be55b9b2d9b888a8be73c2e57c4527a2d76568679b42db199be57f | ec888dbfce53624100e889809bce7d3cbe677b56a15968c5964d8d3690f57bff | 5454d43ce9b30ae6790ef0b3fe49363d052f130472586d12ac80e9f1d4fae1f743678a8cad1215ffec68092a993909082998c504c5de982aef28717e57338bbc | TRUE | |
| 3 | 04a0429363c22cd4b73db46b180fd05d9c3555c0ab31e01363717e23e26886bd5de3ae91e83e58d166955bf64c826bac4f46bf2b018b730ffd77c6a248e0f3f8cd | ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff | 60a5d1904124dc3925c4887192306e43bf1d0989f89af7adecf06c8ab03bfdf94c2124bfa724c3dce24be6dab661eb1b38cdc42cfa250b61458b6ef2fc46396c | TRUE | |
| 4 | 04a0429363c22cd4b73db46b180fd05d9c3555c0ab31e01363717e23e26886bd5de3ae91e83e58d166955bf64c826bac4f46bf2b018b730ffd77c6a248e0f3f8cd | fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141 | 2e2b06d3334157fa44689912d33be79bafe30ec4b88e4a7d709f33615a1bb2066611e2fa8f82a2cf7802acf64988a5a002c914cc63e553be801db3997d0924c6 | TRUE | |
| 5 | 046cb5d4539027cde94700dbc595a8743b20188e45096ec83e6af0cf8e3c7baa428c0f0d7b20be55b9b2d9b888a8be73c2e57c4527a2d76568679b42db199be57f | ec888dbfce53624100e889809bce7d3cbe677b56a15968c5964d8d3690f57bff | 60a5d1904124dc3925c4887192306e43bf1d0989f89af7adecf06c8ab03bfdf94c2124bfa724c3dce24be6dab661eb1b38cdc42cfa250b61458b6ef2fc46396c | FALSE | signature made with a different key and message |
| 6 | 046cb5d4539027cde94700dbc595a8743b20188e45096ec83e6af0cf8e3c7baa428c0f0d7b20be55b9b2d9b888a8be73c2e57c4527a2d76568679b42db199be57f | ec888dbfce53624100e889809bce7d3cbe677b56a15968c5964d8d3690f57bff | df12252ec1f17a66cc6b438a79f5e63b0b91eefd90c57c636ce2b8e3401075fe37d01c81ba1f9cfa590885ffce18d8a289363f2c756ae8964c608f991a4b883a | TRUE | high-r signature: low-r is a signing policy, not a validity rule |
| 7 | 046cb5d4539027cde94700dbc595a8743b20188e45096ec83e6af0cf8e3c7baa428c0f0d7b20be55b9b2d9b888a8be73c2e57c4527a2d76568679b42db199be57f | ec888dbfce53624100e889809bce7d3cbe677b56a15968c5964d8d3690f57bff | 5454d43ce9b30ae6790ef0b3fe49363d052f130472586d12ac80e9f1d4fae1f70000000000000000000000000000000000000000000000000000000000000000 | FALSE | s=0 |
| 8 | 046cb5d4539027cde94700dbc595a8743b20188e45096ec83e6af0cf8e3c7baa428c0f0d7b20be55b9b2d9b888a8be73c2e57c4527a2d76568679b42db199be57f | ec888dbfce53624100e889809bce7d3cbe677b56a15968c5964d8d3690f57bff | 5454d43ce9b30ae6790ef0b3fe49363d052f130472586d12ac80e9f1d4fae1f7fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141 | FALSE | s=n |
| 9 | 046cb5d4539027cde94700dbc595a8743b20188e45096ec83e6af0cf8e3c7baa428c0f0d7b20be55b9b2d9b888a8be73c2e57c4527a2d76568679b42db199be57f | ec888dbfce53624100e889809bce7d3cbe677b56a15968c5964d8d3690f57bff | 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 | FALSE | r = s = 0; a verifier missing the zero checks can accept this for any key and message, as in CVE-2022-21449 |
| 10 | 0400000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000003 | 0000000000000000000000000000000000000000000000000000000000000000 | 00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002 | FALSE | public key not on the curve, with a signature that verifies if the on-curve check is skipped |
| 11 | 04fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc304218f20ae6c646b363db68605822fb14264ca8d2587fdd6fbc750d587e76a7ee | 57d783579d03d9ab67a8aa7ad9b75a66ebca4ebce1b5be71442db1307f9146a8 | 57d783579d03d9ab67a8aa7ad9b75a66ebca4ebce1b5be71442db1307f9146a857d783579d03d9ab67a8aa7ad9b75a66ebca4ebce1b5be71442db1307f9146a8 | FALSE | public key x = p+1; accepted if coordinates are reduced mod p instead of rejected |
| 12 | 041fe1e5ef3fceb5c135ab7741333ce5a6e80d68167653f6b2b24bcbcfaaaff507fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc30 | 663c42aaae1ba20a1f06879b77b9ef4de8f7f9a1b9b34a3e0fb2fd7343dc4229 | 663c42aaae1ba20a1f06879b77b9ef4de8f7f9a1b9b34a3e0fb2fd7343dc4229663c42aaae1ba20a1f06879b77b9ef4de8f7f9a1b9b34a3e0fb2fd7343dc4229 | FALSE | public key y = p+1; accepted if coordinates are reduced mod p instead of rejected |
| 13 | 00 | ec888dbfce53624100e889809bce7d3cbe677b56a15968c5964d8d3690f57bff | 5454d43ce9b30ae6790ef0b3fe49363d052f130472586d12ac80e9f1d4fae1f743678a8cad1215ffec68092a993909082998c504c5de982aef28717e57338bbc | FALSE | public key is the point at infinity |
| 14 | 046cb5d4539027cde94700dbc595a8743b20188e45096ec83e6af0cf8e3c7baa428c0f0d7b20be55b9b2d9b888a8be73c2e57c4527a2d76568679b42db199be57f | 48f414d53b080c53fbe5a11e5fa5cb30b45d1fbb7d31f8747007ceea633246af | 5454d43ce9b30ae6790ef0b3fe49363d052f130472586d12ac80e9f1d4fae1f743678a8cad1215ffec68092a993909082998c504c5de982aef28717e57338bbc | FALSE | u1*G + u2*P is the point at infinity |
| 15 | 04fa080d6569edae14025c385d49d06a25b116121767026fe837249ff0a5bcbac771aeed5573db3682d4f047d920f14c61b39cfd546ef2de3f4a8cf17c2e7a964d | 0000000000000000000000000000000000000000000000000000000000000002 | 00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002 | TRUE | x(R) = n+2; fails if x(R) is compared to r without reducing mod n |
| 16 | 04fa080d6569edae14025c385d49d06a25b116121767026fe837249ff0a5bcbac771aeed5573db3682d4f047d920f14c61b39cfd546ef2de3f4a8cf17c2e7a964d | 0000000000000000000000000000000000000000000000000000000000000002 | fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd03641430000000000000000000000000000000000000000000000000000000000000002 | FALSE | r = n+2; accepted if r is reduced mod n instead of rejected |
| 17 | 04fa080d6569edae14025c385d49d06a25b116121767026fe837249ff0a5bcbac771aeed5573db3682d4f047d920f14c61b39cfd546ef2de3f4a8cf17c2e7a964d | 0000000000000000000000000000000000000000000000000000000000000002 | 0000000000000000000000000000000000000000000000000000000000000002fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364143 | FALSE | s = n+2; accepted if s is reduced mod n instead of rejected |