]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
mdc2: use a generated param decoder
authorPauli <paul.dale@oracle.com>
Thu, 18 Sep 2025 05:50:54 +0000 (15:50 +1000)
committerTomas Mraz <tomas@openssl.org>
Wed, 1 Oct 2025 15:45:46 +0000 (17:45 +0200)
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/28616)

providers/implementations/digests/mdc2_prov.c.in

index e1fc477d21e56fb27c6d07022588b9a6b393bf33..a48ad1f5d11624165b9aba85f57d9efd3d1bd2dd 100644 (file)
@@ -6,6 +6,9 @@
  * in the file LICENSE in the source distribution or at
  * https://www.openssl.org/source/license.html
  */
+{-
+use OpenSSL::paramnames qw(produce_param_decoder);
+-}
 
 /*
  * MDC2 low level APIs are deprecated for public use, but still ok for
  */
 #include "internal/deprecated.h"
 
+#include <string.h>
 #include <openssl/crypto.h>
 #include <openssl/params.h>
 #include <openssl/mdc2.h>
 #include <openssl/core_names.h>
 #include <openssl/err.h>
 #include <openssl/proverr.h>
+#include <internal/common.h>
 #include "prov/digestcommon.h"
 #include "prov/implementations.h"
 
 static OSSL_FUNC_digest_set_ctx_params_fn mdc2_set_ctx_params;
 static OSSL_FUNC_digest_settable_ctx_params_fn mdc2_settable_ctx_params;
 
-static const OSSL_PARAM known_mdc2_settable_ctx_params[] = {
-    OSSL_PARAM_uint(OSSL_DIGEST_PARAM_PAD_TYPE, NULL),
-    OSSL_PARAM_END
-};
+{- produce_param_decoder('mdc2_set_ctx_params',
+                         (['OSSL_DIGEST_PARAM_PAD_TYPE', 'pad', 'uint'],
+                         )); -}
 
 static const OSSL_PARAM *mdc2_settable_ctx_params(ossl_unused void *ctx,
                                                   ossl_unused void *provctx)
 {
-    return known_mdc2_settable_ctx_params;
+    return mdc2_set_ctx_params_list;
 }
 
 static int mdc2_set_ctx_params(void *vctx, const OSSL_PARAM params[])
 {
-    const OSSL_PARAM *p;
+    struct mdc2_set_ctx_params_st p;
     MDC2_CTX *ctx = (MDC2_CTX *)vctx;
 
-    if (ctx == NULL)
+    if (ctx == NULL || !mdc2_set_ctx_params_decoder(params, &p))
         return 0;
-    if (ossl_param_is_empty(params))
-        return 1;
 
-    p = OSSL_PARAM_locate_const(params, OSSL_DIGEST_PARAM_PAD_TYPE);
-    if (p != NULL && !OSSL_PARAM_get_uint(p, &ctx->pad_type)) {
+    if (p.pad != NULL && !OSSL_PARAM_get_uint(p.pad, &ctx->pad_type)) {
         ERR_raise(ERR_LIB_PROV, PROV_R_FAILED_TO_GET_PARAMETER);
         return 0;
     }