LibreOffice Module xmlsecurity (master) 1
|
#include <xsecctl.hxx>
Public Member Functions | |
void | setSignatureBytes (const css::uno::Sequence< sal_Int8 > &rBytes) |
XSecController (css::uno::Reference< css::uno::XComponentContext > xCtx) | |
virtual | ~XSecController () override |
sal_Int32 | getNewSecurityId () |
void | startMission (const rtl::Reference< UriBindingHelper > &xUriBinding, const css::uno::Reference< css::xml::crypto::XXMLSecurityContext > &xSecurityContext) |
void | setSAXChainConnector (const css::uno::Reference< css::lang::XInitialization > &xInitialization) |
void | clearSAXChainConnector () |
void | endMission () |
SignatureInformation | getSignatureInformation (sal_Int32 nSecurityId) const |
SignatureInformations | getSignatureInformations () const |
void | UpdateSignatureInformation (sal_Int32 nSecurityId, std::vector< SignatureInformation::X509Data > &&rDatas) |
only verify can figure out which X509Data is the signing certificate More... | |
void | signAStream (sal_Int32 securityId, const OUString &uri, bool isBinary, bool bXAdESCompliantIfODF) |
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. More... | |
void | addEncapsulatedX509Certificate (const OUString &rEncapsulatedX509Certificate) |
void | setGpgCertificate (sal_Int32 nSecurityId, const OUString &ouCertDigest, const OUString &ouCert, const OUString &ouOwner) |
void | setDate (sal_Int32 nSecurityId, const css::util::DateTime &rDateTime) |
void | setDescription (sal_Int32 nSecurityId, const OUString &rDescription) |
void | setSignatureLineId (sal_Int32 nSecurityId, const OUString &rSignatureLineId) |
void | setSignatureLineValidGraphic (sal_Int32 nSecurityId, const css::uno::Reference< css::graphic::XGraphic > &xValidGraphic) |
void | setSignatureLineInvalidGraphic (sal_Int32 nSecurityId, const css::uno::Reference< css::graphic::XGraphic > &xInvalidGraphic) |
bool | WriteSignature (const css::uno::Reference< css::xml::sax::XDocumentHandler > &xDocumentHandler, bool bXAdESCompliantIfODF) |
void | collectToVerify (std::u16string_view referenceId) |
void | addSignature (sal_Int32 nSignatureId) |
css::uno::Reference< css::xml::sax::XDocumentHandler > const & | createSignatureReader (XMLSignatureHelper &rXMLSignatureHelper, sal_Int32 nType=0) |
void | releaseSignatureReader () |
virtual void SAL_CALL | blockingStatusChanged (sal_Bool isBlocking) override |
virtual void SAL_CALL | collectionStatusChanged (sal_Bool isInsideCollectedElement) override |
virtual void SAL_CALL | bufferStatusChanged (sal_Bool isBufferEmpty) override |
virtual void SAL_CALL | signatureCreated (sal_Int32 securityId, css::xml::crypto::SecurityOperationStatus nResult) override |
virtual void SAL_CALL | signatureVerified (sal_Int32 securityId, css::xml::crypto::SecurityOperationStatus nResult) override |
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. More... | |
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(). More... | |
Static Public Member Functions | |
static void | exportSignature (const css::uno::Reference< css::xml::sax::XDocumentHandler > &xDocumentHandler, const SignatureInformation &signatureInfo, bool bXAdESCompliantIfODF) |
Private Types | |
enum class | InitializationState { UNINITIALIZED , INITIALIZED , FAILTOINITIALIZED } |
Private Member Functions | |
void | createXSecComponent () |
int | findSignatureInfor (sal_Int32 nSecurityId) const |
bool | chainOn () |
void | chainOff () |
void | checkChainingStatus () |
void | initializeSAXChain () |
css::uno::Reference< css::io::XInputStream > | getObjectInputStream (const OUString &objectURL) |
css::uno::Reference< css::xml::crypto::sax::XReferenceResolvedListener > | prepareSignatureToWrite (InternalSignatureInformation &signatureInfo, sal_Int32 nStorageFormat, bool bXAdESCompliantIfODF) |
void | addSignature () |
void | setSignatureMethod (svl::crypto::SignatureMethodAlgorithm eAlgorithmID) |
Sets algorithm from <SignatureMethod Algorithm="...">. More... | |
void | switchGpgSignature () |
bool | haveReferenceForId (std::u16string_view rId) const |
void | addReference (const OUString &ouUri, sal_Int32 nDigestID, const OUString &ouType) |
void | addStreamReference (const OUString &ouUri, bool isBinary, sal_Int32 nDigestID) |
void | setReferenceCount () const |
void | setX509Data (std::vector< std::pair< OUString, OUString > > &rX509IssuerSerials, std::vector< OUString > const &rX509Certificates) |
void | setX509CertDigest (OUString const &rCertDigest, sal_Int32 const nReferenceDigestID, std::u16string_view const &rX509IssuerName, std::u16string_view const &rX509SerialNumber) |
void | setSignatureValue (OUString const &ouSignatureValue) |
void | setDigestValue (sal_Int32 nDigestID, OUString const &ouDigestValue) |
void | setGpgKeyID (OUString const &ouKeyID) |
void | setGpgCertificate (OUString const &ouGpgCert) |
void | setGpgOwner (OUString const &ouGpgOwner) |
void | setDate (OUString const &rId, OUString const &ouDate) |
void | setDescription (OUString const &rId, OUString const &rDescription) |
void | setValidSignatureImage (std::u16string_view rValidSigImg) |
void | setInvalidSignatureImage (std::u16string_view rInvalidSigImg) |
void | setSignatureLineId (const OUString &rSignatureLineId) |
void | setId (OUString const &ouId) |
css::uno::Reference< css::xml::crypto::sax::XReferenceResolvedListener > | prepareSignatureToRead (sal_Int32 nSecurityId) |
Static Private Member Functions | |
static OUString | createId () |
Private Attributes | |
css::uno::Reference< css::uno::XComponentContext > | mxCtx |
rtl::Reference< XMLDocumentWrapper_XmlSecImpl > | m_xXMLDocumentWrapper |
rtl::Reference< SAXEventKeeperImpl > | m_xSAXEventKeeper |
css::uno::Reference< css::xml::crypto::XXMLSignature > | m_xXMLSignature |
css::uno::Reference< css::xml::crypto::XXMLSecurityContext > | m_xSecurityContext |
sal_Int32 | m_nNextSecurityId |
std::vector< InternalSignatureInformation > | m_vInternalSignatureInformations |
css::uno::Reference< css::uno::XInterface > | m_xPreviousNodeOnSAXChain |
bool | m_bIsPreviousNodeInitializable |
bool | m_bIsSAXEventKeeperConnected |
bool | m_bIsCollectingElement |
bool | m_bIsBlocking |
enum XSecController::InitializationState | m_eStatusOfSecurityComponents |
bool | m_bIsSAXEventKeeperSticky |
css::uno::Reference< css::xml::sax::XDocumentHandler > | m_xSecParser |
sal_Int32 | m_nReservedSignatureId |
bool | m_bVerifyCurrentSignature |
rtl::Reference< UriBindingHelper > | m_xUriBinding |
Friends | |
class | XSecParser |
class | OOXMLSecParser |
Definition at line 93 of file xsecctl.hxx.
|
strongprivate |
Enumerator | |
---|---|
UNINITIALIZED | |
INITIALIZED | |
FAILTOINITIALIZED |
Definition at line 192 of file xsecctl.hxx.
|
explicit |
Definition at line 102 of file xsecctl.cxx.
References mxCtx.
|
overridevirtual |
Definition at line 116 of file xsecctl.cxx.
void XSecController::addEncapsulatedX509Certificate | ( | const OUString & | rEncapsulatedX509Certificate | ) |
Definition at line 523 of file xsecverify.cxx.
References m_vInternalSignatureInformations, SignatureInformation::maEncapsulatedX509Certificates, and InternalSignatureInformation::signatureInfor.
Referenced by XSecParser::XadesEncapsulatedX509CertificateContext::EndElement().
|
private |
Definition at line 169 of file xsecverify.cxx.
References InternalSignatureInformation::addReference(), m_vInternalSignatureInformations, and SAL_INFO.
Referenced by OOXMLSecParser::DsReferenceContext::EndElement(), and XSecParser::DsReferenceContext::EndElement().
|
private |
Definition at line 101 of file xsecverify.cxx.
References chainOn(), m_bVerifyCurrentSignature, m_nReservedSignatureId, m_vInternalSignatureInformations, and prepareSignatureToRead().
Referenced by OOXMLSecParser::DsSignatureContext::StartElement(), and XSecParser::DsSignatureContext::StartElement().
void XSecController::addSignature | ( | sal_Int32 | nSignatureId | ) |
Definition at line 603 of file xsecverify.cxx.
References m_bVerifyCurrentSignature, m_nReservedSignatureId, m_xSecParser, and SAL_WARN_IF.
|
private |
Definition at line 180 of file xsecverify.cxx.
References InternalSignatureInformation::addReference(), getObjectInputStream(), m_vInternalSignatureInformations, SAL_INFO, type, and InternalSignatureInformation::xReferenceResolvedListener.
Referenced by OOXMLSecParser::DsReferenceContext::EndElement(), and XSecParser::DsReferenceContext::EndElement().
|
overridevirtual |
Definition at line 965 of file xsecctl.cxx.
References checkChainingStatus(), and m_bIsBlocking.
|
overridevirtual |
Definition at line 978 of file xsecctl.cxx.
|
private |
Definition at line 308 of file xsecctl.cxx.
References m_bIsPreviousNodeInitializable, m_bIsSAXEventKeeperConnected, m_bIsSAXEventKeeperSticky, m_xPreviousNodeOnSAXChain, and m_xSAXEventKeeper.
Referenced by checkChainingStatus(), clearSAXChainConnector(), initializeSAXChain(), WriteOOXMLSignature(), and WriteSignature().
|
private |
Definition at line 218 of file xsecctl.cxx.
References createXSecComponent(), INITIALIZED, m_bIsPreviousNodeInitializable, m_bIsSAXEventKeeperConnected, m_bIsSAXEventKeeperSticky, m_eStatusOfSecurityComponents, m_xPreviousNodeOnSAXChain, m_xSAXEventKeeper, and UNINITIALIZED.
Referenced by addSignature(), checkChainingStatus(), collectToVerify(), WriteOOXMLSignature(), and WriteSignature().
|
private |
Definition at line 344 of file xsecctl.cxx.
References chainOff(), chainOn(), m_bIsBlocking, and m_bIsCollectingElement.
Referenced by blockingStatusChanged(), and collectionStatusChanged().
void XSecController::clearSAXChainConnector | ( | ) |
Definition at line 474 of file xsecctl.cxx.
References chainOff(), and m_xPreviousNodeOnSAXChain.
Referenced by releaseSignatureReader().
|
overridevirtual |
Definition at line 971 of file xsecctl.cxx.
References checkChainingStatus(), and m_bIsCollectingElement.
void XSecController::collectToVerify | ( | std::u16string_view | referenceId | ) |
Definition at line 547 of file xsecverify.cxx.
References chainOn(), i, INITIALIZED, m_eStatusOfSecurityComponents, m_vInternalSignatureInformations, m_xSAXEventKeeper, SignatureInformation::nSecurityId, SignatureReferenceInformation::ouURI, InternalSignatureInformation::signatureInfor, InternalSignatureInformation::vKeeperIds, SignatureInformation::vSignatureReferenceInfors, and InternalSignatureInformation::xReferenceResolvedListener.
Referenced by OOXMLSecParser::HandleIdAttr(), and XSecParser::HandleIdAttr().
|
staticprivate |
Definition at line 38 of file xsecsign.cxx.
References aSeq, i, length, SAL_WNODEPRECATED_DECLARATIONS_POP, SAL_WNODEPRECATED_DECLARATIONS_PUSH, and sprintf().
Referenced by prepareSignatureToWrite().
css::uno::Reference< css::xml::sax::XDocumentHandler > const & XSecController::createSignatureReader | ( | XMLSignatureHelper & | rXMLSignatureHelper, |
sal_Int32 | nType = 0 |
||
) |
Definition at line 611 of file xsecverify.cxx.
References m_xSecParser, nType, OOXMLSecParser, setSAXChainConnector(), and XSecParser.
|
private |
Definition at line 156 of file xsecctl.cxx.
References FAILTOINITIALIZED, INITIALIZED, m_eStatusOfSecurityComponents, m_xSAXEventKeeper, m_xSecurityContext, m_xXMLDocumentWrapper, m_xXMLSignature, and mxCtx.
Referenced by chainOn().
void XSecController::endMission | ( | ) |
Definition at line 486 of file xsecctl.cxx.
References i, INITIALIZED, m_eStatusOfSecurityComponents, m_vInternalSignatureInformations, m_xSAXEventKeeper, m_xSecurityContext, m_xUriBinding, and size.
void XSecController::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().
Definition at line 921 of file xsecctl.cxx.
References mxCtx, and OOXMLSecExporter::writeSignature().
Referenced by WriteOOXMLSignature().
|
static |
Definition at line 564 of file xsecctl.cxx.
References ALGO_C14N, SignatureInformation::eAlgorithmID, SignatureInformation::GetSigningCertificate(), SignatureReferenceInformation::nDigestID, NS_DC, NS_LOEXT, NS_XD, NS_XMLDSIG, SignatureReferenceInformation::nType, SignatureInformation::ouDateTime, SignatureInformation::ouDateTimePropertyId, SignatureInformation::ouDescription, SignatureInformation::ouDescriptionPropertyId, SignatureReferenceInformation::ouDigestValue, SignatureInformation::ouGpgCertificate, SignatureInformation::ouGpgKeyID, SignatureInformation::ouGpgOwner, SignatureInformation::ouSignatureId, SignatureInformation::ouSignatureValue, SignatureReferenceInformation::ouType, SignatureReferenceInformation::ouURI, SignatureInformation::stDateTime, utl::toISO8601(), SignatureInformation::vSignatureReferenceInfors, DocumentSignatureHelper::writeSignedProperties(), and SignatureInformation::X509Datas.
Referenced by XMLSignatureHelper::ExportSignature(), and WriteSignature().
|
private |
Definition at line 124 of file xsecctl.cxx.
Referenced by getSignatureInformation(), setDate(), setDescription(), setGpgCertificate(), setSignatureLineId(), setSignatureLineInvalidGraphic(), setSignatureLineValidGraphic(), setX509Certificate(), signAStream(), signatureCreated(), signatureVerified(), and UpdateSignatureInformation().
sal_Int32 XSecController::getNewSecurityId | ( | ) |
Definition at line 421 of file xsecctl.cxx.
References m_nNextSecurityId, and nId.
|
private |
Definition at line 392 of file xsecctl.cxx.
References m_xUriBinding, and SAL_WARN_IF.
Referenced by addStreamReference(), and prepareSignatureToWrite().
SignatureInformation XSecController::getSignatureInformation | ( | sal_Int32 | nSecurityId | ) | const |
Definition at line 935 of file xsecctl.cxx.
References findSignatureInfor(), m_vInternalSignatureInformations, nIndex, and SAL_WARN_IF.
SignatureInformations XSecController::getSignatureInformations | ( | ) | const |
Definition at line 947 of file xsecctl.cxx.
References i, and m_vInternalSignatureInformations.
|
private |
Definition at line 150 of file xsecverify.cxx.
References m_vInternalSignatureInformations, SignatureReferenceInformation::nType, SignatureReferenceInformation::ouURI, SAL_INFO, InternalSignatureInformation::signatureInfor, and SignatureInformation::vSignatureReferenceInfors.
Referenced by OOXMLSecParser::ReferencedContextImpl::CheckIdAttrReferenced(), and XSecParser::ReferencedContextImpl::CheckIdAttrReferenced().
|
private |
Definition at line 371 of file xsecctl.cxx.
References chainOff(), m_bIsBlocking, m_bIsCollectingElement, and m_bIsSAXEventKeeperConnected.
Referenced by setSAXChainConnector().
|
private |
Definition at line 53 of file xsecverify.cxx.
References Any, args, INITIALIZED, m_eStatusOfSecurityComponents, m_xSAXEventKeeper, m_xSecurityContext, and m_xXMLSignature.
Referenced by addSignature().
|
private |
Definition at line 55 of file xsecsign.cxx.
References InternalSignatureInformation::addReference(), Any, args, createId(), getObjectInputStream(), i, m_xSAXEventKeeper, m_xSecurityContext, m_xXMLSignature, SignatureInformation::nSecurityId, SignatureInformation::ouDateTimePropertyId, SignatureInformation::ouDescription, SignatureInformation::ouDescriptionPropertyId, SignatureReferenceInformation::ouDigestValue, SignatureInformation::ouGpgCertificate, SignatureInformation::ouSignatureId, SignatureInformation::ouSignatureValue, SignatureReferenceInformation::ouURI, InternalSignatureInformation::signatureInfor, size, InternalSignatureInformation::vKeeperIds, and SignatureInformation::vSignatureReferenceInfors.
Referenced by WriteOOXMLSignature(), and WriteSignature().
void XSecController::releaseSignatureReader | ( | ) |
Definition at line 624 of file xsecverify.cxx.
References clearSAXChainConnector(), and m_xSecParser.
|
private |
Definition at line 368 of file xsecverify.cxx.
References SignatureInformation::hasInconsistentSigningTime, utl::ISO8601parseDateTime(), m_vInternalSignatureInformations, SignatureInformation::ouDateTime, SignatureInformation::ouDateTimePropertyId, SAL_INFO, InternalSignatureInformation::signatureInfor, and SignatureInformation::stDateTime.
Referenced by OOXMLSecParser::XadesSigningTimeContext::EndElement(), OOXMLSecParser::DsSignaturePropertyContext::EndElement(), XSecParser::XadesSigningTimeContext::EndElement(), and XSecParser::DsSignaturePropertyContext::EndElement().
void XSecController::setDate | ( | sal_Int32 | nSecurityId, |
const css::util::DateTime & | rDateTime | ||
) |
Definition at line 268 of file xsecsign.cxx.
References findSignatureInfor(), index, m_vInternalSignatureInformations, InternalSignatureInformation::signatureInfor, and SignatureInformation::stDateTime.
|
private |
Definition at line 390 of file xsecverify.cxx.
References m_vInternalSignatureInformations, SignatureInformation::ouDescription, SignatureInformation::ouDescriptionPropertyId, and InternalSignatureInformation::signatureInfor.
Referenced by OOXMLSecParser::MsodigsigSignatureInfoV1Context::EndElement(), and XSecParser::DsSignaturePropertyContext::EndElement().
void XSecController::setDescription | ( | sal_Int32 | nSecurityId, |
const OUString & | rDescription | ||
) |
Definition at line 288 of file xsecsign.cxx.
References findSignatureInfor(), m_vInternalSignatureInformations, nIndex, SignatureInformation::ouDescription, and InternalSignatureInformation::signatureInfor.
|
private |
Definition at line 316 of file xsecverify.cxx.
References m_vInternalSignatureInformations, SignatureReferenceInformation::nDigestID, SignatureReferenceInformation::ouDigestValue, SAL_INFO, InternalSignatureInformation::signatureInfor, and SignatureInformation::vSignatureReferenceInfors.
Referenced by OOXMLSecParser::DsReferenceContext::EndElement(), and XSecParser::DsReferenceContext::EndElement().
|
private |
Definition at line 346 of file xsecverify.cxx.
References m_vInternalSignatureInformations, SignatureInformation::ouGpgCertificate, SAL_INFO, and InternalSignatureInformation::signatureInfor.
Referenced by XSecParser::DsPGPKeyPacketContext::EndElement().
void XSecController::setGpgCertificate | ( | sal_Int32 | nSecurityId, |
const OUString & | ouCertDigest, | ||
const OUString & | ouCert, | ||
const OUString & | ouOwner | ||
) |
Definition at line 241 of file xsecsign.cxx.
References findSignatureInfor(), index, m_vInternalSignatureInformations, SignatureInformation::ouGpgCertificate, SignatureInformation::ouGpgKeyID, SignatureInformation::ouGpgOwner, InternalSignatureInformation::signatureInfor, and SignatureInformation::X509Datas.
|
private |
Definition at line 335 of file xsecverify.cxx.
References m_vInternalSignatureInformations, SignatureInformation::ouGpgKeyID, SAL_INFO, and InternalSignatureInformation::signatureInfor.
Referenced by XSecParser::DsPGPKeyIDContext::EndElement().
|
private |
Definition at line 357 of file xsecverify.cxx.
References m_vInternalSignatureInformations, SignatureInformation::ouGpgOwner, SAL_INFO, and InternalSignatureInformation::signatureInfor.
Referenced by XSecParser::LoPGPOwnerContext::EndElement().
|
private |
Definition at line 535 of file xsecverify.cxx.
References m_vInternalSignatureInformations, SignatureInformation::ouSignatureId, SAL_INFO, and InternalSignatureInformation::signatureInfor.
Referenced by OOXMLSecParser::DsSignatureContext::StartElement(), and XSecParser::DsSignatureContext::StartElement().
|
private |
Definition at line 505 of file xsecverify.cxx.
References SignatureInformation::aInvalidSignatureImage, m_vInternalSignatureInformations, and InternalSignatureInformation::signatureInfor.
Referenced by OOXMLSecParser::DsObjectContext::EndElement(), and XSecParser::LoSignatureLineInvalidImageContext::EndElement().
|
private |
Definition at line 213 of file xsecverify.cxx.
References i, m_vInternalSignatureInformations, nType, SAL_INFO, InternalSignatureInformation::signatureInfor, SignatureInformation::vSignatureReferenceInfors, and InternalSignatureInformation::xReferenceResolvedListener.
Referenced by OOXMLSecParser::DsSignedInfoContext::EndElement(), and XSecParser::DsSignedInfoContext::EndElement().
void XSecController::setSAXChainConnector | ( | const css::uno::Reference< css::lang::XInitialization > & | xInitialization | ) |
Definition at line 454 of file xsecctl.cxx.
References initializeSAXChain(), m_bIsPreviousNodeInitializable, and m_xPreviousNodeOnSAXChain.
Referenced by createSignatureReader().
void XSecController::setSignatureBytes | ( | const css::uno::Sequence< sal_Int8 > & | rBytes | ) |
Definition at line 403 of file xsecverify.cxx.
References SignatureInformation::aSignatureBytes, m_vInternalSignatureInformations, and InternalSignatureInformation::signatureInfor.
|
private |
Definition at line 514 of file xsecverify.cxx.
References m_vInternalSignatureInformations, SignatureInformation::ouSignatureLineId, and InternalSignatureInformation::signatureInfor.
Referenced by OOXMLSecParser::MsodigsigSignatureInfoV1Context::EndElement(), and XSecParser::LoSignatureLineIdContext::EndElement().
void XSecController::setSignatureLineId | ( | sal_Int32 | nSecurityId, |
const OUString & | rSignatureLineId | ||
) |
Definition at line 305 of file xsecsign.cxx.
References findSignatureInfor(), m_vInternalSignatureInformations, nIndex, SignatureInformation::ouSignatureLineId, and InternalSignatureInformation::signatureInfor.
void XSecController::setSignatureLineInvalidGraphic | ( | sal_Int32 | nSecurityId, |
const css::uno::Reference< css::graphic::XGraphic > & | xInvalidGraphic | ||
) |
Definition at line 341 of file xsecsign.cxx.
References SignatureInformation::aInvalidSignatureImage, findSignatureInfor(), m_vInternalSignatureInformations, nIndex, and InternalSignatureInformation::signatureInfor.
void XSecController::setSignatureLineValidGraphic | ( | sal_Int32 | nSecurityId, |
const css::uno::Reference< css::graphic::XGraphic > & | xValidGraphic | ||
) |
Definition at line 322 of file xsecsign.cxx.
References SignatureInformation::aValidSignatureImage, findSignatureInfor(), m_vInternalSignatureInformations, nIndex, and InternalSignatureInformation::signatureInfor.
|
private |
Sets algorithm from <SignatureMethod Algorithm="...">.
Definition at line 119 of file xsecverify.cxx.
References m_vInternalSignatureInformations.
Referenced by OOXMLSecParser::DsSignatureMethodContext::StartElement(), and XSecParser::DsSignatureMethodContext::StartElement().
|
private |
Definition at line 305 of file xsecverify.cxx.
References m_vInternalSignatureInformations, SignatureInformation::ouSignatureValue, SAL_INFO, and InternalSignatureInformation::signatureInfor.
Referenced by OOXMLSecParser::DsSignatureValueContext::EndElement(), and XSecParser::DsSignatureValueContext::EndElement().
|
private |
Definition at line 496 of file xsecverify.cxx.
References SignatureInformation::aValidSignatureImage, m_vInternalSignatureInformations, and InternalSignatureInformation::signatureInfor.
Referenced by OOXMLSecParser::DsObjectContext::EndElement(), and XSecParser::LoSignatureLineValidImageContext::EndElement().
|
private |
Definition at line 412 of file xsecverify.cxx.
References xmlsecurity::bigIntegerToNumericString(), xmlsecurity::COMPAT_2ND, xmlsecurity::COMPAT_BOTH, xmlsecurity::EqualDistinguishedNames(), m_vInternalSignatureInformations, m_xSecurityContext, SignatureInformation::ouGpgCertificate, SignatureInformation::ouGpgKeyID, SAL_INFO, SAL_INFO_IF, InternalSignatureInformation::signatureInfor, and SignatureInformation::X509Datas.
Referenced by OOXMLSecParser::XadesCertContext::EndElement(), and XSecParser::XadesCertContext::EndElement().
void XSecController::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.
It is absolutely necessary that the parameter ouX509IssuerName is set. It contains the base64 encoded certificate, which is DER encoded. The XMLSec needs it to find the private key. Although issuer name and certificate should be sufficient to identify the certificate the implementation in XMLSec is broken, both for Windows and mozilla. The reason is that they use functions to find the certificate which take as parameter the DER encoded ASN.1 issuer name. The issuer name is a DName, where most attributes are of type DirectoryName, which is a choice of 5 string types. This information is not contained in the issuer string and while it is converted to the ASN.1 name the conversion function must assume a particular type, which is often wrong. For example, the Windows function CertStrToName will use a T.61 string if the string does not contain special characters. So if the certificate uses simple characters but encodes the issuer attributes in Utf8, then CertStrToName will use T.61. The resulting DER encoded ASN.1 name now contains different bytes which indicate the string type. The functions for finding the certificate apparently use memcmp - hence they fail to find the certificate.
Definition at line 204 of file xsecsign.cxx.
References SignatureInformation::eAlgorithmID, findSignatureInfor(), index, m_vInternalSignatureInformations, InternalSignatureInformation::signatureInfor, and SignatureInformation::X509Datas.
|
private |
Definition at line 247 of file xsecverify.cxx.
References xmlsecurity::bigIntegerToNumericString(), m_vInternalSignatureInformations, m_xSecurityContext, SAL_INFO, InternalSignatureInformation::signatureInfor, and SignatureInformation::X509Datas.
Referenced by OOXMLSecParser::DsX509DataContext::EndElement(), and XSecParser::DsX509DataContext::EndElement().
void XSecController::signAStream | ( | sal_Int32 | securityId, |
const OUString & | uri, | ||
bool | isBinary, | ||
bool | bXAdESCompliantIfODF | ||
) |
Definition at line 181 of file xsecsign.cxx.
References InternalSignatureInformation::addReference(), findSignatureInfor(), index, m_vInternalSignatureInformations, and type.
|
overridevirtual |
Definition at line 986 of file xsecctl.cxx.
References findSignatureInfor(), index, m_vInternalSignatureInformations, and SignatureInformation::nStatus.
|
overridevirtual |
Definition at line 997 of file xsecctl.cxx.
References findSignatureInfor(), index, m_vInternalSignatureInformations, and SignatureInformation::nStatus.
void XSecController::startMission | ( | const rtl::Reference< UriBindingHelper > & | xUriBinding, |
const css::uno::Reference< css::xml::crypto::XXMLSecurityContext > & | xSecurityContext | ||
) |
Definition at line 428 of file xsecctl.cxx.
References m_bVerifyCurrentSignature, m_eStatusOfSecurityComponents, m_vInternalSignatureInformations, m_xSecurityContext, m_xUriBinding, and UNINITIALIZED.
|
private |
Definition at line 127 of file xsecverify.cxx.
References m_vInternalSignatureInformations, m_xXMLSignature, and SignatureVerifierImpl::updateSignature().
Referenced by XSecParser::DsPGPDataContext::StartElement().
void XSecController::UpdateSignatureInformation | ( | sal_Int32 | nSecurityId, |
std::vector< SignatureInformation::X509Data > && | rDatas | ||
) |
only verify can figure out which X509Data is the signing certificate
Definition at line 927 of file xsecctl.cxx.
References findSignatureInfor(), m_vInternalSignatureInformations, and nIndex.
bool XSecController::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.
Definition at line 419 of file xsecsign.cxx.
References chainOff(), chainOn(), exportOOXMLSignature(), INITIALIZED, m_bIsSAXEventKeeperSticky, m_eStatusOfSecurityComponents, m_vInternalSignatureInformations, m_xSAXEventKeeper, prepareSignatureToWrite(), and SAL_WARN_IF.
bool XSecController::WriteSignature | ( | const css::uno::Reference< css::xml::sax::XDocumentHandler > & | xDocumentHandler, |
bool | bXAdESCompliantIfODF | ||
) |
Definition at line 360 of file xsecsign.cxx.
References chainOff(), chainOn(), exportSignature(), i, INITIALIZED, m_bIsSAXEventKeeperSticky, m_eStatusOfSecurityComponents, m_vInternalSignatureInformations, m_xSAXEventKeeper, prepareSignatureToWrite(), SAL_WARN_IF, InternalSignatureInformation::signatureInfor, and InternalSignatureInformation::xReferenceResolvedListener.
|
friend |
Definition at line 111 of file xsecctl.hxx.
Referenced by createSignatureReader().
|
friend |
Definition at line 110 of file xsecctl.hxx.
Referenced by createSignatureReader().
|
private |
Definition at line 182 of file xsecctl.hxx.
Referenced by blockingStatusChanged(), checkChainingStatus(), and initializeSAXChain().
|
private |
Definition at line 175 of file xsecctl.hxx.
Referenced by checkChainingStatus(), collectionStatusChanged(), and initializeSAXChain().
|
private |
Definition at line 162 of file xsecctl.hxx.
Referenced by chainOff(), chainOn(), and setSAXChainConnector().
|
private |
Definition at line 168 of file xsecctl.hxx.
Referenced by chainOff(), chainOn(), and initializeSAXChain().
|
private |
Definition at line 199 of file xsecctl.hxx.
Referenced by chainOff(), chainOn(), WriteOOXMLSignature(), and WriteSignature().
|
private |
Definition at line 215 of file xsecctl.hxx.
Referenced by addSignature(), and startMission().
|
private |
|
private |
Definition at line 142 of file xsecctl.hxx.
Referenced by getNewSecurityId().
|
private |
Definition at line 210 of file xsecctl.hxx.
Referenced by addSignature().
|
private |
Definition at line 147 of file xsecctl.hxx.
Referenced by addEncapsulatedX509Certificate(), addReference(), addSignature(), addStreamReference(), collectToVerify(), endMission(), getSignatureInformation(), getSignatureInformations(), haveReferenceForId(), setDate(), setDescription(), setDigestValue(), setGpgCertificate(), setGpgKeyID(), setGpgOwner(), setId(), setInvalidSignatureImage(), setReferenceCount(), setSignatureBytes(), setSignatureLineId(), setSignatureLineInvalidGraphic(), setSignatureLineValidGraphic(), setSignatureMethod(), setSignatureValue(), setValidSignatureImage(), setX509CertDigest(), setX509Certificate(), setX509Data(), signAStream(), signatureCreated(), signatureVerified(), startMission(), switchGpgSignature(), UpdateSignatureInformation(), WriteOOXMLSignature(), and WriteSignature().
|
private |
Definition at line 156 of file xsecctl.hxx.
Referenced by chainOff(), chainOn(), clearSAXChainConnector(), and setSAXChainConnector().
|
private |
Definition at line 124 of file xsecctl.hxx.
Referenced by chainOff(), chainOn(), collectToVerify(), createXSecComponent(), endMission(), prepareSignatureToRead(), prepareSignatureToWrite(), WriteOOXMLSignature(), and WriteSignature().
|
private |
Definition at line 204 of file xsecctl.hxx.
Referenced by addSignature(), createSignatureReader(), and releaseSignatureReader().
|
private |
Definition at line 134 of file xsecctl.hxx.
Referenced by createXSecComponent(), endMission(), prepareSignatureToRead(), prepareSignatureToWrite(), setX509CertDigest(), setX509Data(), and startMission().
|
private |
Definition at line 220 of file xsecctl.hxx.
Referenced by endMission(), getObjectInputStream(), and startMission().
|
private |
Definition at line 119 of file xsecctl.hxx.
Referenced by createXSecComponent().
|
private |
Definition at line 129 of file xsecctl.hxx.
Referenced by createXSecComponent(), prepareSignatureToRead(), prepareSignatureToWrite(), and switchGpgSignature().
|
private |
Definition at line 114 of file xsecctl.hxx.
Referenced by createXSecComponent(), and exportOOXMLSignature().