diff --git a/ChangeLog b/ChangeLog index dd3c045c067b5c16b1040da05c4f5ef065ee91e1..c7177074ab5f4437c67008ed62100f182e83a1bc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2014-07-11 Niels Möller <nisse@lysator.liu.se> + * ecc-internal.h (struct ecc_curve): New constant edwards_root. + * ecc-192.c (nettle_secp_192r1): Updated accordingly, additional + NULL pointer. + * ecc-224.c (nettle_secp_224r1): Likewise. + * ecc-256.c (nettle_secp_256r1): Likewise. + * ecc-384.c (nettle_secp_384r1): Likewise. + * ecc-521.c (nettle_secp_521r1): Likewise. + * ecc-25519.c (nettle_curve25519): Initialize new constant. + * eccdata.c (ecc_curve_init): For curve 25519, use correct constant for edwards coordinate transform, and output the constant as ecc_edwards. diff --git a/ecc-192.c b/ecc-192.c index 2af501fa32503bc690d92c602dfbe41ad88d1196..ee898b11fd01bd8a1149ac77da3fab7c926f2598 100644 --- a/ecc-192.c +++ b/ecc-192.c @@ -122,6 +122,7 @@ const struct ecc_curve nettle_secp_192r1 = ecc_q, ecc_g, ecc_redc_g, + NULL, ecc_192_modp, ecc_generic_redc, ecc_192_modp, diff --git a/ecc-224.c b/ecc-224.c index 6ed2365b1e75947065272775389d1b46c8c99599..15abb2480c31ce7d72c9180d0fbcf5fb58ce4035 100644 --- a/ecc-224.c +++ b/ecc-224.c @@ -68,6 +68,7 @@ const struct ecc_curve nettle_secp_224r1 = ecc_q, ecc_g, ecc_redc_g, + NULL, ecc_224_modp, ecc_generic_redc, USE_REDC ? ecc_generic_redc : ecc_224_modp, diff --git a/ecc-25519.c b/ecc-25519.c index 890fbe592a41db960cee123dbf03bcf57ac9b37f..25eeed9901779e6c3865399541b7552064373677 100644 --- a/ecc-25519.c +++ b/ecc-25519.c @@ -75,6 +75,7 @@ const struct ecc_curve nettle_curve25519 = ecc_q, ecc_g, ecc_redc_g, + ecc_edwards, ecc_25519_modp, NULL, ecc_25519_modp, diff --git a/ecc-256.c b/ecc-256.c index 2f2297e67c4d6d20c6958983d6e04e2d0c4e15f1..506c9afad7c8bb3a6c62434aae6b895e3ab36097 100644 --- a/ecc-256.c +++ b/ecc-256.c @@ -233,6 +233,7 @@ const struct ecc_curve nettle_secp_256r1 = ecc_q, ecc_g, ecc_redc_g, + NULL, ecc_256_modp, ecc_256_redc, USE_REDC ? ecc_256_redc : ecc_256_modp, diff --git a/ecc-384.c b/ecc-384.c index 8bfcb2145e6d2ca55db79d407cf4669798e9cf59..e5ec87e57489aa6227d13db0514d5b627d6e6606 100644 --- a/ecc-384.c +++ b/ecc-384.c @@ -161,6 +161,7 @@ const struct ecc_curve nettle_secp_384r1 = ecc_q, ecc_g, ecc_redc_g, + NULL, ecc_384_modp, ECC_REDC_SIZE != 0 ? ecc_generic_redc : NULL, ecc_384_modp, diff --git a/ecc-521.c b/ecc-521.c index fc84dfe6501acec0c52f1d1e7252c0349a630bee..821c9645689b08366d02c7001237539d97a3fe4b 100644 --- a/ecc-521.c +++ b/ecc-521.c @@ -89,6 +89,7 @@ const struct ecc_curve nettle_secp_521r1 = ecc_q, ecc_g, ecc_redc_g, + NULL, ecc_521_modp, ecc_generic_redc, ecc_521_modp, diff --git a/ecc-internal.h b/ecc-internal.h index 3d284bd6a234be6577c931d9fb1f78cee94633e8..8c3b6f781f72f71a90e82d2c27796c535cc7ec7b 100644 --- a/ecc-internal.h +++ b/ecc-internal.h @@ -107,6 +107,9 @@ struct ecc_curve const mp_limb_t *g; /* Generator with coordinates in Montgomery form. */ const mp_limb_t *redc_g; + /* If non-NULL, the constant needed for transformation to the + equivalent Edwards curve. */ + const mp_limb_t *edwards_root; ecc_mod_func *modp; ecc_mod_func *redc;