diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2018-11-29 22:09:07 +0100 |
---|---|---|
committer | Michael Meeks <michael.meeks@collabora.com> | 2019-08-05 21:06:50 -0400 |
commit | 0d9ac2b5b6a8bd00c0338a8458e9b3516256a4e1 (patch) | |
tree | fb97261ddfb50b3af8911be8d7af75ee53bbb371 /desktop/qa/desktop_lib/test_desktop_lib.cxx | |
parent | e9187b1d0ea8df3d29ffc1d4437feb1fca42ad46 (diff) |
test signing with certificate chain and private key in PEM format
Change-Id: If3b121e44ceec8be668820a7e8a9e35c15d547ff
Reviewed-on: https://gerrit.libreoffice.org/64295
Tested-by: Jenkins
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'desktop/qa/desktop_lib/test_desktop_lib.cxx')
-rw-r--r-- | desktop/qa/desktop_lib/test_desktop_lib.cxx | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/desktop/qa/desktop_lib/test_desktop_lib.cxx b/desktop/qa/desktop_lib/test_desktop_lib.cxx index 7044fe258113..a20c8bb51533 100644 --- a/desktop/qa/desktop_lib/test_desktop_lib.cxx +++ b/desktop/qa/desktop_lib/test_desktop_lib.cxx @@ -128,6 +128,7 @@ public: void testExtractParameter(); void testGetSignatureState_NonSigned(); void testGetSignatureState_Signed(); + void testInsertCertificatePEM(); void testInsertCertificate_DER_ODT(); void testInsertCertificate_PEM_ODT(); void testInsertCertificate_PEM_DOCX(); @@ -180,6 +181,7 @@ public: CPPUNIT_TEST(testExtractParameter); CPPUNIT_TEST(testGetSignatureState_Signed); CPPUNIT_TEST(testGetSignatureState_NonSigned); + CPPUNIT_TEST(testInsertCertificatePEM); CPPUNIT_TEST(testInsertCertificate_DER_ODT); CPPUNIT_TEST(testInsertCertificate_PEM_ODT); CPPUNIT_TEST(testInsertCertificate_PEM_DOCX); @@ -2633,6 +2635,91 @@ void DesktopLOKTest::testComplexSelection() CPPUNIT_ASSERT_EQUAL(static_cast<int>(LOK_SELTYPE_COMPLEX), pDocument->pClass->getSelectionType(pDocument)); } + +void DesktopLOKTest::testInsertCertificatePEM() +{ + comphelper::LibreOfficeKit::setActive(); + + // Load the document, save it into a temp file and load that file again + LibLODocument_Impl* pDocument = loadDoc("blank_text.odt"); + utl::TempFile aTempFile; + aTempFile.EnableKillingFile(); + CPPUNIT_ASSERT(pDocument->pClass->saveAs(pDocument, aTempFile.GetURL().toUtf8().getStr(), "odt", nullptr)); + closeDoc(); + + mxComponent = loadFromDesktop(aTempFile.GetURL(), "com.sun.star.text.TextDocument"); + pDocument = new LibLODocument_Impl(mxComponent); + + Scheduler::ProcessEventsToIdle(); + CPPUNIT_ASSERT(mxComponent.is()); + pDocument->m_pDocumentClass->initializeForRendering(pDocument, "{}"); + Scheduler::ProcessEventsToIdle(); + + { + OUString aCertificateURL; + createFileURL("test-cert-chain-1.pem", aCertificateURL); + SvFileStream aCertificateStream(aCertificateURL, StreamMode::READ); + std::vector<unsigned char> aCertificate; + aCertificate.resize(aCertificateStream.remainingSize()); + aCertificateStream.ReadBytes(aCertificate.data(), aCertificateStream.remainingSize()); + + bool bResult = pDocument->m_pDocumentClass->addCertificate( + pDocument, aCertificate.data(), int(aCertificate.size())); + CPPUNIT_ASSERT(bResult); + } + + { + OUString aCertificateURL; + createFileURL("test-cert-chain-2.pem", aCertificateURL); + SvFileStream aCertificateStream(aCertificateURL, StreamMode::READ); + std::vector<unsigned char> aCertificate; + aCertificate.resize(aCertificateStream.remainingSize()); + aCertificateStream.ReadBytes(aCertificate.data(), aCertificateStream.remainingSize()); + + + bool bResult = pDocument->m_pDocumentClass->addCertificate( + pDocument, aCertificate.data(), int(aCertificate.size())); + CPPUNIT_ASSERT(bResult); + } + + { + OUString aCertificateURL; + createFileURL("test-cert-chain-3.pem", aCertificateURL); + SvFileStream aCertificateStream(aCertificateURL, StreamMode::READ); + std::vector<unsigned char> aCertificate; + aCertificate.resize(aCertificateStream.remainingSize()); + aCertificateStream.ReadBytes(aCertificate.data(), aCertificateStream.remainingSize()); + + + bool bResult = pDocument->m_pDocumentClass->addCertificate( + pDocument, aCertificate.data(), int(aCertificate.size())); + CPPUNIT_ASSERT(bResult); + } + + { + OUString aCertificateURL; + createFileURL("test-cert-signing.pem", aCertificateURL); + SvFileStream aCertificateStream(aCertificateURL, StreamMode::READ); + std::vector<unsigned char> aCertificate; + aCertificate.resize(aCertificateStream.remainingSize()); + aCertificateStream.ReadBytes(aCertificate.data(), aCertificateStream.remainingSize()); + + + OUString aPrivateKeyURL; + createFileURL("test-PK-signing.pem", aPrivateKeyURL); + SvFileStream aPrivateKeyStream(aPrivateKeyURL, StreamMode::READ); + std::vector<unsigned char> aPrivateKey; + aPrivateKey.resize(aPrivateKeyStream.remainingSize()); + aPrivateKeyStream.ReadBytes(aPrivateKey.data(), aPrivateKeyStream.remainingSize()); + + bool bResult = pDocument->m_pDocumentClass->insertCertificate(pDocument, + aCertificate.data(), int(aCertificate.size()), + aPrivateKey.data(), int(aPrivateKey.size())); + CPPUNIT_ASSERT(bResult); + } + + comphelper::LibreOfficeKit::setActive(false); +} namespace { constexpr size_t documentClassOffset(int i) |