#1 EVP_add_digest() was removed. #2, #3 X509_ALGOR has an accessor, don't reach into it, so it can be made opaque. Index: SSLeay.xs --- SSLeay.xs.orig +++ SSLeay.xs @@ -7493,8 +7493,12 @@ SSL_CTX_set_tlsext_ticket_getkey_cb(ctx,callback=&PL_s #endif +#if !defined(LIBRESSL_VERSION_NUMBER) || (LIBRESSL_VERSION_NUMBER < 0x3090000fL) + int EVP_add_digest(const EVP_MD *digest) +#endif + #ifndef OPENSSL_NO_SHA const EVP_MD *EVP_sha1() @@ -7973,7 +7977,9 @@ P_X509_get_signature_alg(x) X509 * x CODE: #if (OPENSSL_VERSION_NUMBER >= 0x10100000L && !defined(LIBRESSL_VERSION_NUMBER)) || (LIBRESSL_VERSION_NUMBER >= 0x3050000fL) - RETVAL = (X509_get0_tbs_sigalg(x)->algorithm); + const ASN1_OBJECT * obj; + X509_ALGOR_get0(&obj, NULL, NULL, X509_get0_tbs_sigalg(x)); + RETVAL = (ASN1_OBJECT *)obj; #else RETVAL = (x->cert_info->signature->algorithm); #endif @@ -7988,8 +7994,10 @@ P_X509_get_pubkey_alg(x) #if OPENSSL_VERSION_NUMBER >= 0x10100000L { X509_ALGOR * algor; + const ASN1_OBJECT * obj; X509_PUBKEY_get0_param(0, 0, 0, &algor, X509_get_X509_PUBKEY(x)); - RETVAL = (algor->algorithm); + X509_ALGOR_get0(&obj, NULL, NULL, algor); + RETVAL = ((ASN1_OBJECT *)obj); } #else RETVAL = (x->cert_info->key->algor->algorithm);