summaryrefslogtreecommitdiff
path: root/xmlsecurity
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.co.uk>2018-02-06 15:18:52 +0100
committerMiklos Vajna <vmiklos@collabora.co.uk>2018-02-07 09:24:37 +0100
commit0833bab20bc3a6b7a9842307e4bd62f408ae37d3 (patch)
treedf121a29a1687218bc0003ef1708ea26a69e0230 /xmlsecurity
parentc4257244afa0490c18a43ec2039a11f1c48935cc (diff)
xmlsecurity: create CertificateContainer instances with a constructor
Change-Id: I42f0218a46c67062ea6eb0845d978f2630793ec0 Reviewed-on: https://gerrit.libreoffice.org/49304 Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk> Tested-by: Jenkins <ci@libreoffice.org>
Diffstat (limited to 'xmlsecurity')
-rw-r--r--xmlsecurity/Library_xmlsecurity.mk1
-rw-r--r--xmlsecurity/source/component/certificatecontainer.cxx70
-rw-r--r--xmlsecurity/source/component/certificatecontainer.hxx78
-rw-r--r--xmlsecurity/source/component/registerservices.cxx61
-rw-r--r--xmlsecurity/util/xmlsecurity.component5
5 files changed, 60 insertions, 155 deletions
diff --git a/xmlsecurity/Library_xmlsecurity.mk b/xmlsecurity/Library_xmlsecurity.mk
index 22d27c717155..1c30ab25817c 100644
--- a/xmlsecurity/Library_xmlsecurity.mk
+++ b/xmlsecurity/Library_xmlsecurity.mk
@@ -48,7 +48,6 @@ $(eval $(call gb_Library_use_libraries,xmlsecurity,\
$(eval $(call gb_Library_add_exception_objects,xmlsecurity,\
xmlsecurity/source/component/certificatecontainer \
xmlsecurity/source/component/documentdigitalsignatures \
- xmlsecurity/source/component/registerservices \
xmlsecurity/source/dialogs/certificatechooser \
xmlsecurity/source/dialogs/certificateviewer \
xmlsecurity/source/dialogs/digitalsignaturesdialog \
diff --git a/xmlsecurity/source/component/certificatecontainer.cxx b/xmlsecurity/source/component/certificatecontainer.cxx
index bdbaa68b0a94..1e6c4facc8b2 100644
--- a/xmlsecurity/source/component/certificatecontainer.cxx
+++ b/xmlsecurity/source/component/certificatecontainer.cxx
@@ -17,8 +17,15 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
-#include "certificatecontainer.hxx"
+#include <map>
+
+#include <cppuhelper/implbase.hxx>
+#include <com/sun/star/security/XCertificateContainer.hpp>
+#include <com/sun/star/lang/XServiceInfo.hpp>
+#include <com/sun/star/uno/XComponentContext.hpp>
+
#include <cppuhelper/supportsservice.hxx>
+#include <rtl/ref.hxx>
#include <sal/config.h>
@@ -26,6 +33,34 @@ using namespace ::com::sun::star;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::uno;
+class CertificateContainer
+ : public ::cppu::WeakImplHelper<css::lang::XServiceInfo, css::security::XCertificateContainer>
+{
+private:
+ typedef std::map<OUString, OUString> Map;
+ Map certMap;
+ Map certTrustMap;
+
+ static bool searchMap(const OUString& url, const OUString& certificate_name, Map& _certMap);
+ /// @throws css::uno::RuntimeException
+ bool isTemporaryCertificate(const OUString& url, const OUString& certificate_name);
+ /// @throws css::uno::RuntimeException
+ bool isCertificateTrust(const OUString& url, const OUString& certificate_name);
+
+public:
+ explicit CertificateContainer(const uno::Reference<uno::XComponentContext>&) {}
+ virtual sal_Bool SAL_CALL addCertificate(const OUString& url, const OUString& certificate_name,
+ sal_Bool trust) override;
+ virtual css::security::CertificateContainerStatus SAL_CALL
+ hasCertificate(const OUString& url, const OUString& certificate_name) override;
+
+ // XServiceInfo
+ virtual OUString SAL_CALL getImplementationName() override;
+ virtual sal_Bool SAL_CALL supportsService(const OUString& ServiceName) override;
+
+ virtual css::uno::Sequence<OUString> SAL_CALL getSupportedServiceNames() override;
+};
+
bool
CertificateContainer::searchMap( const OUString & url, const OUString & certificate_name, Map &_certMap )
{
@@ -86,7 +121,7 @@ CertificateContainer::hasCertificate( const OUString & url, const OUString & cer
OUString SAL_CALL
CertificateContainer::getImplementationName( )
{
- return impl_getStaticImplementationName();
+ return OUString("com.sun.star.security.CertificateContainer");
}
sal_Bool SAL_CALL
@@ -98,25 +133,34 @@ CertificateContainer::supportsService( const OUString& ServiceName )
Sequence< OUString > SAL_CALL
CertificateContainer::getSupportedServiceNames( )
{
- return impl_getStaticSupportedServiceNames();
-}
-
-Sequence< OUString >
-CertificateContainer::impl_getStaticSupportedServiceNames( )
-{
Sequence< OUString > aRet { "com.sun.star.security.CertificateContainer" };
return aRet;
}
-OUString
-CertificateContainer::impl_getStaticImplementationName()
+namespace
{
- return OUString("com.sun.star.security.CertificateContainer");
+struct Instance
+{
+ explicit Instance(css::uno::Reference<css::uno::XComponentContext> const& context)
+ : instance(new CertificateContainer(context))
+ {
+ }
+
+ rtl::Reference<CertificateContainer> instance;
+};
+
+struct Singleton
+ : public rtl::StaticWithArg<Instance, css::uno::Reference<css::uno::XComponentContext>,
+ Singleton>
+{
+};
}
-Reference< XInterface > CertificateContainer::impl_createInstance( const Reference< XMultiServiceFactory >& xServiceManager )
+extern "C" SAL_DLLPUBLIC_EXPORT css::uno::XInterface*
+com_sun_star_security_CertificateContainer_get_implementation(
+ css::uno::XComponentContext* context, css::uno::Sequence<css::uno::Any> const&)
{
- return Reference< XInterface >( *new CertificateContainer( xServiceManager ) );
+ return cppu::acquire(Singleton::get(context).instance.get());
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmlsecurity/source/component/certificatecontainer.hxx b/xmlsecurity/source/component/certificatecontainer.hxx
deleted file mode 100644
index 58c3ef82d00a..000000000000
--- a/xmlsecurity/source/component/certificatecontainer.hxx
+++ /dev/null
@@ -1,78 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-#ifndef INCLUDED_XMLSECURITY_SOURCE_COMPONENT_CERTIFICATECONTAINER_HXX
-#define INCLUDED_XMLSECURITY_SOURCE_COMPONENT_CERTIFICATECONTAINER_HXX
-
-#include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/lang/XSingleServiceFactory.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <cppuhelper/factory.hxx>
-#include <cppuhelper/implbase.hxx>
-
-#include <com/sun/star/security/XCertificateContainer.hpp>
-#include <com/sun/star/security/CertificateContainerStatus.hpp>
-
-#include <vector>
-#include <map>
-
-class CertificateContainer : public ::cppu::WeakImplHelper< css::lang::XServiceInfo, css::security::XCertificateContainer >
-{
- private:
- typedef std::map< OUString, OUString > Map;
- Map certMap;
- Map certTrustMap;
-
- static bool searchMap( const OUString & url, const OUString & certificate_name, Map &_certMap );
- /// @throws css::uno::RuntimeException
- bool isTemporaryCertificate( const OUString & url, const OUString & certificate_name );
- /// @throws css::uno::RuntimeException
- bool isCertificateTrust( const OUString & url, const OUString & certificate_name );
-
- public:
-
- explicit CertificateContainer(const css::uno::Reference< css::lang::XMultiServiceFactory >& ) {}
-
- virtual sal_Bool SAL_CALL addCertificate( const OUString & url, const OUString & certificate_name, sal_Bool trust ) override;
- virtual css::security::CertificateContainerStatus SAL_CALL hasCertificate( const OUString & url, const OUString & certificate_name ) override;
-
- // provide factory
- /// @throws css::uno::RuntimeException
- static OUString impl_getStaticImplementationName( );
-
- /// @throws css::uno::RuntimeException
- static css::uno::Sequence< OUString >
- impl_getStaticSupportedServiceNames( );
-
- /// @throws css::uno::RuntimeException
- static css::uno::Reference< css::uno::XInterface >
- impl_createInstance( const css::uno::Reference< css::lang::XMultiServiceFactory >& xServiceManager );
-
- // XServiceInfo
- virtual OUString SAL_CALL getImplementationName( ) override;
- virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
-
- virtual css::uno::Sequence< OUString > SAL_CALL
- getSupportedServiceNames( ) override;
-
-};
-
-#endif
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmlsecurity/source/component/registerservices.cxx b/xmlsecurity/source/component/registerservices.cxx
deleted file mode 100644
index 9c0c91d7d015..000000000000
--- a/xmlsecurity/source/component/registerservices.cxx
+++ /dev/null
@@ -1,61 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-
-
-#include <com/sun/star/lang/XSingleServiceFactory.hpp>
-
-#include <cppuhelper/factory.hxx>
-
-#include "certificatecontainer.hxx"
-
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::uno;
-
-extern "C"
-{
-SAL_DLLPUBLIC_EXPORT void* xmlsecurity_component_getFactory( const sal_Char * pImplName, void * pServiceManager, void * /*pRegistryKey*/ )
-{
- void* pRet = nullptr;
- uno::Reference< XInterface > xFactory;
-
- //Decryptor
- OUString implName = OUString::createFromAscii( pImplName );
-
- if (pServiceManager && implName == CertificateContainer::impl_getStaticImplementationName())
- {
- // CertificateContainer
- xFactory = cppu::createOneInstanceFactory(
- static_cast< lang::XMultiServiceFactory * >( pServiceManager ),
- OUString::createFromAscii( pImplName ),
- CertificateContainer::impl_createInstance,
- CertificateContainer::impl_getStaticSupportedServiceNames() );
- }
-
- if (xFactory.is())
- {
- xFactory->acquire();
- pRet = xFactory.get();
- }
- return pRet;
-}
-
-} // extern "C"
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/xmlsecurity/util/xmlsecurity.component b/xmlsecurity/util/xmlsecurity.component
index 383572bff403..adb647f20491 100644
--- a/xmlsecurity/util/xmlsecurity.component
+++ b/xmlsecurity/util/xmlsecurity.component
@@ -18,8 +18,9 @@
-->
<component loader="com.sun.star.loader.SharedLibrary" environment="@CPPU_ENV@"
- prefix="xmlsecurity" xmlns="http://openoffice.org/2010/uno-components">
- <implementation name="com.sun.star.security.CertificateContainer">
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.security.CertificateContainer"
+ constructor="com_sun_star_security_CertificateContainer_get_implementation">
<service name="com.sun.star.security.CertificateContainer"/>
</implementation>
<implementation name="com.sun.star.security.DocumentDigitalSignatures"