Foxit PDF SDK
fs_security.h
浏览该文件的文档.
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  // 强烈建议用户不要使用此方法;否则可能会发生未知情况。
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:
152  int key_length) {
153  this->is_encrypt_metadata = is_encrypt_metadata;
154  this->user_permissions = user_permissions;
155  this->cipher = cipher;
156  this->key_length = key_length;
157  }
158 
161  : is_encrypt_metadata(true)
162  , user_permissions(0)
163  , cipher(SecurityHandler::e_CipherNone)
164  , key_length(0) {}
165 
174  cipher = other.cipher;
175  key_length = other.key_length;
176  }
177 
188  cipher = other.cipher;
189  key_length = other.key_length;
190  return *this;
191  }
192 
200  bool operator == (const StdEncryptData& other) const {
201  return (is_encrypt_metadata == other.is_encrypt_metadata &&
203  cipher == other.cipher &&
204  key_length == other.key_length);
205  }
206 
214  bool operator != (const StdEncryptData& other) const {
215  return !(is_encrypt_metadata == other.is_encrypt_metadata &&
217  cipher == other.cipher &&
218  key_length == other.key_length);
219  }
220 
236  this->is_encrypt_metadata = is_encrypt_metadata;
237  this->user_permissions = user_permissions;
238  this->cipher = cipher;
239  this->key_length = key_length;
240  }
241 
262 };
263 
269 class StdSecurityHandler FS_FINAL : public SecurityHandler {
270  public:
276  typedef enum _ModifyFlag {
283  } ModifyFlag;
284 
285 
293  explicit StdSecurityHandler(const foxit::pdf::SecurityHandler& other);
294 
304  bool Initialize(const StdEncryptData& encrypt_data, const String& user_password, const String& owner_password);
305 
315  bool InitializeW(const StdEncryptData& encrypt_data, const WString& user_password, const WString& owner_password);
316 
326  void SetAES256ModifyFlags(uint32 modify_flags);
327 };
328 
330 class CertificateEncryptData FS_FINAL {
331  public:
340  this->is_encrypt_metadata = is_encrypt_metadata;
341  this->cipher = cipher;
342  this->envelopes = envelopes;
343  }
344 
347  : is_encrypt_metadata(true)
348  , cipher(SecurityHandler::e_CipherNone) {}
349 
357  cipher = other.cipher;
358  envelopes = other.envelopes;
359  }
360 
370  cipher = other.cipher;
371  envelopes = other.envelopes;
372  return *this;
373  }
374 
382  bool operator == (const CertificateEncryptData& other) const {
383  if (is_encrypt_metadata == other.is_encrypt_metadata && cipher == other.cipher) {
384  if (envelopes.GetSize() == other.envelopes.GetSize()) {
385  for (size_t i=0; i<envelopes.GetSize(); i++) {
386  if (envelopes[i] != other.envelopes[i]) return false;
387  }
388  return true;
389  }
390  }
391  return false;
392  }
393 
401  bool operator != (const CertificateEncryptData& other) const {
402  if (!(is_encrypt_metadata == other.is_encrypt_metadata && cipher == other.cipher)) {
403  if (envelopes.GetSize() == other.envelopes.GetSize()) {
404  if (envelopes.GetSize() == 0) return false;
405  for (size_t i=0; i<envelopes.GetSize(); i++) {
406  if (envelopes[i] == other.envelopes[i]) return false;
407  }
408  return true;
409  }
410  }
411  return false;
412  }
413 
424  this->is_encrypt_metadata = is_encrypt_metadata;
425  this->cipher = cipher;
426  this->envelopes =envelopes;
427  }
428 
441 };
442 
443 #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_) && !defined(_SWIG_GO_)
444 
445 class Envelope : public Base {
446  public:
453  Envelope(const void* buffer, size_t size);
459  Envelope(const char* cert_file_path);
460 
461  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
462  explicit Envelope(FS_HANDLE handle);
464  Envelope(const Envelope& other);
466  bool operator==(const Envelope& other) const;
468  bool operator!=(const Envelope& other) const;
469 
478  String GetDecryptionKey(const char* p12_file_path, const String& password);
479 };
480 
482 typedef CFX_ArrayTemplate<Envelope> EnvelopeArray;
483 
484 #endif
485 
492  public:
501 
502 #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_) && !defined(_SWIG_GO_)
503 
512  bool Initialize(foxit::pdf::EnvelopeArray envelopes, foxit::pdf::SecurityHandler::CipherType cipher, bool is_encrypt_metadata);
513 #endif // (_FX_OS_ == _FX_IOS_ || _FX_OS_ == _FX_ANDROID_ || defined(SWIG)) && !defined(_SWIG_JAVA_) && !defined(_SWIG_DOTNET_) && !defined(_OC_) && !defined(_SWIG_MACOC_) && !defined(_SWIG_GO_)
514 
523  bool Initialize(const CertificateEncryptData& encrypt_data, const String& encrypt_key);
524 };
525 
527 class DRMEncryptData FS_FINAL {
528  public:
541  this->is_encrypt_metadata = is_encrypt_metadata;
542  this->sub_filter = sub_filter;
543  this->cipher = cipher;
544  this->key_length = key_length;
545  this->is_owner = is_owner;
546  this->user_permissions = user_permissions;
547  }
548 
551  : is_encrypt_metadata(true)
552  , sub_filter("")
553  , cipher(SecurityHandler::e_CipherNone)
554  , key_length(0)
555  , is_owner(false)
556  , user_permissions(0) {}
557 
565  sub_filter = other.sub_filter;
566  cipher = other.cipher;
567  key_length = other.key_length;
568  is_owner = other.is_owner;
570  }
571 
581  sub_filter = other.sub_filter;
582  cipher = other.cipher;
583  key_length = other.key_length;
584  is_owner = other.is_owner;
586  return *this;
587  }
588 
596  bool operator == (const DRMEncryptData& other) const {
597  return (is_encrypt_metadata == other.is_encrypt_metadata &&
598  sub_filter == other.sub_filter &&
599  cipher == other.cipher && key_length == other.key_length &&
600  is_owner == other.is_owner &&
602  }
603 
611  bool operator != (const DRMEncryptData& other) const {
612  return !(is_encrypt_metadata == other.is_encrypt_metadata &&
613  sub_filter == other.sub_filter &&
614  cipher == other.cipher && key_length == other.key_length &&
615  is_owner == other.is_owner &&
617  }
618 
633  this->is_encrypt_metadata = is_encrypt_metadata;
634  this->sub_filter = sub_filter;
635  this->cipher = cipher;
636  this->key_length = key_length;
637  this->is_owner = is_owner;
638  this->user_permissions = user_permissions;
639  }
640 
657  bool is_owner;
662 };
663 
669 class DRMSecurityHandler FS_FINAL : public SecurityHandler {
670  public:
678  explicit DRMSecurityHandler(const foxit::pdf::SecurityHandler& other);
679 
689  bool Initialize(const DRMEncryptData& encrypt_data, const char* file_id, const String& initial_key);
707  WString GetDRMValue(const char* key);
726  bool SetDRMValue(const char* key, const WString& value);
727 
735  bool VerifyEncryptionParams();
736 };
737 
739 class CustomEncryptData FS_FINAL {
740  public:
749  this->is_encrypt_metadata = is_encrypt_metadata;
750  this->filter = filter;
751  this->sub_filter = sub_filter;
752  }
753 
756  : is_encrypt_metadata(true)
757  , filter("")
758  , sub_filter("") {}
759 
767  filter = other.filter;
768  sub_filter = other.sub_filter;
769  }
779  filter = other.filter;
780  sub_filter = other.sub_filter;
781  return *this;
782  }
783 
791  bool operator == (const CustomEncryptData& other) const {
792  return (is_encrypt_metadata == other.is_encrypt_metadata &&
793  filter == other.filter && sub_filter == other.sub_filter);
794  }
795 
803  bool operator != (const CustomEncryptData& other) const {
804  return !(is_encrypt_metadata == other.is_encrypt_metadata &&
805  filter == other.filter && sub_filter == other.sub_filter);
806  }
816  void Set(bool is_encrypt_metadata, const String& filter, const String& sub_filter) {
817  this->is_encrypt_metadata = is_encrypt_metadata;
818  this->filter = filter;
819  this->sub_filter = sub_filter;
820  }
821 
830 };
831 
837 class CustomSecurityHandler FS_FINAL : public SecurityHandler {
838  public:
846  explicit CustomSecurityHandler(const foxit::pdf::SecurityHandler& other);
847 
859  bool Initialize(const CustomEncryptData& encrypt_data,
860  const CustomSecurityCallback* callback, const char* encrypt_info = "");
861 };
862 
864 class RMSEncryptData FS_FINAL {
865  public:
875  float irm_version = 1.0) {
876  this->is_encrypt_metadata = is_encrypt_metadata;
877  this->publish_license = publish_license;
878  this->server_eul_list = server_eul_list;
879  if (irm_version<1.0)
880  this->irm_version = 1.0;
881  else
882  this->irm_version = irm_version;
883  }
884 
887  : is_encrypt_metadata(true)
888  , publish_license("")
889  , irm_version(1.0) {}
890 
900  irm_version = other.irm_version;
901  }
902 
914  irm_version = other.irm_version;
915  return *this;
916  }
917 
925  bool operator == (const RMSEncryptData& other) const {
927  fabs(irm_version - other.irm_version) <= FLT_EPSILON) {
928  if (server_eul_list.GetSize() == other.server_eul_list.GetSize()) {
929  for (size_t i=0; i<server_eul_list.GetSize(); i++) {
930  if (server_eul_list[i] != other.server_eul_list[i]) return false;
931  }
932  return true;
933  }
934  }
935  return false;
936  }
937 
945  bool operator != (const RMSEncryptData& other) const {
947  fabs(irm_version - other.irm_version) <= FLT_EPSILON)) {
948  if (server_eul_list.GetSize() == other.server_eul_list.GetSize()) {
949  if (server_eul_list.GetSize() == 0) return false;
950  for (size_t i=0; i<server_eul_list.GetSize(); i++) {
951  if (server_eul_list[i] == other.server_eul_list[i]) return false;
952  }
953  return true;
954  }
955  }
956  return false;
957  }
958 
970  float irm_version = 1.0) {
971  this->is_encrypt_metadata = is_encrypt_metadata;
972  this->publish_license = publish_license;
973  this->server_eul_list = server_eul_list;
974  if (irm_version<1.0)
975  this->irm_version = 1.0;
976  else
977  this->irm_version = irm_version;
978  }
979 
999  float irm_version;
1000 };
1001 
1009 class RMSSecurityHandler FS_FINAL : public SecurityHandler {
1010  public:
1024  explicit RMSSecurityHandler(const foxit::pdf::SecurityHandler& other);
1025 
1036  bool Initialize(const RMSEncryptData& encrypt_data, const RMSSecurityCallback* callback);
1037 };
1038 
1044  public:
1050  virtual void Release() = 0;
1058 
1059  protected:
1060  ~SecurityCallback() {}
1061 };
1062 
1072  public:
1091  virtual String GetDecryptionKey(const void* envelope_buffer, uint32 envelope_length) = 0;
1092 
1093  protected:
1095 };
1096 
1106  public:
1125  virtual bool IsOwner(const PDFDoc& document, const char* sub_filter) = 0;
1137  virtual uint32 GetUserPermissions(const PDFDoc& document, const char* sub_filter) = 0;
1149  virtual SecurityHandler::CipherType GetCipherType(const PDFDoc& document, const char* sub_filter) = 0;
1163  virtual uint32 GetKeyLength(const PDFDoc& document, const char* sub_filter) = 0;
1174  virtual String GetFileID(const PDFDoc& document, const char* sub_filter) = 0;
1185  virtual String GetInitialKey(const PDFDoc& document, const char* sub_filter) = 0;
1186 
1187  protected:
1188  ~DRMSecurityCallback() {}
1189 };
1190 
1200  public:
1220  virtual void* CreateContext(const char* filter, const char* sub_filter, const char* encrypt_info) = 0;
1231  virtual bool ReleaseContext(void* context) = 0;
1245  virtual uint32 GetUserPermissions(const void* context, uint32 user_permission) = 0;
1256  virtual bool IsOwner(const void* context) = 0;
1268  virtual SecurityHandler::CipherType GetCipher(const void* context) = 0;
1279  virtual String GetEncryptKey(const void* context) = 0;
1291  virtual uint32 GetDecryptedSize(const void* context, uint32 src_data_size) = 0;
1304  virtual void* StartDecryptor(const void* context, int obj_num, int gen_num) = 0;
1317  virtual String DecryptData(const void* decryptor, const void* encrypted_data, uint32 encrypted_data_len) = 0;
1328  virtual String FinishDecryptor(void* decryptor) = 0;
1343  virtual uint32 GetEncryptedSize(const void* context, int obj_num, int gen_num,
1344  const void* src_data, uint32 src_data_len) = 0;
1361  virtual bool EncryptData(const void* context, int obj_num, int gen_num,
1362  const void* src_data, uint32 src_data_len,
1363  void* out_dst_buffer, uint32* out_dst_buffer_len) = 0;
1364 
1380  virtual bool UseStandardCryptoMethod(const void* context) { return false; }
1381 
1382  protected:
1384 };
1385 
1390  public:
1399 
1400  protected:
1401  ~RMSSecurityCallback() {}
1402 };
1403 } // namespace pdf
1404 } // namespace foxit
1405 #endif // FS_SECURITY_H_
1406 
void SetAES256ModifyFlags(uint32 modify_flags)
(仅适用于AES-256)设置修改标志以决定在加密过程中哪些安全数据或密码将被修改。
如果设置,在加密过程中将修改用户权限和"是否加密元数据"值(在 StdEncryptData 中定义)。
Definition: fs_security.h:278
StdEncryptData()
构造函数。
Definition: fs_security.h:160
String sub_filter
指定加密字典内容语法的子过滤器名称。不应为空字符串。
Definition: fs_security.h:829
bool InitializeW(const StdEncryptData &encrypt_data, const WString &user_password, const WString &owner_password)
(仅适用于AES-256)初始化当前标准安全处理器。
bool Initialize(const CustomEncryptData &encrypt_data, const CustomSecurityCallback *callback, const char *encrypt_info="")
初始化当前自定义安全处理器。
bool SetDRMValue(const char *key, const WString &value)
设置指定参数的DRM值。
CertificateEncryptData(const CertificateEncryptData &other)
构造函数,使用另一个证书加密数据对象。
Definition: fs_security.h:355
bool is_encrypt_metadata
决定是否加密元数据的布尔值。true 表示加密元数据,false 表示不加密元数据。
Definition: fs_security.h:825
bool operator !=(const CertificateEncryptData &other) const
不等于操作符。
Definition: fs_security.h:401
virtual PDFDoc::EncryptType GetSecurityType()
获取当前安全回调的加密类型。
Definition: fs_security.h:1080
SecurityHandler::CipherType cipher
加密算法类型。请参考从 SecurityHandler::e_CipherRC4 开始的值,应该是这些值中的一个,除了 SecurityHandler::e_CipherNone。
Definition: fs_security.h:253
String filter
自定义安全回调对象的过滤器名称。不应为空字符串。
Definition: fs_security.h:827
bool operator !=(const SecurityHandler &other)
不等于操作符。
virtual String GetEncryptKey(const void *context)=0
用于获取加密密钥的回调函数。
bool Initialize(const CertificateEncryptData &encrypt_data, const String &encrypt_key)
初始化当前证书安全处理器。
RMSSecurityHandler()
构造函数。
SecurityHandler()
构造函数。
bool operator==(const RMSEncryptData &other) const
等于操作符。
Definition: fs_security.h:925
virtual String GetInitialKey(const PDFDoc &document, const char *sub_filter)=0
用于获取解密DRM保护文档的初始密钥的回调函数。
virtual bool ReleaseContext(void *context)=0
用于释放加密和解密上下文的回调函数。
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
用于获取加密数据的回调函数。
SecurityHandler::CipherType cipher
加密算法类型。请参考从 SecurityHandler::e_CipherRC4 开始的值,应该是这些值中的一个,除了 SecurityHandler::e_CipherNone。
Definition: fs_security.h:650
PDF文档相关定义和类的头文件。
如果设置,在加密过程中将仅修改所有者密码。
Definition: fs_security.h:282
int key_length
密钥长度,以字节为单位。
Definition: fs_security.h:261
RMSEncryptData(bool is_encrypt_metadata, const char *publish_license, const StringArray &server_eul_list, float irm_version=1.0)
构造函数,带参数。
Definition: fs_security.h:874
Definition: fs_security.h:1071
Definition: fs_security.h:1105
DRMSecurityHandler()
构造函数。
Definition: fs_security.h:669
virtual SecurityHandler::CipherType GetCipher(const void *context)=0
用于获取密码类型的回调函数。
virtual ~SecurityHandler()
析构函数。
Definition: fs_security.h:491
virtual uint32 GetEncryptedSize(const void *context, int obj_num, int gen_num, const void *src_data, uint32 src_data_len)=0
用于获取估计的加密大小的回调函数。
String publish_license
从服务器发放给内容发布者的编码发布许可证,采用ASCII编码。不应为空字符串。
Definition: fs_security.h:989
ModifyFlag
(仅适用于AES-256)修改标志的枚举,用于决定在加密过程中哪些安全数据或密码将被修改
Definition: fs_security.h:276
加密类型:自定义加密。
Definition: fs_pdfdoc.h:806
宽字符串类
Definition: fx_string.h:1457
bool operator !=(const RMSEncryptData &other) const
不等于操作符。
Definition: fs_security.h:945
WString GetDRMValue(const char *key)
获取指定参数的DRM值。
virtual void * CreateContext(const char *filter, const char *sub_filter, const char *encrypt_info)=0
用于创建加密和解密上下文的回调函数。
bool is_owner
决定当前用户是否为所有者的布尔值。true 表示当前用户是所有者,false 表示当前用户不是所有者。
Definition: fs_security.h:657
virtual String GetDecryptionKey(const void *envelope_buffer, uint32 envelope_length)=0
用于获取解密证书保护的PDF文档的密钥的回调函数。
RMSEncryptData & operator=(const RMSEncryptData &other)
赋值操作符。
Definition: fs_security.h:910
Definition: fs_pdfdoc.h:771
bool IsEmpty() const
检查当前对象是否为空。
Definition: fs_security.h:527
不使用加密算法。
Definition: fs_security.h:65
virtual PDFDoc::EncryptType GetSecurityType()
获取安全回调的加密类型。
Definition: fs_security.h:1398
virtual uint32 GetUserPermissions(const void *context, uint32 user_permission)=0
用于获取用户权限的回调函数。
DRMEncryptData & operator=(const DRMEncryptData &other)
赋值操作符。
Definition: fs_security.h:579
virtual PDFDoc::EncryptType GetSecurityType()
获取安全回调的加密类型。
Definition: fs_security.h:1057
void Set(bool is_encrypt_metadata, const String &filter, const String &sub_filter)
设置值。
Definition: fs_security.h:816
virtual bool UseStandardCryptoMethod(const void *context)
用于检查是否使用标准加密方法或自定义加密方法的回调函数。
Definition: fs_security.h:1380
bool operator==(const StdEncryptData &other) const
等于操作符。
Definition: fs_security.h:200
RMSEncryptData(const RMSEncryptData &other)
构造函数,使用另一个RMS加密数据对象。
Definition: fs_security.h:896
Definition: fs_security.h:864
Definition: fs_security.h:137
bool operator==(const char *str1, const CFX_ByteString &str2)
检查两个字节字符串是否相等。
Definition: fs_basictypes.h:128
CustomEncryptData(const CustomEncryptData &other)
构造函数,使用另一个自定义加密数据对象。
Definition: fs_security.h:765
bool Initialize(const RMSEncryptData &encrypt_data, const RMSSecurityCallback *callback)
初始化当前Microsoft RMS安全处理器。
使用AES加密算法,密钥长度为16字节(AES-128)或 32字节(AES-256,仅在PDF 2.0中支持)。
Definition: fs_security.h:72
StringArray envelopes
指定证书信封数组的字符串数组。此数组应包含一个或多个信封。
Definition: fs_security.h:440
CipherType
加密算法的枚举。
Definition: fs_security.h:63
SecurityHandler & operator=(const SecurityHandler &other)
赋值操作符。
DRMEncryptData(bool is_encrypt_metadata, const String &sub_filter, SecurityHandler::CipherType cipher, int key_length, bool is_owner, uint32 user_permissions)
构造函数,带参数。
Definition: fs_security.h:539
如果设置,在加密过程中将修改用户密码和所有者密码。
Definition: fs_security.h:280
void Set(bool is_encrypt_metadata, const String &sub_filter, SecurityHandler::CipherType cipher, int key_length, bool is_owner, uint32 user_permissions)
设置值。
Definition: fs_security.h:631
bool is_encrypt_metadata
决定是否加密元数据的布尔值。true 表示加密元数据,false 表示不加密元数据。
Definition: fs_security.h:432
virtual bool IsOwner(const void *context)=0
用于检查当前用户是否是PDF文档所有者的回调函数。
virtual bool IsOwner(const PDFDoc &document, const char *sub_filter)=0
用于检查当前用户是否是PDF文档所有者的回调函数。
bool Initialize(const StdEncryptData &encrypt_data, const String &user_password, const String &owner_password)
(不支持AES-256)初始化当前标准安全处理器。
virtual void * StartDecryptor(const void *context, int obj_num, int gen_num)=0
用于开始解密的回调函数。
SecurityHandler::CipherType cipher
加密算法类型。请参考从 SecurityHandler::e_CipherRC4 开始的值,应该是这些值中的一个,除了 SecurityHandler::e_CipherNone。
Definition: fs_security.h:436
CustomEncryptData(bool is_encrypt_metadata, const String &filter, const String &sub_filter)
构造函数,带参数。
Definition: fs_security.h:748
DRMEncryptData(const DRMEncryptData &other)
构造函数,使用另一个DRM加密数据对象。
Definition: fs_security.h:563
Definition: fx_basic.h:1278
StdEncryptData(bool is_encrypt_metadata, uint32 user_permissions, SecurityHandler::CipherType cipher, int key_length)
构造函数,带参数。
Definition: fs_security.h:151
virtual uint32 GetUserPermissions(const PDFDoc &document, const char *sub_filter)=0
用于获取当前用户权限的回调函数。
void Set(bool is_encrypt_metadata, uint32 user_permissions, SecurityHandler::CipherType cipher, int key_length)
设置值。
Definition: fs_security.h:235
FX_UINT32 uint32
无符号 32 位整数。
Definition: fs_basictypes.h:196
加密类型:数字证书加密。
Definition: fs_pdfdoc.h:802
void * FS_HANDLE
句柄类型。
Definition: fs_basictypes.h:214
通用定义和类的头文件。
virtual PDFDoc::EncryptType GetSecurityType()
获取安全回调的加密类型。
Definition: fs_security.h:1114
float irm_version
Microsoft IRM版本。应大于1。如果输入版本小于1,Foxit PDF SDK将默认使用1作为版本。默认值:1.0。
Definition: fs_security.h:999
StdSecurityHandler()
构造函数。
virtual void Release()=0
用于释放当前回调对象自身的回调函数。
Definition: fs_security.h:1199
Definition: fs_security.h:1389
CertificateEncryptData(bool is_encrypt_metadata, SecurityHandler::CipherType cipher, const StringArray &envelopes)
构造函数,带参数。
Definition: fs_security.h:339
DRMEncryptData()
构造函数。
Definition: fs_security.h:550
Definition: fs_security.h:739
virtual uint32 GetDecryptedSize(const void *context, uint32 src_data_size)=0
用于获取估计的解密数据大小的回调函数。
bool Initialize(const DRMEncryptData &encrypt_data, const char *file_id, const String &initial_key)
初始化当前DRM安全处理器。
加密类型:微软RMS加密。
Definition: fs_pdfdoc.h:808
bool is_encrypt_metadata
决定是否加密元数据的布尔值。true 表示加密元数据,false 表示不加密元数据。
Definition: fs_security.h:245
Definition: fs_basictypes.h:449
Definition: fs_basictypes.h:230
size_t GetSize() const
获取当前数组中元素的大小。
StdEncryptData(const StdEncryptData &other)
构造函数,使用另一个标准加密数据对象。
Definition: fs_security.h:171
Definition: fs_security.h:1043
bool operator !=(const StdEncryptData &other) const
不等于操作符。
Definition: fs_security.h:214
CertificateEncryptData()
构造函数。
Definition: fs_security.h:346
CustomEncryptData & operator=(const CustomEncryptData &other)
赋值操作符。
Definition: fs_security.h:777
virtual uint32 GetKeyLength(const PDFDoc &document, const char *sub_filter)=0
用于获取密码密钥长度的回调函数。
bool operator !=(const CustomEncryptData &other) const
不等于操作符。
Definition: fs_security.h:803
bool operator !=(const DRMEncryptData &other) const
不等于操作符。
Definition: fs_security.h:611
StringArray server_eul_list
包含字符串对的字符串数组,用于表示编码服务器EUL的字典对象的内容。
Definition: fs_security.h:995
void Set(bool is_encrypt_metadata, SecurityHandler::CipherType cipher, const StringArray &envelopes)
设置值。
Definition: fs_security.h:423
Definition: fs_security.h:837
Definition: fs_security.h:56
bool VerifyEncryptionParams()
验证加密参数。
RMSEncryptData()
构造函数。
Definition: fs_security.h:886
Foxit命名空间。
Definition: fs_taggedpdf.h:27
Definition: fs_security.h:1009
virtual PDFDoc::EncryptType GetSecurityType()
获取当前安全处理器的加密类型。
字节字符串类
Definition: fx_string.h:317
未知加密类型。
Definition: fs_pdfdoc.h:796
EncryptType
加密类型的枚举。
Definition: fs_pdfdoc.h:794
virtual PDFDoc::EncryptType GetSecurityType()
获取安全回调的加密类型。
Definition: fs_security.h:1208
virtual String DecryptData(const void *decryptor, const void *encrypted_data, uint32 encrypted_data_len)=0
用于解密加密数据的回调函数。
bool is_encrypt_metadata
决定是否加密元数据的布尔值。true 表示加密元数据,false 表示不加密元数据。
Definition: fs_security.h:983
uint32 user_permissions
用户权限。请参考从 PDFDoc::e_PermPrint 开始的值,可以是这些值中的一个或多个的组合。
Definition: fs_security.h:661
virtual String FinishDecryptor(void *decryptor)=0
用于完成解密的回调函数。
bool operator!=(const char *str1, const CFX_ByteString &str2)
检查两个字节字符串是否不相等。
Definition: fs_basictypes.h:140
int key_length
密钥长度,以字节为单位。 对于 SecurityHandler::e_CipherRC4 加密算法,此值应该在5到16之间。 对于 SecurityHandler::e_CipherAES 加密算法,此...
Definition: fs_security.h:653
uint32 user_permissions
用户权限。请参考从 PDFDoc::e_PermPrint 开始的值,应该是这些值中的一个或多个的组合。
Definition: fs_security.h:249
加密类型:福昕DRM加密。
Definition: fs_pdfdoc.h:804
virtual SecurityHandler::CipherType GetCipherType(const PDFDoc &document, const char *sub_filter)=0
用于获取加密算法的密码类型的回调函数。
StdEncryptData & operator=(const StdEncryptData &other)
赋值操作符。
Definition: fs_security.h:185
bool operator==(const DRMEncryptData &other) const
等于操作符。
Definition: fs_security.h:596
void Set(bool is_encrypt_metadata, const char *publish_license, const StringArray &server_eul_list, float irm_version=1.0)
设置值。
Definition: fs_security.h:969
CertificateEncryptData & operator=(const CertificateEncryptData &other)
赋值操作符。
Definition: fs_security.h:368
Definition: fs_security.h:269
CustomSecurityHandler()
构造函数。
bool is_encrypt_metadata
决定是否加密元数据的布尔值。true 表示加密元数据,false 表示不加密元数据。
Definition: fs_security.h:644
Definition: fs_security.h:330
virtual String GetFileID(const PDFDoc &document, const char *sub_filter)=0
用于获取文件标识字符串的回调函数。
bool operator==(const CustomEncryptData &other) const
等于操作符。
Definition: fs_security.h:791
bool operator==(const SecurityHandler &other)
等于操作符。
使用RC4加密算法,密钥长度在5字节到16字节之间。
Definition: fs_security.h:67
CustomEncryptData()
构造函数。
Definition: fs_security.h:755
bool operator==(const CertificateEncryptData &other) const
等于操作符。
Definition: fs_security.h:382
String sub_filter
指定加密字典内容语法的子过滤器名称。
Definition: fs_security.h:646