lol
1commit c9ac4243a6def08790bbf5552bb31894169596ca
2Author: rnhmjoj <rnhmjoj@inventati.org>
3Date: Wed Apr 3 12:54:58 2024 +0200
4
5 use system podofo
6
7diff --git a/libs/meson.build b/libs/meson.build
8index 3ee31c1..5022ba8 100644
9--- a/libs/meson.build
10+++ b/libs/meson.build
11@@ -16,21 +16,15 @@ curl_dep = dependency('libcurl')
12 fontconfig_dep = dependency('fontconfig')
13 freetype_dep = dependency('freetype2')
14 png_dep = dependency('libpng')
15-podofo_dep = cpp.find_library('libpodofo', dirs: libdir)
16+podofo_dep = dependency('libpodofo')
17 libxml2_dep = dependency('libxml-2.0', required: false)
18 xml2_dep = dependency('xml2', required: false)
19 zlib_dep = dependency('zlib')
20
21 inc_so = include_directories('pkcs11/src/.', 'shared/src/')
22
23-inc_a = include_directories(
24- 'sign-sdk/include',
25- 'sign-sdk/include/podofo',
26- 'sign-sdk/include/podofo/include',
27- 'sign-sdk/include/podofo/include/podofo',
28- 'sign-sdk/src',
29- 'shared/src/',
30-)
31+inc_a = include_directories('sign-sdk/include', 'sign-sdk/src', 'shared/src/')
32+
33 cie_pkcs11_sources = [
34 'shared/src/Util/log.cpp',
35 'shared/src/Util/funccallinfo.cpp',
36diff --git a/libs/sign-sdk/include/PdfSignatureGenerator.h b/libs/sign-sdk/include/PdfSignatureGenerator.h
37index 93ab445..65d438f 100644
38--- a/libs/sign-sdk/include/PdfSignatureGenerator.h
39+++ b/libs/sign-sdk/include/PdfSignatureGenerator.h
40@@ -10,9 +10,7 @@
41 #ifndef _PDFSIGNATUREGENERATOR_H_
42 #define _PDFSIGNATUREGENERATOR_H_
43 #include "Util/UUCByteArray.h"
44-#include "podofo/doc/PdfSignOutputDevice.h"
45-#include "podofo/doc/PdfSignatureField.h"
46-#include "podofo/podofo.h"
47+#include <podofo/podofo.h>
48
49 using namespace PoDoFo;
50 using namespace std;
51@@ -60,7 +58,11 @@ class PdfSignatureGenerator {
52 const double getHeight(int pageIndex);
53
54 private:
55- PdfMemDocument* m_pPdfDocument;
56+ PdfDocument* m_pPdfDocument;
57+
58+ PdfMemDocument* m_pPdfMemDocument;
59+
60+ PdfWriter* m_pPdfWriter;
61
62 PdfSignatureField* m_pSignatureField;
63
64diff --git a/libs/sign-sdk/src/PdfSignatureGenerator.cpp b/libs/sign-sdk/src/PdfSignatureGenerator.cpp
65index 44ef54a..e8b8c8e 100644
66--- a/libs/sign-sdk/src/PdfSignatureGenerator.cpp
67+++ b/libs/sign-sdk/src/PdfSignatureGenerator.cpp
68@@ -27,7 +27,7 @@ int GetNumberOfSignatures(PdfMemDocument* pPdfDocument);
69 USE_LOG;
70
71 PdfSignatureGenerator::PdfSignatureGenerator()
72- : m_pPdfDocument(NULL),
73+ : m_pPdfMemDocument(NULL),
74 m_pSignatureField(NULL),
75 m_pSignOutputDevice(NULL),
76 m_pFinalOutDevice(NULL),
77@@ -37,7 +37,7 @@ PdfSignatureGenerator::PdfSignatureGenerator()
78 }
79
80 PdfSignatureGenerator::~PdfSignatureGenerator() {
81- if (m_pPdfDocument) delete m_pPdfDocument;
82+ if (m_pPdfMemDocument) delete m_pPdfMemDocument;
83
84 if (m_pSignatureField) delete m_pSignatureField;
85
86@@ -51,21 +51,21 @@ PdfSignatureGenerator::~PdfSignatureGenerator() {
87 }
88
89 int PdfSignatureGenerator::Load(const char* pdf, int len) {
90- if (m_pPdfDocument) delete m_pPdfDocument;
91+ if (m_pPdfMemDocument) delete m_pPdfMemDocument;
92
93 try {
94 printf("PDF LENGTH");
95 printf("%i", len);
96 printf("STOP");
97
98- m_pPdfDocument = new PdfMemDocument();
99- m_pPdfDocument->Load(pdf, len);
100- printf("OK m_pPdfDocument");
101- int nSigns = PDFVerifier::GetNumberOfSignatures(m_pPdfDocument);
102+ m_pPdfMemDocument = new PdfMemDocument();
103+ m_pPdfMemDocument->Load(pdf);
104+ printf("OK m_pPdfMemDocument");
105+ int nSigns = PDFVerifier::GetNumberOfSignatures(m_pPdfMemDocument);
106 printf("OK nSigns: %d", nSigns);
107
108 if (nSigns > 0) {
109- m_pPdfDocument->SetIncrementalUpdates(true);
110+ m_pPdfWriter->PdfWriter::SetIncrementalUpdate(true);
111 }
112 m_actualLen = len;
113
114@@ -82,14 +82,8 @@ void PdfSignatureGenerator::AddFont(const char* szFontName,
115 // printf(szFontName);
116 // printf(szFontPath);
117
118- m_pPdfDocument->CreateFont(
119- szFontName, false, false,
120- PdfEncodingFactory::GlobalWinAnsiEncodingInstance(),
121- PdfFontCache::eFontCreationFlags_AutoSelectBase14, true, szFontPath);
122- m_pPdfDocument->CreateFont(
123- szFontName, true, false,
124- PdfEncodingFactory::GlobalWinAnsiEncodingInstance(),
125- PdfFontCache::eFontCreationFlags_AutoSelectBase14, true, szFontPath);
126+ m_pPdfDocument->PoDoFo::PdfDocument::CreateFont( szFontName, false, PdfEncodingFactory::GlobalWinAnsiEncodingInstance(), PdfFontCache::eFontCreationFlags_AutoSelectBase14, true);
127+ m_pPdfDocument->PoDoFo::PdfDocument::CreateFont( szFontName, true, PdfEncodingFactory::GlobalWinAnsiEncodingInstance(), PdfFontCache::eFontCreationFlags_AutoSelectBase14, true);
128 }
129
130 void PdfSignatureGenerator::InitSignature(
131@@ -130,7 +124,7 @@ void PdfSignatureGenerator::InitSignature(
132
133 if (m_pSignatureField) delete m_pSignatureField;
134
135- PdfPage* pPage = m_pPdfDocument->GetPage(pageIndex);
136+ PdfPage* pPage = m_pPdfMemDocument->GetPage(pageIndex);
137 PdfRect cropBox = pPage->GetCropBox();
138
139 float left0 = left * cropBox.GetWidth();
140@@ -145,15 +139,14 @@ void PdfSignatureGenerator::InitSignature(
141
142 LOG_DBG((0, "InitSignature", "PdfSignatureField"));
143
144- m_pSignatureField = new PdfSignatureField(
145- pPage, rect, m_pPdfDocument, PdfString(szFieldName), szSubFilter);
146+ m_pSignatureField = new PdfSignatureField(pPage, rect, m_pPdfMemDocument);
147
148 LOG_DBG((0, "InitSignature", "PdfSignatureField OK"));
149
150 if (szReason && szReason[0]) {
151 PdfString reason(szReason);
152 PdfString reasonLabel(szReasonLabel);
153- m_pSignatureField->SetSignatureReason(reasonLabel, reason);
154+ m_pSignatureField->SetSignatureReason(reason);
155 }
156
157 LOG_DBG((0, "InitSignature", "szReason OK"));
158@@ -161,7 +154,7 @@ void PdfSignatureGenerator::InitSignature(
159 if (szLocation && szLocation[0]) {
160 PdfString location(szLocation);
161 PdfString locationLabel(szLocationLabel);
162- m_pSignatureField->SetSignatureLocation(locationLabel, location);
163+ m_pSignatureField->SetSignatureLocation(location);
164 }
165
166 LOG_DBG((0, "InitSignature", "szLocation OK"));
167@@ -171,54 +164,42 @@ void PdfSignatureGenerator::InitSignature(
168
169 LOG_DBG((0, "InitSignature", "Date OK"));
170
171- if (szName && szName[0]) {
172- PdfString name(szName);
173- PdfString nameLabel(szNameLabel);
174- m_pSignatureField->SetSignatureName(nameLabel, name);
175- }
176-
177- LOG_DBG((0, "InitSignature", "szName OK"));
178-
179- m_pSignatureField->SetSignatureSize(SIGNATURE_SIZE);
180+ m_pSignOutputDevice->PdfSignOutputDevice::SetSignatureSize(SIGNATURE_SIZE);
181
182 LOG_DBG((0, "InitSignature", "SIGNATURE_SIZE OK"));
183
184- // if((szImagePath && szImagePath[0]) || (szDescription && szDescription[0]))
185- if (width * height > 0) {
186- try {
187- // m_pSignatureField->SetFontSize(5);
188- m_pSignatureField->SetAppearance(szImagePath, szDescription);
189- LOG_DBG((0, "InitSignature", "SetAppearance OK"));
190- } catch (PdfError& error) {
191- LOG_ERR((0, "InitSignature", "SetAppearance error: %s, %s",
192- PdfError::ErrorMessage(error.GetError()), error.what()));
193- } catch (PdfError* perror) {
194- LOG_ERR((0, "InitSignature", "SetAppearance error2: %s, %s",
195- PdfError::ErrorMessage(perror->GetError()), perror->what()));
196- } catch (std::exception& ex) {
197- LOG_ERR(
198- (0, "InitSignature", "SetAppearance std exception, %s", ex.what()));
199- } catch (std::exception* pex) {
200- LOG_ERR((0, "InitSignature", "SetAppearance std exception2, %s",
201- pex->what()));
202- } catch (...) {
203- LOG_ERR((0, "InitSignature", "SetAppearance unknown error"));
204- }
205- }
206+ // if (width * height > 0) {
207+ // try {
208+ // m_pSignatureField->SetAppearance(szImagePath, szDescription);
209+ // LOG_DBG((0, "InitSignature", "SetAppearance OK"));
210+ // } catch (PdfError& error) {
211+ // LOG_ERR((0, "InitSignature", "SetAppearance error: %s, %s",
212+ // PdfError::ErrorMessage(error.GetError()), error.what()));
213+ // } catch (PdfError* perror) {
214+ // LOG_ERR((0, "InitSignature", "SetAppearance error2: %s, %s",
215+ // PdfError::ErrorMessage(perror->GetError()), perror->what()));
216+ // } catch (std::exception& ex) {
217+ // LOG_ERR(
218+ // (0, "InitSignature", "SetAppearance std exception, %s",
219+ // ex.what()));
220+ // } catch (std::exception* pex) {
221+ // LOG_ERR((0, "InitSignature", "SetAppearance std exception2, %s",
222+ // pex->what()));
223+ // } catch (...) {
224+ // LOG_ERR((0, "InitSignature", "SetAppearance unknown error"));
225+ // }
226+ // }
227
228- if (szGraphometricData && szGraphometricData[0])
229- m_pSignatureField->SetGraphometricData(
230- PdfString("Aruba_Sign_Biometric_Data"), PdfString(szGraphometricData),
231- PdfString(szVersion));
232+ // if (szGraphometricData && szGraphometricData[0])
233+ // m_pSignatureField->SetGraphometricData(
234+ // PdfString("Aruba_Sign_Biometric_Data"),
235+ // PdfString(szGraphometricData), PdfString(szVersion));
236
237- LOG_DBG((0, "InitSignature", "szGraphometricData OK"));
238+ // LOG_DBG((0, "InitSignature", "szGraphometricData OK"));
239
240 LOG_DBG((0, "InitSignature", "m_actualLen %d", m_actualLen));
241 // crea il nuovo doc con il campo di firma
242- int fulllen = m_actualLen * 2 + SIGNATURE_SIZE * 2 +
243- (szGraphometricData
244- ? (strlen(szGraphometricData) + strlen(szVersion) + 100)
245- : 0);
246+ int fulllen = m_actualLen * 2 + SIGNATURE_SIZE * 2;
247
248 int mainDoclen = 0;
249 m_pMainDocbuffer = NULL;
250@@ -227,7 +208,7 @@ void PdfSignatureGenerator::InitSignature(
251 LOG_DBG((0, "InitSignature", "fulllen %d", fulllen));
252 m_pMainDocbuffer = new char[fulllen];
253 PdfOutputDevice pdfOutDevice(m_pMainDocbuffer, fulllen);
254- m_pPdfDocument->Write(&pdfOutDevice);
255+ m_pPdfMemDocument->Write(&pdfOutDevice);
256 mainDoclen = pdfOutDevice.GetLength();
257 } catch (::PoDoFo::PdfError err) {
258 if (m_pMainDocbuffer) {
259@@ -301,32 +282,32 @@ void PdfSignatureGenerator::GetSignedPdf(UUCByteArray& signedPdf) {
260 }
261
262 const double PdfSignatureGenerator::getWidth(int pageIndex) {
263- if (m_pPdfDocument) {
264- PdfPage* pPage = m_pPdfDocument->GetPage(pageIndex);
265+ if (m_pPdfMemDocument) {
266+ PdfPage* pPage = m_pPdfMemDocument->GetPage(pageIndex);
267 return pPage->GetPageSize().GetWidth();
268 }
269 return 0;
270 }
271
272 const double PdfSignatureGenerator::getHeight(int pageIndex) {
273- if (m_pPdfDocument) {
274- PdfPage* pPage = m_pPdfDocument->GetPage(pageIndex);
275+ if (m_pPdfMemDocument) {
276+ PdfPage* pPage = m_pPdfMemDocument->GetPage(pageIndex);
277 return pPage->GetPageSize().GetHeight();
278 }
279 return 0;
280 }
281
282 const double PdfSignatureGenerator::lastSignatureY(int left, int bottom) {
283- if (!m_pPdfDocument) return -1;
284+ if (!m_pPdfMemDocument) return -1;
285 /// Find the document catalog dictionary
286- const PdfObject* const trailer = m_pPdfDocument->GetTrailer();
287+ const PdfObject* const trailer = m_pPdfMemDocument->GetTrailer();
288 if (!trailer->IsDictionary()) return -1;
289 const PdfObject* const catalogRef =
290 trailer->GetDictionary().GetKey(PdfName("Root"));
291 if (catalogRef == 0 || !catalogRef->IsReference())
292 return -2; // throw std::invalid_argument("Invalid /Root entry");
293 const PdfObject* const catalog =
294- m_pPdfDocument->GetObjects().GetObject(catalogRef->GetReference());
295+ m_pPdfMemDocument->GetObjects().GetObject(catalogRef->GetReference());
296 if (catalog == 0 || !catalog->IsDictionary())
297 return -3; // throw std::invalid_argument("Invalid or non-dictionary
298 // referenced by /Root entry");
299@@ -336,8 +317,8 @@ const double PdfSignatureGenerator::lastSignatureY(int left, int bottom) {
300 catalog->GetDictionary().GetKey(PdfName("AcroForm"));
301 if (acroFormValue == 0) return bottom;
302 if (acroFormValue->IsReference())
303- acroFormValue =
304- m_pPdfDocument->GetObjects().GetObject(acroFormValue->GetReference());
305+ acroFormValue = m_pPdfMemDocument->GetObjects().GetObject(
306+ acroFormValue->GetReference());
307
308 if (!acroFormValue->IsDictionary()) return bottom;
309
310@@ -346,8 +327,8 @@ const double PdfSignatureGenerator::lastSignatureY(int left, int bottom) {
311 if (fieldsValue == 0) return bottom;
312
313 if (fieldsValue->IsReference())
314- fieldsValue =
315- m_pPdfDocument->GetObjects().GetObject(acroFormValue->GetReference());
316+ fieldsValue = m_pPdfMemDocument->GetObjects().GetObject(
317+ acroFormValue->GetReference());
318
319 if (!fieldsValue->IsArray()) return bottom;
320
321@@ -360,8 +341,8 @@ const double PdfSignatureGenerator::lastSignatureY(int left, int bottom) {
322
323 for (unsigned int i = 0; i < array.size(); i++) {
324 const PdfObject* pObj =
325- m_pPdfDocument->GetObjects().GetObject(array[i].GetReference());
326- if (IsSignatureField(m_pPdfDocument, pObj)) {
327+ m_pPdfMemDocument->GetObjects().GetObject(array[i].GetReference());
328+ if (IsSignatureField(m_pPdfMemDocument, pObj)) {
329 const PdfObject* const keyRect =
330 pObj->GetDictionary().GetKey(PdfName("Rect"));
331 if (keyRect == 0) {
332diff --git a/libs/sign-sdk/src/disigonsdk.cpp b/libs/sign-sdk/src/disigonsdk.cpp
333index 250c93f..84e1b0b 100644
334--- a/libs/sign-sdk/src/disigonsdk.cpp
335+++ b/libs/sign-sdk/src/disigonsdk.cpp
336@@ -5,6 +5,7 @@
337
338 #include <libxml/tree.h>
339 #include <libxml/xmlmemory.h>
340+#include <podofo/podofo.h>
341 #include <stdlib.h>
342 #include <string.h>
343