static void bench_curve25519_mul_g (void *p) { struct curve25519_ctx *ctx = p; uint8_t q[CURVE25519_SIZE]; curve25519_mul_g (q, ctx->s); }
static void bench_curve25519 (void) { double mul_g; double mul; struct knuth_lfib_ctx lfib; struct curve25519_ctx ctx; knuth_lfib_init (&lfib, 2); knuth_lfib_random (&lfib, sizeof(ctx.s), ctx.s); curve25519_mul_g (ctx.x, ctx.s); mul_g = time_function (bench_curve25519_mul_g, &ctx); mul = time_function (bench_curve25519_mul, &ctx); printf("%16s %4d %9.4f %9.4f\n", "curve25519", 255, 1e-3/mul_g, 1e-3/mul); }
// Generate public key Qa = d*P (Qa, P are EC points; * is EC mult) void gen_pubkey(dheluks_pkg_t *pkg, dheluks_kys_t *skr) { curve25519_mul_g(pkg->pubkey, skr->privkey); //generate pubkey }