General purpose Elliptic Curve Cryptography (ECC) support, including types and traits for representing various elliptic curve forms, scalars, points, and public/secret keys composed thereof.
All curves reside in the separate crates and implemented using traits from
the elliptic-curve
crate.
Crates in this repo do not require the standard library (i.e. no_std
capable)
and can be easily used for bare-metal or WebAssembly programming.
NOTE: Most crates have field/point arithmetic implementations gated under the
arithmetic
cargo feature as noted in the arithmetic
column below:
Name | Curve | arithmetic ? |
Crates.io | Documentation | Build Status |
---|---|---|---|---|---|
bign256 |
bign-curve256v1 | ✅ | |||
bp256 |
brainpoolP256r1/t1 | 🚧 | |||
bp384 |
brainpoolP384r1/t1 | 🚧 | |||
k256 |
secp256k1 | ✅ | |||
p192 |
NIST P-192 | ✅ | |||
p224 |
NIST P-224 | ✅ | |||
p256 |
NIST P-256 | ✅ | |||
p384 |
NIST P-384 | ✅ | |||
p521 |
NIST P-521 | ✅ | |||
sm2 |
SM2 | ✅ |
🚧: curve arithmetic implementation under construction
Please see our tracking issue for additional elliptic curves if you are interested in curves beyond the ones listed here.
All crates in this repository support Rust 1.73 or higher.
Minimum supported Rust version can be changed in the future, but it will be done with a minor version bump.
All crates licensed under either of
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.