X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fcarddav%2Fcarddav.cpp;h=7e73c5f59546d0a12a7764f722de7a01dc4cbb94;hb=33d42b86e8f3b66c7af4f8bfceeee4d4987a59c5;hp=b95dec1011a39910fba65ec8cf29dbd4275fdc63;hpb=4e8ed32926425840c4367d90a9145ded0d65dc2a;p=xestiaab%2F.git diff --git a/source/carddav/carddav.cpp b/source/carddav/carddav.cpp index b95dec1..7e73c5f 100644 --- a/source/carddav/carddav.cpp +++ b/source/carddav/carddav.cpp @@ -50,6 +50,26 @@ size_t CardDAV::WritebackFunc(char *ptr, size_t size, size_t nmemb, wxString *st SSLCopyPeerTrust((SSLContext*)TLSInfo->internals, &SecTrustObject); } +#elif defined(__WIN32__) + + const struct curl_tlssessioninfo *TLSInfo; + CURLcode TLSCode; + CURL *Connection = GetConnectionObject(); + TLSCode = curl_easy_getinfo(Connection, CURLINFO_TLS_SSL_PTR, &TLSInfo); + + std::string CertName; + + if (TLSInfo->internals != nullptr && TLSCode == CURLE_OK){ + + // Free the previous certificate data. + + CertFreeCertificateContext(CertificateData); + + PCtxtHandle SSLHandle = (PCtxtHandle)TLSInfo->internals; + SECURITY_STATUS GetData = QueryContextAttributes(SSLHandle, SECPKG_ATTR_REMOTE_CERT_CONTEXT, &CertificateData); + + } + #endif return size * nmemb; @@ -107,9 +127,16 @@ int CardDAV::HTTPErrorCode; wxString CardDAV::ErrorMessage; SSLCertCollection CardDAV::VerifyCertCollection; bool CardDAV::AllowSelfSign; +#if defined(__APPLE__) SSLContext *CardDAV::SSLContextPointer; SecTrustRef CardDAV::SecTrustObject; +#endif +#if defined(__WIN32__) +PCCERT_CONTEXT CardDAV::CertificateData; +#endif +#if defined(__APPLE__) || defined(__WIN32__) CURL *CardDAV::ConnectionObject; +#endif CardDAV::CardDAV(){ @@ -478,6 +505,8 @@ wxString CardDAV::GetErrorMessage(){ } +#if defined(__APPLE__) || defined(__WIN32__) + CURL* CardDAV::GetConnectionObject(){ // Get the CardDAV connection object. @@ -492,4 +521,26 @@ void CardDAV::SetConnectionObject(CURL *ConnectionObjectIn){ ConnectionObject = ConnectionObjectIn; -} \ No newline at end of file +} + +#endif + +#if defined(__WIN32__) + +PCCERT_CONTEXT CardDAV::GetCertificateContextPointer(){ + + // Get the certificate data. + + return CertificateData; + +} + +CERT_CONTEXT CardDAV::GetCertificateContext(){ + + // Get the certificate data. + + return *CertificateData; + +} + +#endif \ No newline at end of file