This repository is home to a foreign function interface (FFI) wrapper around the Rust based bbs crate maintained by the Hyperledger Ursa project.
BBS+ Signatures are a digital signature algorithm originally born from the work on Short group signatures by Boneh, Boyen, and Shachum which was later improved on in Constant-Size Dynamic k-TAA as BBS+ and touched on again in section 4.3 in Anonymous Attestation Using the Strong Diffie Hellman Assumption Revisited .
BBS+ Signatures require a pairing-friendly curve, this library includes support for BLS12-381.
BBS+ Signatures allow for multi-message signing whilst producing a single output signature. With a BBS signature, a proof of knowledge based proof can be produced where only some of the originally signed messages are revealed at the discretion of the prover.
Every release of this repository publishes a new github release including publishing the platform specific artifacts required to run the library in different environments. See the release process for more details on this process
This repository makes use of Yarn to manage the dependencies related to the development environment
To install the development dependencies run
yarn install --frozen-lockfile
To build the library for all available platforms run
yarn build
.NET C# wrapper
./wrappers/dotnet
Java wrapper
./wrappers/java
Objective-C wrapper
./wrappers/obj-c
Python wrapper
./wrappers/python
Each wrapper has individual documentation:
├── docs
│ └─ {file_name.md}
│
│── scripts # Bash scripts for building static/dynamic rust libs
│── src # Rust Bbs Signatures wrapper
├── wrappers # Individual wrapper source code
│ └─ {wrapper_name}
│ ├── README.md
│ └─ {src files}
│
├── README.md
└── CHANGELOG.md
Read our contributing guide to learn about our development process.