kyber: Index | Files

package bn256

import ""

Package bn256 implements a particular bilinear group.

Bilinear groups are the basis of many of the new cryptographic protocols that have been proposed over the past decade. They consist of a triplet of groups (G₁, G₂ and GT) such that there exists a function e(g₁ˣ,g₂ʸ)=gTˣʸ (where gₓ is a generator of the respective group). That function is called a pairing function.

This package specifically implements the Optimal Ate pairing over a 256-bit Barreto-Naehrig curve as described in Its output is compatible with the implementation described in that paper.

This package previously claimed to operate at a 128-bit security level. However, recent improvements in attacks mean that is no longer true. See


Package Files

constants.go curve.go gfp.go gfp12.go gfp2.go gfp6.go gfp_decl.go group.go optate.go point.go suite.go twist.go


var Order = bigFromBase10("65000549695646603732796438742359905742570406053903786389881062969044166799969")

Order is the number of elements in both G₁ and G₂: 36u⁴+36u³+18u²+6u+1. order-1 = (2**5) * 3 * 5743 * 280941149 * 130979359433191 * 491513138693455212421542731357 * 6518589491078791937

type Suite Uses

type Suite struct {
    // contains filtered or unexported fields

Suite implements the pairing.Suite interface for the BN256 bilinear pairing.

func NewSuite Uses

func NewSuite() *Suite

NewSuite generates and returns a new BN256 pairing suite.

func NewSuiteG1 Uses

func NewSuiteG1() *Suite

NewSuiteG1 returns a G1 suite.

func NewSuiteG2 Uses

func NewSuiteG2() *Suite

NewSuiteG2 returns a G2 suite.

func NewSuiteGT Uses

func NewSuiteGT() *Suite

NewSuiteGT returns a GT suite.

func NewSuiteRand Uses

func NewSuiteRand(rand cipher.Stream) *Suite

NewSuiteRand generates and returns a new BN256 suite seeded by the given cipher stream.

func (*Suite) G1 Uses

func (s *Suite) G1() kyber.Group

G1 returns the group G1 of the BN256 pairing.

func (*Suite) G2 Uses

func (s *Suite) G2() kyber.Group

G2 returns the group G2 of the BN256 pairing.

func (*Suite) GT Uses

func (s *Suite) GT() kyber.Group

GT returns the group GT of the BN256 pairing.

func (Suite) Hash Uses

func (c Suite) Hash() hash.Hash

Hash returns a newly instantiated sha256 hash function.

func (Suite) New Uses

func (c Suite) New(t reflect.Type) interface{}

New implements the kyber.Encoding interface.

func (*Suite) Pair Uses

func (s *Suite) Pair(p1 kyber.Point, p2 kyber.Point) kyber.Point

Pair takes the points p1 and p2 in groups G1 and G2, respectively, as input and computes their pairing in GT.

func (Suite) RandomStream Uses

func (c Suite) RandomStream() cipher.Stream

RandomStream returns a cipher.Stream which corresponds to a key stream from crypto/rand.

func (Suite) Read Uses

func (c Suite) Read(r io.Reader, objs ...interface{}) error

Read is the default implementation of kyber.Encoding interface Read.

func (Suite) String Uses

func (c Suite) String() string

String returns a recognizable string that this is a combined suite.

func (Suite) Write Uses

func (c Suite) Write(w io.Writer, objs ...interface{}) error

Write is the default implementation of kyber.Encoding interface Write.

func (Suite) XOF Uses

func (c Suite) XOF(seed []byte) kyber.XOF

XOF returns a newlly instantiated blake2xb XOF function.

Package bn256 imports 15 packages (graph). Updated 2020-07-24. Refresh now. Tools for package owners.