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}