mirror of
https://github.com/protolambda/bls12-381-util.git
synced 2026-10-22 19:09:03 +00:00
BLS 12-381 utils, POP signature scheme, pure Go (use at own risk).
- Go 99.7%
- Makefile 0.3%
|
History
|
||
|---|---|---|
| .github/workflows | ||
| .gitignore | ||
| go.mod | ||
| go.sum | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
| sigagg.go | ||
| sigagg_test.go | ||
| signatures.go | ||
| signatures_test.go | ||
| sigset.go | ||
| sigset_bench_test.go | ||
| sigset_test.go | ||
BLS 12-381 util
BLS 12-381 util (BLSU, "bless you") is a collection of utils to work with BLS 12-381 in Go.
Warning: these wrapper utils have not been audited.
This package wraps github.com/kilic/bls12-381,
a pure Go implementation of BLS, no CGO involved, no special dependencies.
Instead, this BLS implementation uses Go-assembly to optimize the lower level computations.
audit info.
This package implements the BLS_SIG_BLS12381G2_XMD:SHA-256_SSWU_RO_POP_ ciphersuite.
TODO: not safe for 32 bit usage: kilic BLS Fr.FromBytes->Fr.fromBytes->Fr.fromBig assumes word size is 64 bits.
Utils
- Eth2 Typing
- Pubkeys:
PointG1wrapper - Signatures:
PointG2wrapper - Secret keys:
Frwrapper - Signatures sets: see below
- Pubkeys:
- Draft 4 for signatures
- Hash to curve, from
kilic/bls12-381:BLS12381G2_XMD:SHA-256_SSWU_RO_ - Schemes:
- Core operations:
KeyGen(TODO)SkToPk, implemented as part of Pubkey deserialization, except identity-pubkey check (checked in verify functions instead).KeyValidateCoreSignCoreVerifyAggregateCoreAggregateVerify
Basic scheme, not supportedMessage Augmentation scheme, not supportedPOP, Proof of Possession scheme (used in Eth2):PopProve, not supported, assumed through application-specific implementationPopVerify, not supported, assumed through application-specific implementationFastAggregateVerify
- Core operations:
- Hash to curve, from
- Eth2 additions
eth2_aggregate_pubkeys:AggregatePubkeyseth2_fast_aggregate_verify:Eth2FastAggregateVerify
- Signature sets: verify non-singular set of signatures and its respective pubkeys and messages
Testing
- Unit tests
SecretKeydeserialization/serializationPubkeydeserialization/serialization (with KeyValidate routine, except identity-pubkey check)Signaturedeserialization/serializationSkToPk(TODO: expand)SignatureSetVerify
- Eth2 BLS tests
SignAggregateVerifyAggregateVerifyFastAggregateVerifyAggregatePubkeysEth2FastAggregateVerify
- Eth2 spec tests
- Integrate into ZRNT, run full eth2 test-suite
- standard tests (if any)
- TODO, need standard signature-scheme test vectors (Work in progress)
- Run Hash-to-curve test-vectors on
kilic/bls12-381internals
License
MIT, see LICENSE file.