From b27dc2914b71f9d02717ed73fe0f63afd93ef519 Mon Sep 17 00:00:00 2001 From: Jack Grigg Date: Mon, 30 Apr 2018 13:55:41 +0100 Subject: [PATCH] Remove redundant signature check E::Fs guarantees its representation is in the field, implicitly enforcing that S < order(G). --- src/redjubjub.rs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/redjubjub.rs b/src/redjubjub.rs index 33324df..0fe30e5 100644 --- a/src/redjubjub.rs +++ b/src/redjubjub.rs @@ -148,16 +148,18 @@ impl PublicKey { // c = H*(Rbar || M) let c = h_star::(&sig.rbar[..], msg); + // Signature checks: + // R != invalid let r = match Point::read(&sig.rbar[..], params) { Ok(r) => r, Err(_) => return false, }; + // S < order(G) + // (E::Fs guarantees its representation is in the field) let s = match read_scalar::(&sig.sbar[..]) { Ok(s) => s, Err(_) => return false, }; - // S < order(G) - s.into_repr() < E::Fs::char() && // S . P_G = R + c . vk self.0.mul(c, params).add(&r, params) == params.generator(p_g).mul(s, params).into() }