Versions in this module Expand all Collapse all v1 v1.1.1 Dec 1, 2023 v1.1.0 Nov 30, 2023 Changes in this version + const Field4Bytes + const Field4Limbs + const Field6Bytes + const Field6Limbs + const WideField4Bytes + const WideField6Bytes + func Pow2k6(out, arg *[Field6Limbs]uint64, k int, arithmetic Field6Arithmetic) + func Pow6(out, base, exp *[Field6Limbs]uint64, params *Field6Params, ...) + type EllipticPoint4 struct + Arithmetic EllipticPoint4Arithmetic + Params *EllipticPoint4Params + X *Field4 + Y *Field4 + Z *Field4 + func (*EllipticPoint4) CMove(pt1, pt2 *EllipticPoint4, choice int) *EllipticPoint4 + func (p *EllipticPoint4) Add(lhs, rhs *EllipticPoint4) *EllipticPoint4 + func (p *EllipticPoint4) BigInt() (x, y *big.Int) + func (p *EllipticPoint4) Double(point *EllipticPoint4) *EllipticPoint4 + func (p *EllipticPoint4) Equal(rhs *EllipticPoint4) int + func (p *EllipticPoint4) Generator() *EllipticPoint4 + func (p *EllipticPoint4) GetX() *Field4 + func (p *EllipticPoint4) GetY() *Field4 + func (p *EllipticPoint4) Hash(bytes []byte, hasher *EllipticPointHasher) (*EllipticPoint4, error) + func (p *EllipticPoint4) Identity() *EllipticPoint4 + func (p *EllipticPoint4) IsIdentity() bool + func (p *EllipticPoint4) IsOnCurve() bool + func (p *EllipticPoint4) Mul(point *EllipticPoint4, scalar *Field4) *EllipticPoint4 + func (p *EllipticPoint4) Neg(point *EllipticPoint4) *EllipticPoint4 + func (p *EllipticPoint4) Random(reader io.Reader) (*EllipticPoint4, error) + func (p *EllipticPoint4) Set(clone *EllipticPoint4) *EllipticPoint4 + func (p *EllipticPoint4) SetBigInt(x, y *big.Int) (*EllipticPoint4, error) + func (p *EllipticPoint4) Sub(lhs, rhs *EllipticPoint4) *EllipticPoint4 + func (p *EllipticPoint4) SumOfProducts(points []*EllipticPoint4, scalars []*Field4) (*EllipticPoint4, error) + func (p *EllipticPoint4) ToAffine(clone *EllipticPoint4) *EllipticPoint4 + type EllipticPoint4Arithmetic interface + Add func(out, arg1, arg2 *EllipticPoint4) + Double func(out, arg *EllipticPoint4) + Hash func(out *EllipticPoint4, hasher *EllipticPointHasher, bytes, dst []byte) error + IsOnCurve func(arg *EllipticPoint4) bool + RhsEquation func(out, x *Field4) + ToAffine func(out, arg *EllipticPoint4) + type EllipticPoint4Params struct + A *Field4 + B *Field4 + BitSize int + Gx *Field4 + Gy *Field4 + Name string + type EllipticPoint6 struct + Arithmetic EllipticPoint6Arithmetic + Params *EllipticPoint6Params + X *Field6 + Y *Field6 + Z *Field6 + func (*EllipticPoint6) CMove(pt1, pt2 *EllipticPoint6, choice int) *EllipticPoint6 + func (p *EllipticPoint6) Add(lhs, rhs *EllipticPoint6) *EllipticPoint6 + func (p *EllipticPoint6) BigInt() (x, y *big.Int) + func (p *EllipticPoint6) Double(point *EllipticPoint6) *EllipticPoint6 + func (p *EllipticPoint6) Equal(rhs *EllipticPoint6) int + func (p *EllipticPoint6) Generator() *EllipticPoint6 + func (p *EllipticPoint6) GetX() *Field6 + func (p *EllipticPoint6) GetY() *Field6 + func (p *EllipticPoint6) Hash(bytes []byte, hasher *EllipticPointHasher) (*EllipticPoint6, error) + func (p *EllipticPoint6) Identity() *EllipticPoint6 + func (p *EllipticPoint6) IsIdentity() bool + func (p *EllipticPoint6) IsOnCurve() bool + func (p *EllipticPoint6) Mul(point *EllipticPoint6, scalar *Field6) *EllipticPoint6 + func (p *EllipticPoint6) Neg(point *EllipticPoint6) *EllipticPoint6 + func (p *EllipticPoint6) Random(reader io.Reader) (*EllipticPoint6, error) + func (p *EllipticPoint6) Set(clone *EllipticPoint6) *EllipticPoint6 + func (p *EllipticPoint6) SetBigInt(x, y *big.Int) (*EllipticPoint6, error) + func (p *EllipticPoint6) Sub(lhs, rhs *EllipticPoint6) *EllipticPoint6 + func (p *EllipticPoint6) SumOfProducts(points []*EllipticPoint6, scalars []*Field6) (*EllipticPoint6, error) + func (p *EllipticPoint6) ToAffine(clone *EllipticPoint6) *EllipticPoint6 + type EllipticPoint6Arithmetic interface + Add func(out, arg1, arg2 *EllipticPoint6) + Double func(out, arg *EllipticPoint6) + Hash func(out *EllipticPoint6, hasher *EllipticPointHasher, bytes, dst []byte) error + IsOnCurve func(arg *EllipticPoint6) bool + RhsEquation func(out, x *Field6) + ToAffine func(out, arg *EllipticPoint6) + type EllipticPoint6Params struct + A *Field6 + B *Field6 + BitSize int + Gx *Field6 + Gy *Field6 + Name string type EllipticPointHashName + const SHA384 type EllipticPointHasher + func EllipticPointHasherSha384() *EllipticPointHasher + type Field4 struct + Arithmetic Field4Arithmetic + Params *Field4Params + Value [Field4Limbs]uint64 + func (f *Field4) Add(lhs, rhs *Field4) *Field4 + func (f *Field4) BigInt() *big.Int + func (f *Field4) Bytes() [Field4Bytes]byte + func (f *Field4) CMove(lhs, rhs *Field4, choice int) *Field4 + func (f *Field4) Cmp(rhs *Field4) int + func (f *Field4) Double(a *Field4) *Field4 + func (f *Field4) Equal(rhs *Field4) int + func (f *Field4) Exp(base, exp *Field4) *Field4 + func (f *Field4) Invert(a *Field4) (*Field4, bool) + func (f *Field4) IsNonZero() int + func (f *Field4) IsOne() int + func (f *Field4) IsZero() int + func (f *Field4) Mul(lhs, rhs *Field4) *Field4 + func (f *Field4) Neg(input *Field4) *Field4 + func (f *Field4) New() *Field4 + func (f *Field4) Raw() [Field4Limbs]uint64 + func (f *Field4) Set(rhs *Field4) *Field4 + func (f *Field4) SetBigInt(bi *big.Int) *Field4 + func (f *Field4) SetBytes(input *[Field4Bytes]byte) (*Field4, error) + func (f *Field4) SetBytesWide(input *[WideField4Bytes]byte) *Field4 + func (f *Field4) SetLimbs(input *[Field4Limbs]uint64) *Field4 + func (f *Field4) SetOne() *Field4 + func (f *Field4) SetRaw(input *[Field4Limbs]uint64) *Field4 + func (f *Field4) SetUint64(rhs uint64) *Field4 + func (f *Field4) SetZero() *Field4 + func (f *Field4) Sqrt(a *Field4) (*Field4, bool) + func (f *Field4) Square(a *Field4) *Field4 + func (f *Field4) Sub(lhs, rhs *Field4) *Field4 + type Field4Arithmetic interface + Add func(out, arg1, arg2 *[Field4Limbs]uint64) + FromBytes func(out *[Field4Limbs]uint64, arg *[Field4Bytes]byte) + FromMontgomery func(out, arg *[Field4Limbs]uint64) + Invert func(wasInverted *int, out, arg *[Field4Limbs]uint64) + Mul func(out, arg1, arg2 *[Field4Limbs]uint64) + Neg func(out, arg *[Field4Limbs]uint64) + Selectznz func(out, arg1, arg2 *[Field4Limbs]uint64, choice int) + Sqrt func(wasSquare *int, out, arg *[Field4Limbs]uint64) + Square func(out, arg *[Field4Limbs]uint64) + Sub func(out, arg1, arg2 *[Field4Limbs]uint64) + ToBytes func(out *[Field4Bytes]byte, arg *[Field4Limbs]uint64) + ToMontgomery func(out, arg *[Field4Limbs]uint64) + type Field4Params struct + BiModulus *big.Int + Modulus [Field4Limbs]uint64 + R [Field4Limbs]uint64 + R2 [Field4Limbs]uint64 + R3 [Field4Limbs]uint64 + type Field6 struct + Arithmetic Field6Arithmetic + Params *Field6Params + Value [Field6Limbs]uint64 + func (f *Field6) Add(lhs, rhs *Field6) *Field6 + func (f *Field6) BigInt() *big.Int + func (f *Field6) Bytes() [Field6Bytes]byte + func (f *Field6) CMove(lhs, rhs *Field6, choice int) *Field6 + func (f *Field6) Cmp(rhs *Field6) int + func (f *Field6) Double(a *Field6) *Field6 + func (f *Field6) Equal(rhs *Field6) int + func (f *Field6) Exp(base, exp *Field6) *Field6 + func (f *Field6) Invert(a *Field6) (*Field6, bool) + func (f *Field6) IsNonZero() int + func (f *Field6) IsOne() int + func (f *Field6) IsZero() int + func (f *Field6) Mul(lhs, rhs *Field6) *Field6 + func (f *Field6) MulBy3b(arg *Field6) *Field6 + func (f *Field6) Neg(input *Field6) *Field6 + func (f *Field6) New() *Field6 + func (f *Field6) Raw() [Field6Limbs]uint64 + func (f *Field6) Set(rhs *Field6) *Field6 + func (f *Field6) SetBigInt(bi *big.Int) *Field6 + func (f *Field6) SetBytes(input *[Field6Bytes]byte) (*Field6, error) + func (f *Field6) SetBytesWide(input *[WideField6Bytes]byte) *Field6 + func (f *Field6) SetLimbs(input *[Field6Limbs]uint64) *Field6 + func (f *Field6) SetOne() *Field6 + func (f *Field6) SetRaw(input *[Field6Limbs]uint64) *Field6 + func (f *Field6) SetUint64(rhs uint64) *Field6 + func (f *Field6) SetZero() *Field6 + func (f *Field6) Sqrt(a *Field6) (*Field6, bool) + func (f *Field6) Square(a *Field6) *Field6 + func (f *Field6) Sub(lhs, rhs *Field6) *Field6 + type Field6Arithmetic interface + Add func(out, arg1, arg2 *[Field6Limbs]uint64) + FromBytes func(out *[Field6Limbs]uint64, arg *[Field6Bytes]byte) + FromMontgomery func(out, arg *[Field6Limbs]uint64) + Invert func(wasInverted *int, out, arg *[Field6Limbs]uint64) + Mul func(out, arg1, arg2 *[Field6Limbs]uint64) + Neg func(out, arg *[Field6Limbs]uint64) + Selectznz func(out, arg1, arg2 *[Field6Limbs]uint64, choice int) + Sqrt func(wasSquare *int, out, arg *[Field6Limbs]uint64) + Square func(out, arg *[Field6Limbs]uint64) + Sub func(out, arg1, arg2 *[Field6Limbs]uint64) + ToBytes func(out *[Field6Bytes]byte, arg *[Field6Limbs]uint64) + ToMontgomery func(out, arg *[Field6Limbs]uint64) + type Field6Params struct + BiModulus *big.Int + Modulus [Field6Limbs]uint64 + R [Field6Limbs]uint64 + R2 [Field6Limbs]uint64 + R3 [Field6Limbs]uint64 + type Sswu4Params struct + A [Field4Limbs]uint64 + B [Field4Limbs]uint64 + C1 [Field4Limbs]uint64 + C2 [Field4Limbs]uint64 + Z [Field4Limbs]uint64 + func (p *Sswu4Params) Osswu3mod4(u *Field4) (x, y *Field4) + type Sswu6Params struct + A [Field6Limbs]uint64 + B [Field6Limbs]uint64 + C1 [Field6Limbs]uint64 + C2 [Field6Limbs]uint64 + Z [Field6Limbs]uint64 + func (p *Sswu6Params) Osswu3mod4(u *Field6) (x, y *Field6) v1.0.2 Nov 8, 2023 v1.0.1 Nov 8, 2023 v1.0.0 Nov 6, 2023 Changes in this version + const FieldBytes + const FieldLimbs + const MaxDstLen + const WideFieldBytes + var OversizeDstSalt = []byte("H2C-OVERSIZE-DST-") + func ExpandMsgXmd(h *EllipticPointHasher, msg, domain []byte, outLen int) []byte + func ExpandMsgXof(h *EllipticPointHasher, msg, domain []byte, outLen int) []byte + func Pow(out, base, exp *[FieldLimbs]uint64, params *FieldParams, ...) + func Pow2k(out, arg *[FieldLimbs]uint64, k int, arithmetic FieldArithmetic) + type EllipticPoint struct + Arithmetic EllipticPointArithmetic + Params *EllipticPointParams + X *Field + Y *Field + Z *Field + func (*EllipticPoint) CMove(pt1, pt2 *EllipticPoint, choice int) *EllipticPoint + func (p *EllipticPoint) Add(lhs, rhs *EllipticPoint) *EllipticPoint + func (p *EllipticPoint) BigInt() (x, y *big.Int) + func (p *EllipticPoint) Double(point *EllipticPoint) *EllipticPoint + func (p *EllipticPoint) Equal(rhs *EllipticPoint) int + func (p *EllipticPoint) Generator() *EllipticPoint + func (p *EllipticPoint) GetX() *Field + func (p *EllipticPoint) GetY() *Field + func (p *EllipticPoint) Hash(bytes []byte, hasher *EllipticPointHasher) (*EllipticPoint, error) + func (p *EllipticPoint) Identity() *EllipticPoint + func (p *EllipticPoint) IsIdentity() bool + func (p *EllipticPoint) IsOnCurve() bool + func (p *EllipticPoint) Mul(point *EllipticPoint, scalar *Field) *EllipticPoint + func (p *EllipticPoint) Neg(point *EllipticPoint) *EllipticPoint + func (p *EllipticPoint) Random(reader io.Reader) (*EllipticPoint, error) + func (p *EllipticPoint) Set(clone *EllipticPoint) *EllipticPoint + func (p *EllipticPoint) SetBigInt(x, y *big.Int) (*EllipticPoint, error) + func (p *EllipticPoint) Sub(lhs, rhs *EllipticPoint) *EllipticPoint + func (p *EllipticPoint) SumOfProducts(points []*EllipticPoint, scalars []*Field) (*EllipticPoint, error) + func (p *EllipticPoint) ToAffine(clone *EllipticPoint) *EllipticPoint + type EllipticPointArithmetic interface + Add func(out, arg1, arg2 *EllipticPoint) + Double func(out, arg *EllipticPoint) + Hash func(out *EllipticPoint, hasher *EllipticPointHasher, bytes, dst []byte) error + IsOnCurve func(arg *EllipticPoint) bool + RhsEquation func(out, x *Field) + ToAffine func(out, arg *EllipticPoint) + type EllipticPointHashName uint + const BLAKE2B + const SHA256 + const SHA3_256 + const SHA3_384 + const SHA3_512 + const SHA512 + const SHAKE128 + const SHAKE256 + func (n EllipticPointHashName) String() string + type EllipticPointHashType uint + const XMD + const XOF + func (t EllipticPointHashType) String() string + type EllipticPointHasher struct + func EllipticPointHasherBlake2b() *EllipticPointHasher + func EllipticPointHasherSha256() *EllipticPointHasher + func EllipticPointHasherSha3256() *EllipticPointHasher + func EllipticPointHasherSha3384() *EllipticPointHasher + func EllipticPointHasherSha3512() *EllipticPointHasher + func EllipticPointHasherSha512() *EllipticPointHasher + func EllipticPointHasherShake128() *EllipticPointHasher + func EllipticPointHasherShake256() *EllipticPointHasher + func (e *EllipticPointHasher) Name() string + func (e *EllipticPointHasher) Type() EllipticPointHashType + func (e *EllipticPointHasher) Xmd() hash.Hash + func (e *EllipticPointHasher) Xof() sha3.ShakeHash + type EllipticPointParams struct + A *Field + B *Field + BitSize int + Gx *Field + Gy *Field + Name string + type Field struct + Arithmetic FieldArithmetic + Params *FieldParams + Value [FieldLimbs]uint64 + func (f *Field) Add(lhs, rhs *Field) *Field + func (f *Field) BigInt() *big.Int + func (f *Field) Bytes() [FieldBytes]byte + func (f *Field) CMove(lhs, rhs *Field, choice int) *Field + func (f *Field) Cmp(rhs *Field) int + func (f *Field) Double(a *Field) *Field + func (f *Field) Equal(rhs *Field) int + func (f *Field) Exp(base, exp *Field) *Field + func (f *Field) Invert(a *Field) (*Field, bool) + func (f *Field) IsNonZero() int + func (f *Field) IsOne() int + func (f *Field) IsZero() int + func (f *Field) Mul(lhs, rhs *Field) *Field + func (f *Field) Neg(input *Field) *Field + func (f *Field) Raw() [FieldLimbs]uint64 + func (f *Field) Set(rhs *Field) *Field + func (f *Field) SetBigInt(bi *big.Int) *Field + func (f *Field) SetBytes(input *[FieldBytes]byte) (*Field, error) + func (f *Field) SetBytesWide(input *[WideFieldBytes]byte) *Field + func (f *Field) SetLimbs(input *[FieldLimbs]uint64) *Field + func (f *Field) SetOne() *Field + func (f *Field) SetRaw(input *[FieldLimbs]uint64) *Field + func (f *Field) SetUint64(rhs uint64) *Field + func (f *Field) SetZero() *Field + func (f *Field) Sqrt(a *Field) (*Field, bool) + func (f *Field) Square(a *Field) *Field + func (f *Field) Sub(lhs, rhs *Field) *Field + type FieldArithmetic interface + Add func(out, arg1, arg2 *[FieldLimbs]uint64) + FromBytes func(out *[FieldLimbs]uint64, arg *[FieldBytes]byte) + FromMontgomery func(out, arg *[FieldLimbs]uint64) + Invert func(wasInverted *int, out, arg *[FieldLimbs]uint64) + Mul func(out, arg1, arg2 *[FieldLimbs]uint64) + Neg func(out, arg *[FieldLimbs]uint64) + Selectznz func(out, arg1, arg2 *[FieldLimbs]uint64, choice int) + Sqrt func(wasSquare *int, out, arg *[FieldLimbs]uint64) + Square func(out, arg *[FieldLimbs]uint64) + Sub func(out, arg1, arg2 *[FieldLimbs]uint64) + ToBytes func(out *[FieldBytes]byte, arg *[FieldLimbs]uint64) + ToMontgomery func(out, arg *[FieldLimbs]uint64) + type FieldParams struct + BiModulus *big.Int + Modulus [FieldLimbs]uint64 + R [FieldLimbs]uint64 + R2 [FieldLimbs]uint64 + R3 [FieldLimbs]uint64 + type IsogenyParams struct + XDen [][FieldLimbs]uint64 + XNum [][FieldLimbs]uint64 + YDen [][FieldLimbs]uint64 + YNum [][FieldLimbs]uint64 + func (p *IsogenyParams) Map(xIn, yIn *Field) (x, y *Field) + type SswuParams struct + A [FieldLimbs]uint64 + B [FieldLimbs]uint64 + C1 [FieldLimbs]uint64 + C2 [FieldLimbs]uint64 + Z [FieldLimbs]uint64 + func (p *SswuParams) Osswu3mod4(u *Field) (x, y *Field)