LibreOffice Module xmlsecurity (master) 1
ooxmlsecparser.hxx
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
10#pragma once
11
12#include <com/sun/star/lang/XInitialization.hpp>
13#include <com/sun/star/xml/sax/XDocumentHandler.hpp>
14
16
18
19#include <memory>
20#include <optional>
21#include <stack>
22
23class XSecController;
25
27class OOXMLSecParser: public cppu::WeakImplHelper
28 <
29 css::xml::sax::XDocumentHandler,
30 css::lang::XInitialization
31 >
32{
33public:
34 class Context;
35private:
36 class UnknownContext;
43 class DsKeyInfoContext;
52 class XadesEncapsulatedX509CertificateContext;
53 class XadesCertificateValuesContext;
54 class XadesUnsignedSignaturePropertiesContext;
55 class XadesUnsignedPropertiesContext;
57 class XadesCertContext;
71 class DsObjectContext;
73 class DsigSignaturesContext;
74
75 std::stack<std::unique_ptr<Context>> m_ContextStack;
76 std::optional<SvXMLNamespaceMap> m_pNamespaceMap;
77
79 css::uno::Reference<css::xml::sax::XDocumentHandler> m_xNextHandler;
80
82
83 OUString HandleIdAttr(css::uno::Reference<css::xml::sax::XAttributeList> const& xAttrs);
84
85public:
86 explicit OOXMLSecParser(XMLSignatureHelper& rXMLSignatureHelper, XSecController* pXSecController);
87 virtual ~OOXMLSecParser() override;
88
89 // XDocumentHandler
90 virtual void SAL_CALL startDocument() override;
91
92 virtual void SAL_CALL endDocument() override;
93
94 virtual void SAL_CALL startElement(const OUString& aName, const css::uno::Reference<css::xml::sax::XAttributeList>& xAttribs) override;
95
96 virtual void SAL_CALL endElement(const OUString& aName) override;
97
98 virtual void SAL_CALL characters(const OUString& aChars) override;
99
100 virtual void SAL_CALL ignorableWhitespace(const OUString& aWhitespaces) override;
101
102 virtual void SAL_CALL processingInstruction(const OUString& aTarget, const OUString& aData) override;
103
104 virtual void SAL_CALL setDocumentLocator(const css::uno::Reference<css::xml::sax::XLocator>& xLocator) override;
105
106 // XInitialization
107 virtual void SAL_CALL initialize(const css::uno::Sequence<css::uno::Any>& rArguments) override;
108};
109
110/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
can't be sure what is supposed to happen here because the spec is clear as mud
note: anything in ds:Object should be trusted only if there is a ds:Reference to it so it is signed (...
Parses an OOXML digital signature.
virtual void SAL_CALL setDocumentLocator(const css::uno::Reference< css::xml::sax::XLocator > &xLocator) override
virtual void SAL_CALL startElement(const OUString &aName, const css::uno::Reference< css::xml::sax::XAttributeList > &xAttribs) override
virtual void SAL_CALL characters(const OUString &aChars) override
OUString HandleIdAttr(css::uno::Reference< css::xml::sax::XAttributeList > const &xAttrs)
OOXMLSecParser(XMLSignatureHelper &rXMLSignatureHelper, XSecController *pXSecController)
virtual void SAL_CALL endDocument() override
virtual void SAL_CALL startDocument() override
XMLSignatureHelper & m_rXMLSignatureHelper
std::stack< std::unique_ptr< Context > > m_ContextStack
virtual void SAL_CALL ignorableWhitespace(const OUString &aWhitespaces) override
XSecController * m_pXSecController
std::optional< SvXMLNamespaceMap > m_pNamespaceMap
virtual void SAL_CALL endElement(const OUString &aName) override
virtual void SAL_CALL initialize(const css::uno::Sequence< css::uno::Any > &rArguments) override
virtual void SAL_CALL processingInstruction(const OUString &aTarget, const OUString &aData) override
css::uno::Reference< css::xml::sax::XDocumentHandler > m_xNextHandler
virtual ~OOXMLSecParser() override