Loading...
Searching...
No Matches
VerificationOptions.h
Go to the documentation of this file.
1//---------------------------------------------------------------------------------------
2// Copyright (c) 2001-2025 by Apryse Software Inc. All Rights Reserved.
3// Consult legal.txt regarding legal and license information.
4//---------------------------------------------------------------------------------------
5
6#ifndef PDFTRON_H_CPPPDFVerificationOptions
7#define PDFTRON_H_CPPPDFVerificationOptions
8#include <C/PDF/TRN_VerificationOptions.h>
9
10#include <Common/BasicTypes.h>
11#include <Common/UString.h>
12#include <PDF/PDFDoc.h>
14
15namespace pdftron { namespace PDF {
16
17
22{
23public:
24 //enums:
25
26 // An enumeration representing the level of security to use when verifying digital signatures.
28 // For compatibility with other vendors such as Acrobat, one can use e_compatibility_and_archiving.
30 // The e_maximum mode is a highly-restrictive mode which disables many common features of PDF digital signatures.
32 };
33
34 /* An enumeration representing the least-secure type of reference-time to use when verifying digital signatures.
35 One can choose the time of signing (not very secure), timestamp time (more secure), current time (most secure, lower verification rate).
36 Note: this is orthogonal to the expiry verification mode (shell/chain/hybrid). */
37 enum TimeMode {
38 /* If secure timestamp available, check signature certificates against the secure timestamp. Otherwise,
39 if available, check signature certificates against the signingTime attribute in the PKCS #7/CMS of the signature.
40 Otherwise, use the current time. This is the default option. Less secure. Suitable for archiving
41 and interoperability with other vendors. */
43 /* If available, check signature certificates against the signingTime attribute in the PKCS #7/CMS data
44 of the signature. Otherwise, use the current time. */
46 /* Check signature certificates against the current time.
47 This is the most secure, and the most restrictive option. */
49 };
50
51 // An enumeration representing the level of trust associated with a particular certificate. Multiple flag values can be combined using bitwise operators.
53 e_signing_trust = 1, // analogous to "kPSSigTrustSigning" in FDF cert exchange specification. Automatically set even when not specified, just like in Acrobat.
54 e_certification_trust = 2, // analogous to "kPSSigTrustAuthenticDocuments" in FDF cert exchange specification. Allows certifications using this identity to be verified.
55 e_dynamic_content = 4, /* analogous to "kPSSigTrustDynamicContent" in FDF cert exchange specification. Just like in Acrobat, does not invalidate dynamic documents,
56 just intended to stop viewers from allowing its use on documents which are not trusted for it. */
57 e_javascript = 16, /* analogous to "kPSSigTrustJavaScript" in FDF cert exchange specification. Just like in Acrobat, does not invalidate JavaScript-containing documents,
58 just intended to stop viewers from allowing its use on documents which are not trusted for it. */
59 e_identity = 32, // analogous to "kPSSigTrustIdentity" in FDF cert exchange specification. If this flag is not set, all other flags are ignored, and certificate is used only for path building.
60 e_trust_anchor = 64, // analogous to "kPSSigTrustAnchor" in FDF cert exchange specification. If this flag is set, paths may end with this certificate, and no revocation checks are done for it.
61 e_default_trust = 97, // handy shortcut for what Acrobat does by default -- trust for everything except certification, javascript, and dynamic
62 e_complete_trust = 119 // another handy shortcut for testing
63 };
65 VerificationOptions(TRN_VerificationOptions impl);
68
69 void Destroy();
70
71 //methods:
72
79
91 void AddTrustedCertificate(const UChar* in_certificate_buf, size_t in_buf_size, const UInt16 in_trust_flags = e_default_trust);
92
101 void AddTrustedCertificate(const UString& in_filepath, const UInt16 in_trust_flags = e_default_trust);
102
116 void AddTrustedCertificates(const UChar* in_P7C_binary_DER_certificates_file_data, const size_t in_size);
117
127 void LoadTrustList(const FDF::FDFDoc& in_fdf_cert_exchange_data);
128
134 void EnableModificationVerification(bool in_on_or_off);
135
141 void EnableDigestVerification(bool in_on_or_off);
142
148 void EnableTrustVerification(bool in_on_or_off);
149
155 void SetRevocationTimeout(const UInt32 in_revocation_timeout_milliseconds);
156
172 void EnableOnlineCRLRevocationChecking(bool in_on_or_off);
173
179 void EnableOnlineOCSPRevocationChecking(bool in_on_or_off);
180
181
198 void EnableOnlineRevocationChecking(bool in_on_or_off);
199
200
207
215
216
217#ifndef SWIGHIDDEN
218 TRN_VerificationOptions m_impl;
219#endif
220
221private:
222
223#ifndef SWIGHIDDEN
224 mutable bool m_owner;
225#endif
226};
227
228#include <Impl/VerificationOptions.inl>
229} //end pdftron
230} //end PDF
231
232
233#endif //PDFTRON_H_CPPPDFVerificationOptions
VerificationOptions(const VerificationOptions &other)
void EnableModificationVerification(bool in_on_or_off)
void LoadTrustList(const FDF::FDFDoc &in_fdf_cert_exchange_data)
void EnableDigestVerification(bool in_on_or_off)
VerificationOptions(TRN_VerificationOptions impl)
void SetRevocationTimeout(const UInt32 in_revocation_timeout_milliseconds)
Crypto::X509Certificate GetTrustedCertificate(const UInt32 index)
void AddTrustedCertificate(const UChar *in_certificate_buf, size_t in_buf_size, const UInt16 in_trust_flags=e_default_trust)
void EnableTrustVerification(bool in_on_or_off)
void AddTrustedCertificate(const UString &in_filepath, const UInt16 in_trust_flags=e_default_trust)
void AddTrustedCertificates(const UChar *in_P7C_binary_DER_certificates_file_data, const size_t in_size)
VerificationOptions & operator=(const VerificationOptions &other)
void EnableOnlineRevocationChecking(bool in_on_or_off)
VerificationOptions(SecurityLevel level)
void EnableOnlineOCSPRevocationChecking(bool in_on_or_off)
void EnableOnlineCRLRevocationChecking(bool in_on_or_off)
TRN_UInt32 UInt32
Definition BasicTypes.h:13
TRN_UChar UChar
Definition BasicTypes.h:12
TRN_UInt16 UInt16
Definition BasicTypes.h:14