On Fri, Jul 5, 2024 at 3:05 PM Ruediger Pluem <[email protected]> wrote:
>
> >>>> md_crypt.c: In function 'md_cert_get_ct_scts':
> >>>> md_crypt.c:2071:5: error: unknown type name 'SCT'
> >>>> SCT *sct_handle;
>
> This one is caused by r1918195 in >= 2.4.60. Before r1918195 OPENSSL_NO_CT
> was defined when openssl was < 1.1.1. Now it is not any
> longer and hence md_cert_get_ct_scts gets a real function body as
>
> #ifndef OPENSSL_NO_CT
>
> (line 2068) is now true. Hence we error out on the non presence of the SCT
> struct (line 2071).
Maybe something like the attached patch for this one too (which could
avoid configure tricks for both..).
Index: modules/md/md_crypt.c
===================================================================
--- modules/md/md_crypt.c (revision 1918881)
+++ modules/md/md_crypt.c (working copy)
@@ -57,12 +57,14 @@
#include <process.h>
#endif
-#if !defined(OPENSSL_NO_CT) \
- && OPENSSL_VERSION_NUMBER >= 0x10100000L \
- && (!defined(LIBRESSL_VERSION_NUMBER) \
- || LIBRESSL_VERSION_NUMBER >= 0x3050000fL)
+#if defined(OPENSSL_NO_CT)
+#define MD_NO_CT
+#elif (OPENSSL_VERSION_NUMBER >= 0x10100000L \
+ && (!defined(LIBRESSL_VERSION_NUMBER) \
+ || LIBRESSL_VERSION_NUMBER >= 0x3050000fL))
/* Missing from LibreSSL < 3.5.0 and only available since OpenSSL v1.1.x */
#include <openssl/ct.h>
+#undef MD_NO_CT
#endif
static int initialized;
@@ -2037,11 +2059,10 @@ out:
return rv;
}
+#ifndef MD_NO_CT
#define MD_OID_CT_SCTS_NUM "1.3.6.1.4.1.11129.2.4.2"
#define MD_OID_CT_SCTS_SNAME "CT-SCTs"
#define MD_OID_CT_SCTS_LNAME "CT Certificate SCTs"
-
-#ifndef OPENSSL_NO_CT
static int get_ct_scts_nid(void)
{
int nid = OBJ_txt2nid(MD_OID_CT_SCTS_NUM);
@@ -2065,7 +2086,7 @@ const char *md_nid_get_lname(int nid)
apr_status_t md_cert_get_ct_scts(apr_array_header_t *scts, apr_pool_t *p, const md_cert_t *cert)
{
-#ifndef OPENSSL_NO_CT
+#ifndef MD_NO_CT
int nid, i, idx, critical;
STACK_OF(SCT) *sct_list;
SCT *sct_handle;