summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiklos Vajna <vmiklos@collabora.com>2020-11-18 21:10:43 +0100
committerMiklos Vajna <vmiklos@collabora.com>2020-11-19 09:03:46 +0100
commit728bfa1879da097b65fd39b1e63c52478a913af0 (patch)
tree5bcc0a7ba585771f8c3100f81d0761793e7602a2
parentbcfd9f8f166aec58ee92642e8e70dc5a94a3119f (diff)
pdfium: add signature and trailer end getter wrappers
So PDFiumDocument::getPointer() can be retired. Change-Id: I77c34c3e263bd6f39e06e50f621f2eaff804c716 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106079 Tested-by: Jenkins Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
-rw-r--r--include/vcl/filter/PDFiumLibrary.hxx4
-rw-r--r--vcl/source/pdf/PDFiumLibrary.cxx16
-rw-r--r--xmlsecurity/source/helper/pdfsignaturehelper.cxx8
3 files changed, 22 insertions, 6 deletions
diff --git a/include/vcl/filter/PDFiumLibrary.hxx b/include/vcl/filter/PDFiumLibrary.hxx
index 014505d7739d..2663a6cf03ae 100644
--- a/include/vcl/filter/PDFiumLibrary.hxx
+++ b/include/vcl/filter/PDFiumLibrary.hxx
@@ -246,11 +246,13 @@ public:
// Page size in points
basegfx::B2DSize getPageSize(int nIndex);
int getPageCount();
+ int getSignatureCount();
int getFileVersion();
bool saveWithVersion(SvMemoryStream& rStream, int nFileVersion);
std::unique_ptr<PDFiumPage> openPage(int nIndex);
- FPDF_DOCUMENT getPointer() { return mpPdfDocument; }
+ FPDF_SIGNATURE getSignature(int nIndex);
+ std::vector<unsigned int> getTrailerEnds();
};
struct PDFiumLibrary final : public rtl::StaticWithInit<std::shared_ptr<PDFium>, PDFiumLibrary>
diff --git a/vcl/source/pdf/PDFiumLibrary.cxx b/vcl/source/pdf/PDFiumLibrary.cxx
index ae1588e4a268..391a93f90ffb 100644
--- a/vcl/source/pdf/PDFiumLibrary.cxx
+++ b/vcl/source/pdf/PDFiumLibrary.cxx
@@ -19,6 +19,7 @@
#include <fpdf_edit.h>
#include <fpdf_text.h>
#include <fpdf_save.h>
+#include <fpdf_signature.h>
#include <osl/endian.h>
#include <vcl/bitmap.hxx>
@@ -212,6 +213,19 @@ std::unique_ptr<PDFiumPage> PDFiumDocument::openPage(int nIndex)
return pPDFiumPage;
}
+FPDF_SIGNATURE PDFiumDocument::getSignature(int nIndex)
+{
+ return FPDF_GetSignatureObject(mpPdfDocument, nIndex);
+}
+
+std::vector<unsigned int> PDFiumDocument::getTrailerEnds()
+{
+ int nNumTrailers = FPDF_GetTrailerEnds(mpPdfDocument, nullptr, 0);
+ std::vector<unsigned int> aTrailerEnds(nNumTrailers);
+ FPDF_GetTrailerEnds(mpPdfDocument, aTrailerEnds.data(), aTrailerEnds.size());
+ return aTrailerEnds;
+}
+
basegfx::B2DSize PDFiumDocument::getPageSize(int nIndex)
{
basegfx::B2DSize aSize;
@@ -225,6 +239,8 @@ basegfx::B2DSize PDFiumDocument::getPageSize(int nIndex)
int PDFiumDocument::getPageCount() { return FPDF_GetPageCount(mpPdfDocument); }
+int PDFiumDocument::getSignatureCount() { return FPDF_GetSignatureCount(mpPdfDocument); }
+
int PDFiumDocument::getFileVersion()
{
int nFileVersion = 0;
diff --git a/xmlsecurity/source/helper/pdfsignaturehelper.cxx b/xmlsecurity/source/helper/pdfsignaturehelper.cxx
index 6b8eefef7099..6e0f1cfb176b 100644
--- a/xmlsecurity/source/helper/pdfsignaturehelper.cxx
+++ b/xmlsecurity/source/helper/pdfsignaturehelper.cxx
@@ -472,7 +472,7 @@ bool PDFSignatureHelper::ReadAndVerifySignatureSvStream(SvStream& rStream)
return false;
}
- int nSignatureCount = FPDF_GetSignatureCount(pPdfDocument->getPointer());
+ int nSignatureCount = pPdfDocument->getSignatureCount();
if (nSignatureCount <= 0)
{
return true;
@@ -480,7 +480,7 @@ bool PDFSignatureHelper::ReadAndVerifySignatureSvStream(SvStream& rStream)
std::vector<Signature> aSignatures(nSignatureCount);
for (int i = 0; i < nSignatureCount; ++i)
{
- FPDF_SIGNATURE pSignature = FPDF_GetSignatureObject(pPdfDocument->getPointer(), i);
+ FPDF_SIGNATURE pSignature = pPdfDocument->getSignature(i);
std::vector<std::pair<size_t, size_t>> aByteRanges;
GetByteRangesFromPDF(pSignature, aByteRanges);
aSignatures[i] = Signature{ pSignature, aByteRanges };
@@ -496,9 +496,7 @@ bool PDFSignatureHelper::ReadAndVerifySignatureSvStream(SvStream& rStream)
}
}
- int nNumTrailers = FPDF_GetTrailerEnds(pPdfDocument->getPointer(), nullptr, 0);
- std::vector<unsigned int> aTrailerEnds(nNumTrailers);
- FPDF_GetTrailerEnds(pPdfDocument->getPointer(), aTrailerEnds.data(), aTrailerEnds.size());
+ std::vector<unsigned int> aTrailerEnds = pPdfDocument->getTrailerEnds();
m_aSignatureInfos.clear();