xmlsecurity/source/helper/documentsignaturehelper.cxx |   28 ++++++++++++++++++
 1 file changed, 28 insertions(+)

New commits:
commit b737cf89a3e555ea81ff86fc0dd96d2a76a4dc4f
Author:     Miklos Vajna <[email protected]>
AuthorDate: Tue Dec 21 14:06:56 2021 +0100
Commit:     Miklos Vajna <[email protected]>
CommitDate: Tue Jan 4 12:22:12 2022 +0100

    xmlsecurity: log the signature we read from the ZIP package
    
    We can already see if a signature verification fails and what is the
    content of the ZIP streams we hash.
    
    Show what is the expected hash as well.
    
    Change-Id: Ibc67b7de0e8d03e06da1b86b6e8a7b2b2e613882
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127934
    Reviewed-by: Miklos Vajna <[email protected]>
    Tested-by: Jenkins

diff --git a/xmlsecurity/source/helper/documentsignaturehelper.cxx 
b/xmlsecurity/source/helper/documentsignaturehelper.cxx
index 77288e299cff..5c264f7885e6 100644
--- a/xmlsecurity/source/helper/documentsignaturehelper.cxx
+++ b/xmlsecurity/source/helper/documentsignaturehelper.cxx
@@ -29,6 +29,7 @@
 #include <com/sun/star/embed/StorageFormats.hpp>
 #include <com/sun/star/embed/ElementModes.hpp>
 #include <com/sun/star/beans/StringPair.hpp>
+#include <com/sun/star/beans/XPropertySet.hpp>
 #include <com/sun/star/xml/sax/XDocumentHandler.hpp>
 
 #include <comphelper/documentconstants.hxx>
@@ -362,6 +363,33 @@ SignatureStreamHelper 
DocumentSignatureHelper::OpenSignatureStream(
                 else
                     aSIGStreamName = 
DocumentSignatureHelper::GetPackageSignatureDefaultStreamName();
 
+#ifdef SAL_LOG_INFO
+                aHelper.xSignatureStream
+                    = 
aHelper.xSignatureStorage->openStreamElement(aSIGStreamName, nOpenMode);
+                SAL_INFO("xmlsecurity.helper",
+                         "DocumentSignatureHelper::OpenSignatureStream: stream 
name is '"
+                             << aSIGStreamName << "'");
+                if (aHelper.xSignatureStream.is())
+                {
+                    uno::Reference<io::XInputStream> 
xInputStream(aHelper.xSignatureStream,
+                                                                  
uno::UNO_QUERY);
+                    sal_Int64 nSize = 0;
+                    uno::Reference<beans::XPropertySet> 
xPropertySet(xInputStream, uno::UNO_QUERY);
+                    xPropertySet->getPropertyValue("Size") >>= nSize;
+                    if (nSize >= 0 || nSize < SAL_MAX_INT32)
+                    {
+                        uno::Sequence<sal_Int8> aData;
+                        xInputStream->readBytes(aData, nSize);
+                        SAL_INFO("xmlsecurity.helper",
+                                 
"DocumentSignatureHelper::OpenSignatureStream: stream content is '"
+                                     << OString(reinterpret_cast<const 
char*>(aData.getArray()),
+                                                aData.getLength())
+                                     << "'");
+                    }
+                }
+                aHelper.xSignatureStream.clear();
+#endif
+
                 aHelper.xSignatureStream = 
aHelper.xSignatureStorage->openStreamElement( aSIGStreamName, nOpenMode );
             }
         }

Reply via email to