elliptic-curves
elliptic-curves copied to clipboard
Collection of pure Rust elliptic curve implementations: NIST P-224, P-256, P-384, P-521, secp256k1, SM2
While working on [voprf](https://github.com/novifinancial/voprf) and [opaque-ke](https://github.com/novifinancial/opaque-ke) I noticed that a lot of implementations and traits could be removed if curve25519-dalek would support necessary traits from elliptic-curves, like [`Curve`](https://docs.rs/elliptic-curve/latest/elliptic_curve/trait.Curve.html) and [`ProjectiveArithmetic`](https://docs.rs/elliptic-curve/latest/elliptic_curve/trait.ProjectiveArithmetic.html)....
This is a tracking issue for additional elliptic curves we could potentially implement. Note that we are presently focusing on short Weierstrass curves which can be implemented using the `primeorder`...
This adds a trait `AffineCoordinates` with two methods (`from_coordinates` and `to_coordinates`) to convert field element coordinates to points and back, checking that the coordinates are on the curve. Internal conversions...
This would enable each Curve to define optimal window sizes for efficient multiplication, instead of having users manually bench/guess.
Depends on https://github.com/RustCrypto/traits/pull/1024.
This is in big need of more scrutiny, documenting, and refactoring, but I wanted to push early and allow for input. [Elligator Squared](https://eprint.iacr.org/2014/043.pdf) is obviously not a standard anything, nor...
The `k256` crate uses lazy normalization of field elements. While not a user-facing concern as we deliberately encapsulate `FieldElement`, there is a potential for bugs in code in `k256` itself...
I have a rather fast implementation of the base field for Cortex-M4/M33 microcontrollers, ~wrapping~ stealing the assembly routines in https://github.com/Emill/P256-cortex-ecdh/blob/master/P256-cortex-m4-ecdh-speedopt-gcc.s. Would there be interest to include platform-specific arithmetic implementations in...
Building with master causes the below error depending on usage. ``` error[E0277]: `::FieldElement` doesn't implement `Debug` --> /home/coder0xff/Dropbox/Documents/Projects/Community/src/community/elliptic-curves/primeorder/src/affine.rs:290:30 | 290 | impl PrimeCurveAffine for AffinePoint | ^^^^^^^^^^^^^^ `::FieldElement` cannot be...
The `bp256` and `bp384` crates have a `wip-arithmetic-do-not-use` which enables a broken arithmetic backend. It's unclear why it isn't working, but it's failing test vectors. The field implementations were synthesized...