libsecp256k1 ne gère qu’une seule courbe, et la gère avec soin : signature en temps constant, tests exhaustifs et vérification formelle d’une partie de l’arithmétique du corps. Bitcoin Core, de nombreux portefeuilles et des bindings comme coincurve ou le backend cgo de go-ethereum l’utilisent. Les faits présentés ici ont été vérifiés sur le paquet Alpine 3.24.2, version 0.5.0 avec les modules recovery, extrakeys et schnorrsig ; le projet amont en était alors à la 0.8.0.
Les signatures résident dans une structure opaque ; l’encodage est choisi au moment de la sérialisation (serialize_compact donne 64 octets de r‖s, serialize_der donne du DER), et l’analyse est tout aussi explicite. parse_der est strict : il a accepté le DER minimal et refusé la même signature comportant un zéro initial superflu dans r, conformément aux règles BIP-66 de Bitcoin. Les anciennes signatures non strictes nécessitent l’analyseur permissif conservé dans le répertoire contrib du dépôt.
La signature prend un condensat de 32 octets (la bibliothèque ne hache jamais votre message), utilise la RFC 6979 (le résultat des essais correspondait à celui d’une implémentation indépendante) et produit toujours du low-S. La vérification est la partie stricte : la forme high-S symétrique d’une signature valide a échoué, et secp256k1_ecdsa_signature_normalize existe précisément pour corriger les signatures issues de signataires généralistes. Quand une signature produite par OpenSSL, Java ou un KMS cloud ne passe la vérification qu’environ une fois sur deux, c’est le high-S qui en est la cause ; l’exemple normalise avant de vérifier.
Les clés publiques sont des points SEC1, de 65 octets en forme non compressée ou de 33 en forme compressée ; un x‖y de 64 octets est refusé, et SPKI, PEM et JWK ne sont pas pris en charge. Le module recovery récupère la clé publique à partir d’une signature, mécanisme sur lequel reposent les adresses Ethereum, et le module schnorrsig implémente BIP-340. Vérifiez les signatures de messages Bitcoin avec le vérificateur de messages Bitcoin et les événements Nostr avec le vérificateur d’événements Nostr.