Made m64 implementations of elliptic curves the default (when available).

This commit is contained in:
Thomas Pornin 2018-12-19 00:19:19 +01:00
parent f0ddbc32f0
commit d5acc4f590
2 changed files with 37 additions and 6 deletions

View file

@ -29,10 +29,14 @@ api_generator(int curve, size_t *len)
{ {
switch (curve) { switch (curve) {
case BR_EC_secp256r1: 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); return br_ec_p256_m31.generator(curve, len);
#endif
case BR_EC_curve25519: case BR_EC_curve25519:
#if BR_INT128 || BR_UMUL128 #if BR_INT128 || BR_UMUL128
return br_ec_c25519_m62.generator(curve, len); return br_ec_c25519_m64.generator(curve, len);
#else #else
return br_ec_c25519_m31.generator(curve, len); return br_ec_c25519_m31.generator(curve, len);
#endif #endif
@ -46,10 +50,14 @@ api_order(int curve, size_t *len)
{ {
switch (curve) { switch (curve) {
case BR_EC_secp256r1: 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); return br_ec_p256_m31.order(curve, len);
#endif
case BR_EC_curve25519: case BR_EC_curve25519:
#if BR_INT128 || BR_UMUL128 #if BR_INT128 || BR_UMUL128
return br_ec_c25519_m62.order(curve, len); return br_ec_c25519_m64.order(curve, len);
#else #else
return br_ec_c25519_m31.order(curve, len); return br_ec_c25519_m31.order(curve, len);
#endif #endif
@ -63,10 +71,14 @@ api_xoff(int curve, size_t *len)
{ {
switch (curve) { switch (curve) {
case BR_EC_secp256r1: 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); return br_ec_p256_m31.xoff(curve, len);
#endif
case BR_EC_curve25519: case BR_EC_curve25519:
#if BR_INT128 || BR_UMUL128 #if BR_INT128 || BR_UMUL128
return br_ec_c25519_m62.xoff(curve, len); return br_ec_c25519_m64.xoff(curve, len);
#else #else
return br_ec_c25519_m31.xoff(curve, len); return br_ec_c25519_m31.xoff(curve, len);
#endif #endif
@ -81,10 +93,14 @@ api_mul(unsigned char *G, size_t Glen,
{ {
switch (curve) { switch (curve) {
case BR_EC_secp256r1: 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); return br_ec_p256_m31.mul(G, Glen, kb, kblen, curve);
#endif
case BR_EC_curve25519: case BR_EC_curve25519:
#if BR_INT128 || BR_UMUL128 #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 #else
return br_ec_c25519_m31.mul(G, Glen, kb, kblen, curve); return br_ec_c25519_m31.mul(G, Glen, kb, kblen, curve);
#endif #endif
@ -99,10 +115,14 @@ api_mulgen(unsigned char *R,
{ {
switch (curve) { switch (curve) {
case BR_EC_secp256r1: 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); return br_ec_p256_m31.mulgen(R, x, xlen, curve);
#endif
case BR_EC_curve25519: case BR_EC_curve25519:
#if BR_INT128 || BR_UMUL128 #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 #else
return br_ec_c25519_m31.mulgen(R, x, xlen, curve); return br_ec_c25519_m31.mulgen(R, x, xlen, curve);
#endif #endif
@ -118,11 +138,16 @@ api_muladd(unsigned char *A, const unsigned char *B, size_t len,
{ {
switch (curve) { switch (curve) {
case BR_EC_secp256r1: 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, return br_ec_p256_m31.muladd(A, B, len,
x, xlen, y, ylen, curve); x, xlen, y, ylen, curve);
#endif
case BR_EC_curve25519: case BR_EC_curve25519:
#if BR_INT128 || BR_UMUL128 #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); x, xlen, y, ylen, curve);
#else #else
return br_ec_c25519_m31.muladd(A, B, len, return br_ec_c25519_m31.muladd(A, B, len,

View file

@ -519,6 +519,12 @@ static const struct {
(const void *(*)(void))&br_rsa_i62_pkcs1_vrfy_get }, (const void *(*)(void))&br_rsa_i62_pkcs1_vrfy_get },
{ "ec_c25519_m62", "m62", { "ec_c25519_m62", "m62",
(const void *(*)(void))&br_ec_c25519_m62_get }, (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, } { 0, 0, 0, }
}; };