From d5acc4f590a1b83b646dafa0232aa68912e00c07 Mon Sep 17 00:00:00 2001 From: Thomas Pornin Date: Wed, 19 Dec 2018 00:19:19 +0100 Subject: [PATCH] Made m64 implementations of elliptic curves the default (when available). --- src/ec/ec_all_m31.c | 37 +++++++++++++++++++++++++++++++------ tools/names.c | 6 ++++++ 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/ec/ec_all_m31.c b/src/ec/ec_all_m31.c index b217d7c..8fd8c3c 100644 --- a/src/ec/ec_all_m31.c +++ b/src/ec/ec_all_m31.c @@ -29,10 +29,14 @@ api_generator(int curve, size_t *len) { switch (curve) { case BR_EC_secp256r1: +#if BR_INT128 || BR_UMUL128 + return br_ec_p256_m64.generator(curve, len); +#else return br_ec_p256_m31.generator(curve, len); +#endif case BR_EC_curve25519: #if BR_INT128 || BR_UMUL128 - return br_ec_c25519_m62.generator(curve, len); + return br_ec_c25519_m64.generator(curve, len); #else return br_ec_c25519_m31.generator(curve, len); #endif @@ -46,10 +50,14 @@ api_order(int curve, size_t *len) { switch (curve) { case BR_EC_secp256r1: +#if BR_INT128 || BR_UMUL128 + return br_ec_p256_m64.order(curve, len); +#else return br_ec_p256_m31.order(curve, len); +#endif case BR_EC_curve25519: #if BR_INT128 || BR_UMUL128 - return br_ec_c25519_m62.order(curve, len); + return br_ec_c25519_m64.order(curve, len); #else return br_ec_c25519_m31.order(curve, len); #endif @@ -63,10 +71,14 @@ api_xoff(int curve, size_t *len) { switch (curve) { case BR_EC_secp256r1: +#if BR_INT128 || BR_UMUL128 + return br_ec_p256_m64.xoff(curve, len); +#else return br_ec_p256_m31.xoff(curve, len); +#endif case BR_EC_curve25519: #if BR_INT128 || BR_UMUL128 - return br_ec_c25519_m62.xoff(curve, len); + return br_ec_c25519_m64.xoff(curve, len); #else return br_ec_c25519_m31.xoff(curve, len); #endif @@ -81,10 +93,14 @@ api_mul(unsigned char *G, size_t Glen, { switch (curve) { case BR_EC_secp256r1: +#if BR_INT128 || BR_UMUL128 + return br_ec_p256_m64.mul(G, Glen, kb, kblen, curve); +#else return br_ec_p256_m31.mul(G, Glen, kb, kblen, curve); +#endif case BR_EC_curve25519: #if BR_INT128 || BR_UMUL128 - return br_ec_c25519_m62.mul(G, Glen, kb, kblen, curve); + return br_ec_c25519_m64.mul(G, Glen, kb, kblen, curve); #else return br_ec_c25519_m31.mul(G, Glen, kb, kblen, curve); #endif @@ -99,10 +115,14 @@ api_mulgen(unsigned char *R, { switch (curve) { case BR_EC_secp256r1: +#if BR_INT128 || BR_UMUL128 + return br_ec_p256_m64.mulgen(R, x, xlen, curve); +#else return br_ec_p256_m31.mulgen(R, x, xlen, curve); +#endif case BR_EC_curve25519: #if BR_INT128 || BR_UMUL128 - return br_ec_c25519_m62.mulgen(R, x, xlen, curve); + return br_ec_c25519_m64.mulgen(R, x, xlen, curve); #else return br_ec_c25519_m31.mulgen(R, x, xlen, curve); #endif @@ -118,11 +138,16 @@ api_muladd(unsigned char *A, const unsigned char *B, size_t len, { switch (curve) { case BR_EC_secp256r1: +#if BR_INT128 || BR_UMUL128 + return br_ec_p256_m64.muladd(A, B, len, + x, xlen, y, ylen, curve); +#else return br_ec_p256_m31.muladd(A, B, len, x, xlen, y, ylen, curve); +#endif case BR_EC_curve25519: #if BR_INT128 || BR_UMUL128 - return br_ec_c25519_m62.muladd(A, B, len, + return br_ec_c25519_m64.muladd(A, B, len, x, xlen, y, ylen, curve); #else return br_ec_c25519_m31.muladd(A, B, len, diff --git a/tools/names.c b/tools/names.c index 8d6a67e..3751d93 100644 --- a/tools/names.c +++ b/tools/names.c @@ -519,6 +519,12 @@ static const struct { (const void *(*)(void))&br_rsa_i62_pkcs1_vrfy_get }, { "ec_c25519_m62", "m62", (const void *(*)(void))&br_ec_c25519_m62_get }, + { "ec_c25519_m64", "m64", + (const void *(*)(void))&br_ec_c25519_m64_get }, + { "ec_p256_m62", "m62", + (const void *(*)(void))&br_ec_p256_m62_get }, + { "ec_p256_m64", "m64", + (const void *(*)(void))&br_ec_p256_m64_get }, { 0, 0, 0, } }; -- 2.17.1