Expand description
§RustCrypto: Prime Order Elliptic Curve Formulas
Pure Rust implementation of complete addition formulas for prime order elliptic curves (Renes-Costello-Batina 2015 a.k.a. RCB).
Generic over field element implementations and curve equation coefficients.
§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 + bIt’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!
§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 crate::mul_backend::MulBackend;pub use elliptic_curve;pub use elliptic_curve::array;
Modules§
- affine 🔒
- Affine curve points.
- mul_
backend - Scalar multiplication backends.
- point_
arithmetic - Point arithmetic implementation optimised for different curve equations
- projective 🔒
- Projective curve points.
- tables 🔒
- Precomputed tables.
Structs§
- Affine
Point - Point on a Weierstrass curve in affine coordinates.
- Basepoint
Table - Precomputed lookup table of multiples of a base point, a.k.a. generator.
- Lookup
Table - Lookup table containing precomputed values
[p, 2p, 3p, ..., 8p] - Projective
Point - Point on a Weierstrass curve in projective coordinates.
- Radix16
Decomposition - Signed radix-16 decomposition of a scalar.
Enums§
- Byte
Order - Byte order used when encoding/decoding field elements as bytestrings.
Traits§
- Array
Size - Trait which associates a
usizesize andArrayTypewith atypenum-providedUnsignedinteger. - Double
- Perform a doubling (i.e.
self + self). - Field
- This trait represents an element of a field.
- Field
Arithmetic - Access to a curve’s base field element type.
- Field
Ext - Extension trait for
ff::Field, intended as a place to put optimizable arithmetic operations. - Prime
Curve - Marker trait for elliptic curves with prime order.
- Prime
Curve Params - Parameters for elliptic curves of prime order which can be described by the short Weierstrass equation.
- Prime
Curve With Basepoint Table - Trait for specifying a constant-time basepoint table for a given curve.
- Prime
Field - This represents an element of a non-binary prime field.
- Prime
Field Ext - Extension trait for
ff::PrimeFieldwhich enables specifying the endianness in whichff::PrimeField::Repris encoded. - Retrieve
- A generalization for numbers kept in optimized representations (e.g. Montgomery) that can be converted back to the original form.
Type Aliases§
- Field
Bytes - Byte representation of a base/scalar field element of a given curve.
- Radix16
Digits - Compute number of radix-16 digits for the given elliptic curve’s scalar field.
- Scalar
- Scalar field element for a particular elliptic curve.
- U1