Crate elliptic_curve
source ·Expand description
RustCrypto: Elliptic Curve Traits
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.
Minimum Supported Rust Version
Requires Rust 1.61 or higher.
Minimum supported Rust version can be changed in the future, but it will be done with a minor version bump.
SemVer Policy
- All on-by-default features of this library are covered by SemVer
- MSRV is considered exempt from SemVer as noted above
License
All crates licensed under either of
at your option.
Contribution
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.
Usage
This crate provides traits for describing elliptic curves, along with types which are generic over elliptic curves which can be used as the basis of curve-agnostic code.
It’s intended to be used with the following concrete elliptic curve
implementations from the RustCrypto/elliptic-curves project:
bp256: brainpoolP256r1 and brainpoolP256t1bp384: brainpoolP384r1 and brainpoolP384t1k256: secp256k1 a.k.a. K-256p224: NIST P-224 a.k.a. secp224r1p256: NIST P-256 a.k.a secp256r1, prime256v1p384: NIST P-384 a.k.a. secp384r1p521: NIST P-521 a.k.a. secp521r1
The ecdsa crate provides a generic implementation of the
Elliptic Curve Digital Signature Algorithm which can be used with any of
the above crates, either via an external ECDSA implementation, or
using native curve arithmetic where applicable.
Type conversions
The following chart illustrates the various conversions possible between the various types defined by this crate.
serde support
When the serde feature of this crate is enabled, Serialize and
Deserialize impls are provided for the following types:
Please see type-specific documentation for more information.
Re-exports
pub use crypto_bigint as bigint;pub use generic_array;pub use rand_core;pub use subtle;pub use zeroize;pub use crate::point::AffinePoint;arithmeticpub use crate::point::ProjectivePoint;arithmeticpub use crate::scalar::Scalar;arithmeticpub use ff;pub use group;pub use pkcs8;Modules
ecdhhash2curvearithmeticsec1arithmeticStructs
jwkkty of "EC" (elliptic curve).arithmeticarithmeticConstants
pkcs8ObjectIdentifier][pkcs8::ObjectIdentifier] for elliptic
curve public key cryptography (id-ecPublicKey).Traits
arithmeticarithmeticCurve::Uint from/to FieldBytes using
curve-specific rules.arithmeticarithmeticarithmeticvoprf