Documentation

Cryptlib.Primitives.Sign.Ed25519_edwards

Edwards-side facts: completeness and the special sums #

Because d is not a square, the denominators of Ed25519Math.add never vanish on curve points.

On a curve point 1 + d y² ≠ 0.

theorem Cryptlib.Primitives.Sign.Ed25519Edwards.complete {x1 y1 x2 y2 : Ed25519Facts.F} (h1 : -x1 ^ 2 + y1 ^ 2 = 1 + Ed25519Facts.d * x1 ^ 2 * y1 ^ 2) (h2 : -x2 ^ 2 + y2 ^ 2 = 1 + Ed25519Facts.d * x2 ^ 2 * y2 ^ 2) :
(Ed25519Facts.d * x1 * x2 * y1 * y2) ^ 2 ≠ 1

Completeness of the Edwards law: the denominators 1 ± d x₁x₂y₁y₂ never vanish on curve points.

theorem Cryptlib.Primitives.Sign.Ed25519Edwards.add_def (q r : Ed25519Math.Point) :
Ed25519Math.add q r = { x := (q.x * r.y + q.y * r.x) / (1 + Ed25519Facts.d * q.x * r.x * q.y * r.y), y := (q.y * r.y + q.x * r.x) / (1 - Ed25519Facts.d * q.x * r.x * q.y * r.y) }

Adding the order-2 point (0, -1) negates both coordinates.

q + (-x, y) = (0, 1): the negative of (x, y) is (-x, y).

q + (x, -y) = (0, -1).