rsnark-provers-gnark 0.1.8

A Rust library to write Zero-Knowledge circuits for multiple prover systems
Documentation
pub mod binding {
    #![allow(warnings)]
    rust2go::r2g_include_binding!();
}

#[cfg(not(docsrs))]
#[rust2go::r2g]
pub trait Groth16Prover {
    fn groth16_create(curve_id: u64) -> u64;

    fn groth16_compile(curve_id: u64, circuit: Vec<u8>) -> i64;

    fn groth16_setup(prover: u64, compiled_circuit: i64) -> Vec<u8>;

    fn groth16_prove(prover: u64, compiled_circuit: i64, pk: i64, witness: Vec<u8>) -> i64;

    fn groth16_verify(prover: u64, vk: i64, proof: i64, public_witness: Vec<u8>) -> i64;

    fn groth16_remove_prover(prover: u64);
}

#[cfg(not(docsrs))]
#[rust2go::r2g]
pub trait PlonkProver {
    fn plonk_create(curve_id: u64) -> u64;

    fn plonk_compile(curve_id: u64, circuit: Vec<u8>) -> i64;

    fn plonk_setup(prover: u64, compiled_circuit: i64) -> Vec<u8>;

    fn plonk_prove(prover: u64, compiled_circuit: i64, pk: i64, witness: Vec<u8>) -> i64;

    fn plonk_verify(prover: u64, vk: i64, proof: i64, public_witness: Vec<u8>) -> i64;

    fn plonk_remove_prover(prover: u64);
}

#[cfg(not(docsrs))]
#[rust2go::r2g]
pub trait Object {
    fn serialize(object_id: i64) -> Vec<u8>;

    fn deserialize(ty: u64, curve_id: u64, data: Vec<u8>) -> i64;

    fn write_to_file(object_id: i64, path: String) -> i64;

    fn read_from_file(ty: u64, curve_id: u64, path: String) -> i64;

    fn remove_object(object_id: i64);

    fn export_solidity(object_id: i64, type_id: u64) -> Vec<u8>;
}

#[cfg(docsrs)]
pub mod groth16 {
    pub fn create(_curve_id: u64) -> u64 {
        unimplemented!()
    }

    pub fn compile(_curve_id: u64, _circuit: Vec<u8>) -> i64 {
        unimplemented!()
    }

    pub fn setup(_prover: u64, _compiled_circuit: i64) -> Vec<u8> {
        unimplemented!()
    }

    pub fn prove(_prover: u64, _compiled_circuit: i64, _pk: i64, _witness: Vec<u8>) -> i64 {
        unimplemented!()
    }

    pub fn verify(_prover: u64, _vk: i64, _proof: i64, _public_witness: Vec<u8>) -> i64 {
        unimplemented!()
    }

    pub fn remove_prover(_prover: u64) {
        unimplemented!()
    }
}

#[cfg(docsrs)]
pub mod object {
    pub fn serialize(_object_id: i64) -> Vec<u8> {
        unimplemented!()
    }

    pub fn deserialize(_ty: u64, _curve_id: u64, _data: Vec<u8>) -> i64 {
        unimplemented!()
    }

    pub fn write_to_file(_object_id: i64, _path: String) -> i64 {
        unimplemented!()
    }

    pub fn read_from_file(_ty: u64, _curve_id: u64, _path: String) -> i64 {
        unimplemented!()
    }

    pub fn export_solidity(_object_id: i64, _type_id: u64) -> Vec<u8> {
        unimplemented!()
    }

    pub fn remove_object(_object_id: i64) {
        unimplemented!()
    }
}

#[cfg(docsrs)]
pub mod plonk {
    pub fn create(_curve_id: u64) -> u64 {
        unimplemented!()
    }

    pub fn compile(_curve_id: u64, _circuit: Vec<u8>) -> i64 {
        unimplemented!()
    }

    pub fn setup(_prover: u64, _compiled_circuit: i64) -> Vec<u8> {
        unimplemented!()
    }

    pub fn prove(_prover: u64, _compiled_circuit: i64, _pk: i64, _witness: Vec<u8>) -> i64 {
        unimplemented!()
    }

    pub fn verify(_prover: u64, _vk: i64, _proof: i64, _public_witness: Vec<u8>) -> i64 {
        unimplemented!()
    }

    pub fn remove_prover(_prover: u64) {
        unimplemented!()
    }
}

#[cfg(not(docsrs))]
pub mod groth16 {
    use crate::ffi::Groth16Prover;

    pub fn create(curve_id: u64) -> u64 {
        super::Groth16ProverImpl::groth16_create(curve_id)
    }

    pub fn compile(curve_id: u64, circuit: Vec<u8>) -> i64 {
        super::Groth16ProverImpl::groth16_compile(curve_id, circuit)
    }

    pub fn setup(prover: u64, compiled_circuit: i64) -> Vec<u8> {
        super::Groth16ProverImpl::groth16_setup(prover, compiled_circuit)
    }

    pub fn prove(prover: u64, compiled_circuit: i64, pk: i64, witness: Vec<u8>) -> i64 {
        super::Groth16ProverImpl::groth16_prove(prover, compiled_circuit, pk, witness)
    }

    pub fn verify(prover: u64, vk: i64, proof: i64, public_witness: Vec<u8>) -> i64 {
        super::Groth16ProverImpl::groth16_verify(prover, vk, proof, public_witness)
    }

    pub fn remove_prover(prover: u64) {
        super::Groth16ProverImpl::groth16_remove_prover(prover)
    }
}

#[cfg(not(docsrs))]
pub mod object {
    use crate::ffi::Object;

    pub fn serialize(object_id: i64) -> Vec<u8> {
        super::ObjectImpl::serialize(object_id)
    }

    pub fn deserialize(ty: u64, curve_id: u64, data: Vec<u8>) -> i64 {
        super::ObjectImpl::deserialize(ty, curve_id, data)
    }

    pub fn write_to_file(object_id: i64, path: String) -> i64 {
        super::ObjectImpl::write_to_file(object_id, path)
    }

    pub fn read_from_file(ty: u64, curve_id: u64, path: String) -> i64 {
        super::ObjectImpl::read_from_file(ty, curve_id, path)
    }

    pub fn export_solidity(object_id: i64, type_id: u64) -> Vec<u8> {
        super::ObjectImpl::export_solidity(object_id, type_id)
    }

    pub fn remove_object(object_id: i64) {
        super::ObjectImpl::remove_object(object_id)
    }
}

#[cfg(not(docsrs))]
pub mod plonk {
    use crate::ffi::PlonkProver;

    pub fn create(curve_id: u64) -> u64 {
        super::PlonkProverImpl::plonk_create(curve_id)
    }

    pub fn compile(curve_id: u64, circuit: Vec<u8>) -> i64 {
        super::PlonkProverImpl::plonk_compile(curve_id, circuit)
    }

    pub fn setup(prover: u64, compiled_circuit: i64) -> Vec<u8> {
        super::PlonkProverImpl::plonk_setup(prover, compiled_circuit)
    }

    pub fn prove(prover: u64, compiled_circuit: i64, pk: i64, witness: Vec<u8>) -> i64 {
        super::PlonkProverImpl::plonk_prove(prover, compiled_circuit, pk, witness)
    }

    pub fn verify(prover: u64, vk: i64, proof: i64, public_witness: Vec<u8>) -> i64 {
        super::PlonkProverImpl::plonk_verify(prover, vk, proof, public_witness)
    }

    pub fn remove_prover(prover: u64) {
        super::PlonkProverImpl::plonk_remove_prover(prover)
    }
}