Skip to main content

ZkpVerifier

Struct ZkpVerifier 

Source
pub struct ZkpVerifier {}
Expand description

Verifier for verifying zero-knowledge proofs

Implementations§

Source§

impl ZkpVerifier

Source

pub fn new() -> ZkpVerifier

Create a new ZKP verifier

Source

pub fn verify_secret_value( &self, proof: &ZkpProof, preimage: &[u8], ) -> Result<bool, Error>

Verify a zero-knowledge proof of secret value (preimage) knowledge

This verifies a proof generated by ZkpProver::prove_secret_value. The verifier recomputes the public Poseidon commitment from the preimage, so the caller passes the same secret preimage that was given to the prover (NOT the hash output). The proof then attests that the prover knew a preimage hashing to that commitment. For NIST proofs use verify_secret_value_nist.

§Arguments
  • proof - The proof to verify
  • preimage - The secret preimage (same bytes passed to prove_secret_value); the verifier hashes it with Poseidon-128 to reconstruct the public commitment
§Returns

Ok(true) if the proof is valid, Ok(false) or Err otherwise

Source

pub fn verify_secret_value_nist( &self, proof: &ZkpProof, expected_hash: &[u8], ) -> Result<bool, Error>

Verify a NIST (cSHAKE256) secret value proof

Verifies a proof from prove_secret_value_nist. expected_hash is the raw 32-byte cSHAKE256 output (same as used in proving).

Source

pub fn verify_computation( &self, proof: &ZkpProof, circuit: &ArithmeticCircuit<BinomialExtensionField<Mersenne31, 2>>, public: &[BinomialExtensionField<Mersenne31, 2>], ) -> Result<bool, Error>

Verify a zero-knowledge proof of computation

This verifies a proof generated by ZkpProver::prove_computation.

§Arguments
  • proof - The proof to verify
  • circuit - The arithmetic circuit that was proven
  • public - The public input values
§Returns

Ok(true) if the proof is valid, Ok(false) or Err otherwise

Source

pub fn verify( &self, proof: ZkpProof, public_statement: &[u8], ) -> Result<bool, Error>

Verify a zero-knowledge proof.

Performs full cryptographic (STARK) verification for proof types whose public inputs are fully described by a byte slice:

  • ProofMetadata::HashPreimage: public_statement is the expected hash output (same semantics as verify_secret_value).
  • ProofMetadata::HashPreimageNist: public_statement is the expected cSHAKE256 hash output (same semantics as verify_secret_value_nist).
  • ProofMetadata::MerkleInclusion: public_statement is the expected Merkle root hash (same semantics as api::verify_membership).

Returns Ok(false) for Circuit, Credential, Identity, and None metadata variants. Those proof types require a type-specific verifier that accepts the additional inputs needed to reconstruct verification state.

batch_verify delegates to this method, so the same rules apply in bulk.

Source

pub fn batch_verify( &self, proofs: &[ZkpProof], publics: &[&[u8]], ) -> Result<bool, Error>

Batch verify multiple proofs

§Arguments
  • proofs - The proofs to verify
  • publics - The public statements for each proof
§Returns

true if all proofs are valid, false otherwise

Trait Implementations§

Source§

impl Default for ZkpVerifier

Source§

fn default() -> ZkpVerifier

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<S, T> Upcast<T> for S
where T: UpcastFrom<S> + ?Sized, S: ?Sized,

Source§

fn upcast(&self) -> &T
where Self: ErasableGeneric, T: Sized + ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider ref type within the Wasm bindgen generics type system. Read more
Source§

fn upcast_into(self) -> T
where Self: Sized + ErasableGeneric, T: Sized + ErasableGeneric<Repr = Self::Repr>,

Perform a zero-cost type-safe upcast to a wider type within the Wasm bindgen generics type system. Read more
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more