From 65ed1d8568225b3bd13434bb2a9c947123f771f0 Mon Sep 17 00:00:00 2001 From: Sean Bowe Date: Tue, 22 Dec 2020 08:38:22 -0700 Subject: [PATCH] Check h_evals/h_commitments lengths in vanishing argument verifier. --- src/plonk/vanishing/verifier.rs | 10 +++++++--- src/plonk/verifier.rs | 2 ++ src/poly/domain.rs | 5 +++++ 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/plonk/vanishing/verifier.rs b/src/plonk/vanishing/verifier.rs index e86cb62..f50ddd9 100644 --- a/src/plonk/vanishing/verifier.rs +++ b/src/plonk/vanishing/verifier.rs @@ -9,10 +9,14 @@ use crate::{ }; impl Proof { - pub(in crate::plonk) fn check_lengths(&self, _vk: &VerifyingKey) -> Result<(), Error> { - // TODO: check h_evals + pub(in crate::plonk) fn check_lengths(&self, vk: &VerifyingKey) -> Result<(), Error> { + if self.h_commitments.len() != self.h_evals.len() { + return Err(Error::IncompatibleParams); + } - // TODO: check h_commitments + if self.h_commitments.len() != vk.domain.get_quotient_poly_degree() { + return Err(Error::IncompatibleParams); + } Ok(()) } diff --git a/src/plonk/verifier.rs b/src/plonk/verifier.rs index bc21231..11de2b8 100644 --- a/src/plonk/verifier.rs +++ b/src/plonk/verifier.rs @@ -182,6 +182,8 @@ impl<'a, C: CurveAffine> Proof { .map(|p| p.check_lengths(vk)) .transpose()?; + self.vanishing.check_lengths(vk)?; + if self.lookups.len() != vk.cs.lookups.len() { return Err(Error::IncompatibleParams); } diff --git a/src/poly/domain.rs b/src/poly/domain.rs index 022a67c..c6358ac 100644 --- a/src/poly/domain.rs +++ b/src/poly/domain.rs @@ -382,4 +382,9 @@ impl EvaluationDomain { pub fn get_barycentric_weight(&self) -> G::Scalar { self.barycentric_weight } + + /// Gets the quotient polynomial's degree (as a multiple of n) + pub fn get_quotient_poly_degree(&self) -> usize { + self.quotient_poly_degree as usize + } }