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
# NuBLS
![Crates.io](https://img.shields.io/crates/v/nubls)
![Crates.io](https://img.shields.io/crates/l/nubls)
![GitHub Workflow Status](https://img.shields.io/github/workflow/status/nucypher/nubls/rust)
![Discord](https://img.shields.io/discord/411401661714792449)

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.