class

Noble::Ed25519::RistrettoPoint

Inherits Reference < Object

** Each ed25519/ExtendedPoint has 8 different equivalent points. This can be a source of bugs for protocols like ring signatures. Ristretto was created to solve this. Ristretto point operates in X:Y:Z:T extended coordinates like ExtendedPoint, but it should work in its own namespace: do not combine those two. https://datatracker.ietf.org/doc/html/draft-irtf-cfrg-ristretto255-decaf448 /

Constants

BASE = RistrettoPoint.new(ExtendedPoint::BASE)
ZERO = RistrettoPoint.new(ExtendedPoint::ZERO)

Constructors

fromHex(hex : Hex) : RistrettoPoint

** Converts ristretto-encoded string to ristretto point. https://ristretto.group/formulas/decoding.html @param hex Ristretto-encoded 32 bytes. Not every 32-byte string is valid ristretto encoding /

Source
hashToCurve(hex : Hex) : RistrettoPoint

** Takes uniform output of 64-bit hash function like sha512 and converts it to RistrettoPoint. The hash-to-group operation applies Elligator twice and adds the results. Note: this is one-way map, there is no conversion from point to hash. https://ristretto.group/formulas/elligator.html @param hex 64-bit output of a hash function /

Source
new(ep : ExtendedPoint)

Private property to discourage combining ExtendedPoint + RistrettoPoint Always use Ristretto encoding/decoding instead.

Source

Instance methods

==(other : RistrettoPoint) : Bool
Source
add(other : RistrettoPoint) : RistrettoPoint
Source
ep=(ep : ExtendedPoint)
Source
equals(other : RistrettoPoint) : Bool

Compare one point to another.

Source
multiply(scalar : Int) : RistrettoPoint
Source
multiplyUnsafe(scalar : Int) : RistrettoPoint
Source
subtract(other : RistrettoPoint) : RistrettoPoint
Source
toHex
Source
toRawBytes

** Encodes ristretto point to Bytes. https ://ristretto.group/formulas/encoding.html /

Source
toString
Source