Crate stark_curve
source ·Expand description
§Stark Curve
Pure Rust implementation of Stark Curve. Provides basic elliptic curve arithmetic backed by
primeorder, elliptic-curve, and ff crates. #![no_std]
friendly.
§Curve parameters
As specified in a stark curve specs, this crate provides an implementation of a curve defined by equation:
$$y^2 = x^3 + \alpha x + \beta \pmod p$$
where:
$$ \begin{aligned} \alpha &= 1\\ \beta &= 3141592653589793238462643383279502884197169399375105820974944592307816406665\\ p &= 3618502788666131213697322783095070105623107215331596699973092056135872020481\\ &= 2^{251} + 17 \cdot 2^{192} + 1 \end{aligned} $$
Also, curve order $n$, which is not mentioned in the specs but can be found here:
$n = 3618502788666131213697322783095070105526743751716087489154079457884512865583$
Both $p$ and $n$ are prime.
§Security
This crate doesn’t implement any sensitive cryptography code. Instead, we delegate scalar arithmetic to ff crate, and elliptic point arithmetic to primeorder crate, which are considered to be heavily used and tested.
§License
Licensed under either of
- Apache License, Version 2.0
- MIT license
at your option.
Re-exports§
pub use primeorder;
pub use primeorder::elliptic_curve;
pub use primeorder::elliptic_curve::bigint;
pub use primeorder::elliptic_curve::bigint::rand_core;
pub use primeorder::elliptic_curve::ff;
pub use primeorder::elliptic_curve::generic_array;
pub use primeorder::elliptic_curve::generic_array::typenum;
Modules§
- Stark curve constants
- Core functionality
Structs§
- Stark curve
Type Aliases§
- Affine point on stark curve
- Field element (unsigned integer mod $p$)
- Projective point on stark curve
- Scalar (unsigned integer mod $n$)