bls
bls
cargo install bls
bls

bls

Rust crate for BLS signatures

by Jack Grigg

0.0.0 (see all)License:MIT/Apache-2.0
cargo install bls
Readme

bls Crates.io

This is a Rust crate for making BLS (Boneh-Lynn-Shacham) signatures. It currently supports the BLS12-381 (Barreto-Lynn-Scott) (yes, I know) construction.

Documentation

Bring the bls crate into your project just as you normally would.

use bls::Keypair;
use pairing::bls12_381::Bls12;

let keypair = Keypair::<Bls12>::generate(&mut rng);
let message = "Some message";
let sig = keypair.sign(&message.as_bytes());
assert_eq!(keypair.verify(&message.as_bytes(), &sig), true);

Aggregate signatures

use bls::{AggregateSignature, Keypair};
use pairing::bls12_381::Bls12;

let mut inputs = Vec::new();
let mut asig = AggregateSignature::new();

let keypair1 = Keypair::<Bls12>::generate(&mut rng);
let message1 = "Some unique message";
let sig1 = keypair1.sign(&message1.as_bytes());
inputs.push((keypair1.public, message1));
asig.aggregate(&sig1);

let keypair2 = Keypair::<Bls12>::generate(&mut rng);
let message2 = "Some other unique message";
let sig2 = keypair2.sign(&message2.as_bytes());
inputs.push((keypair2.public, message2));
asig.aggregate(&sig2);

assert_eq!(
    asig.verify(&inputs.iter()
        .map(|&(ref pk, ref m)| (pk, m.as_bytes()))
        .collect()),
    true
);

Security Warnings

This library does not make any guarantees about constant-time operations, memory access patterns, or resistance to side-channel attacks.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

GitHub Stars

26

LAST COMMIT

4yrs ago

MAINTAINERS

1

CONTRIBUTORS

2

OPEN ISSUES

3

OPEN PRs

0
VersionTagPublished
0.0.0
4yrs ago
No alternatives found
No tutorials found
Add a tutorial