LibreOffice Module xmlsecurity (master) 1
Public Member Functions | Private Attributes | List of all members
DocumentSignatureManager Class Reference

Manages signatures (addition, removal), used by DigitalSignaturesDialog. More...

#include <documentsignaturemanager.hxx>

Collaboration diagram for DocumentSignatureManager:
[legend]

Public Member Functions

 DocumentSignatureManager (const css::uno::Reference< css::uno::XComponentContext > &xContext, DocumentSignatureMode eMode)
 
 ~DocumentSignatureManager ()
 
bool isXML (std::u16string_view rURI)
 Checks if a particular stream is a valid xml stream. More...
 
bool readManifest ()
 
SignatureStreamHelper ImplOpenSignatureStream (sal_Int32 nStreamOpenMode, bool bTempStream)
 
bool add (const css::uno::Reference< css::security::XCertificate > &xCert, const css::uno::Reference< css::xml::crypto::XXMLSecurityContext > &xSecurityContext, const OUString &rDescription, sal_Int32 &nSecurityId, bool bAdESCompliant, const OUString &rSignatureLineId=OUString(), const css::uno::Reference< css::graphic::XGraphic > &xValidGraphic=css::uno::Reference< css::graphic::XGraphic >(), const css::uno::Reference< css::graphic::XGraphic > &xInvalidGraphic=css::uno::Reference< css::graphic::XGraphic >())
 Add a new signature, using xCert as a signing certificate, and rDescription as description. More...
 
void remove (sal_uInt16 nPosition)
 Remove signature at nPosition. More...
 
void read (bool bUseTempStream, bool bCacheLastSignature=true)
 Read signatures from either a temp stream or the real storage. More...
 
void write (bool bXAdESCompliantIfODF)
 Write signatures back to the persistent storage. More...
 
PDFSignatureHelpergetPDFSignatureHelper ()
 Lazy creation of PDF helper. More...
 
bool init ()
 Attempts to initialize the platform-specific crypto. More...
 
css::uno::Reference< css::xml::crypto::XSecurityEnvironment > getSecurityEnvironment ()
 Get the security environment. More...
 
css::uno::Reference< css::xml::crypto::XSecurityEnvironment > getGpgSecurityEnvironment ()
 
css::uno::Reference< css::xml::crypto::XXMLSecurityContext > const & getSecurityContext () const
 
css::uno::Reference< css::xml::crypto::XXMLSecurityContext > const & getGpgSecurityContext () const
 
void setStore (const css::uno::Reference< css::embed::XStorage > &xStore)
 
XMLSignatureHelpergetSignatureHelper ()
 
bool hasPDFSignatureHelper () const
 
void setSignatureStream (const css::uno::Reference< css::io::XStream > &xSignatureStream)
 
void setModel (const css::uno::Reference< css::frame::XModel > &xModel)
 
const css::uno::Reference< css::embed::XStorage > & getStore () const
 
DocumentSignatureMode getSignatureMode () const
 
SignatureInformationsgetCurrentSignatureInformations ()
 

Private Attributes

css::uno::Reference< css::uno::XComponentContext > mxContext
 
css::uno::Reference< css::embed::XStorage > mxStore
 
XMLSignatureHelper maSignatureHelper
 
std::unique_ptr< PDFSignatureHelpermpPDFSignatureHelper
 
SignatureInformations maCurrentSignatureInformations
 
DocumentSignatureMode const meSignatureMode
 
css::uno::Sequence< css::uno::Sequence< css::beans::PropertyValue > > m_manifest
 
css::uno::Reference< css::io::XStream > mxSignatureStream
 
css::uno::Reference< css::frame::XModel > mxModel
 
rtl::Reference< utl::TempFileFastServicemxTempSignatureStream
 
css::uno::Reference< css::embed::XStorage > mxTempSignatureStorage
 Storage containing all OOXML signatures, unused for ODF. More...
 
css::uno::Reference< css::xml::crypto::XSEInitializer > mxSEInitializer
 
css::uno::Reference< css::xml::crypto::XXMLSecurityContext > mxSecurityContext
 
css::uno::Reference< css::xml::crypto::XSEInitializer > mxGpgSEInitializer
 
css::uno::Reference< css::xml::crypto::XXMLSecurityContext > mxGpgSecurityContext
 

Detailed Description

Manages signatures (addition, removal), used by DigitalSignaturesDialog.

Definition at line 59 of file documentsignaturemanager.hxx.

Constructor & Destructor Documentation

◆ DocumentSignatureManager()

DocumentSignatureManager::DocumentSignatureManager ( const css::uno::Reference< css::uno::XComponentContext > &  xContext,
DocumentSignatureMode  eMode 
)

Definition at line 59 of file documentsignaturemanager.cxx.

References eMode, and mxContext.

◆ ~DocumentSignatureManager()

DocumentSignatureManager::~DocumentSignatureManager ( )

Definition at line 67 of file documentsignaturemanager.cxx.

References deInitXmlSec().

Member Function Documentation

◆ add()

bool DocumentSignatureManager::add ( const css::uno::Reference< css::security::XCertificate > &  xCert,
const css::uno::Reference< css::xml::crypto::XXMLSecurityContext > &  xSecurityContext,
const OUString &  rDescription,
sal_Int32 &  nSecurityId,
bool  bAdESCompliant,
const OUString &  rSignatureLineId = OUString(),
const css::uno::Reference< css::graphic::XGraphic > &  xValidGraphic = css::uno::Reference<css::graphic::XGraphic>(),
const css::uno::Reference< css::graphic::XGraphic > &  xInvalidGraphic = css::uno::Reference<css::graphic::XGraphic>() 
)

Add a new signature, using xCert as a signing certificate, and rDescription as description.

Definition at line 301 of file documentsignaturemanager.cxx.

References aBuffer, XMLSignatureHelper::AddEncapsulatedX509Certificate(), XMLSignatureHelper::AddForSigning(), DocumentSignatureHelper::AppendContentTypes(), xmlsecurity::bigIntegerToNumericString(), XMLSignatureHelper::CloseDocumentHandler(), XMLSignatureHelper::CreateAndWriteOOXMLSignature(), XMLSignatureHelper::CreateAndWriteSignature(), XMLSignatureHelper::CreateDocumentHandlerWithHeader(), DocumentSignatureHelper::CreateElementList(), comphelper::Base64::encode(), XMLSignatureHelper::EndMission(), XMLSignatureHelper::EnsureSignaturesRelation(), XMLSignatureHelper::ExportOOXMLSignature(), XMLSignatureHelper::ExportSignature(), XMLSignatureHelper::ExportSignatureRelations(), XMLSignatureHelper::GetNewSecurityId(), PDFSignatureHelper::GetNewSecurityId(), getPDFSignatureHelper(), i, ImplOpenSignatureStream(), isXML(), maCurrentSignatureInformations, maSignatureHelper, meSignatureMode, mxModel, mxSignatureStream, mxStore, n, SignatureStreamHelper::nStorageFormat, OOo3_2, svl::crypto::RSA, SAL_INFO, SAL_WARN, XMLSignatureHelper::SetDateTime(), PDFSignatureHelper::SetDescription(), XMLSignatureHelper::SetDescription(), XMLSignatureHelper::SetGpgCertificate(), XMLSignatureHelper::SetSignatureLineId(), XMLSignatureHelper::SetSignatureLineInvalidGraphic(), XMLSignatureHelper::SetSignatureLineValidGraphic(), PDFSignatureHelper::SetX509Certificate(), XMLSignatureHelper::SetX509Certificate(), Sign, XMLSignatureHelper::StartMission(), DateTime::SYSTEM, SignatureStreamHelper::xSignatureStorage, and SignatureStreamHelper::xSignatureStream.

◆ getCurrentSignatureInformations()

SignatureInformations & DocumentSignatureManager::getCurrentSignatureInformations ( )
inline

◆ getGpgSecurityContext()

uno::Reference< xml::crypto::XXMLSecurityContext > const & DocumentSignatureManager::getGpgSecurityContext ( ) const

Definition at line 695 of file documentsignaturemanager.cxx.

References mxGpgSecurityContext.

◆ getGpgSecurityEnvironment()

uno::Reference< xml::crypto::XSecurityEnvironment > DocumentSignatureManager::getGpgSecurityEnvironment ( )

◆ getPDFSignatureHelper()

PDFSignatureHelper & DocumentSignatureManager::getPDFSignatureHelper ( )

Lazy creation of PDF helper.

Definition at line 99 of file documentsignaturemanager.cxx.

References init(), mpPDFSignatureHelper, mxSecurityContext, and SAL_WARN_IF.

Referenced by add(), and read().

◆ getSecurityContext()

uno::Reference< xml::crypto::XXMLSecurityContext > const & DocumentSignatureManager::getSecurityContext ( ) const

Definition at line 689 of file documentsignaturemanager.cxx.

References mxSecurityContext.

◆ getSecurityEnvironment()

uno::Reference< xml::crypto::XSecurityEnvironment > DocumentSignatureManager::getSecurityEnvironment ( )

◆ getSignatureHelper()

XMLSignatureHelper & DocumentSignatureManager::getSignatureHelper ( )
inline

◆ getSignatureMode()

DocumentSignatureMode DocumentSignatureManager::getSignatureMode ( ) const
inline

◆ getStore()

const css::uno::Reference< css::embed::XStorage > & DocumentSignatureManager::getStore ( ) const
inline

◆ hasPDFSignatureHelper()

bool DocumentSignatureManager::hasPDFSignatureHelper ( ) const
inline

Definition at line 122 of file documentsignaturemanager.hxx.

◆ ImplOpenSignatureStream()

SignatureStreamHelper DocumentSignatureManager::ImplOpenSignatureStream ( sal_Int32  nStreamOpenMode,
bool  bTempStream 
)

◆ init()

bool DocumentSignatureManager::init ( )

Attempts to initialize the platform-specific crypto.

Definition at line 69 of file documentsignaturemanager.cxx.

References initXmlSec(), mxContext, mxGpgSecurityContext, mxGpgSEInitializer, mxSecurityContext, mxSEInitializer, and SAL_WARN_IF.

Referenced by getPDFSignatureHelper(), and DigitalSignaturesDialog::Init().

◆ isXML()

bool DocumentSignatureManager::isXML ( std::u16string_view  rURI)

Checks if a particular stream is a valid xml stream.

Those are treated differently when they are signed (c14n transformation)

Definition at line 170 of file documentsignaturemanager.cxx.

References o3tl::equalsIgnoreAsciiCase(), DocumentSignatureHelper::equalsReferenceUriManifestPath(), m_manifest, mxStore, readManifest(), SAL_WARN_IF, sMediaType, and u.

Referenced by add().

◆ read()

void DocumentSignatureManager::read ( bool  bUseTempStream,
bool  bCacheLastSignature = true 
)

◆ readManifest()

bool DocumentSignatureManager::readManifest ( )

Definition at line 135 of file documentsignaturemanager.cxx.

References m_manifest, mxContext, mxStore, and xStream.

Referenced by isXML().

◆ remove()

void DocumentSignatureManager::remove ( sal_uInt16  nPosition)

◆ setModel()

void DocumentSignatureManager::setModel ( const css::uno::Reference< css::frame::XModel > &  xModel)

Definition at line 700 of file documentsignaturemanager.cxx.

References mxModel, and xModel.

◆ setSignatureStream()

void DocumentSignatureManager::setSignatureStream ( const css::uno::Reference< css::io::XStream > &  xSignatureStream)
inline

◆ setStore()

void DocumentSignatureManager::setStore ( const css::uno::Reference< css::embed::XStorage > &  xStore)
inline

Definition at line 120 of file documentsignaturemanager.hxx.

Referenced by DigitalSignaturesDialog::SetStorage().

◆ write()

void DocumentSignatureManager::write ( bool  bXAdESCompliantIfODF)

Member Data Documentation

◆ m_manifest

css::uno::Sequence<css::uno::Sequence<css::beans::PropertyValue> > DocumentSignatureManager::m_manifest
private

Definition at line 68 of file documentsignaturemanager.hxx.

Referenced by isXML(), and readManifest().

◆ maCurrentSignatureInformations

SignatureInformations DocumentSignatureManager::maCurrentSignatureInformations
private

Definition at line 66 of file documentsignaturemanager.hxx.

Referenced by add(), read(), remove(), and write().

◆ maSignatureHelper

XMLSignatureHelper DocumentSignatureManager::maSignatureHelper
private

Definition at line 64 of file documentsignaturemanager.hxx.

Referenced by add(), read(), remove(), and write().

◆ meSignatureMode

DocumentSignatureMode const DocumentSignatureManager::meSignatureMode
private

Definition at line 67 of file documentsignaturemanager.hxx.

Referenced by add(), and ImplOpenSignatureStream().

◆ mpPDFSignatureHelper

std::unique_ptr<PDFSignatureHelper> DocumentSignatureManager::mpPDFSignatureHelper
private

Definition at line 65 of file documentsignaturemanager.hxx.

Referenced by getPDFSignatureHelper().

◆ mxContext

css::uno::Reference<css::uno::XComponentContext> DocumentSignatureManager::mxContext
private

Definition at line 62 of file documentsignaturemanager.hxx.

Referenced by init(), and readManifest().

◆ mxGpgSecurityContext

css::uno::Reference<css::xml::crypto::XXMLSecurityContext> DocumentSignatureManager::mxGpgSecurityContext
private

◆ mxGpgSEInitializer

css::uno::Reference<css::xml::crypto::XSEInitializer> DocumentSignatureManager::mxGpgSEInitializer
private

Definition at line 76 of file documentsignaturemanager.hxx.

Referenced by init().

◆ mxModel

css::uno::Reference<css::frame::XModel> DocumentSignatureManager::mxModel
private

Definition at line 70 of file documentsignaturemanager.hxx.

Referenced by add(), and setModel().

◆ mxSecurityContext

css::uno::Reference<css::xml::crypto::XXMLSecurityContext> DocumentSignatureManager::mxSecurityContext
private

◆ mxSEInitializer

css::uno::Reference<css::xml::crypto::XSEInitializer> DocumentSignatureManager::mxSEInitializer
private

Definition at line 74 of file documentsignaturemanager.hxx.

Referenced by init().

◆ mxSignatureStream

css::uno::Reference<css::io::XStream> DocumentSignatureManager::mxSignatureStream
private

Definition at line 69 of file documentsignaturemanager.hxx.

Referenced by add(), ImplOpenSignatureStream(), read(), remove(), and write().

◆ mxStore

css::uno::Reference<css::embed::XStorage> DocumentSignatureManager::mxStore
private

◆ mxTempSignatureStorage

css::uno::Reference<css::embed::XStorage> DocumentSignatureManager::mxTempSignatureStorage
private

Storage containing all OOXML signatures, unused for ODF.

Definition at line 73 of file documentsignaturemanager.hxx.

Referenced by ImplOpenSignatureStream().

◆ mxTempSignatureStream

rtl::Reference<utl::TempFileFastService> DocumentSignatureManager::mxTempSignatureStream
private

Definition at line 71 of file documentsignaturemanager.hxx.

Referenced by ImplOpenSignatureStream().


The documentation for this class was generated from the following files: