.github
remove 1.12 workflowtests
add zkcrypto test vectors.gitignore
change package namearithmetic_decl.go
fix wfp2 mul for non adx x86arithmetic_fallback.go
use latest goffbls12_381_test.go
add wide operationsbls12_381.go
apply linterfield_element_test.go
add wide operationsfield_element.go
add wide operationsfp_arithmetic_x86.s
support non x86 archfp_fallback.go
fix wfp2 mul for non adx x86fp_test.go
add wide operationsfp.go
fix wfp2 mul for non adx x86fp12.go
nested miller loopfp2_arithmetic_x86.s
fix wfp2 mul for non adx x86fp2.go
nested miller loopfp6.go
add wide operationsfr_arithmetic_x86.s
add wide operationsfr_fallback.go
support non x86 archfr_test.go
batch inversion in Frfr.go
batch inversion in Frg1_test.go
faster subgroup checkg1.go
tidyg2_test.go
add fp2 asmg2.go
add wide operationsglv_test.go
tidyglv.go
tidygo.mod
tidygo.sum
tidygt.go
add wide operationshash_to_field.go
Changes made during go-ethereum PR progress (#14)isogeny.go
unroll g2 isogeny mappingLICENSE
add licensepairing_test.go
add miller loop and final exp benchmarkspairing.go
nested miller loopREADME.md
nested miller loopswu.go
add wide operationsutils.go
Changes made during go-ethereum PR progress (#14)wnaf_test.go
add g1 glv multiplicationwnaf.go
change setter function namesHigh Speed BLS12-381 Implementation in Go
Pairing Instance
A Group instance or a pairing engine instance is not suitable for concurrent processing since an instance has its own preallocated memory for temporary variables. A new instance must be created for each thread.
Base Field
x86 optimized base field is generated with kilic/fp and for native go is generated with goff. Generated codes are slightly edited in both for further requirements.
Scalar Field
Both standart big.Int module and x86 optimized implementation are available for scalar field elements and opereations.
Serialization
Point serialization is in line with zkcrypto library.
Hashing to Curve
Hashing to curve implementations for both G1 and G2 follows _XMD:SHA-256_SSWU_RO_ and _XMD:SHA-256_SSWU_NU_ suites as defined in v7 of irtf hash to curve draft.
Benchmarks
on 2.3 GHz i7
BenchmarkPairing 667720 ns/op