# pasta-curves: Provides the Pasta curves: Pallas, Vesta and their field elements Fp and Fq.

[ cryptography, elliptic-curves, library, mit, program ] [ Propose Tags ]

Provides the Pasta curves: Pallas, Vesta and their field elements Fp and Fq. See the PastaCurves module below and/or the GitHub repository README.md for more details.

## Modules

[Index] [Quick Jump]

#### Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

• No Candidates
Versions [RSS] 0.0.0.0, 0.0.1.0 CHANGELOG.md base (>=4.12 && <4.17), bytestring (>=0.10 && <0.11.4), cryptonite (>=0.29 && <0.31), memory (>=0.16 && <0.18), random (>=1.1 && <1.3), utf8-string (>=1 && <1.0.3) [details] MIT 2022 Eric Schorn Eric Schorn Eric Schorn Cryptography, Elliptic Curves https://github.com/nccgroup/pasta-curves https://github.com/nccgroup/pasta-curves/issues head: git clone https://github.com/nccgroup/pasta-curves.git by eschorn at 2022-08-31T22:41:04Z NixOS:0.0.1.0 pasta-curves 109 total (5 in the last 30 days) 2.0 (votes: 1) [estimated by Bayesian average] λ λ λ Docs available Last success reported on 2022-08-31

[back to package description]

# pasta-curves

This Haskell library provides the Pasta Curves consisting of: the Pallas curve and its Fp field element, the Vesta curve and its Fq field element, and a variety of supporting functionality such as point/element arithmetic, serialization, and hash-to-curve. The algorithms are NOT constant time.

Pallas is y2 = x3 + 5 over Fp(0x40000000000000000000000000000000224698fc094cf91b992d30ed00000001). The order of the Pallas curve is 0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000001.

Vesta is y2 = x3 + 5 over Fq(0x40000000000000000000000000000000224698fc0994a8dd8c46eb2100000001). The order of the Vesta curve is 0x40000000000000000000000000000000224698fc094cf91b992d30ed00000001.

The curves are designed such that the order of one matches the field characteristic of the other. For a brief introduction, see the Zcash blog titled "The Pasta Curves for Halo 2 and Beyond". The reference Rust implementation (which inspired this implementation) can be found at: https://github.com/zcash/pasta_curves.

Example usage of this library implementation:

\$ cabal repl

ghci> a = 9 :: Fp

ghci> a*a
0x0000000000000000000000000000000000000000000000000000000000000051

ghci> pointMul a base :: Vesta