LibreOffice Module xmlsecurity (master) 1
SEInitializer.cxx
Go to the documentation of this file.
1/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2/*
3 * This file is part of the LibreOffice project.
4 *
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 */
9
11#include <gpg/SEInitializer.hxx>
14
15#include <global.h>
16
17namespace com::sun::star::uno
18{
19class XComponentContext;
20}
21
22using namespace css;
23using namespace css::lang;
24using namespace css::uno;
25using namespace css::xml::crypto;
26
28{
29 // Also init GpgME while we're at it
30 GpgME::initializeLibrary();
31}
32
34
35/* XSEInitializer */
36Reference<XXMLSecurityContext> SAL_CALL SEInitializerGpg::createSecurityContext(const OUString&)
37{
38 try
39 {
40 /* Build XML Security Context */
41 Reference<XXMLSecurityContext> xSecCtx(new XMLSecurityContextGpg());
42
43 Reference<XSecurityEnvironment> xSecEnv(new SecurityEnvironmentGpg());
44 sal_Int32 n = xSecCtx->addSecurityEnvironment(xSecEnv);
45 //originally the SecurityEnvironment with the internal slot was set as default
46 xSecCtx->setDefaultSecurityEnvironmentIndex(n);
47 return xSecCtx;
48 }
49 catch (const uno::Exception&)
50 {
51 return nullptr;
52 }
53}
54
55void SAL_CALL SEInitializerGpg::freeSecurityContext(const uno::Reference<XXMLSecurityContext>&) {}
56
57/* XServiceInfo */
58sal_Bool SAL_CALL SEInitializerGpg::supportsService(const OUString& rServiceName)
59{
60 return cppu::supportsService(this, rServiceName);
61}
62
63uno::Sequence<OUString> SAL_CALL SEInitializerGpg::getSupportedServiceNames()
64{
65 return { "com.sun.star.xml.crypto.GPGSEInitializer" };
66}
67
69{
70 return "com.sun.star.xml.security.SEInitializer_Gpg";
71}
72
73extern "C" SAL_DLLPUBLIC_EXPORT uno::XInterface*
75 uno::XComponentContext* /*pCtx*/, uno::Sequence<uno::Any> const& /*rSeq*/)
76{
77 return cppu::acquire(new SEInitializerGpg());
78}
79
80/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
SAL_DLLPUBLIC_EXPORT uno::XInterface * com_sun_star_xml_security_SEInitializer_Gpg_get_implementation(uno::XComponentContext *, uno::Sequence< uno::Any > const &)
virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override
virtual css::uno::Reference< css::xml::crypto::XXMLSecurityContext > SAL_CALL createSecurityContext(const OUString &) override
virtual OUString SAL_CALL getImplementationName() override
virtual ~SEInitializerGpg() override
virtual sal_Bool SAL_CALL supportsService(const OUString &ServiceName) override
virtual void SAL_CALL freeSecurityContext(const css::uno::Reference< css::xml::crypto::XXMLSecurityContext > &securityContext) override
sal_Int64 n
bool CPPUHELPER_DLLPUBLIC supportsService(css::lang::XServiceInfo *implementation, rtl::OUString const &name)
unsigned char sal_Bool