Crate primeorder

Source
Expand description

§RustCrypto: Prime Order Elliptic Curve Formulas

crate Docs Build Status Apache2/MIT licensed Rust Version Project Chat

Pure Rust implementation of complete addition formulas for prime order elliptic curves (Renes-Costello-Batina 2015). Generic over field elements and curve equation coefficients.

Documentation

§About

This crate provides a generic implementation of complete formulas for prime order elliptic curves which are defined by the short Weierstrass equation:

y² = x³ + ax + b

It’s used to implement the following elliptic curves:

§⚠️ Security Warning

The elliptic curve arithmetic contained in this crate has never been independently audited!

This crate has been designed with the goal of ensuring that secret-dependent operations are performed in constant time (using the subtle crate and constant-time formulas). However, it has not been thoroughly assessed to ensure that generated assembly is constant time on common CPU architectures.

USE AT YOUR OWN RISK!

§Minimum Supported Rust Version

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.

Re-exports§

pub use elliptic_curve;
pub use elliptic_curve::generic_array;

Modules§

point_arithmetic
Point arithmetic implementation optimised for different curve equations

Macros§

impl_bernstein_yang_invert
Implement Bernstein-Yang field element inversion.
impl_field_identity_tests
Implement field element identity tests.
impl_field_invert_tests
Implement field element inversion tests.
impl_field_op
Emit impls for a core::ops trait for all combinations of reference types, which thunk to the given function.
impl_field_sqrt_tests
Implement field element square root tests.
impl_mont_field_element
Implements a field element type whose internal representation is in Montgomery form, providing a combination of trait impls and inherent impls which are const fn where possible.
impl_mont_field_element_arithmetic
Add arithmetic impls to the given field element.
impl_primefield_tests
Implement tests for the PrimeField trait.
impl_projective_arithmetic_testsdev
Implement projective arithmetic tests.

Structs§

AffinePoint
Point on a Weierstrass curve in affine coordinates.
ProjectivePoint
Point on a Weierstrass curve in projective coordinates.

Traits§

Double
Double a point (i.e. add it to itself)
Field
This trait represents an element of a field.
PrimeCurve
Marker trait for elliptic curves with prime order.
PrimeCurveParams
Parameters for elliptic curves of prime order which can be described by the short Weierstrass equation.
PrimeField
This represents an element of a non-binary prime field.

Type Aliases§

FieldBytes
Byte representation of a base/scalar field element of a given curve.