aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Hoà V. DINH <dinh.viet.hoa@gmail.com>2014-11-25 00:14:32 -0800
committerGravatar Hoà V. DINH <dinh.viet.hoa@gmail.com>2014-11-25 00:14:32 -0800
commit940227a204c088179b1c42f4ccc985c1bced22c4 (patch)
tree793b936791dc968bb6eee0377aa05ff2bcedc057
parent5041e67cf4ee111e9e5f14a9e06f0a598b3eb9ac (diff)
Makes the certificate verification just works on win32.
-rw-r--r--build-windows/mailcore2/mailcore2/mailcore2.vcxproj8
-rw-r--r--src/core/security/MCCertificateUtils.cpp21
2 files changed, 24 insertions, 5 deletions
diff --git a/build-windows/mailcore2/mailcore2/mailcore2.vcxproj b/build-windows/mailcore2/mailcore2/mailcore2.vcxproj
index fc15edba..b8633086 100644
--- a/build-windows/mailcore2/mailcore2/mailcore2.vcxproj
+++ b/build-windows/mailcore2/mailcore2/mailcore2.vcxproj
@@ -381,7 +381,7 @@
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>libtidy.lib;libxml2.lib;uchardet.lib;ssleay32MD.lib;libeay32MD.lib;zlib.lib;User32.lib;Ws2_32.lib;libctemplate.lib;kernel32.lib;libetpan.lib;pthreadVC2.lib;icudt.lib;icuin.lib;icuio.lib;icule.lib;iculx.lib;icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>Crypt32.lib;libtidy.lib;libxml2.lib;uchardet.lib;ssleay32MD.lib;libeay32MD.lib;zlib.lib;User32.lib;Ws2_32.lib;libctemplate.lib;kernel32.lib;libetpan.lib;pthreadVC2.lib;icudt.lib;icuin.lib;icuio.lib;icule.lib;iculx.lib;icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\..\..\Externals\lib;..\..\..\Externals\lib\x86</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
@@ -397,7 +397,7 @@
<Link>
<SubSystem>Windows</SubSystem>
<GenerateDebugInformation>true</GenerateDebugInformation>
- <AdditionalDependencies>libtidy.lib;libxml2.lib;uchardet.lib;ssleay32MD.lib;libeay32MD.lib;zlib.lib;User32.lib;Ws2_32.lib;libctemplate.lib;kernel32.lib;libetpan.lib;pthreadVC2.lib;icudt.lib;icuin.lib;icuio.lib;icule.lib;iculx.lib;icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>Crypt32.lib;libtidy.lib;libxml2.lib;uchardet.lib;ssleay32MD.lib;libeay32MD.lib;zlib.lib;User32.lib;Ws2_32.lib;libctemplate.lib;kernel32.lib;libetpan.lib;pthreadVC2.lib;icudt.lib;icuin.lib;icuio.lib;icule.lib;iculx.lib;icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\..\..\Externals\lib64;..\..\..\Externals\lib\x64</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
@@ -417,7 +417,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
- <AdditionalDependencies>libtidy.lib;libxml2.lib;uchardet.lib;ssleay32MD.lib;libeay32MD.lib;zlib.lib;User32.lib;Ws2_32.lib;libctemplate.lib;kernel32.lib;libetpan.lib;pthreadVC2.lib;icudt.lib;icuin.lib;icuio.lib;icule.lib;iculx.lib;icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>Crypt32.lib;libtidy.lib;libxml2.lib;uchardet.lib;ssleay32MD.lib;libeay32MD.lib;zlib.lib;User32.lib;Ws2_32.lib;libctemplate.lib;kernel32.lib;libetpan.lib;pthreadVC2.lib;icudt.lib;icuin.lib;icuio.lib;icule.lib;iculx.lib;icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\..\..\Externals\lib;..\..\..\Externals\lib\x86</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
@@ -437,7 +437,7 @@
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
- <AdditionalDependencies>libtidy.lib;libxml2.lib;uchardet.lib;ssleay32MD.lib;libeay32MD.lib;zlib.lib;User32.lib;Ws2_32.lib;libctemplate.lib;kernel32.lib;libetpan.lib;pthreadVC2.lib;icudt.lib;icuin.lib;icuio.lib;icule.lib;iculx.lib;icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
+ <AdditionalDependencies>Crypt32.lib;libtidy.lib;libxml2.lib;uchardet.lib;ssleay32MD.lib;libeay32MD.lib;zlib.lib;User32.lib;Ws2_32.lib;libctemplate.lib;kernel32.lib;libetpan.lib;pthreadVC2.lib;icudt.lib;icuin.lib;icuio.lib;icule.lib;iculx.lib;icuuc.lib;%(AdditionalDependencies)</AdditionalDependencies>
<AdditionalLibraryDirectories>..\..\..\Externals\lib64;..\..\..\Externals\lib\x64</AdditionalLibraryDirectories>
</Link>
</ItemDefinitionGroup>
diff --git a/src/core/security/MCCertificateUtils.cpp b/src/core/security/MCCertificateUtils.cpp
index 42b75916..f2345e90 100644
--- a/src/core/security/MCCertificateUtils.cpp
+++ b/src/core/security/MCCertificateUtils.cpp
@@ -110,7 +110,26 @@ err:
goto free_certs;
}
- status = X509_STORE_set_default_paths(store);
+#ifdef _MSC_VER
+ HCERTSTORE systemStore = CertOpenSystemStore(NULL, L"ROOT");
+
+ PCCERT_CONTEXT previousCert = NULL;
+ while (1) {
+ PCCERT_CONTEXT nextCert = CertEnumCertificatesInStore(systemStore, previousCert);
+ if (nextCert == NULL) {
+ break;
+ }
+ X509 * openSSLCert = d2i_X509(NULL, (const unsigned char **)&nextCert->pbCertEncoded, nextCert->cbCertEncoded);
+ if (openSSLCert != NULL) {
+ X509_STORE_add_cert(store, openSSLCert);
+ X509_free(openSSLCert);
+ }
+ previousCert = nextCert;
+ }
+ CertCloseStore(systemStore, 0);
+#endif
+
+ status = X509_STORE_set_default_paths(store);
if (status != 1) {
printf("Error loading the system-wide CA certificates");
}