xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx | 3 + xmlsecurity/source/helper/xsecctl.cxx | 41 ++++++++++++++++- xmlsecurity/source/helper/xsecctl.hxx | 2 3 files changed, 45 insertions(+), 1 deletion(-)
New commits: commit 570d5af407d55c39621575e56c77817dbd429783 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Mon Feb 8 15:00:21 2016 +0100 xmlsecurity: initial OOXML support for writing same-document references They are kind of a special case for ODF, but OOXML uses these exclusively, and then one of them refers to the actual package streams. Change-Id: I4663eef4bd718a7563effd6cafa790126db6d8c7 diff --git a/xmlsecurity/source/helper/xsecctl.cxx b/xmlsecurity/source/helper/xsecctl.cxx index 81b8d97..cd1f7e3 100644 --- a/xmlsecurity/source/helper/xsecctl.cxx +++ b/xmlsecurity/source/helper/xsecctl.cxx @@ -975,7 +975,7 @@ void XSecController::exportSignature( xDocumentHandler->endElement( tag_Signature ); } -void XSecController::exportOOXMLSignature(const uno::Reference<xml::sax::XDocumentHandler>& xDocumentHandler, const SignatureInformation& /*rInformation*/) +void XSecController::exportOOXMLSignature(const uno::Reference<xml::sax::XDocumentHandler>& xDocumentHandler, const SignatureInformation& rInformation) { xDocumentHandler->startElement(TAG_SIGNEDINFO, uno::Reference<xml::sax::XAttributeList>(new SvXMLAttributeList())); @@ -993,6 +993,30 @@ void XSecController::exportOOXMLSignature(const uno::Reference<xml::sax::XDocume xDocumentHandler->endElement(TAG_SIGNATUREMETHOD); } + const SignatureReferenceInformations& rReferences = rInformation.vSignatureReferenceInfors; + for (const SignatureReferenceInformation& rReference : rReferences) + { + if (rReference.nType == SignatureReferenceType::SAMEDOCUMENT) + { + { + std::unique_ptr<SvXMLAttributeList> pAttributeList(new SvXMLAttributeList()); + pAttributeList->AddAttribute("Type", "http://www.w3.org/2000/09/xmldsig#Object"); + pAttributeList->AddAttribute(ATTR_URI, rReference.ouURI); + xDocumentHandler->startElement(TAG_REFERENCE, uno::Reference<xml::sax::XAttributeList>(pAttributeList.release())); + } + { + std::unique_ptr<SvXMLAttributeList> pAttributeList(new SvXMLAttributeList()); + pAttributeList->AddAttribute(ATTR_ALGORITHM, ALGO_XMLDSIGSHA256); + xDocumentHandler->startElement(TAG_DIGESTMETHOD, uno::Reference<xml::sax::XAttributeList>(pAttributeList.release())); + xDocumentHandler->endElement(TAG_DIGESTMETHOD); + } + xDocumentHandler->startElement(TAG_DIGESTVALUE, uno::Reference<xml::sax::XAttributeList>(new SvXMLAttributeList())); + xDocumentHandler->endElement(TAG_DIGESTVALUE); + xDocumentHandler->characters(rReference.ouDigestValue); + xDocumentHandler->endElement(TAG_REFERENCE); + } + } + xDocumentHandler->endElement(TAG_SIGNEDINFO); } diff --git a/xmlsecurity/source/helper/xsecctl.hxx b/xmlsecurity/source/helper/xsecctl.hxx index 589183d..a67dc34 100644 --- a/xmlsecurity/source/helper/xsecctl.hxx +++ b/xmlsecurity/source/helper/xsecctl.hxx @@ -97,6 +97,7 @@ #define ALGO_RSASHA1 "http://www.w3.org/2000/09/xmldsig#rsa-sha1" #define ALGO_RSASHA256 "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" #define ALGO_XMLDSIGSHA1 "http://www.w3.org/2000/09/xmldsig#sha1" +#define ALGO_XMLDSIGSHA256 "http://www.w3.org/2001/04/xmlenc#sha256" #define ALGO_RELATIONSHIP "http://schemas.openxmlformats.org/package/2006/RelationshipTransform" #define CHAR_FRAGMENT "#" commit 5138223ebf7e4bfa6bd13be1b195ff1a7f03c017 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Mon Feb 8 14:13:23 2016 +0100 xmlsecurity: log temporary OOXML storage location during export This can be inspected after the add button handler finishes, but the dialog is still alive. Change-Id: I18ece31545de6d306a26b44d372f54df8221a456 diff --git a/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx b/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx index 58fb01f..30a805e 100644 --- a/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx +++ b/xmlsecurity/source/dialogs/digitalsignaturesdialog.cxx @@ -530,6 +530,9 @@ IMPL_LINK_NOARG_TYPED(DigitalSignaturesDialog, AddButtonHdl, Button*, void) xTransact->commit(); uno::Reference<io::XOutputStream> xOutputStream(aStreamHelper.xSignatureStream, uno::UNO_QUERY); xOutputStream->closeOutput(); + + uno::Reference<io::XTempFile> xTempFile(aStreamHelper.xSignatureStream, uno::UNO_QUERY); + SAL_INFO("xmlsecurity.dialogs", "AddButtonHdl: temporary storage is at " << xTempFile->getUri()); } maSignatureHelper.EndMission(); commit 7ff681fddaeff5cea22a1978bd4916e0c6bc28f9 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Mon Feb 8 14:09:45 2016 +0100 xmlsecurity: export OOXML <SignatureMethod> Change-Id: I445a50d5c7d12609e4043bfedc41cdea456fa52f diff --git a/xmlsecurity/source/helper/xsecctl.cxx b/xmlsecurity/source/helper/xsecctl.cxx index fcbd828..81b8d97 100644 --- a/xmlsecurity/source/helper/xsecctl.cxx +++ b/xmlsecurity/source/helper/xsecctl.cxx @@ -978,6 +978,21 @@ void XSecController::exportSignature( void XSecController::exportOOXMLSignature(const uno::Reference<xml::sax::XDocumentHandler>& xDocumentHandler, const SignatureInformation& /*rInformation*/) { xDocumentHandler->startElement(TAG_SIGNEDINFO, uno::Reference<xml::sax::XAttributeList>(new SvXMLAttributeList())); + + { + std::unique_ptr<SvXMLAttributeList> pAttributeList(new SvXMLAttributeList()); + pAttributeList->AddAttribute(ATTR_ALGORITHM, ALGO_C14N); + xDocumentHandler->startElement(TAG_CANONICALIZATIONMETHOD, uno::Reference<xml::sax::XAttributeList>(pAttributeList.release())); + xDocumentHandler->endElement(TAG_CANONICALIZATIONMETHOD); + } + + { + std::unique_ptr<SvXMLAttributeList> pAttributeList(new SvXMLAttributeList()); + pAttributeList->AddAttribute(ATTR_ALGORITHM, ALGO_RSASHA256); + xDocumentHandler->startElement(TAG_SIGNATUREMETHOD, uno::Reference<xml::sax::XAttributeList>(pAttributeList.release())); + xDocumentHandler->endElement(TAG_SIGNATUREMETHOD); + } + xDocumentHandler->endElement(TAG_SIGNEDINFO); } diff --git a/xmlsecurity/source/helper/xsecctl.hxx b/xmlsecurity/source/helper/xsecctl.hxx index 967e603..589183d 100644 --- a/xmlsecurity/source/helper/xsecctl.hxx +++ b/xmlsecurity/source/helper/xsecctl.hxx @@ -95,6 +95,7 @@ #define ALGO_C14N "http://www.w3.org/TR/2001/REC-xml-c14n-20010315" #define ALGO_RSASHA1 "http://www.w3.org/2000/09/xmldsig#rsa-sha1" +#define ALGO_RSASHA256 "http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" #define ALGO_XMLDSIGSHA1 "http://www.w3.org/2000/09/xmldsig#sha1" #define ALGO_RELATIONSHIP "http://schemas.openxmlformats.org/package/2006/RelationshipTransform" _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits