use pasta_msm crate for MSM (#75) * use pasta_msm crate for MSM * add repr-c to pasta_curves * add +stable * update pasta-msm version
Srinath Setty srinath@microsoft.com
Thu, 26 May 2022 17:27:19 +0530
3 files changed,
6 insertions(+),
16 deletions(-)
M
.github/workflows/rust.yml
→
.github/workflows/rust.yml
@@ -20,7 +20,7 @@ run: rustup component add clippy
- name: Build run: cargo build --verbose - name: Run tests - run: cargo test --release --verbose + run: cargo +stable test --release --verbose - name: Check Rustfmt Code Style run: cargo fmt --all -- --check - name: Check clippy warnings
M
Cargo.toml
→
Cargo.toml
@@ -22,7 +22,8 @@ rand_core = { version = "0.5", default-features = false }
rand_chacha = "0.3" itertools = "0.9.0" subtle = "2.4" -pasta_curves = "0.3.1" +pasta_curves = { version = "^0.3.1", features = ["repr-c"] } +pasta-msm = "0.1.1" neptune = { version = "6.1", default-features = false } generic-array = "0.14.4" bellperson-nonnative = { version = "0.3.0", default-features = false, features = ["wasm"] }
M
src/pasta.rs
→
src/pasta.rs
@@ -3,7 +3,6 @@ use crate::{
poseidon::PoseidonRO, traits::{ChallengeTrait, CompressedGroup, Group}, }; -use core::ops::Mul; use digest::{ExtendableOutput, Input}; use ff::Field; use merlin::Transcript;@@ -11,7 +10,7 @@ use num_bigint::BigInt;
use num_traits::Num; use pasta_curves::{ self, - arithmetic::{CurveAffine, CurveExt, Group as Grp}, + arithmetic::{CurveAffine, CurveExt}, group::{Curve, GroupEncoding}, pallas, vesta, Ep, Eq, };@@ -46,12 +45,7 @@ fn vartime_multiscalar_mul(
scalars: &[Self::Scalar], bases: &[Self::PreprocessedGroupElement], ) -> Self { - // Unoptimized. - scalars - .iter() - .zip(bases) - .map(|(scalar, base)| base.mul(scalar)) - .fold(Ep::group_zero(), |acc, x| acc + x) + pasta_msm::pallas(bases, scalars) } fn compress(&self) -> Self::CompressedGroupElement {@@ -136,12 +130,7 @@ fn vartime_multiscalar_mul(
scalars: &[Self::Scalar], bases: &[Self::PreprocessedGroupElement], ) -> Self { - // Unoptimized. - scalars - .iter() - .zip(bases) - .map(|(scalar, base)| base.mul(scalar)) - .fold(Eq::group_zero(), |acc, x| acc + x) + pasta_msm::vesta(bases, scalars) } fn compress(&self) -> Self::CompressedGroupElement {