Kaydet (Commit) 67785148 authored tarafından Miklos Vajna's avatar Miklos Vajna

xmlsecurity: export OOXML signature relations to persistent storage

With this, _xmlsignatures/_rels/origin.sigs.rels and
_xmlsignatures/origin.sigs is written to the destination file.

Change-Id: I8d63a182e7cf05ed20195f88c90fba2a9a05379e
üst 85d18c4e
...@@ -411,13 +411,20 @@ IMPL_LINK_NOARG_TYPED(DigitalSignaturesDialog, OKButtonHdl, Button*, void) ...@@ -411,13 +411,20 @@ IMPL_LINK_NOARG_TYPED(DigitalSignaturesDialog, OKButtonHdl, Button*, void)
XMLSignatureHelper::CloseDocumentHandler( xDocumentHandler); XMLSignatureHelper::CloseDocumentHandler( xDocumentHandler);
// If stream was not provided, we are responsible for committing it.... }
if ( !mxSignatureStream.is() ) else if (aStreamHelper.xSignatureStorage.is() && aStreamHelper.nStorageFormat == embed::StorageFormats::OFOPXML)
{ {
uno::Reference< embed::XTransactedObject > xTrans( // OOXML
aStreamHelper.xSignatureStorage, uno::UNO_QUERY ); size_t nSignatureCount = maCurrentSignatureInformations.size();
xTrans->commit(); maSignatureHelper.ExportSignatureRelations(aStreamHelper.xSignatureStorage, nSignatureCount);
} }
// If stream was not provided, we are responsible for committing it....
if ( !mxSignatureStream.is() )
{
uno::Reference< embed::XTransactedObject > xTrans(
aStreamHelper.xSignatureStorage, uno::UNO_QUERY );
xTrans->commit();
} }
EndDialog(RET_OK); EndDialog(RET_OK);
......
...@@ -377,6 +377,13 @@ bool XMLSignatureHelper::ReadAndVerifySignatureStorage(const uno::Reference<embe ...@@ -377,6 +377,13 @@ bool XMLSignatureHelper::ReadAndVerifySignatureStorage(const uno::Reference<embe
std::vector<beans::StringPair>::iterator it = std::find_if(aRelation.begin(), aRelation.end(), [](const beans::StringPair& rPair) { return rPair.First == "Target"; }); std::vector<beans::StringPair>::iterator it = std::find_if(aRelation.begin(), aRelation.end(), [](const beans::StringPair& rPair) { return rPair.First == "Target"; });
if (it != aRelation.end()) if (it != aRelation.end())
{ {
uno::Reference<container::XNameAccess> xNameAccess(xStorage, uno::UNO_QUERY);
if (xNameAccess.is() && !xNameAccess->hasByName(it->Second))
{
SAL_WARN("xmlsecurity.helper", "expected stream, but not found: " << it->Second);
continue;
}
uno::Reference<io::XInputStream> xInputStream(xStorage->openStreamElement(it->Second, nOpenMode), uno::UNO_QUERY); uno::Reference<io::XInputStream> xInputStream(xStorage->openStreamElement(it->Second, nOpenMode), uno::UNO_QUERY);
if (!ReadAndVerifySignatureStorageStream(xInputStream)) if (!ReadAndVerifySignatureStorageStream(xInputStream))
return false; return false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment