Little-endian byte encoding, exactly 32 bytes.
Equations
- Cryptlib.Primitives.NIKE.X25519_montgomery_ladder.fromField x = Vector.ofFn fun (i : Fin Cryptlib.Primitives.NIKE.X25519Common.keySize) => (x.val >>> (8 * ↑i)).toUInt8
Instances For
- x1 : ZMod X25519Common.p
- x2 : ZMod X25519Common.p
- z2 : ZMod X25519Common.p
- x3 : ZMod X25519Common.p
- z3 : ZMod X25519Common.p
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
The ladder takes the scalar as bytes: a clamped scalar can exceed p, so it must not be
reduced modulo p.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
RFC 7748 X25519. Total: the ladder is defined on every u-coordinate, including twist points.
Equations
- Cryptlib.Primitives.NIKE.X25519_montgomery_ladder.x25519 scalarBytes uCoordBytes = Cryptlib.Primitives.NIKE.X25519_montgomery_ladder.curve25519 scalarBytes uCoordBytes
Instances For
The same ladder on Field25519.Fe #
The ladder on fixed-width limbs, with masked swaps so it does not branch on scalar bits. Tested
against the ZMod ladder and RFC 7748 vectors, not yet proved equal to it.
- x1 : Field25519.Fe
- x2 : Field25519.Fe
- z2 : Field25519.Fe
- x3 : Field25519.Fe
- z3 : Field25519.Fe
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
- data : Vector UInt8 X25519Common.keySize
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Curve25519 small-order points, little-endian. Compared after masking the high bit of byte 31,
so each also covers its +2^255 variant. See eprint.iacr.org/2017/806.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Clear the high bit of byte 31.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
The ladder's output is never a small-order point: clamping makes every scalar a multiple of the cofactor 8.
Group actions by two private keys commute on any public key, not only on derived ones as in
curve25519_commutes.
Equations
- Cryptlib.Primitives.NIKE.X25519_montgomery_ladder.SchemeName = "X25519-ladder"
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
The ladder on Field25519 limbs, as a NIKE #
LadderScheme with curve25519_fe in place of curve25519. Its axioms restate the ladder's for
curve25519_fe; proving curve25519_fe = curve25519 would remove them.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.