From d5b5a349b620dcdac27c8edd6cf3ba1cce5af86d Mon Sep 17 00:00:00 2001 From: rainerjung Date: Sun, 26 Apr 2026 19:02:34 +0200 Subject: [PATCH 1/3] Use getters instead of direct member access. Struct was made opaque in OpenSSL 4. Getters exist since OpenSSL 1.1.0. --- src/md_ocsp.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/md_ocsp.c b/src/md_ocsp.c index 74dd490..9441cb4 100644 --- a/src/md_ocsp.c +++ b/src/md_ocsp.c @@ -519,13 +519,13 @@ static const char *certid_summary(const OCSP_CERTID *certid, apr_pool_t *p) serial = issuer = key = "???"; OCSP_id_get0_info(&aname_hash, &amd_nid, &akey_hash, &aserial, (OCSP_CERTID*)certid); if (aname_hash) { - data.len = (apr_size_t)aname_hash->length; - data.data = (const char*)aname_hash->data; + data.len = (apr_size_t)ASN1_STRING_length(aname_hash); + data.data = (const char*)ASN1_STRING_get0_data(aname_hash); md_data_to_hex(&issuer, 0, p, &data); } if (akey_hash) { - data.len = (apr_size_t)akey_hash->length; - data.data = (const char*)akey_hash->data; + data.len = (apr_size_t)ASN1_STRING_length(akey_hash); + data.data = (const char*)ASN1_STRING_get0_data(akey_hash); md_data_to_hex(&key, 0, p, &data); } if (aserial) { From 5254b7b2c3f31d7e19e390015817d7e9dc7d9e45 Mon Sep 17 00:00:00 2001 From: rainerjung Date: Sun, 26 Apr 2026 19:04:34 +0200 Subject: [PATCH 2/3] Update ChangeLog --- ChangeLog | 1 + 1 file changed, 1 insertion(+) diff --git a/ChangeLog b/ChangeLog index 05005fc..7f78f7f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,4 @@ + * OpenSSL 4 compatibility. * Allow the MDHttpProxy setting to be set per MDomain. The global MDHttpProxy setting is used by default. [Michael Kaufmann] From 4c4f5d8bca4ade66bc6be564d3f1f3bf90b8a81c Mon Sep 17 00:00:00 2001 From: rainerjung Date: Sun, 26 Apr 2026 19:14:46 +0200 Subject: [PATCH 3/3] Keep OpenSSL 1.0.2 compatibility. --- src/md_ocsp.c | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/md_ocsp.c b/src/md_ocsp.c index 9441cb4..996da91 100644 --- a/src/md_ocsp.c +++ b/src/md_ocsp.c @@ -519,13 +519,23 @@ static const char *certid_summary(const OCSP_CERTID *certid, apr_pool_t *p) serial = issuer = key = "???"; OCSP_id_get0_info(&aname_hash, &amd_nid, &akey_hash, &aserial, (OCSP_CERTID*)certid); if (aname_hash) { +#if OPENSSL_VERSION_NUMBER < 0x10100000L + data.len = (apr_size_t)aname_hash->length; + data.data = (const char*)aname_hash->data; +#else data.len = (apr_size_t)ASN1_STRING_length(aname_hash); data.data = (const char*)ASN1_STRING_get0_data(aname_hash); +#endif md_data_to_hex(&issuer, 0, p, &data); } if (akey_hash) { +#if OPENSSL_VERSION_NUMBER < 0x10100000L + data.len = (apr_size_t)akey_hash->length; + data.data = (const char*)akey_hash->data; +#else data.len = (apr_size_t)ASN1_STRING_length(akey_hash); data.data = (const char*)ASN1_STRING_get0_data(akey_hash); +#endif md_data_to_hex(&key, 0, p, &data); } if (aserial) {