xmlsecurity/inc/xmlsecurity/certificatechooser.hxx | 2 xmlsecurity/source/dialogs/certificateviewer.cxx | 6 xmlsecurity/source/dialogs/certificateviewer.src | 5 xmlsecurity/source/dialogs/dialogs.hrc | 1 xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx | 70 ++++++++++ 5 files changed, 83 insertions(+), 1 deletion(-)
New commits: commit c42be58e4c006ab3e1f262b644789cba8659d0ab Author: Tor Lillqvist <t...@collabora.com> Date: Fri May 20 14:12:30 2016 +0300 Show the certificate use also in the View Certificate dialog Change-Id: I25ba55456be62307348eec529bfd434f8a90bac4 diff --git a/xmlsecurity/inc/xmlsecurity/certificatechooser.hxx b/xmlsecurity/inc/xmlsecurity/certificatechooser.hxx index 8617d05..e24c457 100644 --- a/xmlsecurity/inc/xmlsecurity/certificatechooser.hxx +++ b/xmlsecurity/inc/xmlsecurity/certificatechooser.hxx @@ -64,7 +64,6 @@ private: void ImplInitialize(); void HandleOneUsageBit(OUString& string, int& bits, int bit, const char *name); - OUString UsageInClearText(int bits); public: CertificateChooser(vcl::Window* pParent, css::uno::Reference< css::uno::XComponentContext>& rxCtx, css::uno::Reference< css::xml::crypto::XSecurityEnvironment >& rxSecurityEnvironment); @@ -77,6 +76,7 @@ public: /// Gets the description string provided when selecting the certificate. OUString GetDescription(); + OUString UsageInClearText(int bits); }; #endif // INCLUDED_XMLSECURITY_INC_XMLSECURITY_CERTIFICATECHOOSER_HXX diff --git a/xmlsecurity/source/dialogs/certificateviewer.cxx b/xmlsecurity/source/dialogs/certificateviewer.cxx index 21584b8..9c4e397 100644 --- a/xmlsecurity/source/dialogs/certificateviewer.cxx +++ b/xmlsecurity/source/dialogs/certificateviewer.cxx @@ -17,6 +17,7 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <xmlsecurity/certificatechooser.hxx> #include <xmlsecurity/certificateviewer.hxx> #include <com/sun/star/security/XCertificate.hpp> @@ -278,6 +279,11 @@ CertificateViewerDetailsTP::CertificateViewerDetailsTP( vcl::Window* _pParent, C aLBEntry = aDetails = xCert->getSignatureAlgorithm(); InsertElement( XMLSEC_RES( STR_SIGNATURE_ALGO ), aLBEntry, aDetails ); + CertificateChooser* pChooser = dynamic_cast<CertificateChooser*>(mpDlg->GetParent()); + assert(pChooser); + aLBEntry = pChooser->UsageInClearText( mpDlg->mxCert->getCertificateUsage() ); + InsertElement( XMLSEC_RES( STR_USE ), aLBEntry, aLBEntry ); + aSeq = xCert->getSHA1Thumbprint(); aLBEntry = XmlSec::GetHexString( aSeq, pHexSep ); aDetails = XmlSec::GetHexString( aSeq, pHexSep, nLineBreak ); diff --git a/xmlsecurity/source/dialogs/certificateviewer.src b/xmlsecurity/source/dialogs/certificateviewer.src index 24e8246..a62c50d 100644 --- a/xmlsecurity/source/dialogs/certificateviewer.src +++ b/xmlsecurity/source/dialogs/certificateviewer.src @@ -86,6 +86,11 @@ String STR_SIGNATURE_ALGO Text [ en-US ] = "Signature Algorithm"; }; +String STR_USE +{ + Text [ en-US ] = "Certificate Use"; +}; + String STR_THUMBPRINT_SHA1 { Text [ en-US ] = "Thumbprint SHA1"; diff --git a/xmlsecurity/source/dialogs/dialogs.hrc b/xmlsecurity/source/dialogs/dialogs.hrc index af7b206..65cceb6 100644 --- a/xmlsecurity/source/dialogs/dialogs.hrc +++ b/xmlsecurity/source/dialogs/dialogs.hrc @@ -38,6 +38,7 @@ #define STR_SIGNATURE_ALGO 266 #define STR_THUMBPRINT_SHA1 267 #define STR_THUMBPRINT_MD5 268 +#define STR_USE 271 // --------- general metrics --------- #define DLGS_WIDTH 287 commit 2be281097fc0531a6a18835119ab406dfb8494d2 Author: Tor Lillqvist <t...@collabora.com> Date: Fri May 20 13:58:43 2016 +0300 Add SAL_INFOs of the list of system and physical cert stores Change-Id: I5c232e72c4a7fc18bc0f7ea29a9c912bf71284ba diff --git a/xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx b/xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx index 2717d1c..84fd8e8 100644 --- a/xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx +++ b/xmlsecurity/source/xmlsec/mscrypt/securityenvironment_mscryptimpl.cxx @@ -43,6 +43,7 @@ #include <xmlsecurity/biginteger.hxx> +#include <comphelper/windowserrorstring.hxx> #include <sal/log.hxx> #include <rtl/locale.h> #include <osl/nlsupport.h> @@ -366,6 +367,71 @@ HCRYPTKEY SecurityEnvironment_MSCryptImpl::getPriKey( unsigned int position ) th return prikey ; } +#ifdef SAL_LOG_INFO + +// Based on sample code from MSDN + +static void get_system_name(const void *pvSystemStore, + DWORD dwFlags, + LPCWSTR *ppwszSystemName) +{ + *ppwszSystemName = NULL; + + if (dwFlags & CERT_SYSTEM_STORE_RELOCATE_FLAG) + { + PCERT_SYSTEM_STORE_RELOCATE_PARA pRelocatePara; + pRelocatePara = (PCERT_SYSTEM_STORE_RELOCATE_PARA) pvSystemStore; + *ppwszSystemName = pRelocatePara->pwszSystemStore; + } + else + { + *ppwszSystemName = (LPCWSTR) pvSystemStore; + } +} + +extern "C" BOOL WINAPI cert_enum_physical_store_callback(const void *, + DWORD dwFlags, + LPCWSTR pwszStoreName, + PCERT_PHYSICAL_STORE_INFO, + void *, + void *) +{ + OUString name(pwszStoreName); + if (dwFlags & CERT_PHYSICAL_STORE_PREDEFINED_ENUM_FLAG) + name += " (implicitly created)"; + SAL_INFO("xmlsecurity.xmlsec", " Physical store: " << name); + + return TRUE; +} + +extern "C" BOOL WINAPI cert_enum_system_store_callback(const void *pvSystemStore, + DWORD dwFlags, + PCERT_SYSTEM_STORE_INFO, + void *, + void *) +{ + LPCWSTR pwszSystemStore; + + get_system_name(pvSystemStore, dwFlags, &pwszSystemStore); + SAL_INFO("xmlsecurity.xmlsec", "System store: " << OUString(pwszSystemStore)); + + if (!CertEnumPhysicalStore(pvSystemStore, + dwFlags, + NULL, + cert_enum_physical_store_callback)) + { + DWORD dwErr = GetLastError(); + if (!(ERROR_FILE_NOT_FOUND == dwErr || + ERROR_NOT_SUPPORTED == dwErr)) + { + SAL_WARN("xmlsecurity.xmlsec", "CertEnumPhysicalStore failed:" << WindowsErrorString(GetLastError())); + } + } + return TRUE; +} + +#endif + //Methods from XSecurityEnvironment Sequence< Reference < XCertificate > > SecurityEnvironment_MSCryptImpl::getPersonalCertificates() throw( SecurityException , RuntimeException ) { @@ -397,6 +463,10 @@ Sequence< Reference < XCertificate > > SecurityEnvironment_MSCryptImpl::getPerso DWORD dwKeySpec; HCRYPTPROV hCryptProv; +#ifdef SAL_LOG_INFO + CertEnumSystemStore(CERT_SYSTEM_STORE_CURRENT_USER, NULL, NULL, cert_enum_system_store_callback); +#endif + hSystemKeyStore = CertOpenSystemStore( 0, "MY" ) ; if( hSystemKeyStore != NULL ) { pCertContext = CertEnumCertificatesInStore( hSystemKeyStore, pCertContext ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits