PDF SDK Documentation

Comprehensive Guide for Developers: Features, Integration, and API Reference

Loading...
Searching...
No Matches
security.h
Go to the documentation of this file.
1// Copyright (c) 2009-2025 Avanquest Software. All rights reserved.
2
3#ifndef PDFSDK_CORE_SECURITY_H_INCLUDED_
4#define PDFSDK_CORE_SECURITY_H_INCLUDED_
5
12
13#ifdef __cplusplus
14extern "C" {
15#endif
16
47
87
88typedef PDErrCode(PDFSDK_CALLCONV* PDCryptNewAuthDataProc)(void* clientData, void** pAuthData);
89typedef PDErrCode(PDFSDK_CALLCONV* PDCryptFreeAuthDataProc)(void* authData);
90
91typedef PDErrCode(PDFSDK_CALLCONV* PDCryptNewSecurityDataProc)(void* clientData,
92 PDObject encryptDict,
93 void** pSecurityData);
94typedef PDErrCode(PDFSDK_CALLCONV* PDCryptCopySecurityDataProc)(void* securityData,
95 void** pSecurityData);
96typedef PDErrCode(PDFSDK_CALLCONV* PDCryptFreeSecurityDataProc)(void* securityData);
97
98typedef PDErrCode(PDFSDK_CALLCONV* PDCryptGetKeyDataProc)(void* securityData,
99 PDAtom cryptFilter,
100 PDObject decodeParms,
101 void* buffer,
102 size_t bufsize,
103 size_t* pSize,
104 PDAtom* pMethod);
105
106typedef PDErrCode(PDFSDK_CALLCONV* PDCryptEncryptProc)(void* securityData,
107 const void* input,
108 size_t inputSize,
109 void* output,
110 size_t outputSize,
111 uint32_t objnum,
112 uint16_t generation,
113 PDAtom cryptFilter,
114 PDObject decodeParms,
115 size_t* pOutputSize);
116
117typedef PDErrCode(PDFSDK_CALLCONV* PDCryptAuthorizeProc)(void* securityData,
118 PDPermReqObj object,
119 PDPermReqOp operation,
120 const void* authData,
121 bool* pGranted);
122
123typedef PDErrCode(PDFSDK_CALLCONV* PDCryptFillEncryptDictProc)(void* securityData,
124 PDDoc doc,
125 PDObject encryptDict);
126
127typedef PDErrCode(PDFSDK_CALLCONV* PDCryptEncryptMetadataProc)(void* securityData, bool* pEncrypt);
128
129typedef PDErrCode(PDFSDK_CALLCONV* PDCryptFreeClientDataProc)(void* clientData);
130
131typedef struct PDSecurityHandler {
132 PDCryptNewAuthDataProc newAuthData;
133 PDCryptFreeAuthDataProc freeAuthData;
134 PDCryptNewSecurityDataProc newSecurityData;
135 PDCryptCopySecurityDataProc copySecurityData;
136 PDCryptFreeSecurityDataProc freeSecurityData;
137 PDCryptGetKeyDataProc getCryptKey;
138 PDCryptEncryptProc encrypt;
139 PDCryptEncryptProc decrypt;
140 PDCryptFillEncryptDictProc fillEncryptDict;
141 PDCryptAuthorizeProc authorize;
142 PDCryptEncryptMetadataProc encryptMetadata;
143 PDCryptFreeClientDataProc freeClientData;
145
146typedef void* PDStdSecurityData;
147
155enum {
159 kPDStdPermEdit = 0x08,
162 kPDStdPermCopy = 0x10,
164 kPDStdPermEditNotes = 0x20,
168 kPDStdPermSaveAs = 0x40,
171 kPDStdPermExt = 0x80,
174 kPDStdPermFillAndSign = 0x100,
177 kPDStdPermAccessible = 0x200,
179 kPDStdPermDocAssembly = 0x400,
182 kPDStdPermOwner = 0x8000,
183 kPDStdPermFormSubmit = 0x10000,
187 kPDStdPermFormSpawnTempl = 0x20000
191typedef uint32_t PDStdPerms;
192
196enum { kPDStdPasswordMaxChars = 255 };
197typedef wchar_t PDStdPassword[kPDStdPasswordMaxChars + 1];
198
206typedef struct
207{
211 PDStdPassword userPassword;
212
218
222 PDStdPassword ownerPassword;
223
224 /*
225 * Set to `true` if there is an owner password.
226 * If this is `true` but `ownerPassword` is empty then owner is not authorized yet
227 */
228 bool hasOwnerPassword;
229
233 PDStdPerms permissions;
234
239
246
253
261
267
273
275
279enum {
280 kPDStdSecurityModifyUserPassword = 0x01,
281 kPDStdSecurityModifyOwnerPassword = 0x02
282};
283typedef uint32_t PDStdSecurityModifyFlags;
284
301PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocSetNewSecurityHandler(PDDoc doc, PDAtom name, void* securityData);
302
323PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetSecurityHandlerData(PDDoc doc, void** pSecurityData);
324
335PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetSecurityHandlerName(PDDoc doc, PDAtom* pName);
336
356PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetNewSecurityHandlerData(PDDoc doc, void** pSecurityData);
357
368PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetNewSecurityHandlerName(PDDoc doc, PDAtom* pFilter);
369
370PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocEncryptionIsModified(PDDoc doc, bool* pValue);
371
372PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocPermRequest(PDDoc doc, PDPermReqObj permReqObj, PDPermReqOp permReqOp, const void* authData, bool* pGranted);
373PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocPermRequestSecurity(PDDoc doc, PDPermReqObj permReqObj, PDPermReqOp permReqOp, const void* authData, bool* pGranted);
374PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocPermRequestWithAuth(PDDoc doc, PDPermReqObj permReqObj, PDPermReqOp permReqOp, bool* pGranted);
375
376PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDSecurityRegisterHandler(PDAtom filter, const PDSecurityHandler* handler, void* clientData);
377PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDSecurityNewAuthData(PDAtom filter, void** pAuthData);
378PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDSecurityFreeAuthData(PDAtom filter, void* authData);
379
380PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDStdSecurityDataNew(PDDoc doc, PDStdSecurityData* pSecurityData);
381PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDStdSecurityDataUpdateParams(PDStdSecurityData securityData,
382 PDStdSecurityModifyFlags modifyFlags,
383 const PDStdSecurityParams* params);
384PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDStdSecurityDataGetParams(PDStdSecurityData securityData, PDStdSecurityParams* pParams);
385PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDStdSecurityDataFree(PDStdSecurityData securityData);
386
387PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDStdPasswordSetChars(PDStdPassword* authData, const wchar_t* chars);
388
389#ifdef __cplusplus
390}
391#endif
392
393#endif // PDFSDK_CORE_SECURITY_H_INCLUDED_
Document API.
int32_t PDErrCode
Definition errors.h:44
@ kPDStdPermHighPrint
Definition security.h:181
@ kPDStdPermSaveAs
Definition security.h:168
@ kPDStdPermFormSubmit
Definition security.h:183
@ kPDStdPermPrint
Definition security.h:158
@ kPDStdPermFillAndSign
Definition security.h:174
@ kPDStdPermSecure
Definition security.h:157
@ kPDStdPermEdit
Definition security.h:159
@ kPDStdPermAccessible
Definition security.h:177
@ kPDStdPermEditNotes
Definition security.h:164
@ kPDStdPermOpen
Definition security.h:156
@ kPDStdPermExt
Definition security.h:171
@ kPDStdPermDocAssembly
Definition security.h:179
@ kPDStdPermCopy
Definition security.h:162
@ kPDStdPermFormSpawnTempl
Definition security.h:187
PDPermReqObj
Specifies the type of object to check permissions for.
Definition security.h:33
@ kPDPermReqObjAnnot
Definition security.h:37
@ kPDPermReqObjPage
Definition security.h:35
@ kPDPermReqObjForm
Definition security.h:38
@ kPDPermReqObjDoc
Definition security.h:34
@ kPDPermReqObjContent
Definition security.h:36
@ kPDPermReqObjAttachment
Definition security.h:42
@ kPDPermReqObjBookmark
Definition security.h:40
PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetSecurityHandlerName(PDDoc doc, PDAtom *pName)
PDPermReqOp
Specifies the operation to check permissions for.
Definition security.h:61
@ kPDPermReqOpModify
Definition security.h:66
@ kPDPermReqOpInsert
Definition security.h:62
@ kPDPermReqOpCopyForAccessibility
Definition security.h:81
@ kPDPermReqOpExtract
Definition security.h:67
@ kPDPermReqOpAccessible
Definition security.h:68
@ kPDPermReqOpCreationOfTemplatePages
Definition security.h:83
@ kPDPermReqOpMove
Definition security.h:64
@ kPDPermReqOpPrintHigh
Definition security.h:74
@ kPDPermReqOpSecure
Definition security.h:71
@ kPDPermReqOpDelete
Definition security.h:63
@ kPDPermReqOpCopy
Definition security.h:79
@ kPDPermReqOpOpen
Definition security.h:70
@ kPDPermReqOpPrint
Definition security.h:73
@ kPDPermReqOpFullSave
Definition security.h:77
@ kPDPermReqOpFillIn
Definition security.h:75
@ kPDPermReqOpRotate
Definition security.h:65
@ kPDPermReqOpAllowDocAssembly
Definition security.h:85
PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetSecurityHandlerData(PDDoc doc, void **pSecurityData)
PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetNewSecurityHandlerName(PDDoc doc, PDAtom *pFilter)
PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocSetNewSecurityHandler(PDDoc doc, PDAtom name, void *securityData)
PDF_CORE_API PDErrCode PDFSDK_CALLCONV PDDocGetNewSecurityHandlerData(PDDoc doc, void **pSecurityData)
Definition objects.h:83
Definition security.h:131
Definition security.h:207
int version
Definition security.h:245
bool encryptMetadata
Definition security.h:266
bool encryptAttachmentsOnly
Definition security.h:272
PDStdPerms permissions
Definition security.h:233
PDAtom cryptMethod
Definition security.h:252
bool hasUserPassword
Definition security.h:217
int keyLength
Definition security.h:260
PDStdPassword ownerPassword
Definition security.h:222
PDStdPassword userPassword
Definition security.h:211
int revision
Definition security.h:238