commit 9d6877c0aae67cb3d31559cbf5104debbda44896
parent c36c721b783548322986b5a15c66094938619351
Author: erai <erai@omiltem.net>
Date: Thu, 9 May 2024 10:43:28 -0400
add comments to ed25519
Diffstat:
M | ed25519.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) {