Skip to main content

Module point

Module point 

Source
Expand description

Edwards-point arithmetic, scalar multiplication, and point encoding.

This module re-exports the point controller, balanced-radix-16 scalar multiplier, strict compression/decompression controller, and the constant-time 32-byte equality kernel used by verification.

Modules§

parallel_point
Level-scheduled Edwards formulas over four field engines.

Structs§

EdwardsPoint
Extended Edwards point (X:Y:Z:T) over FieldElement2625.
ParallelPointOpController
Four-lane level scheduler for extended Edwards formulas.
ParallelPointOpControllerIn
Point request plus four shared field-lane responses.
ParallelPointOpControllerOut
Point response plus commands for four shared field lanes.
ParallelPointOpRegs
Registered operation, formula-level, lane-mask, and identity state.
PointCodecController
Point-codec controller using field exponentiation, canonical codec, and a shared field-multiplier response.
PointCodecControllerIn
External point-codec command plus shared field-multiplier response.
PointCodecControllerOut
External point-codec response plus shared field-multiplier command.
PointCodecEngine
Self-contained point codec with a private parallel field multiplier.
PointCodecIn
Point-codec command.
PointCodecOut
Point-codec response.
PointControlRegs
Registered control state for PointOpController.
PointMicroInstruction
Decoded 16-bit point-formula microinstruction.
PointOpController
Serial microcoded point-operation controller using a shared field engine.
PointOpControllerIn
External command and shared field-multiplier response.
PointOpControllerOut
External response and shared field-multiplier command.
PointOpEngine
Self-contained point engine using the four-lane parallel controller/bank.
PointOpIn
Point operation or one-word Niels-table load request.
PointOpOut
Point-operation response and retained point views.
ProjectiveNielsPoint
Cached Projective Niels representation used by mixed addition.
ScalarMulController
Controller with eight identically addressed local Niels-table BRAM banks.
ScalarMulControllerIn
Scalar command plus response from the shared point controller.
ScalarMulControllerOut
Scalar response plus command for the shared point controller.
ScalarMulEngine
Self-contained scalar multiplier using a private point-operation engine.
ScalarMulIn
Scalar-multiplication request.
ScalarMulOut
Scalar-multiplication response and constant-pattern instrumentation.
ScalarMulRegs
Registered recoding, table address, digit, and instrumentation state.

Enums§

ParallelPointOpState
Formula launch, wait, and completion states.
PointOpState
Fetch, launch, wait, and completion states of PointOpController.
ScalarMulState
Table-generation, recoding, fixed scan, point-operation, and completion states.

Constants§

CODEC_COMPRESS_INV
Invert projective Z during compression.
CODEC_COMPRESS_X
Multiply X by Z^-1.
CODEC_COMPRESS_X_ENCODE
Encode affine x to obtain its parity bit.
CODEC_COMPRESS_Y
Multiply Y by Z^-1.
CODEC_COMPRESS_Y_ENCODE
Encode affine y and attach the x parity bit.
CODEC_DECOMPRESS_ADJUST
Adjust the root by sqrt(-1) when required.
CODEC_DECOMPRESS_CANDIDATE_ENCODE
Encode the candidate to determine sign and zero properties.
CODEC_DECOMPRESS_CANONICAL
Decode y and begin canonicality validation.
CODEC_DECOMPRESS_CANONICAL_COMPARE
Re-encode decoded y for canonical comparison.
CODEC_DECOMPRESS_CHECK
Check the candidate against the curve equation.
CODEC_DECOMPRESS_CHECK_COMPARE
Compare canonical root-check encodings.
CODEC_DECOMPRESS_CHECK_ENCODE_LEFT
Encode the left side of the root check.
CODEC_DECOMPRESS_CHECK_ENCODE_RIGHT
Encode the right side of the root check.
CODEC_DECOMPRESS_DY2
Compute d*y^2.
CODEC_DECOMPRESS_NEGATE
Negate x to match the encoded sign bit.
CODEC_DECOMPRESS_SQRT
Compute a fixed-chain square-root candidate.
CODEC_DECOMPRESS_T
Compute extended coordinate T = X*Y with Z = 1.
CODEC_DECOMPRESS_U
Compute numerator u = y^2 - 1.
CODEC_DECOMPRESS_V
Compute denominator v = d*y^2 + 1.
CODEC_DECOMPRESS_V_INV
Invert v.
CODEC_DECOMPRESS_X2
Compute x^2 = u/v.
CODEC_DECOMPRESS_Y2
Compute y^2.
CODEC_DONE
Present a completed codec result.
CODEC_IDLE
Waiting for a compression/decompression command.
POINT_CODEC_COMPRESS
Compress an extended point to 32-byte Edwards-Y form.
POINT_CODEC_DECOMPRESS
Strictly decompress a 32-byte Edwards-Y encoding.
POINT_OP_ADD_NIELS
Add a Projective Niels point to an extended Edwards point.
POINT_OP_DOUBLE
Double an extended Edwards point.
POINT_OP_IS_IDENTITY
Test whether an extended point represents the identity.
POINT_OP_TO_NIELS
Convert an extended point into Projective Niels form.

Functions§

bytes32_equal_kernel
Compare all bytes of two 32-byte arrays with a fixed boolean structure.
ed25519_basepoint
Return the canonical Ed25519 base point in extended coordinates.
ed25519_basepoint_kernel
Synthesizable Ed25519 base-point constructor.
edwards_d2_kernel
Return Edwards25519 curve constant 2*d.
edwards_d_kernel
Return Edwards25519 curve constant d.
edwards_identity
Return the extended identity (0:1:1:0).
edwards_identity_kernel
Synthesizable extended-identity constructor.
get_field_limb_kernel
Read one limb from a field element using a digital limb index.
negate_niels_kernel
Negate a Projective Niels point without inversion.
negate_point_kernel
Negate an extended Edwards point.
niels_identity
Return the Projective Niels identity.
niels_identity_kernel
Synthesizable Projective Niels identity constructor.
niels_word_kernel
Read one of the forty 32-bit words in a Projective Niels point.
parallel_point_op_controller_kernel
Next-state/output kernel for ParallelPointOpController.
point_codec_controller_kernel
Next-state/output kernel for PointCodecController.
point_codec_engine_kernel
Wires PointCodecController to its private field multiplier.
point_codec_initial_regs
Return the idle point-codec register tuple.
point_decode_instruction_kernel
Decode one packed point microinstruction.
point_identity_registers
Return the nine retained microcode registers initialized to point identities.
point_instruction_address_kernel
Map a point operation and step to the microcode ROM address.
point_load_registers_kernel
Load point/Niels operands into the microcode register file.
point_op_controller_kernel
Next-state/output kernel for PointOpController.
point_op_engine_kernel
Wires ParallelPointOpController to ParallelFieldMulBank4.
point_select_register_kernel
Select a field operand from the point register file or constant sources.
point_write_register_kernel
Write one field result to the selected point register.
scalar_mul_controller_kernel
Next-state/output kernel for ScalarMulController.
scalar_mul_engine_kernel
Wires ScalarMulController to its private point-operation engine.
set_field_limb_kernel
Replace one limb in a field element using a digital limb index.
set_niels_word_kernel
Replace one of the forty 32-bit words in a Projective Niels point.
sqrt_m1_kernel
Return the field square root of -1 used by point decompression.

Type Aliases§

PointCodecAction
Mutable register/child-command action returned by a transition sub-kernel.
PointCodecContext
Read-only context supplied to each codec transition sub-kernel.
PointCodecRegs
Compact retained codec state: state, three field temporaries, and flags.
PointCodecState
Five-bit point-codec state encoding.