Foxit PDF SDK
fs_security.h
Go to the documentation of this file.
1 
15 #ifndef FS_SECURITY_H_
16 #define FS_SECURITY_H_
17 
18 #include "common/fs_common.h"
19 #include "pdf/fs_pdfdoc.h"
20 
26 namespace foxit {
30 namespace pdf {
31 // forward declaration
32 class CustomSecurityCallback;
33 class RMSSecurityCallback;
34 
56 class SecurityHandler : public Base {
57  public:
63  typedef enum _CipherType {
73  } CipherType;
74 
77 #ifndef __EMSCRIPTEN_RENDER__
78 
83  SecurityHandler(const SecurityHandler& other);
84 
85  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
86  explicit SecurityHandler(FS_HANDLE handle);
87 
89  virtual ~SecurityHandler();
90 
99 #endif
100 
107  bool operator == (const SecurityHandler& other);
115  bool operator != (const SecurityHandler& other);
116 
124  bool IsEmpty() const;
125 
133 
134 };
135 
137 class StdEncryptData FS_FINAL {
138  public:
159  int key_length) {
160  this->is_encrypt_metadata = is_encrypt_metadata;
161  this->user_permissions = user_permissions;
162  this->cipher = cipher;
163  this->key_length = key_length;
164  }
165 
168  : is_encrypt_metadata(true)
169  , user_permissions(0)
170  , cipher(SecurityHandler::e_CipherNone)
171  , key_length(0) {}
172 
181  cipher = other.cipher;
182  key_length = other.key_length;
183  }
184 
195  cipher = other.cipher;
196  key_length = other.key_length;
197  return *this;
198  }
199 
207  bool operator == (const StdEncryptData& other) const {
208  return (is_encrypt_metadata == other.is_encrypt_metadata &&
210  cipher == other.cipher &&
211  key_length == other.key_length);
212  }
213 
221  bool operator != (const StdEncryptData& other) const {
222  return !(is_encrypt_metadata == other.is_encrypt_metadata &&
224  cipher == other.cipher &&
225  key_length == other.key_length);
226  }
227 
250  this->is_encrypt_metadata = is_encrypt_metadata;
251  this->user_permissions = user_permissions;
252  this->cipher = cipher;
253  this->key_length = key_length;
254  }
255 
281 };
282 
288 class StdSecurityHandler FS_FINAL : public SecurityHandler {
289  public:
296  typedef enum _ModifyFlag {
303  } ModifyFlag;
304 
305 
313  explicit StdSecurityHandler(const foxit::pdf::SecurityHandler& other);
314 
330  bool Initialize(const StdEncryptData& encrypt_data, const String& user_password, const String& owner_password);
331 
344  bool InitializeW(const StdEncryptData& encrypt_data, const WString& user_password, const WString& owner_password);
345 
361  void SetAES256ModifyFlags(uint32 modify_flags);
362 };
363 
365 class CertificateEncryptData FS_FINAL {
366  public:
378  this->is_encrypt_metadata = is_encrypt_metadata;
379  this->cipher = cipher;
380  this->envelopes = envelopes;
381  }
382 
385  : is_encrypt_metadata(true)
386  , cipher(SecurityHandler::e_CipherNone) {}
387 
395  cipher = other.cipher;
396  envelopes = other.envelopes;
397  }
398 
408  cipher = other.cipher;
409  envelopes = other.envelopes;
410  return *this;
411  }
412 
420  bool operator == (const CertificateEncryptData& other) const {
421  if (is_encrypt_metadata == other.is_encrypt_metadata && cipher == other.cipher) {
422  if (envelopes.GetSize() == other.envelopes.GetSize()) {
423  for (size_t i=0; i<envelopes.GetSize(); i++) {
424  if (envelopes[i] != other.envelopes[i]) return false;
425  }
426  return true;
427  }
428  }
429  return false;
430  }
431 
439  bool operator != (const CertificateEncryptData& other) const {
440  if (!(is_encrypt_metadata == other.is_encrypt_metadata && cipher == other.cipher)) {
441  if (envelopes.GetSize() == other.envelopes.GetSize()) {
442  if (envelopes.GetSize() == 0) return false;
443  for (size_t i=0; i<envelopes.GetSize(); i++) {
444  if (envelopes[i] == other.envelopes[i]) return false;
445  }
446  return true;
447  }
448  }
449  return false;
450  }
451 
465  this->is_encrypt_metadata = is_encrypt_metadata;
466  this->cipher = cipher;
467  this->envelopes =envelopes;
468  }
469 
485 };
486 
487 #if (_FX_OS_ == _FX_IOS_ || _FX_OS_ == _FX_ANDROID_ || defined(SWIG)) && !defined(_SWIG_JAVA_) && !defined(_SWIG_DOTNET_) && !defined(_SWIG_PYTHON_) && !defined(_OC_) && !defined(_SWIG_MACOC_) && !defined(_SWIG_NODEJS_)
488 
489 class Envelope : public Base {
490  public:
497  Envelope(const void* buffer, size_t size);
503  Envelope(const char* certFilePath);
504 
505  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
506  explicit Envelope(FS_HANDLE handle);
508  Envelope(const Envelope& other);
510  bool operator==(const Envelope& other) const;
512  bool operator!=(const Envelope& other) const;
513 
522  String GetDecryptionKey(const char* p12FilePath, const String& password);
523 
524 };
525 
527 typedef CFX_ArrayTemplate<Envelope> EnvelopeArray;
528 
529 #endif
530 
537  public:
546 
547 #if (_FX_OS_ == _FX_IOS_ || _FX_OS_ == _FX_ANDROID_ || defined(SWIG)) && !defined(_SWIG_JAVA_) && !defined(_SWIG_DOTNET_) && !defined(_SWIG_PYTHON_) && !defined(_OC_) && !defined(_SWIG_MACOC_) && !defined(_SWIG_NODEJS_)
548 
560  bool Initialize(foxit::pdf::EnvelopeArray envelopes, foxit::pdf::SecurityHandler::CipherType cipher, bool is_encrypt_metadata);
561 #endif // (_FX_OS_ == _FX_IOS_ || _FX_OS_ == _FX_ANDROID_ || defined(SWIG)) && !defined(_SWIG_JAVA_) && !defined(_SWIG_DOTNET_) && !defined(_OC_) && !defined(_SWIG_MACOC_)
562 
576  bool Initialize(const CertificateEncryptData& encrypt_data, const String& encrypt_key);
577 };
578 
580 class DRMEncryptData FS_FINAL {
581  public:
603  this->is_encrypt_metadata = is_encrypt_metadata;
604  this->sub_filter = sub_filter;
605  this->cipher = cipher;
606  this->key_length = key_length;
607  this->is_owner = is_owner;
608  this->user_permissions = user_permissions;
609  }
610 
613  : is_encrypt_metadata(true)
614  , sub_filter("")
615  , cipher(SecurityHandler::e_CipherNone)
616  , key_length(0)
617  , is_owner(false)
618  , user_permissions(0) {}
619 
627  sub_filter = other.sub_filter;
628  cipher = other.cipher;
629  key_length = other.key_length;
630  is_owner = other.is_owner;
632  }
633 
643  sub_filter = other.sub_filter;
644  cipher = other.cipher;
645  key_length = other.key_length;
646  is_owner = other.is_owner;
648  return *this;
649  }
650 
658  bool operator == (const DRMEncryptData& other) const {
659  return (is_encrypt_metadata == other.is_encrypt_metadata &&
660  sub_filter == other.sub_filter &&
661  cipher == other.cipher && key_length == other.key_length &&
662  is_owner == other.is_owner &&
664  }
665 
673  bool operator != (const DRMEncryptData& other) const {
674  return !(is_encrypt_metadata == other.is_encrypt_metadata &&
675  sub_filter == other.sub_filter &&
676  cipher == other.cipher && key_length == other.key_length &&
677  is_owner == other.is_owner &&
679  }
680 
704  this->is_encrypt_metadata = is_encrypt_metadata;
705  this->sub_filter = sub_filter;
706  this->cipher = cipher;
707  this->key_length = key_length;
708  this->is_owner = is_owner;
709  this->user_permissions = user_permissions;
710  }
711 
735  bool is_owner;
741 };
742 
748 class DRMSecurityHandler FS_FINAL : public SecurityHandler {
749  public:
757  explicit DRMSecurityHandler(const foxit::pdf::SecurityHandler& other);
758 
769  bool Initialize(const DRMEncryptData& encrypt_data, const char* file_id, const String& initial_key);
788  WString GetDRMValue(const char* key);
808  bool SetDRMValue(const char* key, const WString& value);
809 
820  bool VerifyEncryptionParams();
821 };
822 
824 class CustomEncryptData FS_FINAL {
825  public:
835  this->is_encrypt_metadata = is_encrypt_metadata;
836  this->filter = filter;
837  this->sub_filter = sub_filter;
838  }
839 
842  : is_encrypt_metadata(true)
843  , filter("")
844  , sub_filter("") {}
845 
853  filter = other.filter;
854  sub_filter = other.sub_filter;
855  }
865  filter = other.filter;
866  sub_filter = other.sub_filter;
867  return *this;
868  }
869 
877  bool operator == (const CustomEncryptData& other) const {
878  return (is_encrypt_metadata == other.is_encrypt_metadata &&
879  filter == other.filter && sub_filter == other.sub_filter);
880  }
881 
889  bool operator != (const CustomEncryptData& other) const {
890  return !(is_encrypt_metadata == other.is_encrypt_metadata &&
891  filter == other.filter && sub_filter == other.sub_filter);
892  }
903  void Set(bool is_encrypt_metadata, const String& filter, const String& sub_filter) {
904  this->is_encrypt_metadata = is_encrypt_metadata;
905  this->filter = filter;
906  this->sub_filter = sub_filter;
907  }
908 
918 };
919 
925 class CustomSecurityHandler FS_FINAL : public SecurityHandler {
926  public:
934  explicit CustomSecurityHandler(const foxit::pdf::SecurityHandler& other);
935 
956  bool Initialize(const CustomEncryptData& encrypt_data,
957  const CustomSecurityCallback* callback, const char* encrypt_info = "");
958 };
959 
961 class RMSEncryptData FS_FINAL {
962  public:
992  float irm_version = 1.0) {
993  this->is_encrypt_metadata = is_encrypt_metadata;
994  this->publish_license = publish_license;
995  this->server_eul_list = server_eul_list;
996  if (irm_version<1.0)
997  this->irm_version = 1.0;
998  else
999  this->irm_version = irm_version;
1000  }
1001 
1004  : is_encrypt_metadata(true)
1005  , publish_license("")
1006  , irm_version(1.0) {}
1007 
1017  irm_version = other.irm_version;
1018  }
1019 
1031  irm_version = other.irm_version;
1032  return *this;
1033  }
1034 
1042  bool operator == (const RMSEncryptData& other) const {
1044  fabs(irm_version - other.irm_version) <= FLT_EPSILON) {
1045  if (server_eul_list.GetSize() == other.server_eul_list.GetSize()) {
1046  for (size_t i=0; i<server_eul_list.GetSize(); i++) {
1047  if (server_eul_list[i] != other.server_eul_list[i]) return false;
1048  }
1049  return true;
1050  }
1051  }
1052  return false;
1053  }
1054 
1062  bool operator != (const RMSEncryptData& other) const {
1064  fabs(irm_version - other.irm_version) <= FLT_EPSILON)) {
1065  if (server_eul_list.GetSize() == other.server_eul_list.GetSize()) {
1066  if (server_eul_list.GetSize() == 0) return false;
1067  for (size_t i=0; i<server_eul_list.GetSize(); i++) {
1068  if (server_eul_list[i] == other.server_eul_list[i]) return false;
1069  }
1070  return true;
1071  }
1072  }
1073  return false;
1074  }
1075 
1107  float irm_version = 1.0) {
1108  this->is_encrypt_metadata = is_encrypt_metadata;
1109  this->publish_license = publish_license;
1110  this->server_eul_list = server_eul_list;
1111  if (irm_version<1.0)
1112  this->irm_version = 1.0;
1113  else
1114  this->irm_version = irm_version;
1115  }
1116 
1152 };
1153 
1164 class RMSSecurityHandler FS_FINAL : public SecurityHandler {
1165  public:
1183  explicit RMSSecurityHandler(const foxit::pdf::SecurityHandler& other);
1184 
1203  bool Initialize(const RMSEncryptData& encrypt_data, const RMSSecurityCallback* callback);
1204 };
1205 
1212  public:
1218  virtual void Release() = 0;
1226 
1227  protected:
1228  ~SecurityCallback() {}
1229 };
1230 
1240  public:
1259  virtual String GetDecryptionKey(const void* envelope_buffer, uint32 envelope_length) = 0;
1260 
1261  protected:
1263 };
1264 
1274  public:
1293  virtual bool IsOwner(const PDFDoc& document, const char* sub_filter) = 0;
1305  virtual uint32 GetUserPermissions(const PDFDoc& document, const char* sub_filter) = 0;
1317  virtual SecurityHandler::CipherType GetCipherType(const PDFDoc& document, const char* sub_filter) = 0;
1331  virtual uint32 GetKeyLength(const PDFDoc& document, const char* sub_filter) = 0;
1342  virtual String GetFileID(const PDFDoc& document, const char* sub_filter) = 0;
1353  virtual String GetInitialKey(const PDFDoc& document, const char* sub_filter) = 0;
1354 
1355  protected:
1356  ~DRMSecurityCallback() {}
1357 };
1358 
1368  public:
1388  virtual void* CreateContext(const char* filter, const char* sub_filter, const char* encrypt_info) = 0;
1399  virtual bool ReleaseContext(void* context) = 0;
1413  virtual uint32 GetUserPermissions(const void* context, uint32 user_permission) = 0;
1424  virtual bool IsOwner(const void* context) = 0;
1436  virtual SecurityHandler::CipherType GetCipher(const void* context) = 0;
1447  virtual String GetEncryptKey(const void* context) = 0;
1459  virtual uint32 GetDecryptedSize(const void* context, uint32 src_data_size) = 0;
1472  virtual void* StartDecryptor(const void* context, int obj_num, int gen_num) = 0;
1485  virtual String DecryptData(const void* decryptor, const void* encrypted_data, uint32 encrypted_data_len) = 0;
1496  virtual String FinishDecryptor(void* decryptor) = 0;
1511  virtual uint32 GetEncryptedSize(const void* context, int obj_num, int gen_num,
1512  const void* src_data, uint32 src_data_len) = 0;
1529  virtual bool EncryptData(const void* context, int obj_num, int gen_num,
1530  const void* src_data, uint32 src_data_len,
1531  void* out_dst_buffer, uint32* out_dst_buffer_len) = 0;
1532 
1548  virtual bool UseStandardCryptoMethod(const void* context) { return false; }
1549 
1550  protected:
1552 };
1553 
1563  public:
1572 
1573  protected:
1574  ~RMSSecurityCallback() {}
1575 };
1576 } // namespace pdf
1577 } // namespace foxit
1578 #endif // FS_SECURITY_H_
1579 
void SetAES256ModifyFlags(uint32 modify_flags)
(Only for AES-256) Set modify flags to decide which security data or password will be modified during...
If set, user permissions and "is encrypt metadata" values (which are defined in StdEncryptData) will ...
Definition: fs_security.h:298
StdEncryptData()
Constructor.
Definition: fs_security.h:167
String sub_filter
The sub filter name that specifies the syntax of the encryption dictionary contents....
Definition: fs_security.h:917
bool InitializeW(const StdEncryptData &encrypt_data, const WString &user_password, const WString &owner_password)
(Only for AES-256) Initialize current standard security handler.
bool Initialize(const CustomEncryptData &encrypt_data, const CustomSecurityCallback *callback, const char *encrypt_info="")
Initialize current custom security handler.
bool SetDRMValue(const char *key, const WString &value)
Set the DRM value for a specified parameter.
CertificateEncryptData(const CertificateEncryptData &other)
Constructor, with another certificate encrypt data object.
Definition: fs_security.h:393
bool is_encrypt_metadata
A boolean value to decide whether to encrypt metadata or not. true means to encrypt metadata,...
Definition: fs_security.h:913
bool operator !=(const CertificateEncryptData &other) const
Not equal operator.
Definition: fs_security.h:439
virtual PDFDoc::EncryptType GetSecurityType()
Get the encryption type of current security callback.
Definition: fs_security.h:1248
SecurityHandler::CipherType cipher
Cipher type. Please refer to values starting from SecurityHandler::e_CipherRC4 and this should be one...
Definition: fs_security.h:270
String filter
The filter name of a custom security callback object. It should not be an empty string.
Definition: fs_security.h:915
bool operator !=(const SecurityHandler &other)
Not equal operator.
virtual String GetEncryptKey(const void *context)=0
A callback function used to get the encryption key.
bool Initialize(const CertificateEncryptData &encrypt_data, const String &encrypt_key)
Initialize current certificate security handler.
bool operator==(const RMSEncryptData &other) const
Equal operator.
Definition: fs_security.h:1042
virtual String GetInitialKey(const PDFDoc &document, const char *sub_filter)=0
A callback function used to get the initial key to decrypt the DRM protected document.
virtual bool ReleaseContext(void *context)=0
A callback function used to release the context for encryption and decryption.
virtual bool EncryptData(const void *context, int obj_num, int gen_num, const void *src_data, uint32 src_data_len, void *out_dst_buffer, uint32 *out_dst_buffer_len)=0
A callback function used to get encrypted data.
SecurityHandler::CipherType cipher
Cipher type. Please refer to values starting from SecurityHandler::e_CipherRC4 and this should be one...
Definition: fs_security.h:723
Header file for PDF document related definitions and classes.
If set, only owner password will be modified during encryption process.
Definition: fs_security.h:302
int key_length
The key length, in bytes.
Definition: fs_security.h:280
RMSEncryptData(bool is_encrypt_metadata, const char *publish_license, const StringArray &server_eul_list, float irm_version=1.0)
Constructor, with parameters.
Definition: fs_security.h:991
Definition: fs_security.h:1239
Definition: fs_security.h:1273
DRMSecurityHandler()
Constructor function.
Definition: fs_security.h:748
virtual SecurityHandler::CipherType GetCipher(const void *context)=0
A callback function used to get the cipher type.
virtual ~SecurityHandler()
Destructor.
Definition: fs_security.h:536
virtual uint32 GetEncryptedSize(const void *context, int obj_num, int gen_num, const void *src_data, uint32 src_data_len)=0
A callback function used to get the estimated encrypted size.
String publish_license
The Encoded Publishing License issued from server to the Content publisher, in ASCII encoding....
Definition: fs_security.h:1132
ModifyFlag
(Only for AES-256) Enumeration for modify flag used to decide which security data or password will be...
Definition: fs_security.h:296
Encryption type: customized encryption.
Definition: fs_pdfdoc.h:683
WIDE STRING CLASS.
Definition: fx_string.h:1461
bool operator !=(const RMSEncryptData &other) const
Not equal operator.
Definition: fs_security.h:1062
WString GetDRMValue(const char *key)
Get the DRM value for a specified parameter.
virtual void * CreateContext(const char *filter, const char *sub_filter, const char *encrypt_info)=0
A callback function used to create context for encryption and decryption.
bool is_owner
A boolean value to decide whether current user is owner or not. true means current user is owner,...
Definition: fs_security.h:735
virtual String GetDecryptionKey(const void *envelope_buffer, uint32 envelope_length)=0
A callback function used to get the key for decrypting certificate protected PDF document.
RMSEncryptData & operator=(const RMSEncryptData &other)
Assign operator.
Definition: fs_security.h:1027
Definition: fs_pdfdoc.h:648
bool IsEmpty() const
Check whether current object is empty or not.
Definition: fs_security.h:580
Not use encryption algorithm.
Definition: fs_security.h:65
virtual PDFDoc::EncryptType GetSecurityType()
Get the encryption type of security callback.
Definition: fs_security.h:1571
virtual uint32 GetUserPermissions(const void *context, uint32 user_permission)=0
A callback function used to get the user permissions.
DRMEncryptData & operator=(const DRMEncryptData &other)
Assign operator.
Definition: fs_security.h:641
virtual PDFDoc::EncryptType GetSecurityType()
Get the encryption type of security callback.
Definition: fs_security.h:1225
void Set(bool is_encrypt_metadata, const String &filter, const String &sub_filter)
Set value.
Definition: fs_security.h:903
virtual bool UseStandardCryptoMethod(const void *context)
A callback function to check if to use standard crypto method or custom crypto method.
Definition: fs_security.h:1548
bool operator==(const StdEncryptData &other) const
Equal operator.
Definition: fs_security.h:207
RMSEncryptData(const RMSEncryptData &other)
Constructor, with another RMS encrypt data object.
Definition: fs_security.h:1013
Definition: fs_security.h:961
Definition: fs_security.h:137
bool operator==(const char *str1, const CFX_ByteString &str2)
Check if two byte strings are equal.
Definition: fs_basictypes.h:128
CustomEncryptData(const CustomEncryptData &other)
Constructor, with another custom encrypt data object.
Definition: fs_security.h:851
bool Initialize(const RMSEncryptData &encrypt_data, const RMSSecurityCallback *callback)
Initialize current Microsoft RMS security handler.
Use AES encryption algorithm, with the key length be 16 bytes (as AES-128) or 32 bytes (as AES-256,...
Definition: fs_security.h:72
StringArray envelopes
A string array which specifies an array of certificate envelopes. This array should contains one or m...
Definition: fs_security.h:484
CipherType
Enumeration for Encryption Algorithm.
Definition: fs_security.h:63
SecurityHandler & operator=(const SecurityHandler &other)
Assign operator.
DRMEncryptData(bool is_encrypt_metadata, const String &sub_filter, SecurityHandler::CipherType cipher, int key_length, bool is_owner, uint32 user_permissions)
Constructor, with parameters.
Definition: fs_security.h:601
If set, user password and owner password will be modified during encryption process.
Definition: fs_security.h:300
void Set(bool is_encrypt_metadata, const String &sub_filter, SecurityHandler::CipherType cipher, int key_length, bool is_owner, uint32 user_permissions)
Set value.
Definition: fs_security.h:702
bool is_encrypt_metadata
A boolean value to decide whether to encrypt metadata or not. true means to encrypt metadata,...
Definition: fs_security.h:474
virtual bool IsOwner(const void *context)=0
A callback function used to check if current user is the owner of the PDF document.
virtual bool IsOwner(const PDFDoc &document, const char *sub_filter)=0
A callback function used to check if current user is the owner of the PDF document.
bool Initialize(const StdEncryptData &encrypt_data, const String &user_password, const String &owner_password)
(Not support AES-256) Initialize current standard security handler.
virtual void * StartDecryptor(const void *context, int obj_num, int gen_num)=0
A callback function used to start a decryption.
SecurityHandler::CipherType cipher
Cipher type. Please refer to values starting from SecurityHandler::e_CipherRC4 and this should be one...
Definition: fs_security.h:479
CustomEncryptData(bool is_encrypt_metadata, const String &filter, const String &sub_filter)
Constructor, with parameters.
Definition: fs_security.h:834
DRMEncryptData(const DRMEncryptData &other)
Constructor, with another DRM encrypt data object.
Definition: fs_security.h:625
Definition: fx_basic.h:1297
StdEncryptData(bool is_encrypt_metadata, uint32 user_permissions, SecurityHandler::CipherType cipher, int key_length)
Constructor, with parameters.
Definition: fs_security.h:158
virtual uint32 GetUserPermissions(const PDFDoc &document, const char *sub_filter)=0
A callback function used to get the current user permissions.
void Set(bool is_encrypt_metadata, uint32 user_permissions, SecurityHandler::CipherType cipher, int key_length)
Set value.
Definition: fs_security.h:249
FX_UINT32 uint32
32-bit unsigned integer.
Definition: fs_basictypes.h:196
Encryption type: digital certificate encryption.
Definition: fs_pdfdoc.h:679
void * FS_HANDLE
Handle type.
Definition: fs_basictypes.h:214
Header file for common definitions and classes.
virtual PDFDoc::EncryptType GetSecurityType()
Get the encryption type of security callback.
Definition: fs_security.h:1282
float irm_version
Microsoft IRM version. It should be above 1. If input version is below 1, Foxit PDF SDK will use 1 as...
Definition: fs_security.h:1151
virtual void Release()=0
A callback function used to release current callback object itself.
Definition: fs_security.h:1367
Definition: fs_security.h:1562
CertificateEncryptData(bool is_encrypt_metadata, SecurityHandler::CipherType cipher, const StringArray &envelopes)
Constructor, with parameters.
Definition: fs_security.h:377
DRMEncryptData()
Constructor.
Definition: fs_security.h:612
Definition: fs_security.h:824
virtual uint32 GetDecryptedSize(const void *context, uint32 src_data_size)=0
A callback function used to get the estimated decrypted data size.
bool Initialize(const DRMEncryptData &encrypt_data, const char *file_id, const String &initial_key)
Initialize current DRM security handler.
Encryption type: Microsoft RMS encryption.
Definition: fs_pdfdoc.h:685
bool is_encrypt_metadata
A boolean value to decide whether to encrypt metadata or not. true means to encrypt metadata,...
Definition: fs_security.h:260
Definition: fs_basictypes.h:443
Definition: fs_basictypes.h:230
size_t GetSize() const
Get the size of elements in current array.
StdEncryptData(const StdEncryptData &other)
Constructor, with another standard encrypt data object.
Definition: fs_security.h:178
Definition: fs_security.h:1211
bool operator !=(const StdEncryptData &other) const
Not equal operator.
Definition: fs_security.h:221
CertificateEncryptData()
Constructor.
Definition: fs_security.h:384
CustomEncryptData & operator=(const CustomEncryptData &other)
Assign operator.
Definition: fs_security.h:863
virtual uint32 GetKeyLength(const PDFDoc &document, const char *sub_filter)=0
A callback function used to get the length of cipher key.
bool operator !=(const CustomEncryptData &other) const
Not equal operator.
Definition: fs_security.h:889
bool operator !=(const DRMEncryptData &other) const
Not equal operator.
Definition: fs_security.h:673
StringArray server_eul_list
A string array that contains pairs of strings to represent content of a dictionary object which is en...
Definition: fs_security.h:1146
void Set(bool is_encrypt_metadata, SecurityHandler::CipherType cipher, const StringArray &envelopes)
Set value.
Definition: fs_security.h:464
Definition: fs_security.h:925
Definition: fs_security.h:56
bool VerifyEncryptionParams()
Verify encryption parameters.
RMSEncryptData()
Constructor.
Definition: fs_security.h:1003
Foxit namespace.
Definition: fs_pdf3d.h:27
Definition: fs_security.h:1164
virtual PDFDoc::EncryptType GetSecurityType()
Get the encryption type of current security handler.
BYTE STRING CLASS.
Definition: fx_string.h:317
Unknown encryption type.
Definition: fs_pdfdoc.h:673
EncryptType
Enumeration for encryption type.
Definition: fs_pdfdoc.h:671
virtual PDFDoc::EncryptType GetSecurityType()
Get the encryption type of security callback.
Definition: fs_security.h:1376
virtual String DecryptData(const void *decryptor, const void *encrypted_data, uint32 encrypted_data_len)=0
A callback function used to decrypt the encrypted data.
bool is_encrypt_metadata
A boolean value to decide whether to encrypt metadata or not. true means to encrypt metadata,...
Definition: fs_security.h:1121
uint32 user_permissions
The user permissions. Please refer to values starting from PDFDoc::e_PermPrint and this can be one or...
Definition: fs_security.h:740
virtual String FinishDecryptor(void *decryptor)=0
A callback function used to finish the decryption.
bool operator!=(const char *str1, const CFX_ByteString &str2)
Check if two byte strings are not equal.
Definition: fs_basictypes.h:140
int key_length
The key length, in bytes. For SecurityHandler::e_CipherRC4 cipher, this value should be between 5 an...
Definition: fs_security.h:730
uint32 user_permissions
The user permissions. Please refer to values starting from PDFDoc::e_PermPrint and this should be one...
Definition: fs_security.h:265
Encryption type: Foxit DRM encryption.
Definition: fs_pdfdoc.h:681
virtual SecurityHandler::CipherType GetCipherType(const PDFDoc &document, const char *sub_filter)=0
A callback function used to get the cipher type for encryption algorithm.
StdEncryptData & operator=(const StdEncryptData &other)
Assign operator.
Definition: fs_security.h:192
bool operator==(const DRMEncryptData &other) const
Equal operator.
Definition: fs_security.h:658
void Set(bool is_encrypt_metadata, const char *publish_license, const StringArray &server_eul_list, float irm_version=1.0)
Set value.
Definition: fs_security.h:1106
CertificateEncryptData & operator=(const CertificateEncryptData &other)
Assign operator.
Definition: fs_security.h:406
Definition: fs_security.h:288
bool is_encrypt_metadata
A boolean value to decide whether to encrypt metadata or not. true means to encrypt metadata,...
Definition: fs_security.h:716
Definition: fs_security.h:365
virtual String GetFileID(const PDFDoc &document, const char *sub_filter)=0
A callback function used to get the file identity string.
bool operator==(const CustomEncryptData &other) const
Equal operator.
Definition: fs_security.h:877
bool operator==(const SecurityHandler &other)
Equal operator.
Use RC4 encryption algorithm, with the key length between 5 bytes and 16 bytes.
Definition: fs_security.h:67
CustomEncryptData()
Constructor.
Definition: fs_security.h:841
bool operator==(const CertificateEncryptData &other) const
Equal operator.
Definition: fs_security.h:420
String sub_filter
The sub filter name that specifies the syntax of the encryption dictionary contents.
Definition: fs_security.h:718