chiark / gitweb /
pub/ed{25519,448}.c: Double by adding self, rather than multiplying by two.
authorMark Wooding <mdw@distorted.org.uk>
Mon, 2 Oct 2017 12:25:39 +0000 (13:25 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Mon, 2 Oct 2017 16:06:50 +0000 (17:06 +0100)
Saves a reduction pass.

pub/ed25519.c
pub/ed448.c

index 7fddf9873cd2c21db03d749f4de2b9dfbd845b9b..676fe8ca3762f72333287898c5c235116f567fd3 100644 (file)
@@ -232,7 +232,7 @@ static void ptdbl(f25519 *X, f25519 *Y, f25519 *Z,
                                        /* (E = a C = -C) */
   f25519_sub(&t0, &t2, &t1);           /* t0 = F = D - C = E + D */
   f25519_sqr(&t1, Z0);                 /* t1 = H = Z0^2 */
-  f25519_mulconst(&t1, &t1, 2);                /* t1 = 2 H */
+  f25519_add(&t1, &t1, &t1);           /* t1 = 2 H */
   f25519_sub(&t1, &t0, &t1);           /* t1 = J = F - 2 H */
   f25519_mul(X, X, &t1);               /* X = (B - C - D) J */
   f25519_mul(Y, Y, &t0);               /* Y = -F (E - D) */
index ae565566de960f60b5ec99c60a63d5f35477a94a..60328021a19df460343ea1c2e6614a8e97c00281 100644 (file)
@@ -237,7 +237,7 @@ static void ptdbl(fgoldi *X, fgoldi *Y, fgoldi *Z,
   fgoldi_sub(&t1, &t1, &t2);           /* t1 = C - D */
   fgoldi_sub(X, &t0, Y);               /* X = c (B - E) */
   fgoldi_sqr(&t0, Z0);                 /* t0 = H = (c Z0)^2 */
-  fgoldi_mulconst(&t0, &t0, 2);                /* t0 = 2 H */
+  fgoldi_add(&t0, &t0, &t0);           /* t0 = 2 H */
   fgoldi_sub(&t0, Y, &t0);             /* t0 = J = E - 2 H */
   fgoldi_mul(X, X, &t0);               /* X = c (B - E) J */
   fgoldi_mul(Z, Y, &t0);               /* Z = E J */