/[smecontribs]/rpms/openssl3/contribs10/0049-Selectively-disallow-SHA1-signatures.patch
ViewVC logotype

Contents of /rpms/openssl3/contribs10/0049-Selectively-disallow-SHA1-signatures.patch

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (show annotations) (download)
Wed Jan 31 17:24:39 2024 UTC (4 months ago) by jpp
Branch: MAIN
CVS Tags: openssl3-3_0_7-5_el7_sme_1, HEAD
Initial import

1 From 243201772cc6d583fae9eba81cb2c2c7425bc564 Mon Sep 17 00:00:00 2001
2 From: Clemens Lang <cllang@redhat.com>
3 Date: Mon, 21 Feb 2022 17:24:44 +0100
4 Subject: Selectively disallow SHA1 signatures
5
6 For RHEL 9.0, we want to phase out SHA1. One of the steps to do that is
7 disabling SHA1 signatures. Introduce a new configuration option in the
8 alg_section named 'rh-allow-sha1-signatures'. This option defaults to
9 false. If set to false (or unset), any signature creation or
10 verification operations that involve SHA1 as digest will fail.
11
12 This also affects TLS, where the signature_algorithms extension of any
13 ClientHello message sent by OpenSSL will no longer include signatures
14 with the SHA1 digest if rh-allow-sha1-signatures is false. For servers
15 that request a client certificate, the same also applies for
16 CertificateRequest messages sent by them.
17
18 For signatures created using the EVP_PKEY API, this is a best-effort
19 check that will deny signatures in cases where the digest algorithm is
20 known. This means, for example, that that following steps will still
21 work:
22
23 $> openssl dgst -sha1 -binary -out sha1 infile
24 $> openssl pkeyutl -inkey key.pem -sign -in sha1 -out sha1sig
25 $> openssl pkeyutl -inkey key.pem -verify -sigfile sha1sig -in sha1
26
27 whereas these will not:
28
29 $> openssl dgst -sha1 -binary -out sha1 infile
30 $> openssl pkeyutl -inkey kem.pem -sign -in sha1 -out sha1sig -pkeyopt digest:sha1
31 $> openssl pkeyutl -inkey kem.pem -verify -sigfile sha1sig -in sha1 -pkeyopt digest:sha1
32
33 This happens because in the first case, OpenSSL's signature
34 implementation does not know that it is signing a SHA1 hash (it could be
35 signing arbitrary data).
36
37 Resolves: rhbz#2031742
38 ---
39 crypto/evp/evp_cnf.c | 13 ++++
40 crypto/evp/m_sigver.c | 77 +++++++++++++++++++
41 crypto/evp/pmeth_lib.c | 15 ++++
42 doc/man5/config.pod | 11 +++
43 include/internal/cryptlib.h | 3 +-
44 include/internal/sslconf.h | 4 +
45 providers/common/securitycheck.c | 20 +++++
46 providers/common/securitycheck_default.c | 9 ++-
47 providers/implementations/signature/dsa_sig.c | 11 ++-
48 .../implementations/signature/ecdsa_sig.c | 4 +
49 providers/implementations/signature/rsa_sig.c | 20 ++++-
50 ssl/t1_lib.c | 8 ++
51 util/libcrypto.num | 2 +
52 13 files changed, 188 insertions(+), 9 deletions(-)
53
54 diff --git a/crypto/evp/evp_cnf.c b/crypto/evp/evp_cnf.c
55 index 0e7fe64cf9..b9d3b6d226 100644
56 --- a/crypto/evp/evp_cnf.c
57 +++ b/crypto/evp/evp_cnf.c
58 @@ -10,6 +10,7 @@
59 #include <stdio.h>
60 #include <openssl/crypto.h>
61 #include "internal/cryptlib.h"
62 +#include "internal/sslconf.h"
63 #include <openssl/conf.h>
64 #include <openssl/x509.h>
65 #include <openssl/x509v3.h>
66 @@ -57,6 +58,18 @@ static int alg_module_init(CONF_IMODULE *md, const CONF *cnf)
67 ERR_raise(ERR_LIB_EVP, EVP_R_SET_DEFAULT_PROPERTY_FAILURE);
68 return 0;
69 }
70 + } else if (strcmp(oval->name, "rh-allow-sha1-signatures") == 0) {
71 + int m;
72 +
73 + /* Detailed error already reported. */
74 + if (!X509V3_get_value_bool(oval, &m))
75 + return 0;
76 +
77 + if (!ossl_ctx_legacy_digest_signatures_allowed_set(
78 + NCONF_get0_libctx((CONF *)cnf), m > 0, 0)) {
79 + ERR_raise(ERR_LIB_EVP, EVP_R_SET_DEFAULT_PROPERTY_FAILURE);
80 + return 0;
81 + }
82 } else {
83 ERR_raise_data(ERR_LIB_EVP, EVP_R_UNKNOWN_OPTION,
84 "name=%s, value=%s", oval->name, oval->value);
85 diff --git a/crypto/evp/m_sigver.c b/crypto/evp/m_sigver.c
86 index 9188edbc21..db1a1d7bc3 100644
87 --- a/crypto/evp/m_sigver.c
88 +++ b/crypto/evp/m_sigver.c
89 @@ -16,6 +16,71 @@
90 #include "internal/numbers.h" /* includes SIZE_MAX */
91 #include "evp_local.h"
92
93 +typedef struct ossl_legacy_digest_signatures_st {
94 + int allowed;
95 +} OSSL_LEGACY_DIGEST_SIGNATURES;
96 +
97 +static void ossl_ctx_legacy_digest_signatures_free(void *vldsigs)
98 +{
99 + OSSL_LEGACY_DIGEST_SIGNATURES *ldsigs = vldsigs;
100 +
101 + if (ldsigs != NULL) {
102 + OPENSSL_free(ldsigs);
103 + }
104 +}
105 +
106 +static void *ossl_ctx_legacy_digest_signatures_new(OSSL_LIB_CTX *ctx)
107 +{
108 + return OPENSSL_zalloc(sizeof(OSSL_LEGACY_DIGEST_SIGNATURES));
109 +}
110 +
111 +static const OSSL_LIB_CTX_METHOD ossl_ctx_legacy_digest_signatures_method = {
112 + OSSL_LIB_CTX_METHOD_DEFAULT_PRIORITY,
113 + ossl_ctx_legacy_digest_signatures_new,
114 + ossl_ctx_legacy_digest_signatures_free,
115 +};
116 +
117 +static OSSL_LEGACY_DIGEST_SIGNATURES *ossl_ctx_legacy_digest_signatures(
118 + OSSL_LIB_CTX *libctx, int loadconfig)
119 +{
120 +#ifndef FIPS_MODULE
121 + if (loadconfig && !OPENSSL_init_crypto(OPENSSL_INIT_LOAD_CONFIG, NULL))
122 + return 0;
123 +#endif
124 +
125 + return ossl_lib_ctx_get_data(libctx, OSSL_LIB_CTX_LEGACY_DIGEST_SIGNATURES,
126 + &ossl_ctx_legacy_digest_signatures_method);
127 +}
128 +
129 +int ossl_ctx_legacy_digest_signatures_allowed(OSSL_LIB_CTX *libctx, int loadconfig)
130 +{
131 + OSSL_LEGACY_DIGEST_SIGNATURES *ldsigs
132 + = ossl_ctx_legacy_digest_signatures(libctx, loadconfig);
133 +
134 +#ifndef FIPS_MODULE
135 + if (ossl_safe_getenv("OPENSSL_ENABLE_SHA1_SIGNATURES") != NULL)
136 + /* used in tests */
137 + return 1;
138 +#endif
139 +
140 + return ldsigs != NULL ? ldsigs->allowed : 0;
141 +}
142 +
143 +int ossl_ctx_legacy_digest_signatures_allowed_set(OSSL_LIB_CTX *libctx, int allow,
144 + int loadconfig)
145 +{
146 + OSSL_LEGACY_DIGEST_SIGNATURES *ldsigs
147 + = ossl_ctx_legacy_digest_signatures(libctx, loadconfig);
148 +
149 + if (ldsigs == NULL) {
150 + ERR_raise(ERR_LIB_EVP, ERR_R_INTERNAL_ERROR);
151 + return 0;
152 + }
153 +
154 + ldsigs->allowed = allow;
155 + return 1;
156 +}
157 +
158 #ifndef FIPS_MODULE
159
160 static int update(EVP_MD_CTX *ctx, const void *data, size_t datalen)
161 @@ -258,6 +323,18 @@ static int do_sigver_init(EVP_MD_CTX *ctx, EVP_PKEY_CTX **pctx,
162 }
163 }
164
165 + if (ctx->reqdigest != NULL
166 + && !EVP_PKEY_is_a(locpctx->pkey, SN_hmac)
167 + && !EVP_PKEY_is_a(locpctx->pkey, SN_tls1_prf)
168 + && !EVP_PKEY_is_a(locpctx->pkey, SN_hkdf)) {
169 + int mdnid = EVP_MD_nid(ctx->reqdigest);
170 + if (!ossl_ctx_legacy_digest_signatures_allowed(locpctx->libctx, 0)
171 + && (mdnid == NID_sha1 || mdnid == NID_md5_sha1)) {
172 + ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_DIGEST);
173 + goto err;
174 + }
175 + }
176 +
177 if (ver) {
178 if (signature->digest_verify_init == NULL) {
179 ERR_raise(ERR_LIB_EVP, EVP_R_INITIALIZATION_ERROR);
180 diff --git a/crypto/evp/pmeth_lib.c b/crypto/evp/pmeth_lib.c
181 index 2b9c6c2351..3c5a1e6f5d 100644
182 --- a/crypto/evp/pmeth_lib.c
183 +++ b/crypto/evp/pmeth_lib.c
184 @@ -33,6 +33,7 @@
185 #include "internal/ffc.h"
186 #include "internal/numbers.h"
187 #include "internal/provider.h"
188 +#include "internal/sslconf.h"
189 #include "evp_local.h"
190
191 #ifndef FIPS_MODULE
192 @@ -946,6 +947,20 @@ static int evp_pkey_ctx_set_md(EVP_PKEY_CTX *ctx, const EVP_MD *md,
193 return -2;
194 }
195
196 + if (EVP_PKEY_CTX_IS_SIGNATURE_OP(ctx)
197 + && md != NULL
198 + && ctx->pkey != NULL
199 + && !EVP_PKEY_is_a(ctx->pkey, SN_hmac)
200 + && !EVP_PKEY_is_a(ctx->pkey, SN_tls1_prf)
201 + && !EVP_PKEY_is_a(ctx->pkey, SN_hkdf)) {
202 + int mdnid = EVP_MD_nid(md);
203 + if ((mdnid == NID_sha1 || mdnid == NID_md5_sha1)
204 + && !ossl_ctx_legacy_digest_signatures_allowed(ctx->libctx, 0)) {
205 + ERR_raise(ERR_LIB_EVP, EVP_R_INVALID_DIGEST);
206 + return -1;
207 + }
208 + }
209 +
210 if (fallback)
211 return EVP_PKEY_CTX_ctrl(ctx, -1, op, ctrl, 0, (void *)(md));
212
213 diff --git a/doc/man5/config.pod b/doc/man5/config.pod
214 index 77a8055e81..aa1be5ca7f 100644
215 --- a/doc/man5/config.pod
216 +++ b/doc/man5/config.pod
217 @@ -304,6 +304,17 @@ Within the algorithm properties section, the following names have meaning:
218 The value may be anything that is acceptable as a property query
219 string for EVP_set_default_properties().
220
221 +=item B<rh-allow-sha1-signatures>
222 +
223 +The value is a boolean that can be B<yes> or B<no>. If the value is not set,
224 +it behaves as if it was set to B<no>.
225 +
226 +When set to B<no>, any attempt to create or verify a signature with a SHA1
227 +digest will fail. For compatibility with older versions of OpenSSL, set this
228 +option to B<yes>. This setting also affects TLS, where signature algorithms
229 +that use SHA1 as digest will no longer be supported if this option is set to
230 +B<no>.
231 +
232 =item B<fips_mode> (deprecated)
233
234 The value is a boolean that can be B<yes> or B<no>. If the value is
235 diff --git a/include/internal/cryptlib.h b/include/internal/cryptlib.h
236 index 1291299b6e..e234341e6a 100644
237 --- a/include/internal/cryptlib.h
238 +++ b/include/internal/cryptlib.h
239 @@ -168,7 +168,8 @@ typedef struct ossl_ex_data_global_st {
240 # define OSSL_LIB_CTX_PROVIDER_CONF_INDEX 16
241 # define OSSL_LIB_CTX_BIO_CORE_INDEX 17
242 # define OSSL_LIB_CTX_CHILD_PROVIDER_INDEX 18
243 -# define OSSL_LIB_CTX_MAX_INDEXES 19
244 +# define OSSL_LIB_CTX_LEGACY_DIGEST_SIGNATURES 19
245 +# define OSSL_LIB_CTX_MAX_INDEXES 20
246
247 # define OSSL_LIB_CTX_METHOD_LOW_PRIORITY -1
248 # define OSSL_LIB_CTX_METHOD_DEFAULT_PRIORITY 0
249 diff --git a/include/internal/sslconf.h b/include/internal/sslconf.h
250 index fd7f7e3331..05464b0655 100644
251 --- a/include/internal/sslconf.h
252 +++ b/include/internal/sslconf.h
253 @@ -18,4 +18,8 @@ int conf_ssl_name_find(const char *name, size_t *idx);
254 void conf_ssl_get_cmd(const SSL_CONF_CMD *cmd, size_t idx, char **cmdstr,
255 char **arg);
256
257 +/* Methods to support disabling all signatures with legacy digests */
258 +int ossl_ctx_legacy_digest_signatures_allowed(OSSL_LIB_CTX *libctx, int loadconfig);
259 +int ossl_ctx_legacy_digest_signatures_allowed_set(OSSL_LIB_CTX *libctx, int allow,
260 + int loadconfig);
261 #endif
262 diff --git a/providers/common/securitycheck.c b/providers/common/securitycheck.c
263 index 699ada7c52..e534ad0a5f 100644
264 --- a/providers/common/securitycheck.c
265 +++ b/providers/common/securitycheck.c
266 @@ -19,6 +19,7 @@
267 #include <openssl/core_names.h>
268 #include <openssl/obj_mac.h>
269 #include "prov/securitycheck.h"
270 +#include "internal/sslconf.h"
271
272 /*
273 * FIPS requires a minimum security strength of 112 bits (for encryption or
274 @@ -235,6 +236,15 @@ int ossl_digest_get_approved_nid_with_sha1(OSSL_LIB_CTX *ctx, const EVP_MD *md,
275 mdnid = -1; /* disallowed by security checks */
276 }
277 # endif /* OPENSSL_NO_FIPS_SECURITYCHECKS */
278 +
279 +#ifndef FIPS_MODULE
280 + if (!ossl_ctx_legacy_digest_signatures_allowed(ctx, 0))
281 + /* SHA1 is globally disabled, check whether we want to locally allow
282 + * it. */
283 + if (mdnid == NID_sha1 && !sha1_allowed)
284 + mdnid = -1;
285 +#endif
286 +
287 return mdnid;
288 }
289
290 @@ -244,5 +254,15 @@ int ossl_digest_is_allowed(OSSL_LIB_CTX *ctx, const EVP_MD *md)
291 if (ossl_securitycheck_enabled(ctx))
292 return ossl_digest_get_approved_nid(md) != NID_undef;
293 # endif /* OPENSSL_NO_FIPS_SECURITYCHECKS */
294 +
295 +#ifndef FIPS_MODULE
296 + {
297 + int mdnid = EVP_MD_nid(md);
298 + if ((mdnid == NID_sha1 || mdnid == NID_md5_sha1)
299 + && !ossl_ctx_legacy_digest_signatures_allowed(ctx, 0))
300 + return 0;
301 + }
302 +#endif
303 +
304 return 1;
305 }
306 diff --git a/providers/common/securitycheck_default.c b/providers/common/securitycheck_default.c
307 index de7f0d3a0a..ce54a94fbc 100644
308 --- a/providers/common/securitycheck_default.c
309 +++ b/providers/common/securitycheck_default.c
310 @@ -15,6 +15,7 @@
311 #include <openssl/obj_mac.h>
312 #include "prov/securitycheck.h"
313 #include "internal/nelem.h"
314 +#include "internal/sslconf.h"
315
316 /* Disable the security checks in the default provider */
317 int ossl_securitycheck_enabled(OSSL_LIB_CTX *libctx)
318 @@ -23,9 +24,10 @@ int ossl_securitycheck_enabled(OSSL_LIB_CTX *libctx)
319 }
320
321 int ossl_digest_rsa_sign_get_md_nid(OSSL_LIB_CTX *ctx, const EVP_MD *md,
322 - ossl_unused int sha1_allowed)
323 + int sha1_allowed)
324 {
325 int mdnid;
326 + int ldsigs_allowed;
327
328 static const OSSL_ITEM name_to_nid[] = {
329 { NID_md5, OSSL_DIGEST_NAME_MD5 },
330 @@ -36,8 +38,11 @@ int ossl_digest_rsa_sign_get_md_nid(OSSL_LIB_CTX *ctx, const EVP_MD *md,
331 { NID_ripemd160, OSSL_DIGEST_NAME_RIPEMD160 },
332 };
333
334 - mdnid = ossl_digest_get_approved_nid_with_sha1(ctx, md, 1);
335 + ldsigs_allowed = ossl_ctx_legacy_digest_signatures_allowed(ctx, 0);
336 + mdnid = ossl_digest_get_approved_nid_with_sha1(ctx, md, sha1_allowed || ldsigs_allowed);
337 if (mdnid == NID_undef)
338 mdnid = ossl_digest_md_to_nid(md, name_to_nid, OSSL_NELEM(name_to_nid));
339 + if (mdnid == NID_md5_sha1 && !ldsigs_allowed)
340 + mdnid = -1;
341 return mdnid;
342 }
343 diff --git a/providers/implementations/signature/dsa_sig.c b/providers/implementations/signature/dsa_sig.c
344 index 28fd7c498e..fa3822f39f 100644
345 --- a/providers/implementations/signature/dsa_sig.c
346 +++ b/providers/implementations/signature/dsa_sig.c
347 @@ -124,12 +124,17 @@ static int dsa_setup_md(PROV_DSA_CTX *ctx,
348 mdprops = ctx->propq;
349
350 if (mdname != NULL) {
351 - int sha1_allowed = (ctx->operation != EVP_PKEY_OP_SIGN);
352 WPACKET pkt;
353 EVP_MD *md = EVP_MD_fetch(ctx->libctx, mdname, mdprops);
354 - int md_nid = ossl_digest_get_approved_nid_with_sha1(ctx->libctx, md,
355 - sha1_allowed);
356 + int md_nid;
357 size_t mdname_len = strlen(mdname);
358 +#ifdef FIPS_MODULE
359 + int sha1_allowed = (ctx->operation != EVP_PKEY_OP_SIGN);
360 +#else
361 + int sha1_allowed = 0;
362 +#endif
363 + md_nid = ossl_digest_get_approved_nid_with_sha1(ctx->libctx, md,
364 + sha1_allowed);
365
366 if (md == NULL || md_nid < 0) {
367 if (md == NULL)
368 diff --git a/providers/implementations/signature/ecdsa_sig.c b/providers/implementations/signature/ecdsa_sig.c
369 index 865d49d100..99b228e82c 100644
370 --- a/providers/implementations/signature/ecdsa_sig.c
371 +++ b/providers/implementations/signature/ecdsa_sig.c
372 @@ -237,7 +237,11 @@ static int ecdsa_setup_md(PROV_ECDSA_CTX *ctx, const char *mdname,
373 "%s could not be fetched", mdname);
374 return 0;
375 }
376 +#ifdef FIPS_MODULE
377 sha1_allowed = (ctx->operation != EVP_PKEY_OP_SIGN);
378 +#else
379 + sha1_allowed = 0;
380 +#endif
381 md_nid = ossl_digest_get_approved_nid_with_sha1(ctx->libctx, md,
382 sha1_allowed);
383 if (md_nid < 0) {
384 diff --git a/providers/implementations/signature/rsa_sig.c b/providers/implementations/signature/rsa_sig.c
385 index 325e855333..bea397f0c1 100644
386 --- a/providers/implementations/signature/rsa_sig.c
387 +++ b/providers/implementations/signature/rsa_sig.c
388 @@ -26,6 +26,7 @@
389 #include "internal/cryptlib.h"
390 #include "internal/nelem.h"
391 #include "internal/sizes.h"
392 +#include "internal/sslconf.h"
393 #include "crypto/rsa.h"
394 #include "prov/providercommon.h"
395 #include "prov/implementations.h"
396 @@ -34,6 +35,7 @@
397 #include "prov/securitycheck.h"
398
399 #define RSA_DEFAULT_DIGEST_NAME OSSL_DIGEST_NAME_SHA1
400 +#define RSA_DEFAULT_DIGEST_NAME_NONLEGACY OSSL_DIGEST_NAME_SHA2_256
401
402 static OSSL_FUNC_signature_newctx_fn rsa_newctx;
403 static OSSL_FUNC_signature_sign_init_fn rsa_sign_init;
404 @@ -289,10 +291,15 @@ static int rsa_setup_md(PROV_RSA_CTX *ctx, const char *mdname,
405
406 if (mdname != NULL) {
407 EVP_MD *md = EVP_MD_fetch(ctx->libctx, mdname, mdprops);
408 + int md_nid;
409 + size_t mdname_len = strlen(mdname);
410 +#ifdef FIPS_MODULE
411 int sha1_allowed = (ctx->operation != EVP_PKEY_OP_SIGN);
412 - int md_nid = ossl_digest_rsa_sign_get_md_nid(ctx->libctx, md,
413 +#else
414 + int sha1_allowed = 0;
415 +#endif
416 + md_nid = ossl_digest_rsa_sign_get_md_nid(ctx->libctx, md,
417 sha1_allowed);
418 - size_t mdname_len = strlen(mdname);
419
420 if (md == NULL
421 || md_nid <= 0
422 @@ -1348,8 +1355,15 @@ static int rsa_set_ctx_params(void *vprsactx, const OSSL_PARAM params[])
423 prsactx->pad_mode = pad_mode;
424
425 if (prsactx->md == NULL && pmdname == NULL
426 - && pad_mode == RSA_PKCS1_PSS_PADDING)
427 + && pad_mode == RSA_PKCS1_PSS_PADDING) {
428 pmdname = RSA_DEFAULT_DIGEST_NAME;
429 +#ifndef FIPS_MODULE
430 + if (!ossl_ctx_legacy_digest_signatures_allowed(prsactx->libctx, 0)) {
431 + pmdname = RSA_DEFAULT_DIGEST_NAME_NONLEGACY;
432 + }
433 +#endif
434 + }
435 +
436
437 if (pmgf1mdname != NULL
438 && !rsa_setup_mgf1_md(prsactx, pmgf1mdname, pmgf1mdprops))
439 diff --git a/ssl/t1_lib.c b/ssl/t1_lib.c
440 index fc32bb3556..4b74ee1a34 100644
441 --- a/ssl/t1_lib.c
442 +++ b/ssl/t1_lib.c
443 @@ -20,6 +20,7 @@
444 #include <openssl/bn.h>
445 #include <openssl/provider.h>
446 #include <openssl/param_build.h>
447 +#include "internal/sslconf.h"
448 #include "internal/nelem.h"
449 #include "internal/sizes.h"
450 #include "internal/tlsgroups.h"
451 @@ -1145,11 +1146,13 @@ int ssl_setup_sig_algs(SSL_CTX *ctx)
452 = OPENSSL_malloc(sizeof(*lu) * OSSL_NELEM(sigalg_lookup_tbl));
453 EVP_PKEY *tmpkey = EVP_PKEY_new();
454 int ret = 0;
455 + int ldsigs_allowed;
456
457 if (cache == NULL || tmpkey == NULL)
458 goto err;
459
460 ERR_set_mark();
461 + ldsigs_allowed = ossl_ctx_legacy_digest_signatures_allowed(ctx->libctx, 0);
462 for (i = 0, lu = sigalg_lookup_tbl;
463 i < OSSL_NELEM(sigalg_lookup_tbl); lu++, i++) {
464 EVP_PKEY_CTX *pctx;
465 @@ -1169,6 +1172,11 @@ int ssl_setup_sig_algs(SSL_CTX *ctx)
466 cache[i].enabled = 0;
467 continue;
468 }
469 + if ((lu->hash == NID_sha1 || lu->hash == NID_md5_sha1)
470 + && !ldsigs_allowed) {
471 + cache[i].enabled = 0;
472 + continue;
473 + }
474
475 if (!EVP_PKEY_set_type(tmpkey, lu->sig)) {
476 cache[i].enabled = 0;
477 diff --git a/util/libcrypto.num b/util/libcrypto.num
478 index 10b4e57d79..2d3c363bb0 100644
479 --- a/util/libcrypto.num
480 +++ b/util/libcrypto.num
481 @@ -5426,3 +5426,5 @@ ASN1_TIME_print_ex 5553 3_0_0 EXIST::FUNCTION:
482 OPENSSL_strcasecmp 5556 3_0_3 EXIST::FUNCTION:
483 OPENSSL_strncasecmp 5557 3_0_3 EXIST::FUNCTION:
484 ossl_safe_getenv ? 3_0_0 EXIST::FUNCTION:
485 +ossl_ctx_legacy_digest_signatures_allowed ? 3_0_1 EXIST::FUNCTION:
486 +ossl_ctx_legacy_digest_signatures_allowed_set ? 3_0_1 EXIST::FUNCTION:
487 --
488 2.35.1
489

admin@koozali.org
ViewVC Help
Powered by ViewVC 1.2.1 RSS 2.0 feed