From 193aa63a2aa697e3689eedd63775afffb6ed9ef1 Mon Sep 17 00:00:00 2001 From: Samuel Mehrbrodt Date: Thu, 2 Nov 2017 15:47:32 +0100 Subject: tdf#65393 Test for signature line images Change-Id: I6f37919da5fef0a90fad314019db19e4a5604169 Reviewed-on: https://gerrit.libreoffice.org/44220 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt --- .../qa/unit/signing/data/signatureline.docx | Bin 0 -> 22877 bytes xmlsecurity/qa/unit/signing/signing.cxx | 28 +++++++++++++++++++++ 2 files changed, 28 insertions(+) create mode 100644 xmlsecurity/qa/unit/signing/data/signatureline.docx (limited to 'xmlsecurity/qa') diff --git a/xmlsecurity/qa/unit/signing/data/signatureline.docx b/xmlsecurity/qa/unit/signing/data/signatureline.docx new file mode 100644 index 000000000000..e1dae66989d3 Binary files /dev/null and b/xmlsecurity/qa/unit/signing/data/signatureline.docx differ diff --git a/xmlsecurity/qa/unit/signing/signing.cxx b/xmlsecurity/qa/unit/signing/signing.cxx index e17ccff09ef4..4724f56f234a 100644 --- a/xmlsecurity/qa/unit/signing/signing.cxx +++ b/xmlsecurity/qa/unit/signing/signing.cxx @@ -25,6 +25,8 @@ #include #include #include +#include +#include #include #include @@ -98,6 +100,8 @@ public: void testXAdES(); /// Works with an existing good XAdES signature. void testXAdESGood(); + /// Test importing of signature line images + void testSignatureLineImages(); CPPUNIT_TEST_SUITE(SigningTest); CPPUNIT_TEST(testDescription); @@ -120,6 +124,7 @@ public: CPPUNIT_TEST(test96097Doc); CPPUNIT_TEST(testXAdES); CPPUNIT_TEST(testXAdESGood); + CPPUNIT_TEST(testSignatureLineImages); CPPUNIT_TEST_SUITE_END(); private: @@ -629,6 +634,29 @@ void SigningTest::testXAdESGood() (nActual == SignatureState::NOTVALIDATED || nActual == SignatureState::OK)); } + +void SigningTest::testSignatureLineImages() +{ + // Given: A document (docx) with a signature line and a valid signature + uno::Reference< security::XDocumentDigitalSignatures > xSignatures( + security::DocumentDigitalSignatures::createWithVersion( + comphelper::getProcessComponentContext(), "1.2" ) ); + + uno::Reference xStorage = comphelper::OStorageHelper::GetStorageOfFormatFromURL( + ZIP_STORAGE_FORMAT_STRING, m_directories.getURLFromSrc(DATA_DIRECTORY) + "signatureline.docx", + embed::ElementModes::READ); + CPPUNIT_ASSERT(xStorage.is()); + + uno::Sequence< security::DocumentSignatureInformation > xSignatureInfo = + xSignatures->verifyScriptingContentSignatures(xStorage, uno::Reference< io::XInputStream >()); + + // The signature should have a valid signature, and signature line with two valid images + CPPUNIT_ASSERT(xSignatureInfo[0].SignatureIsValid); + CPPUNIT_ASSERT_EQUAL(OUString("{DEE0514B-13E8-4674-A831-46E3CDB18BB4}"), xSignatureInfo[0].SignatureLineId); + CPPUNIT_ASSERT(xSignatureInfo[0].ValidSignatureLineImage.is()); + CPPUNIT_ASSERT(xSignatureInfo[0].InvalidSignatureLineImage.is()); +} + void SigningTest::registerNamespaces(xmlXPathContextPtr& pXmlXpathCtx) { xmlXPathRegisterNs(pXmlXpathCtx, BAD_CAST("odfds"), BAD_CAST("urn:oasis:names:tc:opendocument:xmlns:digitalsignature:1.0")); -- cgit