From 86bc72072ece83c3560dbf874d6469f771c95289 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Thu, 10 Aug 2017 09:04:03 +0200 Subject: xmlsecurity: work with impl directly in SignatureEngine::startEngine() The only implementation of css::xml::crypto::XXMLSignatureTemplate is XMLSignatureTemplateImpl, so work with that directly instead of going via UNO. Change-Id: I85e2169a909b689620c2ce125a9653f9a6696f45 Reviewed-on: https://gerrit.libreoffice.org/40950 Tested-by: Jenkins Reviewed-by: Miklos Vajna --- xmlsecurity/inc/framework/signaturecreatorimpl.hxx | 2 +- xmlsecurity/inc/framework/signatureengine.hxx | 5 +- .../inc/framework/signatureverifierimpl.hxx | 2 +- .../inc/framework/xmlsignaturetemplateimpl.hxx | 99 ++++++++++++++++++++++ 4 files changed, 104 insertions(+), 4 deletions(-) create mode 100644 xmlsecurity/inc/framework/xmlsignaturetemplateimpl.hxx (limited to 'xmlsecurity/inc') diff --git a/xmlsecurity/inc/framework/signaturecreatorimpl.hxx b/xmlsecurity/inc/framework/signaturecreatorimpl.hxx index d893ad9546a7..a7487b0962a4 100644 --- a/xmlsecurity/inc/framework/signaturecreatorimpl.hxx +++ b/xmlsecurity/inc/framework/signaturecreatorimpl.hxx @@ -62,7 +62,7 @@ private: virtual void notifyResultListener() const override; virtual void clearUp( ) const override; virtual bool checkReady() const override; - virtual void startEngine( const css::uno::Reference< css::xml::crypto::XXMLSignatureTemplate >& xSignatureTemplate) override; + virtual void startEngine( const rtl::Reference& xSignatureTemplate) override; public: explicit SignatureCreatorImpl(); diff --git a/xmlsecurity/inc/framework/signatureengine.hxx b/xmlsecurity/inc/framework/signatureengine.hxx index a173fa52c7e4..6df21a822780 100644 --- a/xmlsecurity/inc/framework/signatureengine.hxx +++ b/xmlsecurity/inc/framework/signatureengine.hxx @@ -33,9 +33,11 @@ #include #include +#include #include "xsecfwdllapi.h" #include "securityengine.hxx" +#include "xmlsignaturetemplateimpl.hxx" #include @@ -97,8 +99,7 @@ protected: */ /// @throws css::uno::Exception /// @throws css::uno::RuntimeException - virtual void startEngine( const css::uno::Reference< - css::xml::crypto::XXMLSignatureTemplate >&) + virtual void startEngine( const rtl::Reference&) {}; public: diff --git a/xmlsecurity/inc/framework/signatureverifierimpl.hxx b/xmlsecurity/inc/framework/signatureverifierimpl.hxx index e9e3d050136b..49aa4c855c99 100644 --- a/xmlsecurity/inc/framework/signatureverifierimpl.hxx +++ b/xmlsecurity/inc/framework/signatureverifierimpl.hxx @@ -56,7 +56,7 @@ private: virtual void notifyResultListener() const override; virtual bool checkReady() const override; - virtual void startEngine( const css::uno::Reference< css::xml::crypto::XXMLSignatureTemplate >& xSignatureTemplate) override; + virtual void startEngine( const rtl::Reference& xSignatureTemplate) override; public: explicit SignatureVerifierImpl(); diff --git a/xmlsecurity/inc/framework/xmlsignaturetemplateimpl.hxx b/xmlsecurity/inc/framework/xmlsignaturetemplateimpl.hxx new file mode 100644 index 000000000000..bb6452c0256e --- /dev/null +++ b/xmlsecurity/inc/framework/xmlsignaturetemplateimpl.hxx @@ -0,0 +1,99 @@ +/* -*- 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_INC_FRAMEWORK_XMLSIGNATURETEMPLATEIMPL_HXX +#define INCLUDED_XMLSECURITY_INC_FRAMEWORK_XMLSIGNATURETEMPLATEIMPL_HXX + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include + +class XMLSignatureTemplateImpl : public ::cppu::WeakImplHelper< + css::xml::crypto::XXMLSignatureTemplate , + css::lang::XServiceInfo > +{ + private: + css::uno::Reference< css::xml::wrapper::XXMLElementWrapper > m_xTemplate ; + std::vector< css::uno::Reference< css::xml::wrapper::XXMLElementWrapper > > targets; + css::uno::Reference< css::xml::crypto::XUriBinding > m_xUriBinding; + css::xml::crypto::SecurityOperationStatus m_nStatus; + + public: + explicit XMLSignatureTemplateImpl(); + virtual ~XMLSignatureTemplateImpl() override; + + //Methods from XXMLSignatureTemplate + virtual void SAL_CALL setTemplate( + const css::uno::Reference< css::xml::wrapper::XXMLElementWrapper >& aXmlElement + ) override; + + virtual css::uno::Reference< css::xml::wrapper::XXMLElementWrapper > SAL_CALL getTemplate( + ) override; + + virtual void SAL_CALL setTarget( + const css::uno::Reference< css::xml::wrapper::XXMLElementWrapper >& aXmlElement + ) override; + + virtual css::uno::Sequence< css::uno::Reference< css::xml::wrapper::XXMLElementWrapper > > SAL_CALL getTargets( + ) override; + + virtual void SAL_CALL setBinding( + const css::uno::Reference< css::xml::crypto::XUriBinding >& aUriBinding ) override; + virtual css::uno::Reference< css::xml::crypto::XUriBinding > + SAL_CALL getBinding( ) override; + + virtual void SAL_CALL setStatus( + css::xml::crypto::SecurityOperationStatus status ) override; + virtual css::xml::crypto::SecurityOperationStatus + SAL_CALL getStatus( ) override; + + //Methods from 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 ; + + //Helper for XServiceInfo + static css::uno::Sequence< OUString > impl_getSupportedServiceNames() ; + + /// @throws css::uno::RuntimeException + static OUString impl_getImplementationName() ; + + //Helper for registry + /// @throws css::uno::RuntimeException + static css::uno::Reference< css::uno::XInterface > SAL_CALL impl_createInstance( const css::uno::Reference< css::lang::XMultiServiceFactory >& aServiceManager ) ; +}; + +#endif // INCLUDED_XMLSECURITY_INC_FRAMEWORK_XMLSIGNATURETEMPLATEIMPL_HXX + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -- cgit