Skip to main content

Module scalar

Module scalar 

Source
Expand description

Scalar arithmetic modulo the Ed25519 group order.

ScalarEngine accepts wide and 256-bit reductions, modular multiply-add, and canonicality commands through one fixed-latency state machine.

Structs§

Scalar29
Nine-limb radix-2^29 scalar representation used by Dalek-style reduction.
ScalarEngine
Area-oriented scalar reduction, multiply-add, and canonicality engine.
ScalarEngineIn
Command for ScalarEngine.
ScalarEngineOut
Response from ScalarEngine.
ScalarModEngine
Four-word modular add-and-conditional-subtract engine.
ScalarModIn
One modular add/subtract request for ScalarModEngine.
ScalarModOut
Response from ScalarModEngine.
ScalarModRegs
Registered datapath state for ScalarModEngine.
ScalarRadix16
Balanced radix-16 scalar digits used by point multiplication.
ScalarRegs
Registered datapath state for ScalarEngine.
ScalarWords
Canonical-or-loose scalar stored as four little-endian 64-bit words.

Enums§

ScalarModState
Internal state of ScalarModEngine.
ScalarState
High-level states of ScalarEngine.

Constants§

SCALAR_OP_CANONICAL
Report whether a 256-bit scalar is strictly less than l.
SCALAR_OP_MUL_ADD
Compute c + a*b mod l.
SCALAR_OP_REDUCE_256
Reduce a 256-bit value modulo l.
SCALAR_OP_REDUCE_WIDE
Reduce a 512-bit SHA-512 digest modulo l.

Functions§

scalar_add_kernel
Add four-word scalars with propagated carry.
scalar_add_mod_l_kernel
Add two inputs known to require at most one subtraction of l.
scalar_engine_kernel
Next-state/output kernel for ScalarEngine.
scalar_from_bytes_kernel
Parse 32 little-endian bytes into four scalar words without reduction.
scalar_ge_kernel
Unsigned comparison a >= b over four little-endian words.
scalar_l
Return the Ed25519 group order l.
scalar_l_kernel
Synthesizable group-order constructor.
scalar_mod_engine_kernel
Next-state/output kernel for ScalarModEngine.
scalar_radix16_kernel
Recode a 256-bit little-endian scalar into 64 balanced radix-16 digits.
scalar_shift_in_kernel
Shift a scalar left and insert one low bit.
scalar_sub_kernel
Subtract four-word scalars with propagated borrow.
scalar_to_bytes_kernel
Serialize four scalar words as 32 little-endian bytes.
scalar_zero
Return scalar zero.
scalar_zero_kernel
Synthesizable scalar-zero constructor.