Go to the documentation of this file.00001
00020 #ifndef _FPDFSECURITY_H_
00021 #define _FPDFSECURITY_H_
00022
00023 #ifndef _FPDFVIEW_H_
00024 #include "fpdfview.h"
00025 #endif
00026
00027 #ifdef _WIN32
00028
00029 #define DLLEXPORT __declspec( dllexport )
00030 #define STDCALL __stdcall
00031 #define CDECL _cdecl
00032 #else
00033 #define DLLEXPORT
00034 #define STDCALL
00035 #define CDECL
00036 #endif
00037
00038
00039 #ifdef __cplusplus
00040 extern "C" {
00041 #endif
00042
00043 typedef void* FPDF_DECRYPT_OUTPUT;
00044
00050 #define FPDF_PERM_PRINT 0x0004
00051
00052 #define FPDF_PERM_MODIFY 0x0008
00053
00054 #define FPDF_PERM_EXTRACT 0x0010
00055
00056 #define FPDF_PERM_ANNOT_FORM 0x0020
00057
00058 #define FPDF_PERM_FILL_FORM 0x0100
00059
00060 #define FPDF_PERM_EXTRACT_ACCESS 0x0200
00061
00062 #define FPDF_PERM_ASSEMBLE 0x0400
00063
00064 #define FPDF_PERM_PRINT_HIGH 0x0800
00065
00067 #define FPDFCIPHER_NONE 0
00068 #define FPDFCIPHER_RC4 1
00069 #define FPDFCIPHER_AES 2
00070
00077 struct FPDF_SECURITY_HANDLER
00078 {
00084 void* (CDECL *CreateHandler)();
00085
00093 unsigned long (CDECL *GetPermissions)(void* handler,unsigned long permission);
00094
00103 void* (CDECL *CreateFilter)(void* handler, int objnum, int version);
00104
00118 int (CDECL *FilterInput)(void* filter, FPDF_DECRYPT_OUTPUT output, FPDF_BYTESTRING src_data, int src_len);
00119
00133 int (CDECL *FinishFilter)(void* filter, FPDF_DECRYPT_OUTPUT output);
00134
00140 void (CDECL *FinishHandler)(void* handler);
00141
00153 FPDF_BOOL (CDECL *GetCryptInfo)(void* handler,int* cipher,unsigned char * buffer, int* keylen);
00154
00166 FPDF_DWORD (CDECL *EncryptGetSize)(void* handler,int objnum, int version, unsigned char* src_buf, FPDF_DWORD src_size);
00167
00181 FPDF_BOOL (CDECL *EncryptContent)(void* handler,int objnum, int version, unsigned char* src_buf, FPDF_DWORD src_size,
00182 unsigned char* dest_buf, FPDF_DWORD* dest_size);
00183
00184 };
00194 DLLEXPORT void STDCALL FPDF_RegisterSecurityHandler(FPDF_BYTESTRING handler_name,
00195 struct FPDF_SECURITY_HANDLER* pHandler);
00196
00197
00204 DLLEXPORT void STDCALL FPDF_DestroySecurityHandler(FPDF_BYTESTRING handler_name,
00205 struct FPDF_SECURITY_HANDLER* pHandler);
00206
00207
00215 DLLEXPORT FPDF_BOOL STDCALL FPDF_OutputDecrypted(FPDF_DECRYPT_OUTPUT output, FPDF_BYTESTRING data, int len);
00216
00225 DLLEXPORT FPDF_BOOL STDCALL FPDF_CustomEncrypt(FPDF_DOCUMENT document, FPDF_STRING handler_name, FPDF_SECURITY_HANDLER* pHandler,FPDF_FILEWRITE* fileWrite);
00226
00233 DLLEXPORT FPDF_BOOL STDCALL FPDF_RemoveSecurity(FPDF_DOCUMENT document, FPDF_FILEWRITE* fileWrite);
00234
00240 DLLEXPORT int STDCALL FPDF_GetPasswordLevel(FPDF_DOCUMENT doc);
00241
00242 #ifdef __cplusplus
00243 };
00244 #endif
00245
00246 #endif
00247