Documentation
¶
Overview ¶
Package ristretto255 implements the group of prime order
2**252 + 27742317777372353535851937790883648493
and its scalar field, as specified in RFC 9496, Section 4.
All operations are constant time unless otherwise specified.
Index ¶
- type Element
- func (e *Element) Add(p, q *Element) *Element
- func (e *Element) Base() *Elementdeprecated
- func (e *Element) Bytes() []byte
- func (e *Element) Decode(in []byte) errordeprecated
- func (e *Element) Encode(b []byte) []bytedeprecated
- func (e *Element) Equal(ee *Element) int
- func (e *Element) FromUniformBytes(b []byte) *Elementdeprecated
- func (e *Element) MarshalText() (text []byte, err error)
- func (e *Element) MultiScalarMult(s []*Scalar, p []*Element) *Element
- func (e *Element) Negate(p *Element) *Element
- func (e *Element) ScalarBaseMult(s *Scalar) *Element
- func (e *Element) ScalarMult(s *Scalar, p *Element) *Element
- func (e *Element) Set(x *Element) *Element
- func (e *Element) SetCanonicalBytes(in []byte) (*Element, error)
- func (e *Element) SetUniformBytes(b []byte) (*Element, error)
- func (e *Element) String() string
- func (e *Element) Subtract(p, q *Element) *Element
- func (e *Element) UnmarshalText(text []byte) error
- func (e *Element) VarTimeDoubleScalarBaseMult(a *Scalar, A *Element, b *Scalar) *Element
- func (e *Element) VarTimeMultiScalarMult(s []*Scalar, p []*Element) *Element
- func (e *Element) Zero() *Elementdeprecated
- type Scalar
- func (s *Scalar) Add(x, y *Scalar) *Scalar
- func (s *Scalar) Bytes() []byte
- func (s *Scalar) Decode(x []byte) errordeprecated
- func (s *Scalar) Encode(b []byte) []bytedeprecated
- func (s *Scalar) Equal(u *Scalar) int
- func (s *Scalar) FromUniformBytes(x []byte) *Scalardeprecated
- func (s *Scalar) Invert(x *Scalar) *Scalar
- func (s *Scalar) MarshalText() (text []byte, err error)
- func (s *Scalar) Multiply(x, y *Scalar) *Scalar
- func (s *Scalar) Negate(x *Scalar) *Scalar
- func (s *Scalar) Set(x *Scalar) *Scalar
- func (s *Scalar) SetCanonicalBytes(x []byte) (*Scalar, error)
- func (s *Scalar) SetUniformBytes(x []byte) (*Scalar, error)
- func (s *Scalar) String() string
- func (s *Scalar) Subtract(x, y *Scalar) *Scalar
- func (s *Scalar) UnmarshalText(text []byte) error
- func (s *Scalar) Zero() *Scalar
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Element ¶
type Element struct {
// contains filtered or unexported fields
}
Element is an element of the ristretto255 prime-order group.
func NewElement
deprecated
func NewElement() *Element
NewElement returns a new Element set to the identity value.
Deprecated: use NewIdentityElement. This API will be removed before v1.0.0.
func NewGeneratorElement ¶ added in v0.2.0
func NewGeneratorElement() *Element
NewGeneratorElement returns a new Element set to the canonical generator.
func NewIdentityElement ¶ added in v0.2.0
func NewIdentityElement() *Element
NewIdentityElement returns a new Element set to the identity value.
func (*Element) Bytes ¶ added in v0.2.0
Bytes returns the 32 bytes canonical encoding of e.
Bytes implements the Encode operation from RFC 9496, Section 4.3.2.
func (*Element) Equal ¶
Equal returns 1 if e is equivalent to ee, and 0 otherwise.
Equal implements the Equals operation from RFC 9496, Section 4.3.3.
func (*Element) FromUniformBytes
deprecated
func (*Element) MarshalText ¶ added in v0.1.1
MarshalText implements encoding/TextMarshaler interface
func (*Element) MultiScalarMult ¶
MultiScalarMult sets e = sum(s[i] * p[i]), and returns e.
Execution time depends only on the lengths of the two slices, which must match.
func (*Element) ScalarBaseMult ¶
ScalarBaseMult sets e = s * B, where B is the canonical generator, and returns e.
func (*Element) ScalarMult ¶
ScalarMult sets e = s * p, and returns e.
func (*Element) SetCanonicalBytes ¶ added in v0.2.0
SetCanonicalBytes sets e to the decoded value of in. If in is not a canonical encoding of s, SetCanonicalBytes returns nil and an error and the receiver is unchanged.
SetCanonicalBytes implements the Decode operation from RFC 9496, Section 4.3.1.
func (*Element) SetUniformBytes ¶ added in v0.2.0
SetUniformBytes deterministically sets e to a uniformly distributed value given 64 uniformly distributed random bytes.
This can be used for hash-to-group operations or to obtain a random element.
SetUniformBytes implements the Element Derivation operation from RFC 9496, Section 4.3.4.
func (*Element) UnmarshalText ¶ added in v0.1.1
UnmarshalText implements encoding/TextMarshaler interface
func (*Element) VarTimeDoubleScalarBaseMult ¶
VarTimeDoubleScalarBaseMult sets e = a * A + b * B, where B is the canonical generator, and returns e.
Execution time depends on the inputs.
func (*Element) VarTimeMultiScalarMult ¶
VarTimeMultiScalarMult sets e = sum(s[i] * p[i]), and returns e.
Execution time depends on the inputs.
type Scalar ¶
type Scalar struct {
// contains filtered or unexported fields
}
A Scalar is an element of the ristretto255 scalar field, as specified in RFC 9496, Section 4.4. That is, an integer modulo
l = 2^252 + 27742317777372353535851937790883648493
The zero value is a valid zero element.
func (*Scalar) Bytes ¶ added in v0.2.0
Bytes returns the 32 bytes little-endian canonical encoding of s.
func (*Scalar) Decode
deprecated
func (*Scalar) FromUniformBytes
deprecated
func (*Scalar) Invert ¶
Invert sets s = 1 / x such that s * x = 1 mod l and returns s.
If x is 0, the result is undefined.
func (*Scalar) MarshalText ¶ added in v0.1.1
MarshalText implements encoding/TextMarshaler interface
func (*Scalar) SetCanonicalBytes ¶ added in v0.2.0
SetCanonicalBytes sets s = x, where x is a 32 bytes little-endian encoding of s. If x is not a canonical encoding of s, SetCanonicalBytes returns nil and an error and the receiver is unchanged.
func (*Scalar) SetUniformBytes ¶ added in v0.2.0
SetUniformBytes sets s to a uniformly distributed value given 64 uniformly distributed random bytes by interpreting the 64-byte string as a 512-bit unsigned integer in little-endian order and reducing the integer modulo l.
If x is not of the right length, SetUniformBytes returns nil and an error, and the receiver is unchanged.
func (*Scalar) UnmarshalText ¶ added in v0.1.1
UnmarshalText implements encoding/TextMarshaler interface