ZKPDL and Cashlib
ZKPDL (Zero-Knowledge Proof Description Language) is a high-level
language designed for specifying cryptographic operations and in
particular zero-knowledge proofs. Its corresponding interpreter will,
given a program and a set of inputs, output a proof when acting as the
prover and verify a proof when acting as the verifier.
The Cashlib library provides functionality for endorsed e-cash and
fair exchange protocols. Classes are provided for withdrawing,
spending, and depositing e-coins, as well as for bartering for files
using an e-coin only as a placeholder. Resolution protocols are
provided as well.
For a detailed description of this software please see our paper in
USENIX Security 2010:
Pseudocode descriptions of the cryptographic protocols used are
available in the "doc/pseudocodes" directory.
A short manual describing our language syntax can also be found in the
These documents are still under development and should improve in the
Many example programs are available in the "src/ZKP/examples" directory.
We would love to hear about your interest in ZKPDL and Cashlib. Feel
free to contact us if you have any questions or comments!
Chris Erway <email@example.com>
Sarah Meiklejohn <firstname.lastname@example.org>
The Brownie Points project
ZKPDL & cashlib: A language-based system for zero-knowledge proofs and electronic cash (e-cash).