gnark_bn254_verifier/
lib.rs

1pub use ark_bn254::Fr;
2
3use converter::{
4    load_groth16_proof_from_bytes, load_groth16_verifying_key_from_bytes,
5    load_plonk_proof_from_bytes, load_plonk_verifying_key_from_bytes,
6};
7use verify::{verify_groth16, verify_plonk};
8
9mod constants;
10mod converter;
11mod element;
12mod hash_to_field;
13mod kzg;
14mod prove;
15mod transcript;
16mod verify;
17
18pub enum ProvingSystem {
19    Plonk,
20    Groth16,
21}
22
23pub fn verify(
24    proof: &[u8],
25    vk: &[u8],
26    public_inputs: &[Fr],
27    proving_system: ProvingSystem,
28) -> bool {
29    match proving_system {
30        ProvingSystem::Plonk => {
31            let proof = load_plonk_proof_from_bytes(proof).unwrap();
32            let vk = load_plonk_verifying_key_from_bytes(vk).unwrap();
33
34            match verify_plonk(&vk, &proof, public_inputs) {
35                Ok(result) => result,
36                Err(e) => {
37                    println!("Error: {:?}", e);
38                    false
39                }
40            }
41        }
42        ProvingSystem::Groth16 => {
43            let proof = load_groth16_proof_from_bytes(proof).unwrap();
44            let vk = load_groth16_verifying_key_from_bytes(vk).unwrap();
45
46            match verify_groth16(&vk, &proof, public_inputs) {
47                Ok(result) => result,
48                Err(e) => {
49                    println!("Error: {:?}", e);
50                    false
51                }
52            }
53        }
54    }
55}