]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Merge pull request #274 from ChrisTX/insp20+gnutlsdeprecation
authorAttila Molnar <attilamolnar@hush.com>
Sun, 14 Oct 2012 20:39:54 +0000 (13:39 -0700)
committerAttila Molnar <attilamolnar@hush.com>
Sun, 14 Oct 2012 20:39:54 +0000 (13:39 -0700)
m_ssl_gnutls: Resolve deprecation warnings properly

src/modules/extra/m_ssl_gnutls.cpp

index 3dc6866e671dfcfe06d98e195093de82e7fef23d..4ee1b3cbf0b1bbebd7b09b2c960c37eb862b62b7 100644 (file)
 #endif
 
 /* $ModDesc: Provides SSL support for clients */
-/* $CompileFlags: pkgconfincludes("gnutls","/gnutls/gnutls.h","") -Wno-deprecated-declarations */
+/* $CompileFlags: pkgconfincludes("gnutls","/gnutls/gnutls.h","") */
 /* $LinkerFlags: rpath("pkg-config --libs gnutls") pkgconflibs("gnutls","/libgnutls.so","-lgnutls") -lgcrypt */
 
+// These don't exist in older GnuTLS versions
+#if(GNUTLS_VERSION_MAJOR < 2)
+typedef gnutls_certificate_credentials_t gnutls_certificate_credentials;
+typedef gnutls_dh_params_t gnutls_dh_params;
+#endif
+
 enum issl_status { ISSL_NONE, ISSL_HANDSHAKING_READ, ISSL_HANDSHAKING_WRITE, ISSL_HANDSHAKEN, ISSL_CLOSING, ISSL_CLOSED };
 
 static std::vector<gnutls_x509_crt_t> x509_certs;
 static gnutls_x509_privkey_t x509_key;
+#if(GNUTLS_VERSION_MAJOR < 2 || ( GNUTLS_VERSION_MAJOR == 2 && GNUTLS_VERSION_MINOR < 12 ) )
 static int cert_callback (gnutls_session_t session, const gnutls_datum_t * req_ca_rdn, int nreqs,
        const gnutls_pk_algorithm_t * sign_algos, int sign_algos_length, gnutls_retr_st * st) {
 
        st->type = GNUTLS_CRT_X509;
+#else
+static int cert_callback (gnutls_session_t session, const gnutls_datum_t * req_ca_rdn, int nreqs,
+       const gnutls_pk_algorithm_t * sign_algos, int sign_algos_length, gnutls_retr2_st * st) {
+       st->cert_type = GNUTLS_CRT_X509;
+       st->key_type = GNUTLS_PRIVKEY_X509;
+#endif
        st->ncerts = x509_certs.size();
        st->cert.x509 = &x509_certs[0];
        st->key.x509 = x509_key;
@@ -159,8 +172,8 @@ class ModuleSSLGnuTLS : public Module
 {
        issl_session* sessions;
 
-       gnutls_certificate_credentials x509_cred;
-       gnutls_dh_params dh_params;
+       gnutls_certificate_credentials_t x509_cred;
+       gnutls_dh_params_t dh_params;
        gnutls_digest_algorithm_t hash;
        gnutls_priority_t priority;
 
@@ -356,8 +369,11 @@ class ModuleSSLGnuTLS : public Module
                        gnutls_priority_init(&priority, "NORMAL", NULL);
                }
 
+               #if(GNUTLS_VERSION_MAJOR < 2 || ( GNUTLS_VERSION_MAJOR == 2 && GNUTLS_VERSION_MINOR < 12 ) )
                gnutls_certificate_client_set_retrieve_function (x509_cred, cert_callback);
-
+               #else
+               gnutls_certificate_set_retrieve_function (x509_cred, cert_callback);
+               #endif
                ret = gnutls_dh_params_init(&dh_params);
                dh_alloc = (ret >= 0);
                if (!dh_alloc)