mirror of
https://github.com/saymrwulf/pasta_curves-source.git
synced 2026-09-04 20:03:39 +00:00
Merge pull request #13 from zcash/cofactorcurve
impl CofactorCurve for Pallas and Vesta
This commit is contained in:
commit
d8547d2326
3 changed files with 33 additions and 2 deletions
|
|
@ -7,5 +7,11 @@ and this project adheres to Rust's notion of
|
|||
|
||||
## [Unreleased]
|
||||
|
||||
## [0.1.1] - 2021-06-04
|
||||
## Added
|
||||
- Implementations of `group::cofactor::{CofactorCurve, CofactorCurveAffine}` for
|
||||
Pallas and Vesta, enabling them to be used in cofactor-aware protocols that
|
||||
also want to leverage the affine point representation.
|
||||
|
||||
## [0.1.0] - 2021-06-01
|
||||
Initial release!
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
[package]
|
||||
name = "pasta_curves"
|
||||
description = "Implementation of the Pallas and Vesta (Pasta) curve cycle"
|
||||
version = "0.1.0"
|
||||
version = "0.1.1"
|
||||
authors = [
|
||||
"Sean Bowe <sean@electriccoin.co>",
|
||||
"Ying Tong Lai <yingtong@electriccoin.co>",
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@ use core::iter::Sum;
|
|||
use core::ops::{Add, Mul, Neg, Sub};
|
||||
use ff::Field;
|
||||
use group::{
|
||||
cofactor::CofactorGroup,
|
||||
cofactor::{CofactorCurve, CofactorGroup},
|
||||
prime::{PrimeCurve, PrimeCurveAffine, PrimeGroup},
|
||||
Curve as _, Group as _, GroupEncoding,
|
||||
};
|
||||
|
|
@ -218,6 +218,10 @@ macro_rules! new_curve_impl {
|
|||
type Affine = $name_affine;
|
||||
}
|
||||
|
||||
impl CofactorCurve for $name {
|
||||
type Affine = $name_affine;
|
||||
}
|
||||
|
||||
impl GroupEncoding for $name {
|
||||
type Repr = [u8; 32];
|
||||
|
||||
|
|
@ -594,6 +598,27 @@ macro_rules! new_curve_impl {
|
|||
}
|
||||
}
|
||||
|
||||
impl group::cofactor::CofactorCurveAffine for $name_affine {
|
||||
type Curve = $name;
|
||||
type Scalar = $scalar;
|
||||
|
||||
fn identity() -> Self {
|
||||
<Self as PrimeCurveAffine>::identity()
|
||||
}
|
||||
|
||||
fn generator() -> Self {
|
||||
<Self as PrimeCurveAffine>::generator()
|
||||
}
|
||||
|
||||
fn is_identity(&self) -> Choice {
|
||||
<Self as PrimeCurveAffine>::is_identity(self)
|
||||
}
|
||||
|
||||
fn to_curve(&self) -> Self::Curve {
|
||||
<Self as PrimeCurveAffine>::to_curve(self)
|
||||
}
|
||||
}
|
||||
|
||||
impl GroupEncoding for $name_affine {
|
||||
type Repr = [u8; 32];
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue