diff options
author | Michael Brown <mcb30@ipxe.org> | 2025-01-22 13:00:03 +0000 |
---|---|---|
committer | Michael Brown <mcb30@ipxe.org> | 2025-01-28 16:32:12 +0000 |
commit | be9ce490768dd4060fa4737ca5f50777ba6a15a8 (patch) | |
tree | c8a352215116ffa4b55dca7b2940b91236ce1ba7 /src/include/ipxe/pnm.h | |
parent | 66b5d1ec81433d4cbc218ed18f2e4ee04d51aa38 (diff) | |
download | ipxe-be9ce490768dd4060fa4737ca5f50777ba6a15a8.tar.gz |
[crypto] Add support for Weierstrass elliptic curve point multiplication
The NIST elliptic curves are Weierstrass curves and have the form
y^2 = x^3 + ax + b
with each curve defined by its field prime, the constants "a" and "b",
and a generator base point.
Implement a constant-time algorithm for point addition, based upon
Algorithm 1 from "Complete addition formulas for prime order elliptic
curves" (Joost Renes, Craig Costello, and Lejla Batina), and use this
as a Montgomery ladder commutative operation to perform constant-time
point multiplication.
The code for point addition is implemented using a custom bytecode
interpreter with 16-bit instructions, since this results in
substantially smaller code than compiling the somewhat lengthy
sequence of arithmetic operations directly. Values are calculated
modulo small multiples of the field prime in order to allow for the
use of relaxed Montgomery reduction.
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/include/ipxe/pnm.h')
0 files changed, 0 insertions, 0 deletions