sw_bls24315

package
v0.6.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 28, 2022 License: Apache-2.0 Imports: 9 Imported by: 0

Documentation

Overview

Package sw (short weierstrass)

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func DoubleAndAddStep

func DoubleAndAddStep(api frontend.API, p1, p2 *G2Affine, ext fields_bls24315.Extension) (G2Affine, LineEvaluation, LineEvaluation)

DoubleAndAddStep

func MillerLoop

func MillerLoop(api frontend.API, P G1Affine, Q G2Affine, res *fields_bls24315.E24, pairingInfo PairingContext) *fields_bls24315.E24

MillerLoop computes the miller loop

func TripleMillerLoop

func TripleMillerLoop(api frontend.API, P [3]G1Affine, Q [3]G2Affine, res *fields_bls24315.E24, pairingInfo PairingContext) *fields_bls24315.E24

TripleMillerLoop computes the product of three miller loops

Types

type G1Affine

type G1Affine struct {
	X, Y frontend.Variable
}

G1Affine point in affine coords

func (*G1Affine) AddAssign

func (p *G1Affine) AddAssign(api frontend.API, p1 G1Affine) *G1Affine

AddAssign adds p1 to p using the affine formulas with division, and return p

func (*G1Affine) Assign

func (p *G1Affine) Assign(p1 *bls24315.G1Affine)

Assign a value to self (witness assignment)

func (*G1Affine) Double

func (p *G1Affine) Double(api frontend.API, p1 G1Affine) *G1Affine

Double double a point in affine coords

func (*G1Affine) DoubleAndAdd

func (p *G1Affine) DoubleAndAdd(api frontend.API, p1, p2 *G1Affine) *G1Affine

DoubleAndAdd computes 2*p1+p in affine coords

func (*G1Affine) FromJac

func (p *G1Affine) FromJac(api frontend.API, p1 G1Jac) *G1Affine

FromJac sets p to p1 in affine and returns it

func (*G1Affine) MustBeEqual

func (p *G1Affine) MustBeEqual(api frontend.API, other G1Affine)

MustBeEqual constraint self to be equal to other into the given constraint system

func (*G1Affine) Neg

func (p *G1Affine) Neg(api frontend.API, p1 G1Affine) *G1Affine

Neg outputs -p

func (*G1Affine) ScalarMul

func (P *G1Affine) ScalarMul(api frontend.API, Q G1Affine, s interface{}) *G1Affine

ScalarMul sets P = [s] Q and returns P.

The method chooses an implementation based on scalar s. If it is constant, then the compiled circuit depends on s. If it is variable type, then the circuit is independent of the inputs.

func (*G1Affine) Select

func (p *G1Affine) Select(api frontend.API, b frontend.Variable, p1, p2 G1Affine) *G1Affine

Select sets p1 if b=1, p2 if b=0, and returns it. b must be boolean constrained

type G1Jac

type G1Jac struct {
	X, Y, Z frontend.Variable
}

G1Jac point in Jacobian coords

func (*G1Jac) AddAssign

func (p *G1Jac) AddAssign(api frontend.API, p1 G1Jac) *G1Jac

AddAssign adds 2 point in Jacobian coordinates p=p, a=p1

func (*G1Jac) Assign

func (p *G1Jac) Assign(p1 *bls24315.G1Jac)

Assign a value to self (witness assignment)

func (*G1Jac) DoubleAssign

func (p *G1Jac) DoubleAssign(api frontend.API) *G1Jac

DoubleAssign doubles the receiver point in jacobian coords and returns it

func (*G1Jac) MustBeEqual

func (p *G1Jac) MustBeEqual(api frontend.API, other G1Jac)

MustBeEqual constraint self to be equal to other into the given constraint system

func (*G1Jac) Neg

func (p *G1Jac) Neg(api frontend.API, p1 G1Jac) *G1Jac

Neg outputs -p

type G2Affine

type G2Affine struct {
	X, Y fields_bls24315.E4
}

G2Affine point in affine coords

func (*G2Affine) AddAssign

func (p *G2Affine) AddAssign(api frontend.API, p1 *G2Affine, ext fields_bls24315.Extension) *G2Affine

AddAssign add p1 to p and return p

func (*G2Affine) Assign

func (p *G2Affine) Assign(p1 *bls24315.G2Affine)

Assign a value to self (witness assignment)

func (*G2Affine) Double

func (p *G2Affine) Double(api frontend.API, p1 *G2Affine, ext fields_bls24315.Extension) *G2Affine

Double compute 2*p1, assign the result to p and return it Only for curve with j invariant 0 (a=0).

func (*G2Affine) DoubleAndAdd

func (p *G2Affine) DoubleAndAdd(api frontend.API, p1, p2 *G2Affine, ext fields_bls24315.Extension) *G2Affine

DoubleAndAdd computes 2*p1+p2 in affine coords

func (*G2Affine) MustBeEqual

func (p *G2Affine) MustBeEqual(api frontend.API, other G2Affine)

MustBeEqual constraint self to be equal to other into the given constraint system

func (*G2Affine) Neg

func (p *G2Affine) Neg(api frontend.API, p1 *G2Affine) *G2Affine

Neg outputs -p

type G2Jac

type G2Jac struct {
	X, Y, Z fields_bls24315.E4
}

G2Jac point in Jacobian coords

func (*G2Jac) AddAssign

func (p *G2Jac) AddAssign(api frontend.API, p1 *G2Jac, ext fields_bls24315.Extension) *G2Jac

AddAssign adds 2 point in Jacobian coordinates p=p, a=p1

func (*G2Jac) Assign

func (p *G2Jac) Assign(p1 *bls24315.G2Jac)

Assign a value to self (witness assignment)

func (*G2Jac) Double

func (p *G2Jac) Double(api frontend.API, p1 *G2Jac, ext fields_bls24315.Extension) *G2Jac

Double doubles a point in jacobian coords

func (*G2Jac) MustBeEqual

func (p *G2Jac) MustBeEqual(api frontend.API, other G2Jac)

MustBeEqual constraint self to be equal to other into the given constraint system

func (*G2Jac) Neg

func (p *G2Jac) Neg(api frontend.API, p1 *G2Jac) *G2Jac

Neg outputs -p

func (*G2Jac) ToProj

func (p *G2Jac) ToProj(api frontend.API, p1 *G2Jac, ext fields_bls24315.Extension) *G2Jac

ToProj sets p to p1 in projective coords and return it

type G2Proj

type G2Proj struct {
	X, Y, Z fields_bls24315.E4
}

type LineEvaluation

type LineEvaluation struct {
	R0, R1 fields_bls24315.E4
}

LineEvaluation represents a sparse Fp12 Elmt (result of the line evaluation)

type PairingContext

type PairingContext struct {
	AteLoop     uint64 // stores the ate loop
	Extension   fields_bls24315.Extension
	BTwistCoeff fields_bls24315.E4
}

PairingContext contains useful info about the pairing

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL