Two new Curve25519 implementations (generic "i31" code, and optimised code with MUL31).

This commit is contained in:
Thomas Pornin 2017-01-15 23:16:18 +01:00
parent 3655193439
commit 89ea3b1876
6 changed files with 1211 additions and 12 deletions

View file

@ -5004,12 +5004,24 @@ test_EC_c25519_i15(void)
test_EC_c25519("EC_c25519_i15", &br_ec_c25519_i15);
}
static void
test_EC_c25519_i31(void)
{
test_EC_c25519("EC_c25519_i31", &br_ec_c25519_i31);
}
static void
test_EC_c25519_m15(void)
{
test_EC_c25519("EC_c25519_m15", &br_ec_c25519_m15);
}
static void
test_EC_c25519_m31(void)
{
test_EC_c25519("EC_c25519_m31", &br_ec_c25519_m31);
}
static const unsigned char EC_P256_PUB_POINT[] = {
0x04, 0x60, 0xFE, 0xD4, 0xBA, 0x25, 0x5A, 0x9D,
0x31, 0xC9, 0x61, 0xEB, 0x74, 0xC6, 0x35, 0x6D,
@ -5555,9 +5567,10 @@ static const struct {
STU(EC_prime_i15),
STU(EC_prime_i31),
STU(EC_p256_m15),
/* STU(EC_prime_i32), */
STU(EC_c25519_i15),
STU(EC_c25519_i31),
STU(EC_c25519_m15),
STU(EC_c25519_m31),
STU(ECDSA_i15),
STU(ECDSA_i31),
{ 0, 0 }

View file

@ -687,40 +687,60 @@ test_speed_ec_inner(const char *name,
static void
test_speed_ec_p256_m15(void)
{
test_speed_ec_inner("EC m15 P-256",
test_speed_ec_inner("EC p256_m15",
&br_ec_p256_m15, &br_secp256r1);
}
static void
test_speed_ec_prime_i15(void)
{
test_speed_ec_inner("EC i15 P-256", &br_ec_prime_i15, &br_secp256r1);
test_speed_ec_inner("EC i15 P-384", &br_ec_prime_i15, &br_secp384r1);
test_speed_ec_inner("EC i15 P-521", &br_ec_prime_i15, &br_secp521r1);
test_speed_ec_inner("EC prime_i15 P-256",
&br_ec_prime_i15, &br_secp256r1);
test_speed_ec_inner("EC prime_i15 P-384",
&br_ec_prime_i15, &br_secp384r1);
test_speed_ec_inner("EC prime_i15 P-521",
&br_ec_prime_i15, &br_secp521r1);
}
static void
test_speed_ec_prime_i31(void)
{
test_speed_ec_inner("EC i31 P-256", &br_ec_prime_i31, &br_secp256r1);
test_speed_ec_inner("EC i31 P-384", &br_ec_prime_i31, &br_secp384r1);
test_speed_ec_inner("EC i31 P-521", &br_ec_prime_i31, &br_secp521r1);
test_speed_ec_inner("EC prime_i31 P-256",
&br_ec_prime_i31, &br_secp256r1);
test_speed_ec_inner("EC prime_i31 P-384",
&br_ec_prime_i31, &br_secp384r1);
test_speed_ec_inner("EC prime_i31 P-521",
&br_ec_prime_i31, &br_secp521r1);
}
static void
test_speed_ec_c25519_i15(void)
{
test_speed_ec_inner("EC i15 C25519",
test_speed_ec_inner("EC c25519_i15",
&br_ec_c25519_i15, &br_curve25519);
}
static void
test_speed_ec_c25519_i31(void)
{
test_speed_ec_inner("EC c25519_i31",
&br_ec_c25519_i31, &br_curve25519);
}
static void
test_speed_ec_c25519_m15(void)
{
test_speed_ec_inner("EC m15 C25519",
test_speed_ec_inner("EC c25519_m15",
&br_ec_c25519_m15, &br_curve25519);
}
static void
test_speed_ec_c25519_m31(void)
{
test_speed_ec_inner("EC c25519_m31",
&br_ec_c25519_m31, &br_curve25519);
}
static void
test_speed_ecdsa_inner(const char *name,
const br_ec_impl *impl, const br_ec_curve_def *cd,
@ -1259,11 +1279,13 @@ static const struct {
STU(rsa_i15),
STU(rsa_i31),
STU(rsa_i32),
STU(ec_p256_m15),
STU(ec_prime_i15),
STU(ec_prime_i31),
STU(ec_p256_m15),
STU(ec_c25519_i15),
STU(ec_c25519_i31),
STU(ec_c25519_m15),
STU(ec_c25519_m31),
STU(ecdsa_p256_m15),
STU(ecdsa_i15),
STU(ecdsa_i31),