# NuBLS




The `nubls` crate is a Rust implentation of BLS signatures on BLS12-381.
This implementation aims to follow [the IETF Draft BLS Specification](https://tools.ietf.org/html/draft-irtf-cfrg-bls-signature-02).
This library aims to be `no_std` ready, but isn't quite there yet.
## Documentation
[See the documentation on crates.io!](https://docs.rs/nubls)
### 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.