Index: net-snmp-5.8.dev/snmplib/snmp_openssl.c
===================================================================
--- net-snmp-5.8.dev.orig/snmplib/snmp_openssl.c
+++ net-snmp-5.8.dev/snmplib/snmp_openssl.c
@@ -916,6 +916,61 @@ netsnmp_openssl_null_checks(SSL *ssl, in
     }
 }
 
+#ifndef HAVE_ASN1_STRING_GET0_DATA
+const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *x)
+{
+    return x->data;
+}
+#endif
+
+#ifndef HAVE_X509_NAME_ENTRY_GET_OBJECT
+ASN1_OBJECT *X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *ne)
+{
+    if (ne == NULL)
+        return NULL;
+    return ne->object;
+}
+#endif
+
+#ifndef HAVE_X509_NAME_ENTRY_GET_DATA
+ASN1_STRING *X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne)
+{
+    if (ne == NULL)
+        return NULL;
+    return ne->value;
+}
+#endif
+
+#ifndef HAVE_X509_GET_SIGNATURE_NID
+int X509_get_signature_nid(const X509_REQ *req)
+{
+    return OBJ_obj2nid(req->sig_alg.algorithm);
+}
+#endif
+
+#ifndef HAVE_TLS_METHOD
+const SSL_METHOD *TLS_method(void)
+{
+    return TLSv1_method();
+}
+#endif
+
+#ifndef HAVE_DTLS_METHOD
+const SSL_METHOD *DTLS_method(void)
+{
+    return DTLSv1_method();
+}
+#endif
+
+#endif /* NETSNMP_USE_OPENSSL && HAVE_LIBSSL && !defined(NETSNMP_FEATURE_REMOVE_CERT_UTIL) */
+
+#if defined(NETSNMP_USE_OPENSSL) || defined(HAVE_LIBCRYPTO)
+
+#if !defined(HAVE_LIBSSL) || defined(NETSNMP_FEATURE_REMOVE_CERT_UTIL)
+#include <string.h>
+#include <openssl/dh.h>
+#endif
+
 #ifndef HAVE_DH_SET0_PQG
 int
 DH_set0_pqg(DH *dh, BIGNUM *p, BIGNUM *q, BIGNUM *g)
@@ -972,50 +1027,4 @@ DH_get0_key(const DH *dh, const BIGNUM *
 }
 #endif
 
-#ifndef HAVE_ASN1_STRING_GET0_DATA
-const unsigned char *ASN1_STRING_get0_data(const ASN1_STRING *x)
-{
-    return x->data;
-}
-#endif
-
-#ifndef HAVE_X509_NAME_ENTRY_GET_OBJECT
-ASN1_OBJECT *X509_NAME_ENTRY_get_object(const X509_NAME_ENTRY *ne)
-{
-    if (ne == NULL)
-        return NULL;
-    return ne->object;
-}
-#endif
-
-#ifndef HAVE_X509_NAME_ENTRY_GET_DATA
-ASN1_STRING *X509_NAME_ENTRY_get_data(const X509_NAME_ENTRY *ne)
-{
-    if (ne == NULL)
-        return NULL;
-    return ne->value;
-}
-#endif
-
-#ifndef HAVE_X509_GET_SIGNATURE_NID
-int X509_get_signature_nid(const X509_REQ *req)
-{
-    return OBJ_obj2nid(req->sig_alg.algorithm);
-}
-#endif
-
-#ifndef HAVE_TLS_METHOD
-const SSL_METHOD *TLS_method(void)
-{
-    return TLSv1_method();
-}
-#endif
-
-#ifndef HAVE_DTLS_METHOD
-const SSL_METHOD *DTLS_method(void)
-{
-    return DTLSv1_method();
-}
-#endif
-
-#endif /* NETSNMP_USE_OPENSSL && HAVE_LIBSSL && !defined(NETSNMP_FEATURE_REMOVE_CERT_UTIL) */
+#endif /* defined(NETSNMP_USE_OPENSSL) || defined(HAVE_LIBCRYPTO) */
