From: Jouni Malinen Date: Sat, 23 Apr 2022 13:12:49 +0000 (+0300) Subject: wolfSSL: Speed up crypto_ec_point_compute_y_sqr() X-Git-Tag: hostap_2_11~2013 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=08d7738bb26c693e03c165f2981f87d73959ce49;p=thirdparty%2Fhostap.git wolfSSL: Speed up crypto_ec_point_compute_y_sqr() Optimize the calculation by computing (x^2 + a) first to get rid of one separate multiplication by x. Signed-off-by: Jouni Malinen --- diff --git a/src/crypto/crypto_wolfssl.c b/src/crypto/crypto_wolfssl.c index afe00f108..1dddafed0 100644 --- a/src/crypto/crypto_wolfssl.c +++ b/src/crypto/crypto_wolfssl.c @@ -1650,25 +1650,23 @@ struct crypto_bignum * crypto_ec_point_compute_y_sqr(struct crypto_ec *e, const struct crypto_bignum *x) { - mp_int *y2, t; + mp_int *y2; if (TEST_FAIL()) return NULL; + /* y^2 = x^3 + ax + b = (x^2 + a)x + b */ y2 = (mp_int *) crypto_bignum_init(); if (!y2 || - mp_init(&t) != MP_OKAY || mp_sqrmod((mp_int *) x, &e->prime, y2) != 0 || + mp_addmod(y2, &e->a, &e->prime, y2) != 0 || mp_mulmod((mp_int *) x, y2, &e->prime, y2) != 0 || - mp_mulmod((mp_int *) x, &e->a, &e->prime, &t) != 0 || - mp_addmod(y2, &t, &e->prime, y2) != 0 || mp_addmod(y2, &e->b, &e->prime, y2) != 0) { mp_clear(y2); os_free(y2); y2 = NULL; } - mp_clear(&t); return (struct crypto_bignum *) y2; }