]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
ml-dsa: convert to transient error state on import failure in FIPS provider
authorPauli <ppzgs1@gmail.com>
Fri, 29 Aug 2025 02:43:01 +0000 (12:43 +1000)
committerNeil Horman <nhorman@openssl.org>
Sat, 30 Aug 2025 13:11:13 +0000 (09:11 -0400)
Reviewed-by: Neil Horman <nhorman@openssl.org>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/28376)

providers/implementations/keymgmt/ml_dsa_kmgmt.c.in

index f806fb73e7886224f68ae1c6709eaa2756342c93..fb1005918d0c599106a65405e6587dca4916e790 100644 (file)
@@ -281,6 +281,7 @@ static int ml_dsa_import(void *keydata, int selection, const OSSL_PARAM params[]
 {
     ML_DSA_KEY *key = keydata;
     int include_priv;
+    int res;
 
     if (!ossl_prov_is_running() || key == NULL)
         return 0;
@@ -289,7 +290,17 @@ static int ml_dsa_import(void *keydata, int selection, const OSSL_PARAM params[]
         return 0;
 
     include_priv = ((selection & OSSL_KEYMGMT_SELECT_PRIVATE_KEY) != 0);
-    return ml_dsa_key_fromdata(key, params, include_priv);
+    res = ml_dsa_key_fromdata(key, params, include_priv);
+#ifdef FIPS_MODULE
+    if (res > 0) {
+        res = ml_dsa_pairwise_test(key);
+        if (!res) {
+            ossl_ml_dsa_key_reset(key);
+            ossl_set_error_state(OSSL_SELF_TEST_TYPE_PCT_IMPORT);
+        }
+    }
+#endif  /* FIPS_MODULE */
+    return res;
 }
 
 static const OSSL_PARAM *ml_dsa_imexport_types(int selection)