Skip to main content

Crate chaum_pedersen

Crate chaum_pedersen 

Source
Expand description

§Chaum-Pedersen Zero-Knowledge Protocol

Prove knowledge of a discrete logarithm x with y1 = g^x and y2 = h^x without revealing x, over Ristretto255. Supports interactive and non-interactive (Fiat-Shamir) variants, batch verification, and an optional gRPC authentication service.

§Quick start

use chaum_pedersen::{
    OsRng, Parameters, Prover, Scalar, Statement, Transcript, Verifier, Witness,
};

let params = Parameters::new();
let mut rng = OsRng;

let x = Scalar::random(&mut rng);
let witness = Witness::new(x).unwrap();
let statement = Statement::from_witness(&params, &witness);

let mut transcript = Transcript::new();
let proof = Prover::new(params.clone(), witness)
    .prove_with_transcript(&mut rng, &mut transcript)
    .unwrap();

let mut verify_transcript = Transcript::new();
let verifier = Verifier::new(params, statement);
assert!(verifier.verify_with_transcript(&proof, &mut verify_transcript).is_ok());

Bind each proof to a unique transcript context to prevent replay; witnesses and nonces are zeroized on drop.

§Feature flags

  • server: server-side state management and the gRPC service.
  • client: the gRPC client.
  • grpc: gRPC definitions shared by server and client.

Re-exports§

pub use error::Error;
pub use primitives::CIPHERSUITE;
pub use primitives::Commitment;
pub use primitives::Element;
pub use primitives::Parameters;
pub use primitives::Proof;
pub use primitives::Response;
pub use primitives::Scalar;
pub use primitives::Statement;
pub use primitives::Transcript;
pub use primitives::Witness;
pub use prover::Prover;
pub use verifier::BatchVerifier;
pub use verifier::Verifier;

Modules§

error
Error types for the Chaum-Pedersen protocol.
primitives
Core cryptographic primitives: Ristretto255 group operations, gadgets, and transcript.
prover
Prover (client) implementation for the Chaum-Pedersen protocol.
verifier
Verifier (server) implementation: proof validation plus server state, config, and gRPC.

Structs§

OsRng
A random number generator that retrieves randomness from the operating system.

Type Aliases§

Result
Result type for Chaum-Pedersen operations.