Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Fixed cleaning of old object files
[xestiaab/.git] / source / carddav / carddav.cpp
index bc3a8f7..52ae03a 100644 (file)
@@ -50,6 +50,26 @@ size_t CardDAV::WritebackFunc(char *ptr, size_t size, size_t nmemb, wxString *st
                SSLCopyPeerTrust((SSLContext*)TLSInfo->internals, &SecTrustObject);\r
        }\r
        \r
+#elif defined(__WIN32__)\r
+\r
+       const struct curl_tlssessioninfo *TLSInfo;\r
+       CURLcode TLSCode;\r
+       CURL *Connection = GetConnectionObject();\r
+       TLSCode = curl_easy_getinfo(Connection, CURLINFO_TLS_SSL_PTR, &TLSInfo);\r
+\r
+       std::string CertName;\r
+\r
+       if (TLSInfo->internals != nullptr && TLSCode == CURLE_OK){\r
+\r
+               // Free the previous certificate data.\r
+\r
+               CertFreeCertificateContext(CertificateData);\r
+\r
+               PCtxtHandle SSLHandle = (PCtxtHandle)TLSInfo->internals;\r
+               SECURITY_STATUS GetData = QueryContextAttributes(SSLHandle, SECPKG_ATTR_REMOTE_CERT_CONTEXT, &CertificateData);\r
+\r
+       }\r
+\r
 #endif\r
        \r
        return size * nmemb;\r
@@ -110,6 +130,11 @@ bool CardDAV::AllowSelfSign;
 #if defined(__APPLE__)\r
 SSLContext *CardDAV::SSLContextPointer;\r
 SecTrustRef CardDAV::SecTrustObject;\r
+#endif\r
+#if defined(__WIN32__)\r
+PCCERT_CONTEXT CardDAV::CertificateData;\r
+#endif\r
+#if defined(__APPLE__) || defined(__WIN32__)\r
 CURL *CardDAV::ConnectionObject;\r
 #endif\r
 \r
@@ -480,6 +505,8 @@ wxString CardDAV::GetErrorMessage(){
 \r
 }\r
 \r
+#if defined(__APPLE__) || defined(__WIN32__)\r
+\r
 CURL* CardDAV::GetConnectionObject(){\r
        \r
        // Get the CardDAV connection object.\r
@@ -494,4 +521,43 @@ void CardDAV::SetConnectionObject(CURL *ConnectionObjectIn){
        \r
        ConnectionObject = ConnectionObjectIn;\r
        \r
-}
\ No newline at end of file
+}\r
+\r
+#endif\r
+\r
+#if defined(__WIN32__)\r
+\r
+PCCERT_CONTEXT CardDAV::GetCertificateContextPointer(){\r
+\r
+       // Check that the PCCERT_CONTEXT has an address\r
+       // other than NULL. Return nullptr if this is the\r
+       // case.\r
+\r
+       if (CertificateData == NULL){\r
+               return NULL;\r
+       }\r
+\r
+       // Get the certificate data.\r
+\r
+       return CertificateData;\r
+\r
+}\r
+\r
+CERT_CONTEXT CardDAV::GetCertificateContext(){\r
+\r
+       // Check that the PCCERT_CONTEXT has an address\r
+       // other than NULL. Return nullptr if this is the\r
+       // case.\r
+\r
+       if (CertificateData == NULL){\r
+               CERT_CONTEXT EmptyCertificateData = { 0 };\r
+               return EmptyCertificateData;\r
+       }\r
+\r
+       // Get the certificate data.\r
+\r
+       return *CertificateData;\r
+\r
+}\r
+\r
+#endif
\ No newline at end of file
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