diff options
Diffstat (limited to 'xmlsecurity/source/helper/ooxmlsecparser.cxx')
-rw-r--r-- | xmlsecurity/source/helper/ooxmlsecparser.cxx | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/xmlsecurity/source/helper/ooxmlsecparser.cxx b/xmlsecurity/source/helper/ooxmlsecparser.cxx index b936254cc5c3..e9a4b61e8b98 100644 --- a/xmlsecurity/source/helper/ooxmlsecparser.cxx +++ b/xmlsecurity/source/helper/ooxmlsecparser.cxx @@ -23,6 +23,8 @@ OOXMLSecParser::OOXMLSecParser(XMLSignatureHelper& rXMLSignatureHelper, XSecCont ,m_bInX509IssuerName(false) ,m_bInX509SerialNumber(false) ,m_bInCertDigest(false) + ,m_bInValidSignatureImage(false) + ,m_bInInvalidSignatureImage(false) ,m_bReferenceUnresolved(false) ,m_rXMLSignatureHelper(rXMLSignatureHelper) { @@ -120,6 +122,29 @@ void SAL_CALL OOXMLSecParser::startElement(const OUString& rName, const uno::Ref m_aCertDigest.clear(); m_bInCertDigest = true; } + else if (rName == "Object") + { + OUString sId = xAttribs->getValueByName("Id"); + if (sId == "idValidSigLnImg") + { + m_aValidSignatureImage.clear(); + m_bInValidSignatureImage = true; + } + else if (sId == "idInvalidSigLnImg") + { + m_aInvalidSignatureImage.clear(); + m_bInInvalidSignatureImage = true; + } + else + { + SAL_INFO("xmlsecurity.ooxml", "Unknown 'Object' child element: " << rName); + } + } + else if (rName == "SetupID") + { + m_aSignatureLineId.clear(); + m_bInSignatureLineId = true; + } else { SAL_INFO("xmlsecurity.ooxml", "Unknown xml element: " << rName); @@ -180,6 +205,24 @@ void SAL_CALL OOXMLSecParser::endElement(const OUString& rName) m_pXSecController->setCertDigest(m_aCertDigest); m_bInCertDigest = false; } + else if (rName == "Object") + { + if (m_bInValidSignatureImage) + { + m_pXSecController->setValidSignatureImage(m_aValidSignatureImage); + m_bInValidSignatureImage = false; + } + else if (m_bInInvalidSignatureImage) + { + m_pXSecController->setInvalidSignatureImage(m_aInvalidSignatureImage); + m_bInInvalidSignatureImage = false; + } + } + else if (rName == "SetupID") + { + m_pXSecController->setSignatureLineId(m_aSignatureLineId); + m_bInSignatureLineId = false; + } if (m_xNextHandler.is()) m_xNextHandler->endElement(rName); @@ -203,6 +246,12 @@ void SAL_CALL OOXMLSecParser::characters(const OUString& rChars) m_aX509SerialNumber += rChars; else if (m_bInCertDigest) m_aCertDigest += rChars; + else if (m_bInValidSignatureImage) + m_aValidSignatureImage += rChars; + else if (m_bInInvalidSignatureImage) + m_aInvalidSignatureImage += rChars; + else if (m_bInSignatureLineId) + m_aSignatureLineId += rChars; if (m_xNextHandler.is()) m_xNextHandler->characters(rChars); |