group

package
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: May 30, 2021 License: BSD-3-Clause Imports: 13 Imported by: 0

Documentation

Overview

Package group provides prime-order groups based on elliptic curves.

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrType      = errors.New("type mismatch")
	ErrUnmarshal = errors.New("error unmarshaling")
)

Functions

This section is empty.

Types

type Element

type Element interface {
	IsIdentity() bool
	IsEqual(Element) bool
	Add(Element, Element) Element
	Dbl(Element) Element
	Neg(Element) Element
	Mul(Element, Scalar) Element
	MulGen(Scalar) Element
	encoding.BinaryMarshaler
	encoding.BinaryUnmarshaler
	MarshalBinaryCompress() ([]byte, error)
}

Element represents an abstract element of a prime-order group.

type FieldHasher

type FieldHasher interface {
	// HashToField generates a set of elements {u1,..., uN} = Hash(b).
	HashToField(u []big.Int, b []byte)
}

FieldHasher allows to hash byte strings producing one or more field elements.

func NewExpanderMD

func NewExpanderMD(h crypto.Hash, p *big.Int, L uint, dst []byte) FieldHasher

NewExpanderMD returns a hash function based on a Merkle-Damgård hash function.

type Group

type Group interface {
	NewElement() Element
	NewScalar() Scalar
	Identity() Element
	Generator() Element
	Order() Scalar
	RandomElement(io.Reader) Element
	RandomScalar(io.Reader) Scalar
	HashToElement(data, dst []byte) Element
	HashToScalar(data, dst []byte) Scalar
}

Group represents a prime-order group based on elliptic curves.

var (
	// P256 is the group generated by P-256 elliptic curve.
	P256 Group = wG{elliptic.P256()}
	// P384 is the group generated by P-384 elliptic curve.
	P384 Group = wG{p384.P384()}
	// P521 is the group generated by P-521 elliptic curve.
	P521 Group = wG{elliptic.P521()}
)
var (
	Ristretto255 Group = ristrettoGroup{}
)

type Scalar

Scalar represents an integer scalar.

Jump to

Keyboard shortcuts

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