diff --git a/Cargo.toml b/Cargo.toml index 3b23623..564d4a9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ repository = "https://github.com/penumbra-zone/decaf377-rdsa" [dependencies] blake2b_simd = "0.5" byteorder = "1.3" -decaf377 = {default-features = false, git = "https://github.com/penumbra-zone/decaf377", rev = "c8f6a6c5e83736813e95277e82f546bff55ae90a"} +decaf377 = {git = "https://github.com/penumbra-zone/decaf377", rev = "c8f6a6c5e83736813e95277e82f546bff55ae90a", features = ["arkworks", "r1cs"]} digest = "0.9" rand_core = "0.6" serde = { version = "1", optional = true, features = ["derive"] } diff --git a/src/batch.rs b/src/batch.rs index cf389aa..989a40b 100644 --- a/src/batch.rs +++ b/src/batch.rs @@ -11,7 +11,7 @@ use std::convert::TryFrom; use ark_ff::Zero; -use decaf377::{Element, FieldExt, Fr}; +use decaf377::{Element, Fr}; use rand_core::{CryptoRng, RngCore}; use crate::{ @@ -190,7 +190,7 @@ impl Verifier { Inner::Binding { sig, c, .. } => (sig.s_bytes(), sig.r_bytes(), c), }; - let s = Fr::from_bytes(s_bytes).map_err(|_| Error::InvalidSignature)?; + let s = Fr::from_bytes_checked(&s_bytes).map_err(|_| Error::InvalidSignature)?; let R = decaf377::Encoding(r_bytes) .vartime_decompress() .map_err(|_| Error::InvalidSignature)?; diff --git a/src/signing_key.rs b/src/signing_key.rs index cd886a1..04f30ca 100644 --- a/src/signing_key.rs +++ b/src/signing_key.rs @@ -1,7 +1,6 @@ use std::convert::{TryFrom, TryInto}; -use ark_ff::PrimeField; -use decaf377::{FieldExt, Fr}; +use decaf377::Fr; use rand_core::{CryptoRng, RngCore}; use crate::{Binding, Domain, Error, Signature, SpendAuth, VerificationKey}; diff --git a/src/verification_key.rs b/src/verification_key.rs index ee2171c..2e9250a 100644 --- a/src/verification_key.rs +++ b/src/verification_key.rs @@ -5,7 +5,7 @@ use std::{ marker::PhantomData, }; -use decaf377::{FieldExt, Fr}; +use decaf377::Fr; use crate::{domain::Sealed, Binding, Domain, Error, Signature, SpendAuth}; @@ -222,7 +222,8 @@ impl VerificationKey { .vartime_decompress() .map_err(|_| Error::InvalidSignature)?; - let s = Fr::from_bytes(signature.s_bytes()).map_err(|_| Error::InvalidSignature)?; + let s = + Fr::from_bytes_checked(&signature.s_bytes()).map_err(|_| Error::InvalidSignature)?; // XXX rewrite as normal double scalar mul // Verify check is h * ( - s * B + R + c * A) == 0