/anoncreds-clsignatures-rs

Primary LanguageRustApache License 2.0Apache-2.0

CL Signatures Rust

CL Signatures, cryptographic signatures with efficient protocols are a form of digital signature invented by Jan Camenisch and Anna Lysyanskaya (papers: 2001, 2003, 2004). In addition to being secure digital signatures, they need to allow for the efficient implementation of two protocols:

  • A protocol for computing a digital signature in a secure two-party computation protocol.
  • A protocol for proving knowledge of a digital signature in a zero-knowledge protocol.

In applications, the first protocol allows a signer to possess the signing key to issue a signature to a user (the signature owner) without learning all the messages being signed or the complete signature.

The second protocol allows the signature owner to prove that he has a signature on many messages without revealing the signature and only a (possibly) empty subset of the messages.

CL Signatures are the basis of Hyperledger AnonCreds v1.0 and the implementation in this repository is used in the Hyperledger AnonCreds Rust implementation.

This implementation of CL Signatures was initially in the Hyperledger Ursa project.

Rust Crate

This crate implements a version of the CL signature scheme.

To start, all that is needed is to add this to your Cargo.toml.

[dependencies]
anoncreds-clsignatures = "0.1"

For an example of using this crate, see the Hyperledger AnonCreds Rust implementation repository.