Add a test for creating ECX private keys that are too short
authorMatt Caswell <matt@openssl.org>
Mon, 15 Nov 2021 12:24:05 +0000 (12:24 +0000)
committerMatt Caswell <matt@openssl.org>
Tue, 16 Nov 2021 13:28:40 +0000 (13:28 +0000)
We expect attempting to create such short keys to fail

Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/17041)

(cherry picked from commit 8c08c8b37cab0eb66ca74fc65a40af3ccec77c00)

test/evp_extra_test.c

index 0db48a7c93737c09c7610bcc09d57056929b6944..830639b8ab55b5123f2ceceb8bfd4badcc6143cf 100644 (file)
@@ -4231,6 +4231,28 @@ static int test_cipher_with_engine(void)
 # endif /* OPENSSL_NO_DYNAMIC_ENGINE */
 #endif /* OPENSSL_NO_DEPRECATED_3_0 */
 
+static int ecxnids[] = {
+    NID_X25519,
+    NID_X448,
+    NID_ED25519,
+    NID_ED448
+};
+
+/* Test that creating ECX keys with a short private key fails as expected */
+static int test_ecx_short_keys(int tst)
+{
+    unsigned char ecxkeydata = 1;
+    EVP_PKEY *pkey;
+
+
+    pkey = EVP_PKEY_new_raw_private_key(ecxnids[tst], NULL, &ecxkeydata, 1);
+    if (!TEST_ptr_null(pkey)) {
+        EVP_PKEY_free(pkey);
+        return 0;
+    }
+    return 1;
+}
+
 typedef enum OPTION_choice {
     OPT_ERR = -1,
     OPT_EOF = 0,
@@ -4374,6 +4396,8 @@ int setup_tests(void)
 # endif
 #endif
 
+    ADD_ALL_TESTS(test_ecx_short_keys, OSSL_NELEM(ecxnids));
+
     return 1;
 }