summaryrefslogtreecommitdiff
path: root/xmlsecurity
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2020-11-24 21:03:59 +0100
committerMiklos Vajna <vmiklos@collabora.com>2020-11-25 09:13:12 +0100
commit2c9f4c6a5e1a9ce5ef501c8f5a7f5cd421bf86f7 (patch)
tree7c8fde238416db29a73336431af0c07188193f71 /xmlsecurity
parentb22e2548a4ac7a4395b3e50b82f23a46cbd6104a (diff)
pdfium: add sig getters: ByteRange, DocMDPPermission, Contents and SubFilter
Change-Id: Ieab577de92898568e27a879af1ca1bda170a307d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106554 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
Diffstat (limited to 'xmlsecurity')
-rw-r--r--xmlsecurity/source/helper/pdfsignaturehelper.cxx27
1 files changed, 7 insertions, 20 deletions
diff --git a/xmlsecurity/source/helper/pdfsignaturehelper.cxx b/xmlsecurity/source/helper/pdfsignaturehelper.cxx
index a9ab7a84546c..062dba819adf 100644
--- a/xmlsecurity/source/helper/pdfsignaturehelper.cxx
+++ b/xmlsecurity/source/helper/pdfsignaturehelper.cxx
@@ -132,16 +132,13 @@ struct Signature
void GetByteRangesFromPDF(std::unique_ptr<vcl::pdf::PDFiumSignature>& pSignature,
std::vector<std::pair<size_t, size_t>>& rByteRanges)
{
- int nByteRangeLen = FPDFSignatureObj_GetByteRange(pSignature->getPointer(), nullptr, 0);
- if (nByteRangeLen <= 0)
+ std::vector<int> aByteRange = pSignature->getByteRange();
+ if (aByteRange.empty())
{
SAL_WARN("xmlsecurity.helper", "GetByteRangesFromPDF: no byte ranges");
return;
}
- std::vector<int> aByteRange(nByteRangeLen);
- FPDFSignatureObj_GetByteRange(pSignature->getPointer(), aByteRange.data(), aByteRange.size());
-
size_t nByteRangeOffset = 0;
for (size_t i = 0; i < aByteRange.size(); ++i)
{
@@ -183,7 +180,7 @@ int GetMDPPerm(const std::vector<Signature>& rSignatures)
for (const auto& rSignature : rSignatures)
{
- int nPerm = FPDFSignatureObj_GetDocMDPPermission(rSignature.m_pSignature->getPointer());
+ int nPerm = rSignature.m_pSignature->getDocMDPPermission();
if (nPerm != 0)
{
return nPerm;
@@ -346,24 +343,14 @@ bool ValidateSignature(SvStream& rStream, const Signature& rSignature,
const std::set<unsigned int>& rSignatureEOFs,
const std::vector<unsigned int>& rTrailerEnds)
{
- int nContentsLen
- = FPDFSignatureObj_GetContents(rSignature.m_pSignature->getPointer(), nullptr, 0);
- if (nContentsLen <= 0)
+ std::vector<unsigned char> aContents = rSignature.m_pSignature->getContents();
+ if (aContents.empty())
{
SAL_WARN("xmlsecurity.helper", "ValidateSignature: no contents");
return false;
}
- std::vector<unsigned char> aContents(nContentsLen);
- FPDFSignatureObj_GetContents(rSignature.m_pSignature->getPointer(), aContents.data(),
- aContents.size());
-
- int nSubFilterLen
- = FPDFSignatureObj_GetSubFilter(rSignature.m_pSignature->getPointer(), nullptr, 0);
- std::vector<char> aSubFilterBuf(nSubFilterLen);
- FPDFSignatureObj_GetSubFilter(rSignature.m_pSignature->getPointer(), aSubFilterBuf.data(),
- aSubFilterBuf.size());
- // Buffer is NUL-terminated.
- OString aSubFilter(aSubFilterBuf.data(), aSubFilterBuf.size() - 1);
+
+ OString aSubFilter = rSignature.m_pSignature->getSubFilter();
const bool bNonDetached = aSubFilter == "adbe.pkcs7.sha1";
if (aSubFilter.isEmpty()