23#include <com/sun/star/security/XCertificateContainer.hpp>
24#include <com/sun/star/lang/XServiceInfo.hpp>
39class CertificateContainer
40 :
public ::cppu::WeakImplHelper<css::lang::XServiceInfo, css::security::XCertificateContainer>
43 typedef std::map<OUString, OUString> Map;
47 static bool searchMap(
const OUString& url, std::u16string_view certificate_name, Map& _certMap);
49 bool isTemporaryCertificate(
const OUString& url, std::u16string_view certificate_name);
51 bool isCertificateTrust(
const OUString& url, std::u16string_view certificate_name);
54 explicit CertificateContainer(
const uno::Reference<uno::XComponentContext>&) {}
55 virtual sal_Bool SAL_CALL addCertificate(
const OUString& url,
const OUString& certificate_name,
57 virtual css::security::CertificateContainerStatus SAL_CALL
58 hasCertificate(
const OUString& url,
const OUString& certificate_name)
override;
70CertificateContainer::searchMap(
const OUString & url, std::u16string_view certificate_name, Map &_certMap )
72 Map::iterator
p = _certMap.find(url);
76 while( p != _certMap.end() )
78 ret = (*p).second == certificate_name;
88CertificateContainer::isTemporaryCertificate (
const OUString & url, std::u16string_view certificate_name )
90 return searchMap( url, certificate_name, certMap);
94CertificateContainer::isCertificateTrust (
const OUString & url, std::u16string_view certificate_name )
96 return searchMap( url, certificate_name, certTrustMap);
100CertificateContainer::addCertificate(
const OUString & url,
const OUString & certificate_name,
sal_Bool trust )
102 certMap.emplace( url, certificate_name );
106 certTrustMap.emplace( url, certificate_name );
111::security::CertificateContainerStatus
112CertificateContainer::hasCertificate(
const OUString & url,
const OUString & certificate_name )
114 if ( isTemporaryCertificate( url, certificate_name ) )
116 if ( isCertificateTrust( url, certificate_name ) )
117 return security::CertificateContainerStatus_TRUSTED;
119 return security::CertificateContainerStatus_UNTRUSTED;
122 return security::CertificateContainerStatus_NOCERT;
127CertificateContainer::getImplementationName( )
129 return "com.sun.star.security.CertificateContainer";
133CertificateContainer::supportsService(
const OUString& ServiceName )
138Sequence< OUString > SAL_CALL
139CertificateContainer::getSupportedServiceNames( )
141 return {
"com.sun.star.security.CertificateContainer" };
144extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
146 css::uno::XComponentContext* context, css::uno::Sequence<css::uno::Any>
const&)
149 return cppu::acquire(gContainer.get());
SAL_DLLPUBLIC_EXPORT css::uno::XInterface * com_sun_star_security_CertificateContainer_get_implementation(css::uno::XComponentContext *context, css::uno::Sequence< css::uno::Any > const &)
css::uno::Sequence< OUString > getSupportedServiceNames()
OUString getImplementationName()
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)