improving tests for adding sigalg with empty digest
authorMichael Baentsch <info@baentsch.ch>
Mon, 20 Dec 2021 10:01:00 +0000 (11:01 +0100)
committerPauli <pauli@openssl.org>
Thu, 23 Dec 2021 01:55:15 +0000 (12:55 +1100)
Reviewed-by: Tomas Mraz <tomas@openssl.org>
Reviewed-by: Paul Dale <pauli@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/17315)

test/upcallstest.c

index 76899fee3de096d2fc5ed36d50801309755a51d2..c4ef714713e67753185fb5dcbfcd6ae7076e0fec 100644 (file)
@@ -71,11 +71,12 @@ static int obj_provider_init(const OSSL_CORE_HANDLE *handle,
     /* additional tests checking empty digest algs are accepted, too */
     if (!c_obj_add_sigid(handle, SIGALG_OID, "", SIG_LN))
         return 0;
-    if (!c_obj_add_sigid(handle, SIGALG_OID, NULL, SIG_LN))
-        return 0;
     /* checking wrong digest alg name is rejected: */
     if (c_obj_add_sigid(handle, SIGALG_OID, "NonsenseAlg", SIG_LN))
         return 0;
+    /* Testing actual triplet addition under separate sig alg */
+    if (!c_obj_add_sigid(handle, SIG_OID, NULL, SIG_LN))
+        return 0;
 
     return 1;
 }
@@ -105,6 +106,14 @@ static int obj_create_test(void)
             || !TEST_int_eq(signid, OBJ_ln2nid(SIG_LN)))
         goto err;
 
+    /* Check empty digest alg storage capability */
+    sigalgnid = OBJ_txt2nid(SIG_OID);
+    if (!TEST_int_ne(sigalgnid, NID_undef)
+            || !TEST_true(OBJ_find_sigid_algs(sigalgnid, &digestnid, &signid))
+            || !TEST_int_eq(digestnid, NID_undef)
+            || !TEST_int_ne(signid, NID_undef))
+        goto err;
+
     testresult = 1;
  err:
     OSSL_PROVIDER_unload(objprov);