mod whir_r1cs;
use {
crate::whir_r1cs::WhirR1CSVerifier,
anyhow::{Context, Result},
provekit_common::{NoirProof, Verifier},
tracing::instrument,
};
pub trait Verify {
fn verify(&mut self, proof: &NoirProof) -> Result<()>;
}
impl Verify for Verifier {
#[instrument(skip_all)]
fn verify(&mut self, proof: &NoirProof) -> Result<()> {
provekit_common::register_ntt();
self.whir_for_witness
.take()
.context("Verifier has already been consumed; cannot verify twice")?
.verify(&proof.whir_r1cs_proof, &proof.public_inputs, &self.r1cs)?;
Ok(())
}
}