diff options
author | Hoà V. DINH <dinh.viet.hoa@gmail.com> | 2014-11-25 00:14:32 -0800 |
---|---|---|
committer | Hoà V. DINH <dinh.viet.hoa@gmail.com> | 2014-11-25 00:14:32 -0800 |
commit | 940227a204c088179b1c42f4ccc985c1bced22c4 (patch) | |
tree | 793b936791dc968bb6eee0377aa05ff2bcedc057 | |
parent | 5041e67cf4ee111e9e5f14a9e06f0a598b3eb9ac (diff) |
Makes the certificate verification just works on win32.
-rw-r--r-- | build-windows/mailcore2/mailcore2/mailcore2.vcxproj | 8 | ||||
-rw-r--r-- | src/core/security/MCCertificateUtils.cpp | 21 |
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"); } |