#1, #2 X509_ALGOR has an accessor, don't reach into it, so it can be made opaque.

Index: SSLeay.xs
--- SSLeay.xs.orig
+++ SSLeay.xs
@@ -8088,7 +8088,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
@@ -8103,8 +8105,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);
