X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2FfrmMain.cpp;h=6625432c12fb96fb3bbc3f06bb5236c833657d03;hb=7fc28a37a8c17b62d4692c478fa2f95ecb874ad3;hp=96859290e4bb48ec8940014156481d9cfd5cf814;hpb=93e56b6b6222c68d1fba49974b564f362a08d1bd;p=xestiaab%2F.git diff --git a/source/frmMain.cpp b/source/frmMain.cpp index 9685929..6625432 100644 --- a/source/frmMain.cpp +++ b/source/frmMain.cpp @@ -1399,6 +1399,19 @@ void frmMain::LoadPreferences(){ AccTmrPtr = NULL; } + +#if defined(__WIN32__) + + for (std::map::iterator CertificateIter = AccountCertificateData.begin(); + CertificateIter != AccountCertificateData.end(); CertificateIter++){ + + CertFreeCertificateContext(CertificateIter->second); + + } + + AccountCertificateData.clear(); + +#endif AccountSyncTimers.clear(); @@ -2531,7 +2544,63 @@ void frmMain::ShowSSLCertificates( wxCommandEvent &event ){ AccType.clear(); } - + +#elif defined(__WIN32__) + + std::map::iterator SSLCertificateIter; + + for (int i = 0; i < prefaccounts.GetCount(); i++){ + + SeekAccount.Append(prefaccounts.GetAccountDirectory(i)); + AccType.Append(prefaccounts.GetAccountType(i)); + AccountSSL = prefaccounts.GetAccountSSL(i); + AccTypeLower = AccType.MakeLower(); + SeekAccount.Append(wxT(".")); + SeekAccount.Append(AccTypeLower); + + if (SeekAccount == ActiveAccount){ + + if (AccTypeLower == wxT("local")){ + + return; + + } + + if (AccountSSL == false){ + + return; + + } + + SSLCertificateIter = AccountCertificateData.find(i); + + // Setup and display the form. + + if (SSLCertificateIter->second->pCertInfo == NULL){ + + wxMessageBox("No certificate information is available due to invalid connection details, connection being in progress or invalid certificate data received."); + + } else { + + BOOL ModifiedCertificateData; + CRYPTUI_VIEWCERTIFICATE_STRUCTW CertificateData = BuildCertificateData(SSLCertificateIter->second, (HWND)this->GetHandle()); + + if (!CryptUIDlgViewCertificate(&CertificateData, &ModifiedCertificateData)){ + wxMessageBox(_("An error occured while trying to open the certificate dialog."), _("Error opening Certificate Information dialog")); + } + + } + + //DisplayCertificate(SSLTrustIter->second); + + } + + SeekAccount.Clear(); + AccTypeLower.Clear(); + AccType.clear(); + + } + #else std::map::iterator SSLColIter; @@ -2664,10 +2733,16 @@ void frmMain::ResumeAllTimers(){ #elif defined(__WIN32__) -void frmMain::UpdateSSLAccountStatus(int AccountID, int SSLStatus, CERT_CONTEXT CertificateContext){ +void frmMain::UpdateSSLAccountStatus(int AccountID, int SSLStatus, PCCERT_CONTEXT CertificateContext){ // Delete existing data. + std::map::iterator CertificateIter = AccountCertificateData.find(AccountID); + + if (CertificateIter != AccountCertificateData.end()){ + CertFreeCertificateContext(CertificateIter->second); + } + AccountCertificateData.erase(AccountID); AccountSSLResult.erase(AccountID); @@ -2731,6 +2806,16 @@ void frmMain::SetupSSLStatus( int AccountID ){ std::map::iterator SSLResultIter = AccountSSLResult.find(AccountID); + // Check if a result value has been set. + + if (SSLResultIter == AccountSSLResult.end()){ + + imgSSLStatus->SetBitmap(*imgSSLWarning); + SSLToolTip->SetTip(wxT("Unable to determine SSL information for the '") + prefaccounts.GetAccountName(AccountID) + wxT("' account.")); + return; + + } + if (SSLResultIter->second == 1){ imgSSLStatus->SetBitmap(*imgSSLWarning);