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) {
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,

View File

@ -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, }
};