nubls 0.1.0

A BLS (Boneh-Lynn-Shacham) signature implementation written in pure Rust that offers support for threshold signatures with Shamir's Secret Sharing, and a Proxy Re-Signature (PRS) algorithm designed by NuCypher called Penumbral.
Documentation
  • Coverage
  • 83.33%
    15 out of 18 items documented0 out of 0 items with examples
  • Size
  • Source code size: 35.91 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 4.32 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 25s Average build duration of successful builds.
  • all releases: 25s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Repository
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • tuxxy

NuBLS

Crates.io Crates.io GitHub Workflow Status Discord

The nubls crate is a Rust implentation of BLS signatures on BLS12-381. This implementation aims to follow the IETF Draft BLS Specification.

This library aims to be no_std ready, but isn't quite there yet.

Documentation

See the documentation on crates.io!

Penumbral Proxy Re-Signature

Penumbral is NuCypher's Threshold Proxy Re-Signature (PRS) algorithm.

Proxy Re-Signature is a type of algorithm that allows signatures under one key to be transformed into signatures under another key by a third party who uses a "Re-Signing key". This ensures that the third party never has access to either private key.

The Penumbral paper is a work-in-progress, but will be published shortly.

For usage details, see the tests here -- https://github.com/nucypher/NuBLS/blob/master/rust-nubls/src/keys.rs#L484

Signing

For usage details, see the tests here -- https://github.com/nucypher/NuBLS/blob/master/rust-nubls/src/keys.rs#L399

Threshold Splitting/Recovery

For usage details, see the tests here -- https://github.com/nucypher/NuBLS/blob/master/rust-nubls/src/keys.rs#L321

Warning

As this library is a work-in-progress, there are some missing API details. One of these is a rust-native hash-to-curve implementation. As such, it's not presently possible to hash messages natively with this library, and another library must be used.