X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;ds=sidebyside;f=source%2Fcarddav%2Fcarddav-sslverify.cpp;h=c082a90066dfb13855bf0d581094b802fe84dd4e;hb=ff65774611d82f2bdbb6cb5c34829cc2e922cf68;hp=89998dea7104a3829de841c54dfa3685eb6a7d9f;hpb=911611528b36f56f7de9b6bf027b4c2a1a54df00;p=xestiaab%2F.git
diff --git a/source/carddav/carddav-sslverify.cpp b/source/carddav/carddav-sslverify.cpp
index 89998de..c082a90 100644
--- a/source/carddav/carddav-sslverify.cpp
+++ b/source/carddav/carddav-sslverify.cpp
@@ -1,3 +1,21 @@
+// carddav-sslverify.cpp - CardDAV Object - SSL verification subroutines.
+//
+// (c) 2012-2015 Xestia Software Development.
+//
+// This file is part of Xestia Address Book.
+//
+// Xestia Address Book is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by the
+// Free Software Foundation, version 3 of the license.
+//
+// Xestia Address Book is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License along
+// with Xestia Address Book. If not, see
+
#include "carddav.h"
#include "../version.h"
#include
@@ -12,6 +30,8 @@
CURLcode CardDAV::SSLVerifyTest(){
+ // Verify the SSL information.
+
PageData.Clear();
PageHeader.Clear();
@@ -21,7 +41,7 @@ CURLcode CardDAV::SSLVerifyTest(){
CURL *conn;
CURL *connssldata;
- CURLcode conncode;
+ CURLcode conncode = CURLE_OK;
wxString ServerAddressURL;
wxString ServerAuth;
wxString ServerAddressSSL;
@@ -29,19 +49,6 @@ CURLcode CardDAV::SSLVerifyTest(){
conn = curl_easy_init();
- /*struct CardDAVCURLPasser {
-
- CardDAV *Data;
- bool HeaderMode = TRUE;
-
- } CardDAVHeader, CardDAVFooter;
-
- CardDAVHeader.Data = this;
- CardDAVHeader.HeaderMode = TRUE;
-
- CardDAVFooter.Data = this;
- CardDAVFooter.HeaderMode = FALSE;*/
-
wxString Data1;
wxString Data2;
@@ -62,13 +69,33 @@ CURLcode CardDAV::SSLVerifyTest(){
curl_easy_setopt(conn, CURLOPT_URL, (const char*)ServerAddressSSL.mb_str(wxConvUTF8));
curl_easy_setopt(conn, CURLOPT_CERTINFO, 1);
curl_easy_setopt(conn, CURLOPT_VERBOSE, 1L);
- //curl_easy_setopt(conn, CURLOPT_SSL_VERIFYPEER, FALSE);
- //curl_easy_setopt(conn, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_easy_setopt(conn, CURLOPT_ERRORBUFFER, curlerrbuffer);
curl_easy_setopt(conn, CURLOPT_WRITEFUNCTION, WritebackFunc);
curl_easy_setopt(conn, CURLOPT_WRITEDATA, &PageData);
curl_easy_setopt(conn, CURLOPT_WRITEHEADER, &PageHeader);
+#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
@@ -79,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();
@@ -96,10 +131,18 @@ CURLcode CardDAV::SSLVerifyTest(){
curl_easy_setopt(connssldata, CURLOPT_SSL_VERIFYPEER, 0L);
curl_easy_setopt(connssldata, CURLOPT_SSL_VERIFYHOST, 0L);
+#if defined(__APPLE__) || defined(__WIN32__)
+
+ SetConnectionObject(connssldata);
+
+#endif
+
CURLcode certfetchcode;
certfetchcode = (curl_easy_perform(connssldata));
+#if !defined(__APPLE__) && !defined(__WIN32__)
+
VerifyCertCollection = BuildSSLCollection(connssldata);
if (certfetchcode == CURLE_OK){
@@ -114,6 +157,8 @@ CURLcode CardDAV::SSLVerifyTest(){
}
+#endif
+
*ServerResult = FALSE;
} else {