summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2014-08-22 19:34:05 +0200
committerNiels Möller <nisse@lysator.liu.se>2014-08-22 19:34:05 +0200
commitbeb1540064d5da15b51ac94169aaf4d891c5e589 (patch)
tree0f2510b278699f0a94a56242c51f13d468e97210
parent78647916ef3ca994c8aab7222b56adc9ade16cd1 (diff)
downloadnettle-beb1540064d5da15b51ac94169aaf4d891c5e589.tar.gz
Prepare for assembly ecc_25519_modp.
-rw-r--r--ChangeLog8
-rw-r--r--configure.ac3
-rw-r--r--ecc-25519.c9
3 files changed, 19 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 404fd4e0..a0d83c88 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2014-08-22 Niels Möller <nisse@lysator.liu.se>
+
+ * ecc-25519.c [HAVE_NATIVE_ecc_25519_modp]: Use assembly version
+ if available.
+
+ * configure.ac (asm_hogweed_optional_list): Added ecc-25519-modp.asm.
+ Also add HAVE_NATIVE_ecc_25519_modp to config.h.in.
+
2014-08-19 Niels Möller <nisse@lysator.liu.se>
* examples/ecc-benchmark.c (bench_curve): Support benchmarking of
diff --git a/configure.ac b/configure.ac
index 6923d3a3..ddee35c7 100644
--- a/configure.ac
+++ b/configure.ac
@@ -285,7 +285,7 @@ asm_nettle_optional_list="gcm-hash8.asm"
asm_hogweed_optional_list=""
if test "x$enable_public_key" = "xyes" ; then
asm_hogweed_optional_list="ecc-192-modp.asm ecc-224-modp.asm \
- ecc-256-redc.asm ecc-384-modp.asm ecc-521-modp.asm"
+ ecc-25519-modp.asm ecc-256-redc.asm ecc-384-modp.asm ecc-521-modp.asm"
fi
OPT_ASM_NETTLE_SOURCES=""
@@ -365,6 +365,7 @@ AH_VERBATIM([HAVE_NATIVE],
#undef HAVE_NATIVE_ecc_192_redc
#undef HAVE_NATIVE_ecc_224_modp
#undef HAVE_NATIVE_ecc_224_redc
+#undef HAVE_NATIVE_ecc_25519_modp
#undef HAVE_NATIVE_ecc_256_modp
#undef HAVE_NATIVE_ecc_256_redc
#undef HAVE_NATIVE_ecc_384_modp
diff --git a/ecc-25519.c b/ecc-25519.c
index e6d402f2..cd6bc4bf 100644
--- a/ecc-25519.c
+++ b/ecc-25519.c
@@ -41,6 +41,13 @@
#include "ecc-25519.h"
+#if HAVE_NATIVE_ecc_25519_modp
+
+#define ecc_25519_modp nettle_ecc_25519_modp
+void
+ecc_25519_modp (const struct ecc_curve *ecc, mp_limb_t *rp);
+#else
+
#define HIGH_BITS (GMP_NUMB_BITS * ECC_LIMB_SIZE - 255)
#if HIGH_BITS == 0
@@ -60,6 +67,8 @@ ecc_25519_modp(const struct ecc_curve *ecc UNUSED, mp_limb_t *rp)
+ sec_add_1 (rp, rp, ECC_LIMB_SIZE - 1, 19 * cy);
}
+#endif /* HAVE_NATIVE_ecc_25519_modp */
+
/* Needs 2*ecc->size limbs at rp, and 2*ecc->size additional limbs of
scratch space. No overlap allowed. */
static void