From 4ca77b8cf5c12d284ad7b5b774154a090c9387c3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Olivier=20Ch=C3=A9ron?= Date: Wed, 21 Aug 2019 09:32:53 +0200 Subject: [PATCH] Faster P256.pointAdd Convert to projective coordinates without expansive calls to function 'scalar_mult'. --- cbits/p256/p256_ec.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/cbits/p256/p256_ec.c b/cbits/p256/p256_ec.c index bee8ff0..2d1650a 100644 --- a/cbits/p256/p256_ec.c +++ b/cbits/p256/p256_ec.c @@ -1287,19 +1287,16 @@ void cryptonite_p256e_point_add( const cryptonite_p256_int *in_x2, const cryptonite_p256_int *in_y2, cryptonite_p256_int *out_x, cryptonite_p256_int *out_y) { - felem x1, y1, z1, x2, y2, z2, px1, py1, px2, py2; - const cryptonite_p256_int one = P256_ONE; + felem x, y, z, px1, py1, px2, py2; to_montgomery(px1, in_x1); to_montgomery(py1, in_y1); to_montgomery(px2, in_x2); to_montgomery(py2, in_y2); - scalar_mult(x1, y1, z1, px1, py1, &one); - scalar_mult(x2, y2, z2, px2, py2, &one); - point_add_or_double_vartime(x1, y1, z1, x1, y1, z1, x2, y2, z2); + point_add_or_double_vartime(x, y, z, px1, py1, kOne, px2, py2, kOne); - point_to_affine(px1, py1, x1, y1, z1); + point_to_affine(px1, py1, x, y, z); from_montgomery(out_x, px1); from_montgomery(out_y, py1); }