Description: Fix build issue with openssl 4
Author: Filip Strömbäck <filip@fprg.se>
--- a/Crypto/OpenSSLCert.cpp
+++ b/Crypto/OpenSSLCert.cpp
@@ -82,7 +82,7 @@
 		return this;
 	}
 
-	static void output(StrBuf *to, X509_NAME *name) {
+	static void output(StrBuf *to, const X509_NAME *name) {
 		// Note: This is not exactly as on Windows, but it is good enough for toS.
 		char *buffer = X509_NAME_oneline(name, NULL, 0);
 		*to << toWChar(to->engine(), buffer)->v;
@@ -91,8 +91,8 @@
 
 	void OpenSSLCert::output(StrBuf *to) {
 		// Note: These should *not* be freed according to the manpage.
-		X509_NAME *subject = X509_get_subject_name(data);
-		X509_NAME *issuer = X509_get_issuer_name(data);
+		const X509_NAME *subject = X509_get_subject_name(data);
+		const X509_NAME *issuer = X509_get_issuer_name(data);
 
 		*to << S("subject: ");
 		ssl::output(to, subject);
--- a/Crypto/OpenSSLFunctions.inc
+++ b/Crypto/OpenSSLFunctions.inc
@@ -25,12 +25,22 @@
 SSL_FN(libSSL, long, SSL_get_verify_result, (const SSL *ssl), (ssl))
 
 SSL_FN(libSSL, void, X509_free, (X509 *x), (x))
+#if OPENSSL_VERSION_MAJOR >= 4
+SSL_FN(libSSL, const X509_NAME *, X509_get_subject_name, (const X509 *x), (x))
+SSL_FN(libSSL, const X509_NAME *, X509_get_issuer_name, (const X509 *x), (x))
+SSL_FN(libSSL, int, X509_verify, (const X509 *x, EVP_PKEY *k), (x, k))
+#else
 SSL_FN(libSSL, X509_NAME *, X509_get_subject_name, (const X509 *x), (x))
 SSL_FN(libSSL, X509_NAME *, X509_get_issuer_name, (const X509 *x), (x))
 SSL_FN(libSSL, int, X509_verify, (X509 *x, EVP_PKEY *k), (x, k))
+#endif
 
 SSL_FN(libSSL, X509_STORE *, X509_STORE_new, (), ())
+#if OPENSSL_VERSION_MAJOR >= 4
+SSL_FN(libSSL, int, X509_STORE_add_cert, (X509_STORE *s, const X509 *c), (s, c))
+#else
 SSL_FN(libSSL, int, X509_STORE_add_cert, (X509_STORE *s, X509 *c), (s, c))
+#endif
 
 SSL_FN(libSSL, void, X509_VERIFY_PARAM_set_hostflags, (X509_VERIFY_PARAM *p, unsigned int x), (p, x))
 SSL_FN(libSSL, int, X509_VERIFY_PARAM_set1_host, (X509_VERIFY_PARAM *p, const char *host, size_t s), (p, host, s))
