Skip to main content

Crate primeorder

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 a.k.a. RCB).

Generic over field element implementations 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!

§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§

AffinePoint
Point on a Weierstrass curve in affine coordinates.
BasepointTable
Precomputed lookup table of multiples of a base point, a.k.a. generator.
LookupTable
Lookup table containing precomputed values [p, 2p, 3p, ..., 8p]
ProjectivePoint
Point on a Weierstrass curve in projective coordinates.
Radix16Decomposition
Signed radix-16 decomposition of a scalar.

Enums§

ByteOrder
Byte order used when encoding/decoding field elements as bytestrings.

Traits§

ArraySize
Trait which associates a usize size and ArrayType with a typenum-provided Unsigned integer.
Double
Perform a doubling (i.e. self + self).
Field
This trait represents an element of a field.
FieldArithmetic
Access to a curve’s base field element type.
FieldExt
Extension trait for ff::Field, intended as a place to put optimizable arithmetic operations.
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.
PrimeCurveWithBasepointTable
Trait for specifying a constant-time basepoint table for a given curve.
PrimeField
This represents an element of a non-binary prime field.
PrimeFieldExt
Extension trait for ff::PrimeField which enables specifying the endianness in which ff::PrimeField::Repr is encoded.
Retrieve
A generalization for numbers kept in optimized representations (e.g. Montgomery) that can be converted back to the original form.

Type Aliases§

FieldBytes
Byte representation of a base/scalar field element of a given curve.
Radix16Digits
Compute number of radix-16 digits for the given elliptic curve’s scalar field.
Scalar
Scalar field element for a particular elliptic curve.
U1