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.65 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 crate::scalar::ScalarPrimitive;
pub use crate::point::AffinePoint;
arithmetic
pub use crate::point::BatchNormalize;
arithmetic
pub use crate::point::ProjectivePoint;
arithmetic
pub use crate::scalar::NonZeroScalar;
arithmetic
pub use crate::scalar::Scalar;
arithmetic
pub use crypto_bigint as bigint;
pub use generic_array;
pub use rand_core;
pub use subtle;
pub use zeroize;
pub use ff;
arithmetic
pub use group;
arithmetic
pub use pkcs8;
pkcs8
Modules§
- consts
- Type aliases for many constants.
- ecdh
ecdh
- Elliptic Curve Diffie-Hellman Support.
- hash2curve
hash2curve
- Traits for hashing byte sequences to curve points.
- ops
arithmetic
- Traits for arithmetic operations on elliptic curve field elements.
- point
- Traits for elliptic curve points.
- scalar
- Scalar types.
- sec1
sec1
- Support for SEC1 elliptic curve encoding formats.
- weierstrass
arithmetic
- Complete projective formulas for prime order elliptic curves as described in Renes-Costello-Batina 2015.
Structs§
- Error
- Elliptic curve errors.
- JwkEc
Key jwk
- JSON Web Key (JWK) with a
kty
of"EC"
(elliptic curve). - Public
Key arithmetic
- Elliptic curve public keys.
- Secret
Key - Elliptic curve secret keys.
Constants§
- ALGORITHM_
OID pkcs8
- Algorithm
ObjectIdentifier
for elliptic curve public key cryptography (id-ecPublicKey
).
Traits§
- Curve
- Elliptic curve.
- Curve
Arithmetic arithmetic
- Elliptic curve with an arithmetic implementation.
- Field
arithmetic
- This trait represents an element of a field.
- Field
Bytes Encoding - Trait for decoding/encoding
Curve::Uint
from/toFieldBytes
using curve-specific rules. - Group
arithmetic
- This trait represents an element of a cryptographic group.
- JwkParameters
jwk
- Elliptic curve parameters used by JSON Web Keys.
- Prime
Curve - Marker trait for elliptic curves with prime order.
- Prime
Curve Arithmetic arithmetic
- Prime order elliptic curve with projective arithmetic implementation.
- Prime
Field arithmetic
- This represents an element of a non-binary prime field.
- Voprf
Parameters voprf
- Elliptic curve parameters used by VOPRF.
Type Aliases§
- Field
Bytes - Byte representation of a base/scalar field element of a given curve.
- Field
Bytes Size - Size of serialized field elements of this elliptic curve.
- Result
- Result type with the
elliptic-curve
crate’sError
type.