1This is an easy-to-use implementation of ECC (Elliptic Curve Cryptography) with
2support for ECDSA (Elliptic Curve Digital Signature Algorithm) and ECDH
3(Elliptic Curve Diffie-Hellman), implemented purely in Python, released under
4the MIT license. With this library, you can quickly create key pairs (signing
5key and verifying key), sign messages, and verify the signatures. You can also
6agree on a shared secret key based on exchanged public keys. The keys and
7signatures are very short, making them easy to handle and incorporate into other
8protocols.
9
10This library provides key generation, signing, verifying, and shared secret
11derivation for five popular NIST "Suite B" GF(p) (prime field) curves, with key
12lengths of 192, 224, 256, 384, and 521 bits. The "short names" for these curves,
13as known by the OpenSSL tool (openssl ecparam -list_curves), are: prime192v1,
14secp224r1, prime256v1, secp384r1, and secp521r1. It includes the 256-bit curve
15secp256k1 used by Bitcoin. There is also support for the regular (non-twisted)
16variants of Brainpool curves from 160 to 512 bits. The "short names" of those
17curves are: brainpoolP160r1, brainpoolP192r1, brainpoolP224r1, brainpoolP256r1,
18brainpoolP320r1, brainpoolP384r1, brainpoolP512r1. Few of the small curves from
19SEC standard are also included (mainly to speed-up testing of the library),
20those are: secp112r1, secp112r2, secp128r1, and secp160r1. No other curves are
21included, but it is not too hard to add support for more curves over prime
22fields.
23