class

Noble::Ed25519::Point

Inherits Reference < Object

** Default Point works in affine coordinates: (x, y) /

Constants

BASE = Point.new(Noble::Ed25519::Curve::Gx, Noble::Ed25519::Curve::Gy)

Base point aka generator public_key = Point::BASE * private_key

ZERO = Point.new(Zero, One)

Identity point aka point at infinity point = point + zero_point

Constructors

new(x : BigInt, y : BigInt)
Source

Class methods

fromHex(hex : Hex, strict = true)

Converts hash string or Bytes to Point. Uses algo from RFC8032 5.1.3.

Source
fromPrivateKey(privateKey : PrivKey)
Source

Instance methods

==(other : Point) : Bool
Source
_setWindowSize(windowSize : Int32)

"Private method", don't use it directly.

Source
_WINDOW_SIZE

We calculate precomputes for elliptic curve point multiplication using windowed method. This specifies window size and stores precomputed values. Usually only base point would be precomputed.

Source
_WINDOW_SIZE=(_WINDOW_SIZE : Int32)

We calculate precomputes for elliptic curve point multiplication using windowed method. This specifies window size and stores precomputed values. Usually only base point would be precomputed.

Source
add(other : Point)
Source
equals(other : Point) : Bool
Source
finialize

Note: This method is not in the original typescript implementation. This method only exists to retain the WeakMap semantics that were encoded in the original implementation through the use of WeakMap(Point, Array(ExtendedPoint)) in typescript.

Source
isTorsionFree
Source
multiply(scalar : Int) : Point

** Constant time multiplication. @param scalar Big-Endian number @returns new point /

Source
negate
Source
subtract(other : Point)
Source
toHex

Same as toRawBytes, but returns string.

Source
toRawBytes

There can always be only two x values (x, -x) for any y When compressing point, it's enough to only store its y coordinate and use the last byte to encode sign of x.

Source
toX25519

** Converts to Montgomery aka x coordinate of curve25519. We don't have fromX25519, because we don't know sign.

u, v: curve25519 coordinates
x, y: ed25519 coordinates
(u, v) = ((1+y)/(1-y), sqrt(-486664)*u/x)
(x, y) = (sqrt(-486664)*u/v, (u-1)/(u+1))

https://blog.filippo.io/using-ed25519-keys-for-encryption @returns u coordinate of curve25519 point /

Source
x=(x : BigInt)
Source
y=(y : BigInt)
Source