Categorygithub.com/kilic/bls12-381
modulepackage
0.1.0
Repository: https://github.com/kilic/bls12-381.git
Documentation: pkg.go.dev

# README

High 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  882553 ns/op

# Functions

NewEngine creates new pairing engine insteace.
No description provided by the author
NewG1 constructs a new G1 instance.
NewG2 constructs a new G2 instance.
NewGT constructs new target group instance.

# Variables

No description provided by the author
No description provided by the author

# Structs

Engine is BLS12-381 elliptic curve pairing engine.
G1 is struct for G1 group.
G2 is struct for G2 group.
GT is type for target multiplicative group GT.

# Type aliases

E is type for target group element.
No description provided by the author
PointG1 is type for point in G1 and used for both Affine and Jacobian point representation.
PointG2 is type for point in G2 and used for both affine and Jacobian representation.