See PR https://github.com/getdnsapi/getdns/pull/551 and for ssl_dane https://github.com/getdnsapi/ssl_dane/pull/3 Fix openssl-4 compatibility, see https://bugs.gentoo.org/985455 From 735764d84272cb46f8fd4c3ddfe0cacbda0d9323 Mon Sep 17 00:00:00 2001 From: Ravi Kant Sharma Date: Mon, 6 Jul 2026 13:15:01 +0200 Subject: [PATCH] Fix OpenSSL 4.0 compatibility in anchor-internal.c Replace direct ASN1_BIT_STRING member access (->data, ->length) with ASN1_STRING_get0_data() and ASN1_STRING_length() accessors. --- a/src/tls/anchor-internal.c +++ b/src/tls/anchor-internal.c @@ -60,10 +60,12 @@ _getdns_get_usage_of_ex(X509* cert) ASN1_BIT_STRING* s; if((s=X509_get_ext_d2i(cert, NID_key_usage, NULL, NULL))) { - if(s->length > 0) { - val = s->data[0]; - if(s->length > 1) - val |= s->data[1] << 8; + const unsigned char *data = ASN1_STRING_get0_data(s); + int len = ASN1_STRING_length(s); + if(len > 0) { + val = data[0]; + if(len > 1) + val |= data[1] << 8; } ASN1_BIT_STRING_free(s); } From 16545beb712e95da974ba1e658967a34fe67cfa5 Mon Sep 17 00:00:00 2001 From: Ravi Kant Sharma Date: Mon, 6 Jul 2026 13:13:28 +0200 Subject: [PATCH] Fix OpenSSL 4.0 compatibility Use const for X509_get_issuer_name(), X509_get_subject_name(), X509_NAME_get_entry(), and X509_NAME_ENTRY_get_data() return values. Update set_issuer_name() signature to accept const X509_NAME*. --- a/src/ssl_dane/danessl.c +++ b/src/ssl_danedanessl.c @@ -373,7 +373,7 @@ static X509_NAME *akid_issuer_name(AUTHORITY_KEYID *akid) return 0; } -static int set_issuer_name(X509 *cert, AUTHORITY_KEYID *akid, X509_NAME *subj) +static int set_issuer_name(X509 *cert, AUTHORITY_KEYID *akid, const X509_NAME *subj) { X509_NAME *name = akid_issuer_name(akid); @@ -428,7 +428,7 @@ static int wrap_issuer( int ret = 1; X509 *cert = 0; AUTHORITY_KEYID *akid; - X509_NAME *name = X509_get_issuer_name(subject); + const X509_NAME *name = X509_get_issuer_name(subject); EVP_PKEY *newkey = key ? key : X509_get_pubkey(subject); #define WRAP_MID 0 /* Ensure intermediate. */ @@ -767,9 +767,9 @@ static const char *parse_dns_name(const GENERAL_NAME *gn) static char *parse_subject_name(X509 *cert) { - X509_NAME *name = X509_get_subject_name(cert); - X509_NAME_ENTRY *entry; - ASN1_STRING *entry_str; + const X509_NAME *name = X509_get_subject_name(cert); + const X509_NAME_ENTRY *entry; + const ASN1_STRING *entry_str; unsigned char *namebuf; int nid = NID_commonName; int len;