This repository contains compiled static library of https://github.com/herumi/bls with BLS_ETH=1
.
- SecretKey; Fr
- PublicKey; G1
- Sign; G2
- 2020/May/22
SignHashWithDomain
,VerifyHashWithDomain
,VerifyAggregateHashWithDomain
are removed. - 2020/May/15
EthModeDraft07
is added for draft-07. - 2020/Apr/20
EthModeDraft06
is default. CallSetETHmode(EthModeDraft05)
to use older evrsion. - 2020/Mar/26 The signature value in
SetETHmode(2)
has changed because of changing DST in hash-to-curve function. - 2020/Mar/17 This library supports eth2.0 functions. But the spec of hash-to-curve function may be changed.
SetETHmode(EthModeDraft05)
supports draft-irtf-cfrg-hash-to-curve-05, which will be removed in the near future.SetETHmode(EthModeFraft06)
supports draft-irtf-cfrg-hash-to-curve-06 at March 2020. But it has not yet fully tested.
Init as the followings:
Init(BLS12_381)
SetETHmode(1) // or SetETHmode(2)
then, you can use the following functions.
bls-eth-go-binary | eth2.0 spec name |
---|---|
SecretKey::SignByte | Sign |
PublicKey::VerifyByte | Verify |
Sign::Aggregate | Aggregate |
Sign::FastAggregateVerify | FastAggregateVerify |
Sign::AggregateVerifyNoCheck | AggregateVerify |
The size of message must be 32 byte.
Check functions:
- VerifySignatureOrder ; make
deserialize
check the correctness of the order - Sign::IsValidOrder ; check the correctness of the order
- VerifyPublicKeyOrder ; make
deserialize
check the correctness of the order - PublicKey::IsValidOrder ; check the correctness of the order
- AreAllMsgDifferent ; check that all messages are different each other
go get github.com/herumi/bls-eth-go-binary/
go run examples/sample.go
The following steps are not necessary if you use compiled binary in this repository.
mkdir work
cd work
git clone https://github.com/herumi/mcl
git clone https://github.com/herumi/bls
git clone https://github.com/herumi/bls-eth-go-binary
cd bls-eth-go-binary
make CXX=clang++
clang generates better binary than gcc.
make android
make ios
#define BLS_ETH
#include <mcl/bn_c384_256.h>
#include <bls/bls.h>
MITSUNARI Shigeo(herumi@nifty.com)