1
mirror of https://github.com/jedisct1/libsodium.git synced 2024-12-20 02:25:14 -07:00

ge25519_select() -> ge25519_cmov8()

This commit is contained in:
Frank Denis 2019-02-16 17:44:01 +01:00
parent e6aa7e1da4
commit bc5e9056eb

View File

@ -550,7 +550,7 @@ ge25519_cmov_cached(ge25519_cached *t, const ge25519_cached *u, unsigned char b)
} }
static void static void
ge25519_select(ge25519_precomp *t, const ge25519_precomp precomp[8], const signed char b) ge25519_cmov8(ge25519_precomp *t, const ge25519_precomp precomp[8], const signed char b)
{ {
ge25519_precomp minust; ge25519_precomp minust;
const unsigned char bnegative = negative(b); const unsigned char bnegative = negative(b);
@ -572,7 +572,7 @@ ge25519_select(ge25519_precomp *t, const ge25519_precomp precomp[8], const signe
} }
static void static void
ge25519_select_base(ge25519_precomp *t, const int pos, const signed char b) ge25519_cmov8_base(ge25519_precomp *t, const int pos, const signed char b)
{ {
static const ge25519_precomp base[32][8] = { /* base[i][j] = (j+1)*256^i*B */ static const ge25519_precomp base[32][8] = { /* base[i][j] = (j+1)*256^i*B */
#ifdef HAVE_TI_MODE #ifdef HAVE_TI_MODE
@ -581,11 +581,11 @@ ge25519_select_base(ge25519_precomp *t, const int pos, const signed char b)
# include "fe_25_5/base.h" # include "fe_25_5/base.h"
#endif #endif
}; };
ge25519_select(t, base[pos], b); ge25519_cmov8(t, base[pos], b);
} }
static void static void
ge25519_select_cached(ge25519_cached *t, const ge25519_cached cached[8], const signed char b) ge25519_cmov8_cached(ge25519_cached *t, const ge25519_cached cached[8], const signed char b)
{ {
ge25519_cached minust; ge25519_cached minust;
const unsigned char bnegative = negative(b); const unsigned char bnegative = negative(b);
@ -811,7 +811,7 @@ ge25519_scalarmult(ge25519_p3 *h, const unsigned char *a, const ge25519_p3 *p)
ge25519_p3_0(h); ge25519_p3_0(h);
for (i = 63; i != 0; i--) { for (i = 63; i != 0; i--) {
ge25519_select_cached(&t, pi, e[i]); ge25519_cmov8_cached(&t, pi, e[i]);
ge25519_add(&r, h, &t); ge25519_add(&r, h, &t);
ge25519_p1p1_to_p2(&s, &r); ge25519_p1p1_to_p2(&s, &r);
@ -825,7 +825,7 @@ ge25519_scalarmult(ge25519_p3 *h, const unsigned char *a, const ge25519_p3 *p)
ge25519_p1p1_to_p3(h, &r); /* *16 */ ge25519_p1p1_to_p3(h, &r); /* *16 */
} }
ge25519_select_cached(&t, pi, e[i]); ge25519_cmov8_cached(&t, pi, e[i]);
ge25519_add(&r, h, &t); ge25519_add(&r, h, &t);
ge25519_p1p1_to_p3(h, &r); ge25519_p1p1_to_p3(h, &r);
@ -871,7 +871,7 @@ ge25519_scalarmult_base(ge25519_p3 *h, const unsigned char *a)
ge25519_p3_0(h); ge25519_p3_0(h);
for (i = 1; i < 64; i += 2) { for (i = 1; i < 64; i += 2) {
ge25519_select_base(&t, i / 2, e[i]); ge25519_cmov8_base(&t, i / 2, e[i]);
ge25519_madd(&r, h, &t); ge25519_madd(&r, h, &t);
ge25519_p1p1_to_p3(h, &r); ge25519_p1p1_to_p3(h, &r);
} }
@ -886,7 +886,7 @@ ge25519_scalarmult_base(ge25519_p3 *h, const unsigned char *a)
ge25519_p1p1_to_p3(h, &r); ge25519_p1p1_to_p3(h, &r);
for (i = 0; i < 64; i += 2) { for (i = 0; i < 64; i += 2) {
ge25519_select_base(&t, i / 2, e[i]); ge25519_cmov8_base(&t, i / 2, e[i]);
ge25519_madd(&r, h, &t); ge25519_madd(&r, h, &t);
ge25519_p1p1_to_p3(h, &r); ge25519_p1p1_to_p3(h, &r);
} }