sfx2/source/doc/docfile.cxx | 7 +++---- xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx | 3 +++ xmlsecurity/source/helper/ooxmlsecparser.cxx | 13 +++++++++++++ xmlsecurity/source/helper/ooxmlsecparser.hxx | 2 ++ 4 files changed, 21 insertions(+), 4 deletions(-)
New commits: commit 2737a187a6a7c2e04aa1c6b519a712cfb989c592 Author: Miklos Vajna <[email protected]> Date: Tue Jan 19 17:18:04 2016 +0100 xmlsecurity: import OOXML <mdssi:Value> That stores the signature timestamp, and that now immediately shows up in DigitalSignaturesDialog as well. Change-Id: I83a63a10cf946f47a03e4570c461a92512638600 diff --git a/xmlsecurity/source/helper/ooxmlsecparser.cxx b/xmlsecurity/source/helper/ooxmlsecparser.cxx index e47f9dd..d8b5c93 100644 --- a/xmlsecurity/source/helper/ooxmlsecparser.cxx +++ b/xmlsecurity/source/helper/ooxmlsecparser.cxx @@ -17,6 +17,7 @@ OOXMLSecParser::OOXMLSecParser(XSecController* pXSecController) ,m_bInDigestValue(false) ,m_bInSignatureValue(false) ,m_bInX509Certificate(false) + ,m_bInMdssiValue(false) { } @@ -71,6 +72,11 @@ throw (xml::sax::SAXException, uno::RuntimeException, std::exception) m_aX509Certificate.clear(); m_bInX509Certificate = true; } + else if (rName == "mdssi:Value") + { + m_aMdssiValue.clear(); + m_bInMdssiValue = true; + } if (m_xNextHandler.is()) m_xNextHandler->startElement(rName, xAttribs); @@ -94,6 +100,11 @@ void SAL_CALL OOXMLSecParser::endElement(const OUString& rName) throw (xml::sax: m_pXSecController->setX509Certificate(m_aX509Certificate); m_bInX509Certificate = false; } + else if (rName == "mdssi:Value") + { + m_pXSecController->setDate(m_aMdssiValue); + m_bInMdssiValue = false; + } if (m_xNextHandler.is()) m_xNextHandler->endElement(rName); @@ -107,6 +118,8 @@ void SAL_CALL OOXMLSecParser::characters(const OUString& rChars) throw (xml::sax m_aSignatureValue += rChars; else if (m_bInX509Certificate) m_aX509Certificate += rChars; + else if (m_bInMdssiValue) + m_aMdssiValue += rChars; if (m_xNextHandler.is()) m_xNextHandler->characters(rChars); diff --git a/xmlsecurity/source/helper/ooxmlsecparser.hxx b/xmlsecurity/source/helper/ooxmlsecparser.hxx index 54c522b..b071bca 100644 --- a/xmlsecurity/source/helper/ooxmlsecparser.hxx +++ b/xmlsecurity/source/helper/ooxmlsecparser.hxx @@ -35,6 +35,8 @@ class OOXMLSecParser: public cppu::WeakImplHelper OUString m_aSignatureValue; bool m_bInX509Certificate; OUString m_aX509Certificate; + bool m_bInMdssiValue; + OUString m_aMdssiValue; public: OOXMLSecParser(XSecController* pXSecController); commit 8b8b5e21b03387d482ead79afe250cc7fe6e78f7 Author: Miklos Vajna <[email protected]> Date: Tue Jan 19 17:17:04 2016 +0100 xmlsecurity: handle OOXML signatures in ImplGetSignatureInformations() With this, DigitalSignaturesDialog correctly shows the "Signed by" field when reading a single valid OOXML signature. Change-Id: Ic52a56767f65ab30924b07073d31677cb3a27de5 diff --git a/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx b/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx index bb93298..ea2430b 100644 --- a/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx +++ b/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx @@ -24,6 +24,7 @@ #include <sax/tools/converter.hxx> #include <com/sun/star/embed/XStorage.hpp> +#include <com/sun/star/embed/StorageFormats.hpp> #include <com/sun/star/embed/ElementModes.hpp> #include <com/sun/star/io/XSeekable.hpp> #include <com/sun/star/io/XTruncate.hpp> @@ -744,6 +745,8 @@ void DigitalSignaturesDialog::ImplGetSignatureInformations(bool bUseTempStream) uno::Reference< io::XInputStream > xInputStream( aStreamHelper.xSignatureStream, uno::UNO_QUERY ); maSignatureHelper.ReadAndVerifySignature( xInputStream ); } + else if (aStreamHelper.nStorageFormat == embed::StorageFormats::OFOPXML && aStreamHelper.xSignatureStorage.is()) + maSignatureHelper.ReadAndVerifySignatureStorage(aStreamHelper.xSignatureStorage); maSignatureHelper.EndMission(); maCurrentSignatureInformations = maSignatureHelper.GetSignatureInformations(); commit ac699587dc30f005f5e4657e95b0dbf6a9deebc3 Author: Miklos Vajna <[email protected]> Date: Tue Jan 19 17:16:00 2016 +0100 SfxMedium: only own format has the signature in a single stream OOXML has one stream for each signature, so it wants a storage instead. Change-Id: Iff2ed4b65d8c2023d02578ec4e80c13e36f55390 diff --git a/sfx2/source/doc/docfile.cxx b/sfx2/source/doc/docfile.cxx index d30d52f..bb44a1c 100644 --- a/sfx2/source/doc/docfile.cxx +++ b/sfx2/source/doc/docfile.cxx @@ -3579,10 +3579,9 @@ bool SfxMedium::SignContents_Impl( bool bScriptingContent, const OUString& aODFV } else { - uno::Reference< io::XStream > xStream( - xMetaInf->openStreamElement( xSigner->getDocumentContentSignatureDefaultStreamName(), - embed::ElementModes::READWRITE ), - uno::UNO_SET_THROW ); + uno::Reference< io::XStream > xStream; + if (GetFilter() && GetFilter()->IsOwnFormat()) + xStream.set(xMetaInf->openStreamElement(xSigner->getDocumentContentSignatureDefaultStreamName(), embed::ElementModes::READWRITE), uno::UNO_SET_THROW); if ( xSigner->signDocumentContent( GetZipStorageToSign_Impl(), xStream ) ) { _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
