Added new 64-bit implementations of Curve25519 and P-256.
[BearSSL] / test / test_crypto.c
index 99c68d9..ae1d170 100644 (file)
@@ -8569,6 +8569,40 @@ test_EC_p256_m31(void)
                (uint32_t)1 << BR_EC_secp256r1);
 }
 
+static void
+test_EC_p256_m62(void)
+{
+       const br_ec_impl *ec;
+
+       ec = br_ec_p256_m62_get();
+       if (ec != NULL) {
+               test_EC_KAT("EC_p256_m62", ec,
+                       (uint32_t)1 << BR_EC_secp256r1);
+               test_EC_keygen("EC_p256_m62", ec,
+                       (uint32_t)1 << BR_EC_secp256r1);
+       } else {
+               printf("Test EC_p256_m62: UNAVAILABLE\n");
+               printf("Test EC_p256_m62 keygen: UNAVAILABLE\n");
+       }
+}
+
+static void
+test_EC_p256_m64(void)
+{
+       const br_ec_impl *ec;
+
+       ec = br_ec_p256_m64_get();
+       if (ec != NULL) {
+               test_EC_KAT("EC_p256_m64", ec,
+                       (uint32_t)1 << BR_EC_secp256r1);
+               test_EC_keygen("EC_p256_m64", ec,
+                       (uint32_t)1 << BR_EC_secp256r1);
+       } else {
+               printf("Test EC_p256_m64: UNAVAILABLE\n");
+               printf("Test EC_p256_m64 keygen: UNAVAILABLE\n");
+       }
+}
+
 const struct {
        const char *scalar_le;
        const char *u_in;
@@ -8714,6 +8748,22 @@ test_EC_c25519_m62(void)
        }
 }
 
+static void
+test_EC_c25519_m64(void)
+{
+       const br_ec_impl *ec;
+
+       ec = br_ec_c25519_m64_get();
+       if (ec != NULL) {
+               test_EC_c25519("EC_c25519_m64", ec);
+               test_EC_keygen("EC_c25519_m64", ec,
+                       (uint32_t)1 << BR_EC_curve25519);
+       } else {
+               printf("Test EC_c25519_m64: UNAVAILABLE\n");
+               printf("Test EC_c25519_m64 keygen: UNAVAILABLE\n");
+       }
+}
+
 static const unsigned char EC_P256_PUB_POINT[] = {
        0x04, 0x60, 0xFE, 0xD4, 0xBA, 0x25, 0x5A, 0x9D,
        0x31, 0xC9, 0x61, 0xEB, 0x74, 0xC6, 0x35, 0x6D,
@@ -9381,11 +9431,14 @@ static const struct {
        STU(EC_prime_i31),
        STU(EC_p256_m15),
        STU(EC_p256_m31),
+       STU(EC_p256_m62),
+       STU(EC_p256_m64),
        STU(EC_c25519_i15),
        STU(EC_c25519_i31),
        STU(EC_c25519_m15),
        STU(EC_c25519_m31),
        STU(EC_c25519_m62),
+       STU(EC_c25519_m64),
        STU(ECDSA_i15),
        STU(ECDSA_i31),
        STU(modpow_i31),