os

An operating system
git clone https://erai.gay/code/os/
Log | Files | Refs | README | LICENSE

commit 9d6877c0aae67cb3d31559cbf5104debbda44896
parent c36c721b783548322986b5a15c66094938619351
Author: erai <erai@omiltem.net>
Date:   Thu,  9 May 2024 10:43:28 -0400

add comments to ed25519

Diffstat:
Med25519.c | 37+++++++++++++++++++++++++++++++++----
1 file changed, 33 insertions(+), 4 deletions(-)

diff --git a/ed25519.c b/ed25519.c @@ -1,5 +1,37 @@ // https://www.rfc-editor.org/rfc/rfc8032 -// y**2 = x**3 + 486662 * x**2 + x mod 2**252 - 19 +// p = 2**255 - 19 +// = 0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed +// = 57896044618658097711785492504343953926634992332820282019728792003956564819949 +// order = 2**252 + 0x14def9dea2f79cd65812631a5cf5d3ed +// = 0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed +// = 7237005577332262213973186563042994240857116359379907606001950938285454250989 +// cofactor = 8 +// +// cv25519: v**2 = u**3 + a*u**2 + u mod p +// a = 486662 +// = 0x76d06 +// u = 9 +// = 0x9 +// v = 14781619447589544791020593568409986887264606134616475288964881837755586237401 +// = 0x20ae19a1b8a086b4e01edd2c7748d14c923d4d7e6d7c61b229e9c5a27eced3d9 +// +// ed25519: -x**2 + y**2 = 1 + d*x**2*y**2 mod p +// d = 37095705934669439343138083508754565189542113879843219016388785533085940283555 +// = 0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3 +// x = 15112221349535400772501151409588531511454012693041857206046113283949847762202 +// = 0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a +// y = 46316835694926478169428394003475163141307993866256225615783033603165251855960 +// = 0x6666666666666666666666666666666666666666666666666666666666666658 +// +// sqrt(156324) = 47404633599747791082622660160935871366498103638773495046873171379078394303736 +// = 0x68ce126131538b6f95c59117d7277a48f9c5a6a70777247b129d5ae54d6454f8 +// +// birational map +// u = (y - 1) / (y + 1) +// v = sqrt(156324) * u / x +// +// x = sqrt(156324) * u / v +// y = (1 + u) / (1 - u) struct _ed25519_limb { x0: int; @@ -67,9 +99,6 @@ ed25519_sub(r: *int, a: *int, b: *int) { c = c + a[5] + (-1 >> 32) + (~b[5] & (-1 >> 32)); r[5] = c & (-1 >> 32); c = c >> 32; c = c + a[6] + (-1 >> 32) + (~b[6] & (-1 >> 32)); r[6] = c & (-1 >> 32); c = c >> 32; c = c + a[7] + (-1 >> 33) + (~b[7] & (-1 >> 32)); r[7] = c & (-1 >> 33); - - //ed25519_reduce(r); - } ed25519_mul(r: *int, a: *int, b: *int) {