LibreOffice Module xmlsecurity (master) 1
|
Manages signatures (addition, removal), used by DigitalSignaturesDialog. More...
#include <documentsignaturemanager.hxx>
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... | |
PDFSignatureHelper & | getPDFSignatureHelper () |
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) |
XMLSignatureHelper & | getSignatureHelper () |
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 |
SignatureInformations & | getCurrentSignatureInformations () |
Private Attributes | |
css::uno::Reference< css::uno::XComponentContext > | mxContext |
css::uno::Reference< css::embed::XStorage > | mxStore |
XMLSignatureHelper | maSignatureHelper |
std::unique_ptr< PDFSignatureHelper > | mpPDFSignatureHelper |
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::TempFileFastService > | mxTempSignatureStream |
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 |
Manages signatures (addition, removal), used by DigitalSignaturesDialog.
Definition at line 59 of file documentsignaturemanager.hxx.
DocumentSignatureManager::DocumentSignatureManager | ( | const css::uno::Reference< css::uno::XComponentContext > & | xContext, |
DocumentSignatureMode | eMode | ||
) |
Definition at line 59 of file documentsignaturemanager.cxx.
DocumentSignatureManager::~DocumentSignatureManager | ( | ) |
Definition at line 67 of file documentsignaturemanager.cxx.
References deInitXmlSec().
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.
|
inline |
Definition at line 130 of file documentsignaturemanager.hxx.
Referenced by DigitalSignaturesDialog::beforeRun(), DigitalSignaturesDialog::ImplFillSignaturesBox(), and DigitalSignaturesDialog::ImplShowSignaturesDetails().
uno::Reference< xml::crypto::XXMLSecurityContext > const & DocumentSignatureManager::getGpgSecurityContext | ( | ) | const |
Definition at line 695 of file documentsignaturemanager.cxx.
References mxGpgSecurityContext.
uno::Reference< xml::crypto::XSecurityEnvironment > DocumentSignatureManager::getGpgSecurityEnvironment | ( | ) |
Definition at line 682 of file documentsignaturemanager.cxx.
References mxGpgSecurityContext.
Referenced by DigitalSignaturesDialog::getCertificate(), and DigitalSignaturesDialog::getSecurityEnvironmentForCertificate().
PDFSignatureHelper & DocumentSignatureManager::getPDFSignatureHelper | ( | ) |
Lazy creation of PDF helper.
Definition at line 99 of file documentsignaturemanager.cxx.
References init(), mpPDFSignatureHelper, mxSecurityContext, and SAL_WARN_IF.
uno::Reference< xml::crypto::XXMLSecurityContext > const & DocumentSignatureManager::getSecurityContext | ( | ) | const |
Definition at line 689 of file documentsignaturemanager.cxx.
References mxSecurityContext.
uno::Reference< xml::crypto::XSecurityEnvironment > DocumentSignatureManager::getSecurityEnvironment | ( | ) |
Get the security environment.
Definition at line 675 of file documentsignaturemanager.cxx.
References mxSecurityContext.
Referenced by DigitalSignaturesDialog::getCertificate(), DigitalSignaturesDialog::getSecurityEnvironmentForCertificate(), and read().
|
inline |
Definition at line 121 of file documentsignaturemanager.hxx.
Referenced by DigitalSignaturesDialog::Init(), read(), and DigitalSignaturesDialog::SetStorage().
|
inline |
Definition at line 129 of file documentsignaturemanager.hxx.
Referenced by DigitalSignaturesDialog::canAddRemove(), DigitalSignaturesDialog::canRemove(), DigitalSignaturesDialog::DigitalSignaturesDialog(), and DigitalSignaturesDialog::ImplFillSignaturesBox().
|
inline |
Definition at line 128 of file documentsignaturemanager.hxx.
Referenced by DigitalSignaturesDialog::canAddRemove(), DigitalSignaturesDialog::ImplFillSignaturesBox(), and DigitalSignaturesDialog::SetStorage().
|
inline |
Definition at line 122 of file documentsignaturemanager.hxx.
SignatureStreamHelper DocumentSignatureManager::ImplOpenSignatureStream | ( | sal_Int32 | nStreamOpenMode, |
bool | bTempStream | ||
) |
Definition at line 228 of file documentsignaturemanager.cxx.
References aHelper, comphelper::OStorageHelper::GetStorageOfFormatFromStream(), meSignatureMode, mxSignatureStream, mxStore, mxTempSignatureStorage, mxTempSignatureStream, DocumentSignatureHelper::OpenSignatureStream(), SAL_WARN_IF, and ZIP_STORAGE_FORMAT_STRING.
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().
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().
void DocumentSignatureManager::read | ( | bool | bUseTempStream, |
bool | bCacheLastSignature = true |
||
) |
Read signatures from either a temp stream or the real storage.
Definition at line 566 of file documentsignaturemanager.cxx.
References XMLSignatureHelper::CheckAndUpdateSignatureInformation(), XMLSignatureHelper::EndMission(), getPDFSignatureHelper(), getSecurityEnvironment(), getSignatureHelper(), PDFSignatureHelper::GetSignatureInformations(), XMLSignatureHelper::GetSignatureInformations(), ImplOpenSignatureStream(), maCurrentSignatureInformations, maSignatureHelper, mxSecurityContext, mxSignatureStream, mxStore, SignatureStreamHelper::nStorageFormat, XMLSignatureHelper::ReadAndVerifySignature(), XMLSignatureHelper::ReadAndVerifySignatureStorage(), XMLSignatureHelper::StartMission(), SignatureStreamHelper::xSignatureStorage, and SignatureStreamHelper::xSignatureStream.
Referenced by DigitalSignaturesDialog::ImplGetSignatureInformations().
bool DocumentSignatureManager::readManifest | ( | ) |
Definition at line 135 of file documentsignaturemanager.cxx.
References m_manifest, mxContext, mxStore, and xStream.
Referenced by isXML().
void DocumentSignatureManager::remove | ( | sal_uInt16 | nPosition | ) |
Remove signature at nPosition.
Definition at line 497 of file documentsignaturemanager.cxx.
References XMLSignatureHelper::CloseDocumentHandler(), XMLSignatureHelper::CreateDocumentHandlerWithHeader(), XMLSignatureHelper::ExportOOXMLSignature(), XMLSignatureHelper::ExportSignature(), XMLSignatureHelper::ExportSignatureRelations(), i, ImplOpenSignatureStream(), maCurrentSignatureInformations, maSignatureHelper, mxSignatureStream, mxStore, n, SignatureStreamHelper::nStorageFormat, PDFSignatureHelper::RemoveSignature(), SAL_INFO, SAL_WARN, SignatureStreamHelper::xSignatureStorage, and SignatureStreamHelper::xSignatureStream.
void DocumentSignatureManager::setModel | ( | const css::uno::Reference< css::frame::XModel > & | xModel | ) |
Definition at line 700 of file documentsignaturemanager.cxx.
|
inline |
Definition at line 123 of file documentsignaturemanager.hxx.
Referenced by DigitalSignaturesDialog::SetSignatureStream().
|
inline |
Definition at line 120 of file documentsignaturemanager.hxx.
Referenced by DigitalSignaturesDialog::SetStorage().
void DocumentSignatureManager::write | ( | bool | bXAdESCompliantIfODF | ) |
Write signatures back to the persistent storage.
Definition at line 613 of file documentsignaturemanager.cxx.
References XMLSignatureHelper::CloseDocumentHandler(), XMLSignatureHelper::CreateDocumentHandlerWithHeader(), XMLSignatureHelper::EnsureSignaturesRelation(), XMLSignatureHelper::ExportOOXMLSignature(), XMLSignatureHelper::ExportSignature(), XMLSignatureHelper::ExportSignatureContentTypes(), XMLSignatureHelper::ExportSignatureRelations(), i, ImplOpenSignatureStream(), maCurrentSignatureInformations, maSignatureHelper, mxSignatureStream, mxStore, n, SignatureStreamHelper::nStorageFormat, SignatureStreamHelper::xSignatureStorage, and SignatureStreamHelper::xSignatureStream.
|
private |
Definition at line 68 of file documentsignaturemanager.hxx.
Referenced by isXML(), and readManifest().
|
private |
|
private |
|
private |
Definition at line 67 of file documentsignaturemanager.hxx.
Referenced by add(), and ImplOpenSignatureStream().
|
private |
Definition at line 65 of file documentsignaturemanager.hxx.
Referenced by getPDFSignatureHelper().
|
private |
Definition at line 62 of file documentsignaturemanager.hxx.
Referenced by init(), and readManifest().
|
private |
Definition at line 77 of file documentsignaturemanager.hxx.
Referenced by getGpgSecurityContext(), getGpgSecurityEnvironment(), and init().
|
private |
Definition at line 76 of file documentsignaturemanager.hxx.
Referenced by init().
|
private |
Definition at line 70 of file documentsignaturemanager.hxx.
Referenced by add(), and setModel().
|
private |
Definition at line 75 of file documentsignaturemanager.hxx.
Referenced by getPDFSignatureHelper(), getSecurityContext(), getSecurityEnvironment(), init(), and read().
|
private |
Definition at line 74 of file documentsignaturemanager.hxx.
Referenced by init().
|
private |
Definition at line 69 of file documentsignaturemanager.hxx.
Referenced by add(), ImplOpenSignatureStream(), read(), remove(), and write().
|
private |
Definition at line 63 of file documentsignaturemanager.hxx.
Referenced by add(), ImplOpenSignatureStream(), isXML(), read(), readManifest(), remove(), and write().
|
private |
Storage containing all OOXML signatures, unused for ODF.
Definition at line 73 of file documentsignaturemanager.hxx.
Referenced by ImplOpenSignatureStream().
|
private |
Definition at line 71 of file documentsignaturemanager.hxx.
Referenced by ImplOpenSignatureStream().