https://github.com/hyperledger/indy-blssignatures-rs
BLS signature support for Hyperledger Indy
https://github.com/hyperledger/indy-blssignatures-rs
indy
Last synced: about 1 month ago
JSON representation
BLS signature support for Hyperledger Indy
- Host: GitHub
- URL: https://github.com/hyperledger/indy-blssignatures-rs
- Owner: hyperledger
- License: apache-2.0
- Created: 2023-04-28T16:26:53.000Z (about 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-30T11:15:56.000Z (8 months ago)
- Last Synced: 2025-05-01T09:05:25.931Z (about 1 month ago)
- Topics: indy
- Language: Rust
- Homepage:
- Size: 88.9 KB
- Stars: 1
- Watchers: 16
- Forks: 6
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
README
# BLS Signatures Rust
A BLS digital signature—also known as [Boneh–Lynn–Shacham (BLS)]—is a
cryptographic signature scheme which allows a user to verify that a signer is
authentic.[Boneh–Lynn–Shacham (BLS)]: https://www.semanticscholar.org/paper/Short-Signatures-from-the-Weil-Pairing-Boneh-Lynn/3c0c82f42172bc1da4acc36b656d12351bf53dae
The scheme uses a bilinear pairing for verification, and signatures are elements
of an elliptic curve group. Working in an elliptic curve group provides some
defense against index calculus attacks (with the caveat that such attacks are
still possible in the target group $G_{T}$ of the pairing), allowing shorter
signatures than Full Domain Hash signatures for a similar level of security.Signatures produced by the BLS signature scheme are often referred to as short
signatures, BLS short signatures, or simply BLS signatures. The signature
scheme is provably secure (the scheme is existentially unforgeable under
adaptive chosen-message attacks) in the random oracle model assuming the
intractability of the computational Diffie–Hellman problem in a gap
Diffie–Hellman group.## Rust Crate
This crate implements a version of the BLS signature scheme. The implementation
doesn't match up with the [BLS signatures specification at the IETF]. This
implementation uses the BN254 curve defined here:
[https://neuromancer.sk/std/bn/bn254](https://neuromancer.sk/std/bn/bn254)
(sometimes called BN254N), and should not to be confused with the one used in
Ethereum.[BLS signatures specification at the IETF]: https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-bls-signature-05
To start, all that is needed is to add this to your `Cargo.toml`.
```toml
[dependencies]
indy-blssignatures = "0.1"
```This implementation of BLS Signatures was initially in the [Hyperledger Ursa]
project and is used in the [Hyperledger Indy Node] and [Hyperledger Indy Plenum]
repositories/artifacts.A Python wrapper for this crate can be found in the [indy-bls-wrapper-python] repository.
[Hyperledger Ursa]: https://github.com/hyperledger/ursa
[Hyperledger Indy Node]: https://github.com/hyperledger/indy-node
[Hyperledger Indy Plenum]: https://github.com/hyperledger/indy-plenum
[indy-bls-wrapper-python]: https://github.com/hyperledger/indy-bls-wrapper-python