]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
slh-dsa: add security category support
authorPauli <ppzgs1@gmail.com>
Tue, 6 May 2025 01:33:34 +0000 (11:33 +1000)
committerPauli <ppzgs1@gmail.com>
Tue, 27 May 2025 08:01:44 +0000 (18:01 +1000)
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Dmitry Belyavskiy <beldmit@gmail.com>
(Merged from https://github.com/openssl/openssl/pull/27571)

crypto/slh_dsa/slh_dsa_key.c
include/crypto/slh_dsa.h
providers/implementations/keymgmt/slh_dsa_kmgmt.c

index d71d55c258292cf8727ec86c9279bdad3566e5c4..3462da2916c25ccc709fce9dabab8eaf444c8bab 100644 (file)
@@ -425,6 +425,11 @@ size_t ossl_slh_dsa_key_get_n(const SLH_DSA_KEY *key)
     return key->params->n;
 }
 
+int ossl_slh_dsa_key_get_security_category(const SLH_DSA_KEY *key)
+{
+    return key->params->security_category;
+}
+
 size_t ossl_slh_dsa_key_get_sig_len(const SLH_DSA_KEY *key)
 {
     return key->params->sig_len;
index cf1e21215f9e7e2ba98432494a14c7eaf9e010d7..93e0b80fb685a77120a919c61188d7eeb427e25e 100644 (file)
@@ -46,6 +46,7 @@ __owur int ossl_slh_dsa_set_pub(SLH_DSA_KEY *key, const uint8_t *pub,
                                 size_t pub_len);
 __owur size_t ossl_slh_dsa_key_get_priv_len(const SLH_DSA_KEY *key);
 __owur size_t ossl_slh_dsa_key_get_n(const SLH_DSA_KEY *key);
+__owur int ossl_slh_dsa_key_get_security_category(const SLH_DSA_KEY *key);
 __owur size_t ossl_slh_dsa_key_get_sig_len(const SLH_DSA_KEY *key);
 __owur const char *ossl_slh_dsa_key_get_name(const SLH_DSA_KEY *key);
 __owur int ossl_slh_dsa_key_get_type(const SLH_DSA_KEY *key);
index d3803424a6a176167466fa63d8f7fe15fc6b1bd2..6afe0a07df31925af447d645cc0cb6e8ec8eb045 100644 (file)
@@ -135,6 +135,7 @@ static const OSSL_PARAM slh_dsa_params[] = {
     OSSL_PARAM_int(OSSL_PKEY_PARAM_BITS, NULL),
     OSSL_PARAM_int(OSSL_PKEY_PARAM_SECURITY_BITS, NULL),
     OSSL_PARAM_int(OSSL_PKEY_PARAM_MAX_SIZE, NULL),
+    OSSL_PARAM_int(OSSL_PKEY_PARAM_SECURITY_CATEGORY, NULL),
     OSSL_PARAM_utf8_string(OSSL_PKEY_PARAM_MANDATORY_DIGEST, NULL, 0),
     SLH_DSA_IMEXPORTABLE_PARAMETERS,
     OSSL_PARAM_END
@@ -183,6 +184,9 @@ static int slh_dsa_get_params(void *keydata, OSSL_PARAM params[])
     if ((p = OSSL_PARAM_locate(params, OSSL_PKEY_PARAM_MAX_SIZE)) != NULL
             && !OSSL_PARAM_set_int(p, ossl_slh_dsa_key_get_sig_len(key)))
         return 0;
+    if ((p = OSSL_PARAM_locate(params, OSSL_PKEY_PARAM_SECURITY_CATEGORY)) != NULL
+            && !OSSL_PARAM_set_int(p, ossl_slh_dsa_key_get_security_category(key)))
+        return 0;
 
     priv = ossl_slh_dsa_key_get_priv(key);
     if (priv != NULL) {