24#include <com/sun/star/xml/crypto/sax/XSAXEventKeeperStatusChangeListener.hpp>
25#include <com/sun/star/xml/crypto/sax/XSignatureCreationResultListener.hpp>
26#include <com/sun/star/xml/crypto/sax/XSignatureVerifyResultListener.hpp>
45inline constexpr OUStringLiteral
NS_XMLDSIG =
u"http://www.w3.org/2000/09/xmldsig#";
46inline constexpr OUStringLiteral
NS_DC =
u"http://purl.org/dc/elements/1.1/";
47inline constexpr OUStringLiteral
NS_XD =
u"http://uri.etsi.org/01903/v1.3.2#";
48inline constexpr OUStringLiteral
NS_MDSSI =
u"http://schemas.openxmlformats.org/package/2006/digital-signature";
49inline constexpr OUStringLiteral
NS_LOEXT =
u"urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0";
51inline constexpr OUStringLiteral
ALGO_C14N =
u"http://www.w3.org/TR/2001/REC-xml-c14n-20010315";
52inline constexpr OUStringLiteral
ALGO_RSASHA1 =
u"http://www.w3.org/2000/09/xmldsig#rsa-sha1";
53inline constexpr OUStringLiteral
ALGO_RSASHA256 =
u"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256";
54inline constexpr OUStringLiteral
ALGO_RSASHA512 =
u"http://www.w3.org/2001/04/xmldsig-more#rsa-sha512";
55inline constexpr OUStringLiteral
ALGO_ECDSASHA1 =
u"http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1";
56inline constexpr OUStringLiteral
ALGO_ECDSASHA256 =
u"http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha256";
57inline constexpr OUStringLiteral
ALGO_ECDSASHA512 =
u"http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha512";
58inline constexpr OUStringLiteral
ALGO_XMLDSIGSHA1 =
u"http://www.w3.org/2000/09/xmldsig#sha1";
61inline constexpr OUStringLiteral
ALGO_RELATIONSHIP =
u"http://schemas.openxmlformats.org/package/2006/RelationshipTransform";
79 css::uno::Reference< css::xml::crypto::sax::XReferenceResolvedListener >
const & xListener)
95 css::xml::crypto::sax::XSAXEventKeeperStatusChangeListener,
96 css::xml::crypto::sax::XSignatureCreationResultListener,
97 css::xml::crypto::sax::XSignatureVerifyResultListener
114 css::uno::Reference< css::uno::XComponentContext>
mxCtx;
244 sal_Int32 nStorageFormat,
245 bool bXAdESCompliantIfODF );
256 const OUString& ouUri,
258 const OUString& ouType );
260 const OUString& ouUri,
262 sal_Int32 nDigestID );
266 std::vector<std::pair<OUString, OUString>> & rX509IssuerSerials,
267 std::vector<OUString>
const& rX509Certificates);
269 OUString
const& rCertDigest, sal_Int32
const nReferenceDigestID,
270 std::u16string_view
const& rX509IssuerName, std::u16string_view
const& rX509SerialNumber);
273 void setDigestValue( sal_Int32 nDigestID, OUString
const & ouDigestValue );
278 void setDate(OUString
const& rId, OUString
const& ouDate);
279 void setDescription(OUString
const& rId, OUString
const& rDescription);
288 void setId( OUString
const & ouId );
291 sal_Int32 nSecurityId );
294 explicit XSecController(css::uno::Reference<css::uno::XComponentContext> xCtx);
301 void setSAXChainConnector(
const css::uno::Reference< css::lang::XInitialization >& xInitialization);
310 std::vector<SignatureInformation::X509Data> && rDatas);
313 const css::uno::Reference< css::xml::sax::XDocumentHandler >& xDocumentHandler,
315 bool bXAdESCompliantIfODF );
321 void signAStream( sal_Int32 securityId,
const OUString& uri,
bool isBinary,
bool bXAdESCompliantIfODF);
343 sal_Int32 nSecurityId,
344 const OUString& ouX509IssuerName,
345 const OUString& ouX509SerialNumber,
346 const OUString& ouX509Cert,
347 const OUString& ouX509CertDigest,
353 sal_Int32 nSecurityId,
354 const OUString& ouCertDigest,
355 const OUString& ouCert,
356 const OUString& ouOwner);
359 sal_Int32 nSecurityId,
360 const css::util::DateTime& rDateTime );
361 void setDescription(sal_Int32 nSecurityId,
const OUString& rDescription);
365 const css::uno::Reference<css::graphic::XGraphic>& xValidGraphic);
367 sal_Int32 nSecurityId,
const css::uno::Reference<css::graphic::XGraphic>& xInvalidGraphic);
370 const css::uno::Reference< css::xml::sax::XDocumentHandler >& xDocumentHandler,
371 bool bXAdESCompliantIfODF);
389 sal_Bool isInsideCollectedElement )
override;
395 virtual void SAL_CALL
signatureCreated( sal_Int32 securityId, css::xml::crypto::SecurityOperationStatus nResult )
override;
400 virtual void SAL_CALL
signatureVerified( sal_Int32 securityId, css::xml::crypto::SecurityOperationStatus nResult )
override;
403 bool WriteOOXMLSignature(
const css::uno::Reference<css::embed::XStorage>& xRootStorage,
const css::uno::Reference<css::xml::sax::XDocumentHandler>& xDocumentHandler);
405 void exportOOXMLSignature(
const css::uno::Reference<css::embed::XStorage>& xRootStorage,
const css::uno::Reference<css::xml::sax::XDocumentHandler>& xDocumentHandler,
const SignatureInformation& rInformation);
Parses an OOXML digital signature.
NAME XMLDocumentWrapper_XmlSecImpl – Class to manipulate a libxml2 document.
bool m_bIsSAXEventKeeperSticky
rtl::Reference< SAXEventKeeperImpl > m_xSAXEventKeeper
bool WriteOOXMLSignature(const css::uno::Reference< css::embed::XStorage > &xRootStorage, const css::uno::Reference< css::xml::sax::XDocumentHandler > &xDocumentHandler)
Writes XML elements inside a single OOXML signature's <Signature> element.
enum XSecController::InitializationState m_eStatusOfSecurityComponents
static OUString createId()
void setX509Certificate(sal_Int32 nSecurityId, const OUString &ouX509IssuerName, const OUString &ouX509SerialNumber, const OUString &ouX509Cert, const OUString &ouX509CertDigest, svl::crypto::SignatureMethodAlgorithm eAlgorithmID)
sets data that describes the certificate.
void setSignatureLineInvalidGraphic(sal_Int32 nSecurityId, const css::uno::Reference< css::graphic::XGraphic > &xInvalidGraphic)
virtual void SAL_CALL collectionStatusChanged(sal_Bool isInsideCollectedElement) override
css::uno::Reference< css::xml::crypto::sax::XReferenceResolvedListener > prepareSignatureToRead(sal_Int32 nSecurityId)
css::uno::Reference< css::uno::XInterface > m_xPreviousNodeOnSAXChain
css::uno::Reference< css::xml::crypto::XXMLSecurityContext > m_xSecurityContext
bool haveReferenceForId(std::u16string_view rId) const
css::uno::Reference< css::xml::crypto::XXMLSignature > m_xXMLSignature
bool m_bIsCollectingElement
css::uno::Reference< css::uno::XComponentContext > mxCtx
std::vector< InternalSignatureInformation > m_vInternalSignatureInformations
void signAStream(sal_Int32 securityId, const OUString &uri, bool isBinary, bool bXAdESCompliantIfODF)
void createXSecComponent()
void setGpgCertificate(OUString const &ouGpgCert)
void setDescription(OUString const &rId, OUString const &rDescription)
void setDigestValue(sal_Int32 nDigestID, OUString const &ouDigestValue)
void setGpgKeyID(OUString const &ouKeyID)
void setSignatureBytes(const css::uno::Sequence< sal_Int8 > &rBytes)
void clearSAXChainConnector()
bool WriteSignature(const css::uno::Reference< css::xml::sax::XDocumentHandler > &xDocumentHandler, bool bXAdESCompliantIfODF)
bool m_bIsPreviousNodeInitializable
void switchGpgSignature()
virtual void SAL_CALL blockingStatusChanged(sal_Bool isBlocking) override
void exportOOXMLSignature(const css::uno::Reference< css::embed::XStorage > &xRootStorage, const css::uno::Reference< css::xml::sax::XDocumentHandler > &xDocumentHandler, const SignatureInformation &rInformation)
Exports an OOXML signature, called by WriteOOXMLSignature().
virtual void SAL_CALL signatureVerified(sal_Int32 securityId, css::xml::crypto::SecurityOperationStatus nResult) override
virtual void SAL_CALL bufferStatusChanged(sal_Bool isBufferEmpty) override
SignatureInformation getSignatureInformation(sal_Int32 nSecurityId) const
css::uno::Reference< css::xml::sax::XDocumentHandler > const & createSignatureReader(XMLSignatureHelper &rXMLSignatureHelper, sal_Int32 nType=0)
void setId(OUString const &ouId)
bool m_bVerifyCurrentSignature
void setSignatureMethod(svl::crypto::SignatureMethodAlgorithm eAlgorithmID)
Sets algorithm from <SignatureMethod Algorithm="...">.
void checkChainingStatus()
sal_Int32 m_nReservedSignatureId
virtual void SAL_CALL signatureCreated(sal_Int32 securityId, css::xml::crypto::SecurityOperationStatus nResult) override
void setX509CertDigest(OUString const &rCertDigest, sal_Int32 const nReferenceDigestID, std::u16string_view const &rX509IssuerName, std::u16string_view const &rX509SerialNumber)
void startMission(const rtl::Reference< UriBindingHelper > &xUriBinding, const css::uno::Reference< css::xml::crypto::XXMLSecurityContext > &xSecurityContext)
static void exportSignature(const css::uno::Reference< css::xml::sax::XDocumentHandler > &xDocumentHandler, const SignatureInformation &signatureInfo, bool bXAdESCompliantIfODF)
css::uno::Reference< css::xml::sax::XDocumentHandler > m_xSecParser
void setSAXChainConnector(const css::uno::Reference< css::lang::XInitialization > &xInitialization)
void setSignatureValue(OUString const &ouSignatureValue)
void setInvalidSignatureImage(std::u16string_view rInvalidSigImg)
void UpdateSignatureInformation(sal_Int32 nSecurityId, std::vector< SignatureInformation::X509Data > &&rDatas)
only verify can figure out which X509Data is the signing certificate
void collectToVerify(std::u16string_view referenceId)
void setGpgOwner(OUString const &ouGpgOwner)
sal_Int32 getNewSecurityId()
void addStreamReference(const OUString &ouUri, bool isBinary, sal_Int32 nDigestID)
void setDate(OUString const &rId, OUString const &ouDate)
XSecController(css::uno::Reference< css::uno::XComponentContext > xCtx)
void setX509Data(std::vector< std::pair< OUString, OUString > > &rX509IssuerSerials, std::vector< OUString > const &rX509Certificates)
bool m_bIsSAXEventKeeperConnected
void setValidSignatureImage(std::u16string_view rValidSigImg)
virtual ~XSecController() override
void setSignatureLineValidGraphic(sal_Int32 nSecurityId, const css::uno::Reference< css::graphic::XGraphic > &xValidGraphic)
rtl::Reference< XMLDocumentWrapper_XmlSecImpl > m_xXMLDocumentWrapper
css::uno::Reference< css::xml::crypto::sax::XReferenceResolvedListener > prepareSignatureToWrite(InternalSignatureInformation &signatureInfo, sal_Int32 nStorageFormat, bool bXAdESCompliantIfODF)
void addReference(const OUString &ouUri, sal_Int32 nDigestID, const OUString &ouType)
rtl::Reference< UriBindingHelper > m_xUriBinding
css::uno::Reference< css::io::XInputStream > getObjectInputStream(const OUString &objectURL)
void setReferenceCount() const
void addEncapsulatedX509Certificate(const OUString &rEncapsulatedX509Certificate)
int findSignatureInfor(sal_Int32 nSecurityId) const
void initializeSAXChain()
SignatureInformations getSignatureInformations() const
sal_Int32 m_nNextSecurityId
void setSignatureLineId(const OUString &rSignatureLineId)
void releaseSignatureReader()
::std::vector< SignatureInformation > SignatureInformations
constexpr OUStringLiteral ALGO_XMLDSIGSHA512
constexpr OUStringLiteral NS_XMLDSIG
constexpr OUStringLiteral ALGO_RSASHA1
constexpr OUStringLiteral NS_XD
constexpr OUStringLiteral NS_MDSSI
constexpr OUStringLiteral ALGO_XMLDSIGSHA256
constexpr OUStringLiteral ALGO_RELATIONSHIP
constexpr OUStringLiteral ALGO_ECDSASHA512
constexpr OUStringLiteral NS_LOEXT
constexpr OUStringLiteral NS_DC
constexpr OUStringLiteral ALGO_RSASHA256
constexpr OUStringLiteral ALGO_ECDSASHA1
constexpr OUStringLiteral ALGO_C14N
constexpr OUStringLiteral ALGO_XMLDSIGSHA1
constexpr OUStringLiteral ALGO_ECDSASHA256
constexpr OUStringLiteral ALGO_RSASHA512