Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Check for certificate, build certificate and added verification check on Linux
[xestiaab/.git] / source / carddav / carddav-sslverify.cpp
index 9418e5a..c082a90 100644 (file)
@@ -41,7 +41,7 @@ CURLcode CardDAV::SSLVerifyTest(){
 
        CURL *conn;
        CURL *connssldata;
-       CURLcode conncode;
+       CURLcode conncode = CURLE_OK;
        wxString ServerAddressURL;
        wxString ServerAuth;
        wxString ServerAddressSSL;
@@ -74,12 +74,28 @@ CURLcode CardDAV::SSLVerifyTest(){
                curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);
                curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);
 
-#if defined(__APPLE__)
+#if defined(__APPLE__) || defined(__WIN32__)
                
                SetConnectionObject(conn);
+       
+#else
+               
+               if (ServerAccount != ""){
+               
+                       wxString ServerCertFilename = GetAccountDir(ServerAccount, TRUE);
+
+                       if (wxFile::Exists(ServerCertFilename) == TRUE){
+               
+                               curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, 1);
+                               curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, 2);
+                               curl_easy_setopt(conn, CURLOPT_CAINFO, (const char*)ServerCertFilename.mb_str(wxConvUTF8));
                
+                       }
+               
+               }
+
 #endif
-                
+               
                conncode = (curl_easy_perform(conn));
 
                // Check if the SSL certificate is valid or self-signed or some other
@@ -90,8 +106,16 @@ CURLcode CardDAV::SSLVerifyTest(){
                        // Connection is OK. Do nothing.
 
                        *ServerResult = TRUE;
+                       
+#if !defined(__APPLE__) && !defined(__WIN32__)
+                       
+                       VerifyCertCollection = BuildSSLCollection(conn);
 
-               } else if (conncode == CURLE_SSL_CACERT || conncode == CURLE_SSL_CONNECT_ERROR){
+#endif
+                       
+               } else if (conncode == CURLE_SSL_CACERT || 
+                               conncode == CURLE_SSL_CONNECT_ERROR ||
+                               conncode == CURLE_PEER_FAILED_VERIFICATION){
 
                        connssldata = curl_easy_init();
 
@@ -107,7 +131,7 @@ CURLcode CardDAV::SSLVerifyTest(){
                        curl_easy_setopt(connssldata, CURLOPT_SSL_VERIFYPEER, 0L);
                        curl_easy_setopt(connssldata, CURLOPT_SSL_VERIFYHOST, 0L);
 
-#if defined(__APPLE__)
+#if defined(__APPLE__) || defined(__WIN32__)
                        
                         SetConnectionObject(connssldata);
                        
@@ -117,6 +141,8 @@ CURLcode CardDAV::SSLVerifyTest(){
 
                        certfetchcode = (curl_easy_perform(connssldata));
 
+#if !defined(__APPLE__) && !defined(__WIN32__) 
+
                        VerifyCertCollection = BuildSSLCollection(connssldata);
 
                        if (certfetchcode == CURLE_OK){
@@ -131,6 +157,8 @@ CURLcode CardDAV::SSLVerifyTest(){
 
                        }
 
+#endif
+
                        *ServerResult = FALSE;
 
                } else {
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy