Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Win32 Support: Support for adding a new account on Windows.
authorSteve Brokenshire <sbrokenshire@xestia.co.uk>
Thu, 12 May 2016 21:26:26 +0000 (22:26 +0100)
committerSteve Brokenshire <sbrokenshire@xestia.co.uk>
Thu, 12 May 2016 21:26:26 +0000 (22:26 +0100)
source/frmNewAccount.cpp

index bff53e1..8768196 100644 (file)
 #include <wx/filefn.h>
 #include <wx/fileconf.h>
 
+#if defined(__WIN32__)
+#include <cryptuiapi.h>
+#endif
+
 #include "carddav/carddav.h"
 #include "common/dirs.h"
 #include "common/svrblist.h"
+#include "common/win32ssl.h"
 #include "frmInvalidSSLCertificate.h"
 
 frmNewAccount::frmNewAccount( wxWindow* parent )
@@ -180,6 +185,12 @@ void frmNewAccount::ProcessNext( wxCommandEvent& event )
                        UseSSL);
                CardDAVConn.SetupResultBools(&ServerResult, &ServerAction);
         
+#if defined(__WIN32__)
+
+               BOOL ModifiedCertificateData = FALSE;
+
+#endif
+
                // Verify SSL trust first before doing anything.
 
                if (UseSSL == TRUE){
@@ -238,7 +249,26 @@ void frmNewAccount::ProcessNext( wxCommandEvent& event )
                                        }
                                        
                                }
-                               
+
+#elif defined(__WIN32__)
+
+                               CRYPTUI_VIEWCERTIFICATE_STRUCTW CertificateData = BuildCertificateData(&CardDAVConn, (HWND)this->GetHandle());
+
+                               if (!CryptUIDlgViewCertificate(&CertificateData, &ModifiedCertificateData)){
+                                       wxMessageBox(_("An error occured while trying to open the certificate dialog."), _("Error opening Certificate Information dialog"));
+                               }
+
+                               if (ModifiedCertificateData == FALSE){
+
+                                       lblServerConnResult->SetLabel(_("Failed"));
+                                       lblServerResponse->SetLabel(_("Not applicable"));
+                                       lblServerSSLResult->SetLabel(_("Used"));
+                                       lblServerSSLValid->SetLabel(_("No"));
+                                       lblConnectionResultText->SetLabel(_("An error occured whilst connnecting: ") + CardDAVConn.GetErrorMessage() + wxString::Format(wxT(" (%i)\n%s"), sslcode, CardDAVConn.GetErrorBuffer().mb_str()));
+                                       return;
+
+                               }
+
 #else
                        
                                frmInvalidSSLCertificate *frmICPtr = new frmInvalidSSLCertificate(this);
@@ -292,7 +322,7 @@ void frmNewAccount::ProcessNext( wxCommandEvent& event )
         
                ConnTest.join();
         
-               if (ServerResult == FALSE){
+               if (ServerResult == FALSE && ModifiedCertificateData == FALSE){
             
                        lblServerConnResult->SetLabel(_("Failed"));
                        lblConnectionResultText->SetLabel(_("An error occured whilst connnecting: ") + CardDAVConn.GetErrorMessage());
@@ -303,11 +333,11 @@ void frmNewAccount::ProcessNext( wxCommandEvent& event )
                        lblServerConnResult->SetLabel(_("Connected"));
             
                }
-        
+
                if (CardDAVConn.CanDoSSL() == TRUE){
-            
+
                        lblServerSSLResult->SetLabel(_("Used"));
-            
+
                } else {
             
                        lblServerSSLResult->SetLabel(_("Not Used"));
@@ -331,7 +361,15 @@ void frmNewAccount::ProcessNext( wxCommandEvent& event )
                        default:
                                lblServerSSLValid->SetLabel(_("Unable to verify"));
                }
-               
+
+#elif defined(__WIN32__)
+
+               if (ModifiedCertificateData == TRUE){
+                       lblServerSSLValid->SetLabel(_("Verified (user)"));
+               } else {
+                       lblServerSSLValid->SetLabel(_("Verified"));
+               }
+
 #else
                
                if (CardDAVConn.SSLVerify() == TRUE && CardDAVConn.CanDoSSL() == TRUE){
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