PoDoFo 1.1.0
Loading...
Searching...
No Matches
PdfSignature.h
1
8#ifndef PDF_SIGNATURE_H
9#define PDF_SIGNATURE_H
10
11#include "PdfDeclarations.h"
12
13#include "PdfAnnotation.h"
14#include "PdfField.h"
15#include "PdfDate.h"
16#include "PdfData.h"
17#include <podofo/auxiliary/InputDevice.h>
18#include <podofo/auxiliary/OutputDevice.h>
19
20namespace PoDoFo {
21
22class PdfAcroForm;
23
24enum class PdfCertPermission : uint8_t
25{
26 NoPerms = 1,
27 FormFill = 2,
28 Annotations = 3,
29};
30
31struct PdfSignatureBeacons final
32{
33 PdfSignatureBeacons();
34 charbuff ContentsBeacon;
35 charbuff ByteRangeBeacon;
36 std::shared_ptr<size_t> ContentsOffset;
37 std::shared_ptr<size_t> ByteRangeOffset;
38};
39
40class PODOFO_API PdfSignature final : public PdfField
41{
42 friend class PdfField;
43 friend class PdfSigningContext;
44
45private:
46 PdfSignature(PdfAcroForm& acroform, std::shared_ptr<PdfField>&& parent);
47
48 PdfSignature(PdfAnnotationWidget& widget, std::shared_ptr<PdfField>&& parent);
49
50 PdfSignature(PdfObject& obj, PdfAcroForm* acroform);
51
52public:
57 void SetSignerName(nullable<const PdfString&> text);
58
63 void SetSignatureReason(nullable<const PdfString&> text);
64
69 void SetSignatureLocation(nullable<const PdfString&> text);
70
71 [[deprecated("Use the SetCreatingApplication method instead")]]
72 void SetSignatureCreator(nullable<const PdfString&> creator);
73
78 void SetCreatingApplication(nullable<const PdfName&> application);
79
82 void SetSignatureDate(nullable<const PdfDate&> sigDate);
83
88 void AddCertificationReference(PdfCertPermission perm = PdfCertPermission::NoPerms);
89
94 nullable<const PdfString&> GetSignerName() const;
95
100 nullable<const PdfString&> GetSignatureReason() const;
101
106 nullable<const PdfString&> GetSignatureLocation() const;
107
112 nullable<PdfDate> GetSignatureDate() const;
113
119 void EnsureValueObject();
120
121 PdfSignature* GetParent();
122 const PdfSignature* GetParent() const;
123
129 bool TryGetPreviousRevision(InputStreamDevice& input, OutputStreamDevice& output) const;
130
131protected:
132 PdfObject* getValueObject() const override;
133
134private:
148 void PrepareForSigning(const std::string_view& filter,
149 const std::string_view& subFilter,
150 const std::string_view& type,
151 const PdfSignatureBeacons& beacons);
152
153 // To be called by SignDocument()
154 void SetContentsByteRangeNoDirtySet(const bufferview& contents, PdfArray&& byteRange);
155
156 void ensureValueObject();
157private:
158 void init(PdfAcroForm& acroForm);
159
160private:
161 PdfObject* m_ValueObj;
162};
163
164}
165
166#endif // PDF_SIGNATURE_H
SPDX-FileCopyrightText: (C) 2005 Dominik Seichter domseichter@web.de SPDX-FileCopyrightText: (C) 2020...
SPDX-FileCopyrightText: (C) 2022 Francesco Pretto ceztko@gmail.com SPDX-License-Identifier: LGPL-2....
Definition basetypes.h:16