
Signature/vérification ECDSA pure-python et accord de clé ECDH
Il s'agit d'une implémentation facile à utiliser de l'ECC (cryptographie sur courbes elliptiques) prenant en charge l'ECDSA (algorithme de signature numérique à courbe elliptique), l'EdDSA (algorithme de signature numérique à courbe d'Edwards) et l'ECDH (échange de Diffie-Hellman à courbe elliptique), implémentée purement en Python et publiée sous licence MIT. Avec cette bibliothèque, vous pouvez rapidement créer des paires de clés (clé de signature et clé de vérification), signer des messages et vérifier les signatures. Vous pouvez également convenir d'une clé secrète partagée basée sur les clés publiques échangées. Les clés et les signatures sont très courtes, ce qui les rend faciles à manipuler et à intégrer dans d'autres protocoles.
REMARQUE : cette bibliothèque ne doit pas être utilisée en environnement de production, voir Sécurité pour plus de détails.
Cette bibliothèque fournit la génération de clés, la signature, la vérification et la dérivation de secret partagé pour cinq courbes GF(p) (corps premier) NIST « Suite B » populaires, avec des longueurs de clé de 192, 224, 256, 384 et 521 bits. Les « noms courts » de ces courbes, connus de l'outil OpenSSL (openssl ecparam -list_curves), sont : prime192v1, secp224r1, prime256v1, secp384r1 et secp521r1. Cela inclut la courbe de 256 bits secp256k1 utilisée par Bitcoin. Il existe également une prise en charge des variantes régulières (non torsadées) des courbes Brainpool de 160 à 512 bits. Les « noms courts » de ces courbes sont : brainpoolP160r1, brainpoolP192r1, brainpoolP224r1, brainpoolP256r1, brainpoolP320r1, brainpoolP384r1, brainpoolP512r1. Quelques petites courbes de la norme SEC sont également incluses (principalement pour accélérer les tests de la bibliothèque) : secp112r1, secp112r2, secp128r1 et secp160r1. La génération de clés, la signature et la vérification sont également prises en charge pour les courbes Ed25519 et Ed448. Aucune autre courbe n'est incluse, mais il n'est pas trop difficile d'ajouter la prise en charge d'autres courbes sur corps premiers.
Cette bibliothèque n'utilise que Python et le paquet « six ». Elle est compatible avec Python 2.6, 2.7 et 3.6+. Elle prend également en charge l'exécution sur des implémentations alternatives comme pypy et pypy3.
Si gmpy2 ou gmpy est installé, ils seront utilisés pour un calcul plus rapide. L'un ou l'autre peut être installé après l'installation de cette bibliothèque, python-ecdsa détectera leur présence au démarrage et les utilisera automatiquement. Vous devriez préférer gmpy2 sur Python 3 pour des performances optimales.
Pour exécuter les tests de compatibilité OpenSSL, l'outil « openssl » doit être dans votre PATH. Cette version a été testée avec succès avec OpenSSL 0.9.8o, 1.0.0a, 1.0.2f, 1.1.1d et 3.0.1 (entre autres).
Cette bibliothèque est disponible sur PyPI, il est recommandé de l'installer avec pip :```
pip install ecdsa
Dans le cas où des performances supérieures sont souhaitées et que l'utilisation de code natif ne pose pas de problème,
il est possible de spécifier l'installation avec `gmpy2` :```
pip install ecdsa[gmpy2]
ou (option plus lente, héritée) :``` pip install ecdsa[gmpy]
## Vitesse