From 0de900cec7b04d75cf9ab0779d7a1ca3c730ae32 Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Mon, 11 Nov 2024 11:36:12 +0100 Subject: cool#9992 lok doc sign, hash extract: time for getCommandValues('Signature') The final goal of this API is to give time & hash information about the PDF signature, so once a 3rd-party produces the PKCS#7 signature, that can be added to the document and the actual PDF sign can be re-run with the same parameters. This commit continues the replacement of XCertificate with svl::crypto::SigningContext up to the point that the timestamp used in svl/ can be exposed on the LOK API. This is done by updating DocumentSignatureManager::add(), PDFSignatureHelper::SetX509Certificate(), vcl::filter::PDFDocument::Sign() and finally the svl::crypto::Signing ctor to work with the signing context instead of an XCertificate directly. Time reporting works now, so add a test for that. The digest part still needs doing. Change-Id: I83f1274cd420b67194b7caf12b1027e623d4f7fe Reviewed-on: https://gerrit.libreoffice.org/c/core/+/176404 Reviewed-by: Miklos Vajna Tested-by: Jenkins --- xmlsecurity/inc/documentsignaturemanager.hxx | 6 +++++- xmlsecurity/inc/pdfsignaturehelper.hxx | 8 ++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) (limited to 'xmlsecurity/inc') diff --git a/xmlsecurity/inc/documentsignaturemanager.hxx b/xmlsecurity/inc/documentsignaturemanager.hxx index 56597106f9c1..3cf2151883d8 100644 --- a/xmlsecurity/inc/documentsignaturemanager.hxx +++ b/xmlsecurity/inc/documentsignaturemanager.hxx @@ -53,6 +53,10 @@ namespace uno class XComponentContext; } } +namespace svl::crypto +{ +class SigningContext; +} class PDFSignatureHelper; class Xmlsec; @@ -93,7 +97,7 @@ public: SignatureStreamHelper ImplOpenSignatureStream(sal_Int32 nStreamOpenMode, bool bTempStream); /// Add a new signature, using xCert as a signing certificate, and rDescription as description. - bool add(const css::uno::Reference& xCert, + bool add(svl::crypto::SigningContext& rSigningContext, const css::uno::Reference& xSecurityContext, const OUString& rDescription, sal_Int32& nSecurityId, bool bAdESCompliant, const OUString& rSignatureLineId = OUString(), diff --git a/xmlsecurity/inc/pdfsignaturehelper.hxx b/xmlsecurity/inc/pdfsignaturehelper.hxx index ea24685d2ae4..a20598131db1 100644 --- a/xmlsecurity/inc/pdfsignaturehelper.hxx +++ b/xmlsecurity/inc/pdfsignaturehelper.hxx @@ -37,6 +37,10 @@ namespace xml::crypto class XSecurityEnvironment; } } +namespace svl::crypto +{ +class SigningContext; +} class SvStream; /// Handles signatures of a PDF file. @@ -44,7 +48,7 @@ class XMLSECURITY_DLLPUBLIC PDFSignatureHelper { SignatureInformations m_aSignatureInfos; - css::uno::Reference m_xCertificate; + svl::crypto::SigningContext* m_pSigningContext = nullptr; OUString m_aDescription; public: @@ -59,7 +63,7 @@ public: /// Return the ID of the next created signature. sal_Int32 GetNewSecurityId() const; /// Certificate to be used next time signing is performed. - void SetX509Certificate(const css::uno::Reference& xCertificate); + void SetX509Certificate(svl::crypto::SigningContext& rSigningContext); /// Comment / reason to be used next time signing is performed. void SetDescription(const OUString& rDescription); /// Append a new signature at the end of xInputStream. -- cgit