From 4b65ed1a5bd742bf8408bde3f43f818df03d7f88 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Fri, 24 Jan 2014 16:16:41 +0900 Subject: [PATCH] simplify compute_kP --- ChangeLog | 1 + src/ec_p256.c | 22 ++++------------------ 2 files changed, 5 insertions(+), 18 deletions(-) diff --git a/ChangeLog b/ChangeLog index 49e9a61..e195b2b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ * src/ec_p256.c (get_v_k_i): New. (compute_kG): Fix for constant time. + (compute_kP): Simplify. 2014-01-23 Niibe Yutaka diff --git a/src/ec_p256.c b/src/ec_p256.c index 6bbec20..a62114f 100644 --- a/src/ec_p256.c +++ b/src/ec_p256.c @@ -1,7 +1,7 @@ /* -*- coding: utf-8 -*- * ec_p256.c - Elliptic curve over GF(p256) * - * Copyright (C) 2011, 2013 Free Software Initiative of Japan + * Copyright (C) 2011, 2013, 2014 Free Software Initiative of Japan * Author: NIIBE Yutaka * * This file is a part of Gnuk, a GnuPG USB Token implementation. @@ -479,30 +479,16 @@ compute_kP (ac *X, const naf4_257 *NAF_K, const ac *P) return -1; } + memset (Q->z, 0, sizeof (bn256)); /* infinity */ for (i = 256; i >= 0; i--) { int k_i; - if (!q_is_infinite) - jpc_double (Q, Q); + jpc_double (Q, Q); k_i = naf4_257_get (NAF_K, i); if (k_i) - { - if (q_is_infinite) - { - memcpy (Q->x, p_Pi[NAF_K_INDEX(k_i)]->x, sizeof (bn256)); - if (NAF_K_SIGN (k_i)) - bn256_sub (Q->y, P256, p_Pi[NAF_K_INDEX(k_i)]->y); - else - memcpy (Q->y, p_Pi[NAF_K_INDEX(k_i)]->y, sizeof (bn256)); - memset (Q->z, 0, sizeof (bn256)); - Q->z->word[0] = 1; - q_is_infinite = 0; - } - else - jpc_add_ac_signed (Q, Q, p_Pi[NAF_K_INDEX(k_i)], NAF_K_SIGN (k_i)); - } + jpc_add_ac_signed (Q, Q, p_Pi[NAF_K_INDEX(k_i)], NAF_K_SIGN (k_i)); } return jpc_to_ac (X, Q);