summaryrefslogtreecommitdiff
path: root/xmlsecurity
diff options
context:
space:
mode:
authorMichael Stahl <michael.stahl@allotropia.de>2021-02-18 18:23:42 +0100
committerMichael Stahl <michael.stahl@allotropia.de>2021-03-03 12:44:15 +0100
commit59df9e70ce1a7ec797b836bda7f9642912febc53 (patch)
treec4a95e252be51ab3f2d9125665a0d90915bdc9a4 /xmlsecurity
parent12b15be8f4f930a04d8056b9219ac969b42a9784 (diff)
xmlsecurity: move XSecParser state into contexts
Change-Id: Ic73b647798a91bd253d93970e2a9a3e11b208a1c Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111158 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.stahl@allotropia.de>
Diffstat (limited to 'xmlsecurity')
-rw-r--r--xmlsecurity/source/helper/xsecparser.cxx153
-rw-r--r--xmlsecurity/source/helper/xsecparser.hxx14
2 files changed, 65 insertions, 102 deletions
diff --git a/xmlsecurity/source/helper/xsecparser.cxx b/xmlsecurity/source/helper/xsecparser.cxx
index 1f2045c5d0e3..b8c5581bad5c 100644
--- a/xmlsecurity/source/helper/xsecparser.cxx
+++ b/xmlsecurity/source/helper/xsecparser.cxx
@@ -98,6 +98,9 @@ auto XSecParser::Context::CreateChildContext(
class XSecParser::LoPGPOwnerContext
: public XSecParser::Context
{
+ private:
+ OUString m_Value;
+
public:
LoPGPOwnerContext(XSecParser & rParser,
std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap)
@@ -105,26 +108,23 @@ class XSecParser::LoPGPOwnerContext
{
}
- virtual void StartElement(
- css::uno::Reference<css::xml::sax::XAttributeList> const& /*xAttrs*/) override
- {
- m_rParser.m_ouGpgOwner.clear();
- }
-
virtual void EndElement() override
{
- m_rParser.m_pXSecController->setGpgOwner( m_rParser.m_ouGpgOwner );
+ m_rParser.m_pXSecController->setGpgOwner(m_Value);
}
virtual void Characters(OUString const& rChars) override
{
- m_rParser.m_ouGpgOwner += rChars;
+ m_Value += rChars;
}
};
class XSecParser::DsPGPKeyPacketContext
: public XSecParser::Context
{
+ private:
+ OUString m_Value;
+
public:
DsPGPKeyPacketContext(XSecParser & rParser,
std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap)
@@ -132,26 +132,23 @@ class XSecParser::DsPGPKeyPacketContext
{
}
- virtual void StartElement(
- css::uno::Reference<css::xml::sax::XAttributeList> const& /*xAttrs*/) override
- {
- m_rParser.m_ouGpgCertificate.clear();
- }
-
virtual void EndElement() override
{
- m_rParser.m_pXSecController->setGpgCertificate( m_rParser.m_ouGpgCertificate );
+ m_rParser.m_pXSecController->setGpgCertificate(m_Value);
}
virtual void Characters(OUString const& rChars) override
{
- m_rParser.m_ouGpgCertificate += rChars;
+ m_Value += rChars;
}
};
class XSecParser::DsPGPKeyIDContext
: public XSecParser::Context
{
+ private:
+ OUString m_Value;
+
public:
DsPGPKeyIDContext(XSecParser & rParser,
std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap)
@@ -159,20 +156,14 @@ class XSecParser::DsPGPKeyIDContext
{
}
- virtual void StartElement(
- css::uno::Reference<css::xml::sax::XAttributeList> const& /*xAttrs*/) override
- {
- m_rParser.m_ouGpgKeyID.clear();
- }
-
virtual void EndElement() override
{
- m_rParser.m_pXSecController->setGpgKeyID( m_rParser.m_ouGpgKeyID );
+ m_rParser.m_pXSecController->setGpgKeyID(m_Value);
}
virtual void Characters(OUString const& rChars) override
{
- m_rParser.m_ouGpgKeyID += rChars;
+ m_Value += rChars;
}
};
@@ -215,6 +206,9 @@ class XSecParser::DsPGPDataContext
class XSecParser::DsX509CertificateContext
: public XSecParser::Context
{
+ private:
+ OUString m_Value;
+
public:
DsX509CertificateContext(XSecParser & rParser,
std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap)
@@ -222,26 +216,23 @@ class XSecParser::DsX509CertificateContext
{
}
- virtual void StartElement(
- css::uno::Reference<css::xml::sax::XAttributeList> const& /*xAttrs*/) override
- {
- m_rParser.m_ouX509Certificate.clear();
- }
-
virtual void EndElement() override
{
- m_rParser.m_pXSecController->setX509Certificate( m_rParser.m_ouX509Certificate );
+ m_rParser.m_pXSecController->setX509Certificate(m_Value);
}
virtual void Characters(OUString const& rChars) override
{
- m_rParser.m_ouX509Certificate += rChars;
+ m_Value += rChars;
}
};
class XSecParser::DsX509SerialNumberContext
: public XSecParser::Context
{
+ private:
+ OUString m_Value;
+
public:
DsX509SerialNumberContext(XSecParser & rParser,
std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap)
@@ -249,26 +240,23 @@ class XSecParser::DsX509SerialNumberContext
{
}
- virtual void StartElement(
- css::uno::Reference<css::xml::sax::XAttributeList> const& /*xAttrs*/) override
- {
- m_rParser.m_ouX509SerialNumber.clear();
- }
-
virtual void EndElement() override
{
- m_rParser.m_pXSecController->setX509SerialNumber( m_rParser.m_ouX509SerialNumber );
+ m_rParser.m_pXSecController->setX509SerialNumber(m_Value);
}
virtual void Characters(OUString const& rChars) override
{
- m_rParser.m_ouX509SerialNumber += rChars;
+ m_Value += rChars;
}
};
class XSecParser::DsX509IssuerNameContext
: public XSecParser::Context
{
+ private:
+ OUString m_Value;
+
public:
DsX509IssuerNameContext(XSecParser & rParser,
std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap)
@@ -276,20 +264,14 @@ class XSecParser::DsX509IssuerNameContext
{
}
- virtual void StartElement(
- css::uno::Reference<css::xml::sax::XAttributeList> const& /*xAttrs*/) override
- {
- m_rParser.m_ouX509IssuerName.clear();
- }
-
virtual void EndElement() override
{
- m_rParser.m_pXSecController->setX509IssuerName( m_rParser.m_ouX509IssuerName );
+ m_rParser.m_pXSecController->setX509IssuerName(m_Value);
}
virtual void Characters(OUString const& rChars) override
{
- m_rParser.m_ouX509IssuerName += rChars;
+ m_Value += rChars;
}
};
@@ -386,6 +368,9 @@ class XSecParser::DsKeyInfoContext
class XSecParser::DsSignatureValueContext
: public XSecParser::Context
{
+ private:
+ OUString m_Value;
+
public:
DsSignatureValueContext(XSecParser & rParser,
std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap)
@@ -397,17 +382,16 @@ class XSecParser::DsSignatureValueContext
css::uno::Reference<css::xml::sax::XAttributeList> const& xAttrs) override
{
m_rParser.HandleIdAttr(xAttrs);
- m_rParser.m_ouSignatureValue.clear();
}
virtual void EndElement() override
{
- m_rParser.m_pXSecController->setSignatureValue( m_rParser.m_ouSignatureValue );
+ m_rParser.m_pXSecController->setSignatureValue(m_Value);
}
virtual void Characters(OUString const& rChars) override
{
- m_rParser.m_ouSignatureValue += rChars;
+ m_Value += rChars;
}
};
@@ -656,6 +640,9 @@ class XSecParser::DsSignedInfoContext
class XSecParser::XadesEncapsulatedX509CertificateContext
: public XSecParser::Context
{
+ private:
+ OUString m_Value;
+
public:
XadesEncapsulatedX509CertificateContext(XSecParser & rParser,
std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap)
@@ -667,17 +654,16 @@ class XSecParser::XadesEncapsulatedX509CertificateContext
css::uno::Reference<css::xml::sax::XAttributeList> const& xAttrs) override
{
m_rParser.HandleIdAttr(xAttrs);
- m_rParser.m_ouEncapsulatedX509Certificate.clear();
}
virtual void EndElement() override
{
- m_rParser.m_pXSecController->addEncapsulatedX509Certificate( m_rParser.m_ouEncapsulatedX509Certificate );
+ m_rParser.m_pXSecController->addEncapsulatedX509Certificate(m_Value);
}
virtual void Characters(OUString const& rChars) override
{
- m_rParser.m_ouEncapsulatedX509Certificate += rChars;
+ m_Value += rChars;
}
};
@@ -785,6 +771,9 @@ class XSecParser::XadesUnsignedPropertiesContext
class XSecParser::LoSignatureLineIdContext
: public XSecParser::Context
{
+ private:
+ OUString m_Value;
+
public:
LoSignatureLineIdContext(XSecParser & rParser,
std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap)
@@ -792,26 +781,23 @@ class XSecParser::LoSignatureLineIdContext
{
}
- virtual void StartElement(
- css::uno::Reference<css::xml::sax::XAttributeList> const& /*xAttrs*/) override
- {
- m_rParser.m_ouSignatureLineId.clear();
- }
-
virtual void EndElement() override
{
- m_rParser.m_pXSecController->setSignatureLineId( m_rParser.m_ouSignatureLineId );
+ m_rParser.m_pXSecController->setSignatureLineId(m_Value);
}
virtual void Characters(OUString const& rChars) override
{
- m_rParser.m_ouSignatureLineId += rChars;
+ m_Value += rChars;
}
};
class XSecParser::LoSignatureLineValidImageContext
: public XSecParser::Context
{
+ private:
+ OUString m_Value;
+
public:
LoSignatureLineValidImageContext(XSecParser & rParser,
std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap)
@@ -819,26 +805,23 @@ class XSecParser::LoSignatureLineValidImageContext
{
}
- virtual void StartElement(
- css::uno::Reference<css::xml::sax::XAttributeList> const& /*xAttrs*/) override
- {
- m_rParser.m_ouSignatureLineValidImage.clear();
- }
-
virtual void EndElement() override
{
- m_rParser.m_pXSecController->setValidSignatureImage( m_rParser.m_ouSignatureLineValidImage );
+ m_rParser.m_pXSecController->setValidSignatureImage(m_Value);
}
virtual void Characters(OUString const& rChars) override
{
- m_rParser.m_ouSignatureLineValidImage += rChars;
+ m_Value += rChars;
}
};
class XSecParser::LoSignatureLineInvalidImageContext
: public XSecParser::Context
{
+ private:
+ OUString m_Value;
+
public:
LoSignatureLineInvalidImageContext(XSecParser & rParser,
std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap)
@@ -846,20 +829,14 @@ class XSecParser::LoSignatureLineInvalidImageContext
{
}
- virtual void StartElement(
- css::uno::Reference<css::xml::sax::XAttributeList> const& /*xAttrs*/) override
- {
- m_rParser.m_ouSignatureLineInvalidImage.clear();
- }
-
virtual void EndElement() override
{
- m_rParser.m_pXSecController->setInvalidSignatureImage( m_rParser.m_ouSignatureLineInvalidImage );
+ m_rParser.m_pXSecController->setInvalidSignatureImage(m_Value);
}
virtual void Characters(OUString const& rChars) override
{
- m_rParser.m_ouSignatureLineInvalidImage += rChars;
+ m_Value += rChars;
}
};
@@ -896,6 +873,9 @@ class XSecParser::LoSignatureLineContext
class XSecParser::XadesCertDigestContext
: public XSecParser::Context
{
+ private:
+ OUString m_Value;
+
public:
XadesCertDigestContext(XSecParser & rParser,
std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap)
@@ -905,7 +885,7 @@ class XSecParser::XadesCertDigestContext
virtual void EndElement() override
{
- m_rParser.m_pXSecController->setCertDigest( m_rParser.m_ouCertDigest );
+ m_rParser.m_pXSecController->setCertDigest(m_Value);
}
virtual std::unique_ptr<Context> CreateChildContext(
@@ -918,7 +898,7 @@ class XSecParser::XadesCertDigestContext
}
if (nNamespace == XML_NAMESPACE_DS && rName == "DigestValue")
{
- return std::make_unique<DsDigestValueContext>(m_rParser, std::move(pOldNamespaceMap), m_rParser.m_ouCertDigest);
+ return std::make_unique<DsDigestValueContext>(m_rParser, std::move(pOldNamespaceMap), m_Value);
}
return XSecParser::Context::CreateChildContext(std::move(pOldNamespaceMap), nNamespace, rName);
}
@@ -1136,6 +1116,9 @@ class XSecParser::DcDateContext
class XSecParser::DcDescriptionContext
: public XSecParser::Context
{
+ private:
+ OUString m_Value;
+
public:
DcDescriptionContext(XSecParser & rParser,
std::unique_ptr<SvXMLNamespaceMap> pOldNamespaceMap)
@@ -1143,20 +1126,14 @@ class XSecParser::DcDescriptionContext
{
}
- virtual void StartElement(
- css::uno::Reference<css::xml::sax::XAttributeList> const& /*xAttrs*/) override
- {
- m_rParser.m_ouDescription.clear();
- }
-
virtual void EndElement() override
{
- m_rParser.m_pXSecController->setDescription( m_rParser.m_ouDescription );
+ m_rParser.m_pXSecController->setDescription(m_Value);
}
virtual void Characters(OUString const& rChars) override
{
- m_rParser.m_ouDescription += rChars;
+ m_Value += rChars;
}
};
diff --git a/xmlsecurity/source/helper/xsecparser.hxx b/xmlsecurity/source/helper/xsecparser.hxx
index 33896eff8d10..f9efee46dead 100644
--- a/xmlsecurity/source/helper/xsecparser.hxx
+++ b/xmlsecurity/source/helper/xsecparser.hxx
@@ -101,22 +101,8 @@ private:
* the following members are used to reserve the signature information,
* including X509IssuerName, X509SerialNumber, and X509Certificate,etc.
*/
- OUString m_ouX509IssuerName;
- OUString m_ouX509SerialNumber;
- OUString m_ouX509Certificate;
- OUString m_ouGpgCertificate;
- OUString m_ouGpgKeyID;
- OUString m_ouGpgOwner;
- OUString m_ouCertDigest;
- OUString m_ouEncapsulatedX509Certificate;
OUString m_ouDigestValue;
- OUString m_ouSignatureValue;
OUString m_ouDate;
- /// Characters of a <dc:description> element, as just read from XML.
- OUString m_ouDescription;
- OUString m_ouSignatureLineId;
- OUString m_ouSignatureLineValidImage;
- OUString m_ouSignatureLineInvalidImage;
std::stack<std::unique_ptr<Context>> m_ContextStack;
std::unique_ptr<SvXMLNamespaceMap> m_pNamespaceMap;