23#include <com/sun/star/xml/crypto/sax/ElementMarkPriority.hpp>
24#include <com/sun/star/embed/StorageFormats.hpp>
34using namespace css::uno;
35using namespace css::graphic;
41 rtl_createUuid(
aSeq,
nullptr,
true );
52 return OUString::createFromAscii(str);
57 sal_Int32 nStorageFormat,
58 bool bXAdESCompliantIfODF)
63 sal_Int32 nIdOfSignatureElementCollector;
65 nIdOfSignatureElementCollector =
66 m_xSAXEventKeeper->addSecurityElementCollector( css::xml::crypto::sax::ElementMarkPriority_AFTERMODIFY,
true );
72 css::uno::Sequence<css::uno::Any>
args
74 Any(OUString::number(nSecurityId)),
76 Any(OUString::number(nIdOfSignatureElementCollector)),
82 xSignatureCreator->initialize(
args);
87 xSignatureCreator->setBlockerId(nBlockerId);
89 xSignatureCreator->addSignatureCreationResultListener(
this);
91 m_xSAXEventKeeper->addReferenceResolvedListener(nIdOfSignatureElementCollector, xSignatureCreator);
93 int size = vReferenceInfors.size();
94 sal_Int32 nReferenceCount = 0;
98 sal_Int32 keeperId = internalSignatureInfor.
vKeeperIds[
i];
104 xSignatureCreator->setReferenceId( keeperId );
109 xSignatureCreator->setReferenceCount( nReferenceCount );
118 css::uno::Reference< css::io::XInputStream > xInputStream
121 if (xInputStream.is())
122 xSignatureCreator->setUriBinding(refInfor.
ouURI,xInputStream);
125 xSignatureCreator->setKeyId(0);
129 css::xml::crypto::DigestID::SHA512 : (bXAdESCompliantIfODF ? css::xml::crypto::DigestID::SHA256 : css::xml::crypto::DigestID::SHA1);
131 if (nStorageFormat != embed::StorageFormats::OFOPXML)
138 if (bXAdESCompliantIfODF)
142 internalSignatureInfor.
addReference(SignatureReferenceType::SAMEDOCUMENT, digestID, aId, -1,
"http://uri.etsi.org/01903#SignedProperties");
159 internalSignatureInfor.
addReference(SignatureReferenceType::SAMEDOCUMENT, digestID,
"idPackageObject_" + aID, -1, OUString());
161 internalSignatureInfor.
addReference(SignatureReferenceType::SAMEDOCUMENT, digestID,
"idOfficeObject_" + aID, -1, OUString());
163 internalSignatureInfor.
addReference(SignatureReferenceType::SAMEDOCUMENT, digestID,
"idSignedProperties_" + aID, -1, OUString());
178 return xSignatureCreator;
184 sal_Int32 digestID = bXAdESCompliantIfODF ? css::xml::crypto::DigestID::SHA256 : css::xml::crypto::DigestID::SHA1;
198 digestID = css::xml::crypto::DigestID::SHA512;
205 sal_Int32 nSecurityId,
206 const OUString& ouX509IssuerName,
207 const OUString& ouX509SerialNumber,
208 const OUString& ouX509Cert,
209 const OUString& ouX509CertDigest,
234 si.
X509Datas.back().back().X509IssuerName = ouX509IssuerName;
235 si.
X509Datas.back().back().X509SerialNumber = ouX509SerialNumber;
236 si.
X509Datas.back().back().X509Certificate = ouX509Cert;
237 si.
X509Datas.back().back().CertDigest = ouX509CertDigest;
242 sal_Int32 nSecurityId,
243 const OUString& ouKeyDigest,
244 const OUString& ouCert,
245 const OUString& ouOwner)
269 sal_Int32 nSecurityId,
270 const css::util::DateTime& rDateTime )
323 const Reference<XGraphic>& xValidGraphic)
342 sal_Int32 nSecurityId,
const Reference<XGraphic>& xInvalidGraphic)
361 const css::uno::Reference<css::xml::sax::XDocumentHandler>& xDocumentHandler,
362 bool bXAdESCompliantIfODF )
366 SAL_WARN_IF( !xDocumentHandler.is(),
"xmlsecurity.helper",
"I really need a document handler!" );
387 css::uno::Reference<css::xml::sax::XDocumentHandler> xSEKHandler(
m_xSAXEventKeeper);
392 for (
i=0;
i<sigNum; ++
i)
408 catch( css::uno::Exception& )
423 SAL_WARN_IF(!xDocumentHandler.is(),
"xmlsecurity.helper",
"empty xDocumentHandler reference");
441 rInformation.xReferenceResolvedListener =
prepareSignatureToWrite(rInformation, embed::StorageFormats::OFOPXML,
false);
451 catch(
const uno::Exception&)
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)
css::uno::Reference< css::xml::crypto::XXMLSecurityContext > m_xSecurityContext
css::uno::Reference< css::xml::crypto::XXMLSignature > m_xXMLSignature
std::vector< InternalSignatureInformation > m_vInternalSignatureInformations
void signAStream(sal_Int32 securityId, const OUString &uri, bool isBinary, bool bXAdESCompliantIfODF)
void setGpgCertificate(OUString const &ouGpgCert)
void setDescription(OUString const &rId, OUString const &rDescription)
bool WriteSignature(const css::uno::Reference< css::xml::sax::XDocumentHandler > &xDocumentHandler, bool bXAdESCompliantIfODF)
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().
static void exportSignature(const css::uno::Reference< css::xml::sax::XDocumentHandler > &xDocumentHandler, const SignatureInformation &signatureInfo, bool bXAdESCompliantIfODF)
void setDate(OUString const &rId, OUString const &ouDate)
void setSignatureLineValidGraphic(sal_Int32 nSecurityId, const css::uno::Reference< css::graphic::XGraphic > &xValidGraphic)
css::uno::Reference< css::xml::crypto::sax::XReferenceResolvedListener > prepareSignatureToWrite(InternalSignatureInformation &signatureInfo, sal_Int32 nStorageFormat, bool bXAdESCompliantIfODF)
css::uno::Reference< css::io::XInputStream > getObjectInputStream(const OUString &objectURL)
int findSignatureInfor(sal_Int32 nSecurityId) const
void setSignatureLineId(const OUString &rSignatureLineId)
Sequence< sal_Int8 > aSeq
#define SAL_WARN_IF(condition, area, stream)
int sprintf(char(&s)[N], char const *format, T &&... arguments)
::std::vector< SignatureReferenceInformation > SignatureReferenceInformations
#define SAL_WNODEPRECATED_DECLARATIONS_POP
#define SAL_WNODEPRECATED_DECLARATIONS_PUSH