Kaydet (Commit) d7f638f3 authored tarafından Samuel Mehrbrodt's avatar Samuel Mehrbrodt

Add unit test for reading ODF signed signatureline

Change-Id: I4423a32fe84c6f13457e92aa0de913ee22995119
Reviewed-on: https://gerrit.libreoffice.org/63333
Tested-by: Jenkins
Reviewed-by: 's avatarSamuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
üst ad4a5d17
......@@ -362,6 +362,10 @@ public:
bool HasValidSignatures();
SignatureState GetDocumentSignatureState();
void SignDocumentContent(weld::Window* pDialogParent);
css::uno::Sequence<css::security::DocumentSignatureInformation> GetDocumentSignatureInformation(
bool bScriptingContent,
const css::uno::Reference<css::security::XDocumentDigitalSignatures>& xSigner
= css::uno::Reference<css::security::XDocumentDigitalSignatures>());
bool SignDocumentContentUsingCertificate(const css::uno::Reference<css::security::XCertificate>& xCertificate);
......@@ -745,12 +749,6 @@ public:
// configuration items
SAL_DLLPRIVATE SignatureState ImplGetSignatureState( bool bScriptingContent = false );
SAL_DLLPRIVATE css::uno::Sequence< css::security::DocumentSignatureInformation >
ImplAnalyzeSignature(
bool bScriptingContent,
const css::uno::Reference< css::security::XDocumentDigitalSignatures >& xSigner
= css::uno::Reference< css::security::XDocumentDigitalSignatures >() );
SAL_DLLPRIVATE bool QuerySaveSizeExceededModules_Impl( const css::uno::Reference< css::task::XInteractionHandler >& xHandler );
SAL_DLLPRIVATE bool QueryAllowExoticFormat_Impl( const css::uno::Reference< css::task::XInteractionHandler >& xHandler,
const OUString& rURL,
......
......@@ -1758,7 +1758,7 @@ bool SfxObjectShell_Impl::hasTrustedScriptingSignature( bool bAllowUIToAddAuthor
|| nScriptingSignatureState == SignatureState::OK
|| nScriptingSignatureState == SignatureState::NOTVALIDATED )
{
uno::Sequence< security::DocumentSignatureInformation > aInfo = rDocShell.ImplAnalyzeSignature( true, xSigner );
uno::Sequence< security::DocumentSignatureInformation > aInfo = rDocShell.GetDocumentSignatureInformation( true, xSigner );
if ( aInfo.getLength() )
{
......
......@@ -1328,7 +1328,7 @@ static bool HasSignatureStream(const uno::Reference<embed::XStorage>& xStorage)
return xNameAccess->hasByName("_xmlsignatures");
}
uno::Sequence< security::DocumentSignatureInformation > SfxObjectShell::ImplAnalyzeSignature( bool bScriptingContent, const uno::Reference< security::XDocumentDigitalSignatures >& xSigner )
uno::Sequence< security::DocumentSignatureInformation > SfxObjectShell::GetDocumentSignatureInformation( bool bScriptingContent, const uno::Reference< security::XDocumentDigitalSignatures >& xSigner )
{
uno::Sequence< security::DocumentSignatureInformation > aResult;
uno::Reference< security::XDocumentDigitalSignatures > xLocSigner = xSigner;
......@@ -1394,7 +1394,7 @@ SignatureState SfxObjectShell::ImplGetSignatureState( bool bScriptingContent )
{
*pState = SignatureState::NOSIGNATURES;
uno::Sequence< security::DocumentSignatureInformation > aInfos = ImplAnalyzeSignature( bScriptingContent );
uno::Sequence< security::DocumentSignatureInformation > aInfos = GetDocumentSignatureInformation( bScriptingContent );
*pState = ImplCheckSignaturesInformation( aInfos );
}
......
......@@ -105,8 +105,9 @@ public:
void testXAdES();
/// Works with an existing good XAdES signature.
void testXAdESGood();
/// Test importing of signature line images
void testSignatureLineImages();
/// Test importing of signature line
void testSignatureLineOOXML();
void testSignatureLineODF();
#if HAVE_FEATURE_GPGVERIFY
/// Test a typical ODF where all streams are GPG-signed.
void testODFGoodGPG();
......@@ -145,7 +146,8 @@ public:
CPPUNIT_TEST(test96097Doc);
CPPUNIT_TEST(testXAdES);
CPPUNIT_TEST(testXAdESGood);
CPPUNIT_TEST(testSignatureLineImages);
CPPUNIT_TEST(testSignatureLineOOXML);
CPPUNIT_TEST(testSignatureLineODF);
#if HAVE_FEATURE_GPGVERIFY
CPPUNIT_TEST(testODFGoodGPG);
CPPUNIT_TEST(testODFUntrustedGoodGPG);
......@@ -850,7 +852,7 @@ void SigningTest::testXAdESGood()
(nActual == SignatureState::NOTVALIDATED || nActual == SignatureState::OK));
}
void SigningTest::testSignatureLineImages()
void SigningTest::testSignatureLineOOXML()
{
// Given: A document (docx) with a signature line and a valid signature
uno::Reference<security::XDocumentDigitalSignatures> xSignatures(
......@@ -876,6 +878,24 @@ void SigningTest::testSignatureLineImages()
CPPUNIT_ASSERT(xSignatureInfo[0].InvalidSignatureLineImage.is());
}
void SigningTest::testSignatureLineODF()
{
createDoc(m_directories.getURLFromSrc(DATA_DIRECTORY) + "signatureline.odt");
SfxBaseModel* pBaseModel = dynamic_cast<SfxBaseModel*>(mxComponent.get());
CPPUNIT_ASSERT(pBaseModel);
SfxObjectShell* pObjectShell = pBaseModel->GetObjectShell();
CPPUNIT_ASSERT(pObjectShell);
uno::Sequence<security::DocumentSignatureInformation> xSignatureInfo
= pObjectShell->GetDocumentSignatureInformation(false);
CPPUNIT_ASSERT(xSignatureInfo[0].SignatureIsValid);
CPPUNIT_ASSERT_EQUAL(OUString("{41CF56EE-331B-4125-97D8-2F5669DD3AAC}"),
xSignatureInfo[0].SignatureLineId);
CPPUNIT_ASSERT(xSignatureInfo[0].ValidSignatureLineImage.is());
CPPUNIT_ASSERT(xSignatureInfo[0].InvalidSignatureLineImage.is());
}
#if HAVE_FEATURE_GPGVERIFY
void SigningTest::testODFGoodGPG()
{
......
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