summaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2014-08-19 10:08:04 +0200
committerNiels Möller <nisse@lysator.liu.se>2014-08-19 10:08:04 +0200
commit78647916ef3ca994c8aab7222b56adc9ade16cd1 (patch)
tree74da9743533fb04966b2f664f078e2fe08a1cfa5 /examples
parent863a940ef58acfb8f2cd17354baf567897aa6e93 (diff)
downloadnettle-78647916ef3ca994c8aab7222b56adc9ade16cd1.tar.gz
Initial benchmarking of curve25519.
Diffstat (limited to 'examples')
-rw-r--r--examples/ecc-benchmark.c60
1 files changed, 54 insertions, 6 deletions
diff --git a/examples/ecc-benchmark.c b/examples/ecc-benchmark.c
index 0153b744..51b560a0 100644
--- a/examples/ecc-benchmark.c
+++ b/examples/ecc-benchmark.c
@@ -237,6 +237,41 @@ bench_mul_a (void *p)
ecc_mul_a (ctx->ecc, 1, ctx->rp, ctx->ap, ctx->bp, ctx->tp);
}
+static void
+bench_dup_eh (void *p)
+{
+ struct ecc_ctx *ctx = (struct ecc_ctx *) p;
+ ecc_dup_eh (ctx->ecc, ctx->rp, ctx->ap, ctx->tp);
+}
+
+static void
+bench_add_eh (void *p)
+{
+ struct ecc_ctx *ctx = (struct ecc_ctx *) p;
+ ecc_add_eh (ctx->ecc, ctx->rp, ctx->ap, ctx->bp, ctx->tp);
+}
+
+static void
+bench_add_ehh (void *p)
+{
+ struct ecc_ctx *ctx = (struct ecc_ctx *) p;
+ ecc_add_ehh (ctx->ecc, ctx->rp, ctx->ap, ctx->bp, ctx->tp);
+}
+
+static void
+bench_mul_g_eh (void *p)
+{
+ struct ecc_ctx *ctx = (struct ecc_ctx *) p;
+ ecc_mul_g_eh (ctx->ecc, ctx->rp, ctx->ap, ctx->tp);
+}
+
+static void
+bench_mul_a_eh (void *p)
+{
+ struct ecc_ctx *ctx = (struct ecc_ctx *) p;
+ ecc_mul_a_eh (ctx->ecc, ctx->rp, ctx->ap, ctx->bp, ctx->tp);
+}
+
#if NETTLE_USE_MINI_GMP
static void
mpn_random (mp_limb_t *xp, mp_size_t n)
@@ -287,7 +322,7 @@ bench_curve (const struct ecc_curve *ecc)
modp = time_function (bench_modp, &ctx);
redc = ecc->redc ? time_function (bench_redc, &ctx) : 0;
- modq = time_function (bench_modq, &ctx);
+ modq = ecc->modq ? time_function (bench_modq, &ctx) : 0;
modinv = time_function (bench_modinv, &ctx);
#if !NETTLE_USE_MINI_GMP
@@ -300,11 +335,23 @@ bench_curve (const struct ecc_curve *ecc)
#else
modinv_powm = 0;
#endif
- dup_jj = time_function (bench_dup_jj, &ctx);
- add_jja = time_function (bench_add_jja, &ctx);
- add_jjj = time_function (bench_add_jjj, &ctx);
- mul_g = time_function (bench_mul_g, &ctx);
- mul_a = time_function (bench_mul_a, &ctx);
+ if (ecc->bit_size == 255)
+ {
+ /* For now, curve25519 is a special case */
+ mul_g = time_function (bench_mul_g_eh, &ctx);
+ mul_a = time_function (bench_mul_a_eh, &ctx);
+ dup_jj = time_function (bench_dup_eh, &ctx);
+ add_jja = time_function (bench_add_eh, &ctx);
+ add_jjj = time_function (bench_add_ehh, &ctx);
+ }
+ else
+ {
+ dup_jj = time_function (bench_dup_jj, &ctx);
+ add_jja = time_function (bench_add_jja, &ctx);
+ add_jjj = time_function (bench_add_jjj, &ctx);
+ mul_g = time_function (bench_mul_g, &ctx);
+ mul_a = time_function (bench_mul_a, &ctx);
+ }
free (ctx.rp);
free (ctx.ap);
@@ -321,6 +368,7 @@ bench_curve (const struct ecc_curve *ecc)
const struct ecc_curve * const curves[] = {
&nettle_secp_192r1,
&nettle_secp_224r1,
+ &nettle_curve25519,
&nettle_secp_256r1,
&nettle_secp_384r1,
&nettle_secp_521r1,