bls12381ietf

bls12_381_ietf is a crate lib that implements the IETF BLS draft standard v0 with hash-to-curve v5 as per the inter-blockchain standardization agreement. The BLS standards specify different ciphersuites which each have different functionality to accommodate various use cases. The following ciphersuites are availible from this library:

WARNING: This is a proof-of-concept prototype, and in particular has not been reviewed or audited. Use at your own risk.

Security Warnings

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

Pending tasks

Commands

Examples

`` $ cargo run --example g2basic Compiling bls12_381_ietf v0.1.0 (/Users/edu/bls/bls12_381_ietf) Finished dev [unoptimized + debuginfo] target(s) in 1.46s Runningtarget/debug/examples/g2basic` Public Key: 81d84ab98c774e9f4f18f17d968dbb0ada8fbb6210ac48e372813ac5f7b67f188ddf11dcd71644c7226cab56869ba6a4 Message: edu@dappnode.io Signature: b3731f23c92afafc4d511

$ cargo run --example g2messageaugmentation Compiling bls12381ietf v0.1.0 (/Users/edu/bls/bls12381ietf) Finished dev [unoptimized + debuginfo] target(s) in 0.62s Running target/debug/examples/g2messageaugmentation Public Key: 8bb1ad17ca77078a500ef0780c3c3a5f0dc26290b0bfb21d2c76f1a827bed8764d7f32332dc2db3084b1faea29134ea7 Message: edu@dappnode.io!!! Signature: b4352d55bf8e40afb0dbad2bb904dd080b74e3840850bb799a77d8c54100b652105d66a0756cb56fd4ceadc4f84863d00a6b5a839f6a275d45f569f5bc7a796089daf565229359cd676381a0926a6369ed19ce3887191c0809c1368abd68162d Signature verified correctly! ```

Tests

``` $ cargo test Compiling bls12381ietf v0.1.0 (/Users/edu/bls/bls12381ietf) Finished test [unoptimized + debuginfo] target(s) in 1.63s Running target/debug/deps/bls12381ietf-92da16f66df5b352

running 23 tests test optimizedswu::tests::testsgn0be ... ok test optimizedswu::tests::benchisomapg2 ... ok test optimizedswu::tests::testisomapg2 ... ok test optimizedswu::tests::benchsqrtdivisionfq2 ... ok test optimizedswu::tests::testsqrtdivisionfq2 ... ok test tests::benchtestprivtopub ... ok test optimizedswu::tests::benchoptimizedswug2 ... ok test optimizedswu::tests::testoptimizedswug2 ... ok test tests::benchkeygen ... ok test tests::testprivtopub ... ok test tests::testkeygen ... ok test tests::benchhashtog2 ... ok test tests::testsigng2basic ... ok test tests::testverifyg2messageaugmentationpanic ... ok test tests::benchsigng2basic ... ok test tests::testverifyg2basicpanic ... ok test tests::benchsigng2messageaugmentation ... ok test tests::testsigng2messageaugmentation ... ok test tests::testhashtog2 ... ok test tests::benchverifyg2basic ... ok test tests::benchverifyg2messageaugmentation ... ok test tests::testverifyg2messageaugmentation ... ok test tests::testverifyg2basic ... ok

test result: ok. 23 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out

Doc-tests bls12381ietf

running 0 tests

test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out ```

Benches

``` $ cargo bench Compiling bls12381ietf v0.1.0 (/Users/edu/bls/bls12381ietf) Finished bench [optimized] target(s) in 2.56s Running target/release/deps/bls12381ietf-29a9ffc0e2b8dcd3

running 23 tests test optimizedswu::tests::testisomapg2 ... ignored test optimizedswu::tests::testoptimizedswug2 ... ignored test optimizedswu::tests::testsgn0be ... ignored test optimizedswu::tests::testsqrtdivisionfq2 ... ignored test tests::testhashtog2 ... ignored test tests::testkeygen ... ignored test tests::testprivtopub ... ignored test tests::testsigng2messageaugmentation ... ignored test tests::testsigng2basic ... ignored test tests::testverifyg2messageaugmentation ... ignored test tests::testverifyg2messageaugmentationpanic ... ignored test tests::testverifyg2basic ... ignored test tests::testverifyg2basicpanic ... ignored test optimizedswu::tests::benchisomapg2 ... bench: 7,789 ns/iter (+/- 1,293) test optimizedswu::tests::benchoptimizedswug2 ... bench: 233,062 ns/iter (+/- 22,060) test optimizedswu::tests::benchsqrtdivisionfq2 ... bench: 222,143 ns/iter (+/- 19,289) test tests::benchhashtog2 ... bench: 3,571,612 ns/iter (+/- 332,016) test tests::benchkeygen ... bench: 258,906 ns/iter (+/- 18,152) test tests::benchsigng2messageaugmentation ... bench: 3,637,884 ns/iter (+/- 393,305) test tests::benchsigng2basic ... bench: 3,557,166 ns/iter (+/- 193,992) test tests::benchtestprivtopub ... bench: 17,496 ns/iter (+/- 1,461) test tests::benchverifyg2messageaugmentation ... bench: 9,779,860 ns/iter (+/- 2,000,297) test tests::benchverifyg2basic ... bench: 10,094,099 ns/iter (+/- 2,964,663)

test result: ok. 0 passed; 0 failed; 13 ignored; 10 measured; 0 filtered out ```

Reference implementations

Bibliography