fpdfsecurity.h
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