Skip to main content

provekit_verifier/
lib.rs

1mod whir_r1cs;
2
3use {
4    crate::whir_r1cs::WhirR1CSVerifier,
5    anyhow::{Context, Result},
6    provekit_common::{NoirProof, Verifier},
7    tracing::instrument,
8};
9
10pub trait Verify {
11    fn verify(&mut self, proof: &NoirProof) -> Result<()>;
12}
13
14impl Verify for Verifier {
15    #[instrument(skip_all)]
16    fn verify(&mut self, proof: &NoirProof) -> Result<()> {
17        provekit_common::register_ntt();
18
19        self.whir_for_witness
20            .take()
21            .context("Verifier has already been consumed; cannot verify twice")?
22            .verify(&proof.whir_r1cs_proof, &proof.public_inputs, &self.r1cs)?;
23
24        Ok(())
25    }
26}