Foxit PDF SDK
fs_signature.h
Go to the documentation of this file.
1 
15 #ifndef FS_SIGNATURE_H_
16 #define FS_SIGNATURE_H_
17 
18 #include "common/fs_common.h"
19 #include "common/file/fs_file.h"
20 #include "common/fs_image.h"
22 
28 namespace foxit {
32 namespace pdf {
93 class Signature FS_FINAL : public interform::Field {
94  public:
111  typedef enum _States {
113  e_StateUnknown = 0x80000000,
115  e_StateNoSignData = 0x00000200,
117  e_StateUnsigned = 0x00000001,
119  e_StateSigned = 0x00000002,
121  e_StateVerifyValid = 0x00000004,
123  e_StateVerifyInvalid = 0x00000008,
131  e_StateVerifyChange = 0x00000080,
135  e_StateVerifyNoChange = 0x00000400,
166  } States;
167 
173  typedef enum _APFlags {
177  e_APFlagLabel = 0x0002,
179  e_APFlagReason = 0x0004,
183  e_APFlagDN = 0x0010,
187  e_APFlagSigner = 0x0040,
189  e_APFlagBitmap = 0x0080,
191  e_APFlagText = 0x0100
192  } APFlags;
193 
199  typedef enum _KeyName {
212  } KeyName;
213 
219  typedef enum _DigestAlgorithm {
228  } DigestAlgorithm;
229 
235  typedef enum _SignatureType {
240  } SignatureType;
241 
247  typedef enum _PAdESLevel {
260  } PAdESLevel;
261 
262 
268  explicit Signature(const interform::Field& field);
269 
277  Signature(const foxit::pdf::PDFDoc& document, foxit::pdf::objects::PDFDictionary* sig_field_dict);
278 
281 
289  bool IsEmpty() const;
290 
296  bool IsSigned();
297 
352  common::Progressive StartSign(const wchar_t* cert_path, const WString& cert_password,
353  DigestAlgorithm digest_algorithm, const char* save_path,
354  const void* client_data = NULL, common::PauseCallback* pause = NULL);
355 
408  common::Progressive StartSign(const wchar_t* cert_path, const WString& cert_password,
409  DigestAlgorithm digest_algorithm, const wchar_t* save_path,
410  const void* client_data = NULL, common::PauseCallback* pause = NULL);
411 
466  common::Progressive StartSign(const wchar_t* cert_path, const foxit::WString& cert_password,
468  const void* client_data = NULL, foxit::common::PauseCallback* pause = NULL);
469 
501  common::Progressive StartVerify(const void* client_data = NULL, common::PauseCallback* pause = NULL);
502 
522  String GetCertificateInfo(const char* key);
523 
538  bool GetByteRangeArray(uint32 out_byte_range_array[4]);
539 
566  uint32 GetState();
567 
576  bool ClearSignedData();
577 
584 
599  PDFDoc GetSignedVersionDocument(const wchar_t* file_path);
600 
612 
629  void SetAppearanceFlags(uint32 appearance_flags);
630 
650  void SetAppearanceContent(const String& appearance_content);
651 
659 
670  void SetSignTime(const DateTime& sign_time);
671 
680  String GetFilter();
701  void SetFilter(const char* filter);
702 
732  void SetSubFilter(const char* sub_filter);
733 
746 
762  void SetKeyValue(KeyName key, const wchar_t* value);
763 
771 
784  void SetBitmap(const common::Bitmap& bitmap);
785 
802  void SetImage(const common::Image& image, int frame_index);
803 
820  void SetImage(const char* file_path, int frame_index);
821 
838  void SetImage(const wchar_t* file_path, int frame_index);
839 
848 
866  void SetDefaultContentsLength(uint32 default_length);
867 
878  int32 GetCertCount() const;
879 
894  WString GetCert(int32 index) const;
895 
908  void SetCertChain(const WStringArray& cert_chain);
909 
917 
923  bool IsTimeStamp();
924 
935 
936 #ifndef __EMSCRIPTEN_RENDER__
937  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
938  explicit Signature(FS_HANDLE handle = NULL);
939 #endif
940 };
941 
952  public:
958  typedef enum _CertValidity {
975  } CertValidity;
976 
977 
983  virtual void Release() = 0;
984 
1003  virtual bool StartCalcDigest(const common::file::ReaderCallback* file, const uint32* byte_range_array,
1004  uint32 size_of_array, const Signature& signature, const void* client_data) = 0;
1005 
1024  virtual common::Progressive::State ContinueCalcDigest(const void* client_data,
1025  const common::PauseCallback* pause) = 0;
1026 
1038  virtual String GetDigest(const void* client_data) = 0;
1039 
1061  virtual String Sign(const void* digest, uint32 digest_length, const wchar_t* cert_path,
1062  const WString& cert_password, Signature::DigestAlgorithm digest_algorithm,
1063  void* client_data) = 0;
1064 
1087  virtual uint32 VerifySigState(const void* digest, uint32 digest_length,
1088  const void* signed_data, uint32 signed_data_len,
1089  void* client_data) = 0;
1090 
1098  virtual bool IsNeedPadData() = 0;
1099 
1118  virtual CertValidity CheckCertificateValidity(const wchar_t* cert_path, const WString& cert_password, void* client_data) = 0;
1119 
1120  protected:
1121  ~SignatureCallback() {}
1122 };
1123 
1124 class TimeStampServer;
1125 
1132 class TimeStampServerMgr FS_FINAL : public Object {
1133  public:
1142  static ErrorCode Initialize();
1152  static void Release();
1153 
1159  static int GetServerCount();
1168  static TimeStampServer GetServer(int index);
1176  static int GetServerIndex(const TimeStampServer& server);
1177 
1192  static void SetDefaultServer(int index);
1202  static void SetDefaultServer(const TimeStampServer& server);
1203 
1214  static TimeStampServer AddServer(const WString& server_name, const WString& server_url, const WString& user_name, const WString& password);
1222  static void RemoveServer(int index);
1232  static void RemoveServer(const TimeStampServer& server);
1233 };
1234 
1238 class TimeStampServer FS_FINAL : public Base {
1239  public:
1245  typedef enum _SendRequestResult {
1263 
1264 
1270  TimeStampServer(const TimeStampServer& other);
1279 
1287  bool operator == (const TimeStampServer& other) const;
1295  bool operator != (const TimeStampServer& other) const;
1296 
1298  ~TimeStampServer();
1299 
1307  bool IsEmpty() const;
1308 
1326 
1327  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
1328  explicit TimeStampServer(FS_HANDLE handle);
1329 
1330 };
1331 
1332 } // namespace pdf
1333 } // namespace foxit
1334 #endif // FS_SIGNATURE_H_
1335 
Send request successfully.
Definition: fs_signature.h:1247
If set, show signing time on signature appearance.
Definition: fs_signature.h:181
If set, show distinguish name on signature appearance.
Definition: fs_signature.h:183
common::Bitmap GetBitmap()
Get a bitmap which is used for the signature appearance.
Out of memory during sending request process.
Definition: fs_signature.h:1261
Signature digest algorithm: sha1 algorithm.
Definition: fs_signature.h:221
Certificate is unsupport type.
Definition: fs_signature.h:964
Signature key name: location.
Definition: fs_signature.h:203
Certificate's private key cannot be gotten.
Definition: fs_signature.h:974
Definition: fs_image.h:36
Signature key name: distinguish name.
Definition: fs_signature.h:209
TimeStampServer(const TimeStampServer &other)
Constructor, with another time stamp server object.
Unsigned signature.
Definition: fs_signature.h:117
If set, show text content on signature appearance.
Definition: fs_signature.h:191
CFX_Object Object
Object type.
Definition: fs_basictypes.h:219
static int GetServerIndex(const TimeStampServer &server)
Get the index of a speicified time stamp server object.
If set, show location on signature appearance.
Definition: fs_signature.h:185
TimeStampServer & operator=(const TimeStampServer &other)
Assign operator.
bool IsSigned()
Check whether current signature is signed or not.
Certificate for verifying issuer is revoked.
Definition: fs_signature.h:141
void SetAppearanceContent(const String &appearance_content)
Set customized appearance content (as low level drawing operation commands) for signed signature appe...
Certificate is valid.
Definition: fs_signature.h:960
SignatureType GetSignatureType()
Get signature type.
Definition: fs_basictypes.h:226
Definition: fs_basictypes.h:408
Verification state of the time stamp is invalid.
Definition: fs_signature.h:155
static int GetServerCount()
Get time stamp server count.
bool operator!=(const TimeStampServer &other) const
Not equal operator.
States
Enumeration for signature states.
Definition: fs_signature.h:111
int32 GetCertCount() const
Get the count of certificates in current signature's certificate chain.
KeyName
Enumeration for signature key name.
Definition: fs_signature.h:199
Signature type: ordinary.
Definition: fs_signature.h:237
String GetFilter()
Get filter.
The document has not been changed within the scope of the signature.
Definition: fs_signature.h:135
No time stamp or not check time stamp.
Definition: fs_signature.h:149
Certificate's path is wrong.
Definition: fs_signature.h:970
Header file for file operation related definitions and functions.
void SetSubFilter(const char *sub_filter)
Set sub filter.
file reading interface.
Definition: fx_stream.h:555
void SetSignTime(const DateTime &sign_time)
Set time of signing.
virtual uint32 VerifySigState(const void *digest, uint32 digest_length, const void *signed_data, uint32 signed_data_len, void *client_data)=0
A callback function used to verify the integrity of a signature and return the verify state.
WIDE STRING CLASS.
Definition: fx_string.h:1459
static TimeStampServer AddServer(const WString &server_name, const WString &server_url, const WString &user_name, const WString &password)
Add a time stamp server to the manager.
bool operator==(const TimeStampServer &other) const
Equal operator.
Unsupported signature.
Definition: fs_signature.h:127
SignatureType
Enumeration for signature type.
Definition: fs_signature.h:235
State
Enumeration for progress state.
Definition: fs_common.h:472
Definition: fs_signature.h:1132
Not check the issuer.
Definition: fs_signature.h:145
PAdES level: B-LT.
Definition: fs_signature.h:257
If set, show bitmap on signature appearance.
Definition: fs_signature.h:189
bool IsEmpty() const
Check whether current object is empty or not.
WString GetKeyValue(KeyName key)
Get the string value for specified key name.
Definition: fs_pdfdoc.h:347
virtual CertValidity CheckCertificateValidity(const wchar_t *cert_path, const WString &cert_password, void *client_data)=0
A callback function used to check the validity of a certificate.
Unknown signature.
Definition: fs_signature.h:113
Signature key name: contact information.
Definition: fs_signature.h:207
virtual bool StartCalcDigest(const common::file::ReaderCallback *file, const uint32 *byte_range_array, uint32 size_of_array, const Signature &signature, const void *client_data)=0
A callback function used to start a custom digest calculation, mainly to initialize the calculation p...
static TimeStampServer GetServer(int index)
Get time stamp server with specified index.
The document has been changed within the scope of the signature. (This indicates that signature is in...
Definition: fs_signature.h:131
PAdES level: B-T.
Definition: fs_signature.h:255
PDFDoc GetSignedVersionDocument(const wchar_t *file_path)
Get the PDF document in the signed version in which current signature was signed.
SendRequestResult SendTimeStampRequest(const String &request)
Send time stamp request.
Header file for image and bitmap related definitions and classes.
Signature key name: reason.
Definition: fs_signature.h:205
If set, show reason on signature appearance.
Definition: fs_signature.h:179
Signature data is destroyed (that means the signature data cannot be parsed properly).
Definition: fs_signature.h:125
Header file for PDF form related definitions and classes.
virtual common::Progressive::State ContinueCalcDigest(const void *client_data, const common::PauseCallback *pause)=0
A callback function used to continue the custom digest calculation process.
Certificate is expired.
Definition: fs_signature.h:962
Definition: fs_signature.h:951
Certificate's password is wrong.
Definition: fs_signature.h:968
Verification state of the time stamp is expired.
Definition: fs_signature.h:157
bool GetByteRangeArray(uint32 out_byte_range_array[4])
Get the byte ranges data, including 4 elements.
Certificate's data is error.
Definition: fs_signature.h:966
Certificate for verifying issuer is expired.
Definition: fs_signature.h:143
Verification state of the issuer is unknown.
Definition: fs_signature.h:139
If set, show signer on signature appearance.
Definition: fs_signature.h:187
Verification state of the time stamp time is valid, since the times is before the expiration date.
Definition: fs_signature.h:163
Verification state of the time stamp issuer is valid.
Definition: fs_signature.h:161
common::Progressive StartVerify(const void *client_data=0, common::PauseCallback *pause=0)
Start verifying the intergrity of current signature if current signature is signed.
Signature to be check is not a signed PAdES signature.
Definition: fs_signature.h:249
void SetFilter(const char *filter)
Set filter.
ErrorCode
Enumeration for error code.
Definition: fs_basictypes.h:236
String GetTimeStampMessage()
Get time stamp message.
CertValidity
Enumeration for certificate validity.
Definition: fs_signature.h:958
Definition: fs_signature.h:1238
File stream interface, reading & writing.
Definition: fx_stream.h:650
void SetDefaultContentsLength(uint32 default_length)
Set the default length of signature contents which represents signature value (known as signed data).
Fail to receive data during sending request process.
Definition: fs_signature.h:1255
PAdES level: B-LTA.
Definition: fs_signature.h:259
Definition: fx_basic.h:3736
Fail to connect during sending request process.
Definition: fs_signature.h:1251
Signature(const interform::Field &field)
Constructor, with parent class object.
virtual bool IsNeedPadData()=0
A callback function used to check whether to return all contents with padding zero or not,...
DigestAlgorithm
Enumeration for signature digest algorithm.
Definition: fs_signature.h:219
virtual void Release()=0
A callback function used to release current callback object itself.
objects::PDFDictionary * GetSignatureDict() const
Get signature dictionary.
Definition: fs_common.h:465
Definition: fs_pdfform.h:145
Verification state of the time stamp issuer is unknown.
Definition: fs_signature.h:159
The verified issue is current issuer.
Definition: fs_signature.h:147
void SetBitmap(const common::Bitmap &bitmap)
Set a bitmap for the signature appearance.
FX_UINT32 uint32
32-bit unsigned integer.
Definition: fs_basictypes.h:198
Signed signature.
Definition: fs_signature.h:119
static void Release()
Release time stamp server manager.
void * FS_HANDLE
Handle type.
Definition: fs_basictypes.h:216
static TimeStampServer GetDefaultServer()
Get default time stamp server object.
Header file for common definitions and classes.
void SetCertChain(const WStringArray &cert_chain)
Set a certificate chain.
APFlags
Enumeration for signature appearance flags.
Definition: fs_signature.h:173
void SetAppearanceFlags(uint32 appearance_flags)
Set signature appearance flags.
String GetCertificateInfo(const char *key)
Get certificate information.
String GetSubFilter()
Get sub filter.
Verification state of a signature is invalid.
Definition: fs_signature.h:123
SendRequestResult
Enumeration for the result of sending time stamp request.
Definition: fs_signature.h:1245
PDFDoc GetDocument()
Get the PDF document, which current signature belongs to.
void SetKeyValue(KeyName key, const wchar_t *value)
Set the string value for specified key name.
void SetImage(const common::Image &image, int frame_index)
Set an image for the signature appearance, with a specified frame index.
FX_INT32 int32
32-bit signed integer.
Definition: fs_basictypes.h:196
Definition: fs_basictypes.h:375
Verification state of a signature is valid.
Definition: fs_signature.h:121
Fail to create socket during sending request process.
Definition: fs_signature.h:1249
Fail to send data during sending request process.
Definition: fs_signature.h:1253
Fail to get data during sending request process.
Definition: fs_signature.h:1259
Signature key name: text content.
Definition: fs_signature.h:211
Verification state of the issuer is valid.
Definition: fs_signature.h:137
Signature type: time stamp.
Definition: fs_signature.h:239
Definition: fs_pdfobject.h:763
Foxit namespace.
Definition: fs_compare.h:27
PAdESLevel GetPAdESLevel()
Get PAdES level.
bool IsTimeStamp()
Check if current signature is a time stamp signature.
DateTime GetSignTime()
Get time of signing.
static void RemoveServer(int index)
Remove a time stamp server from the manager, by index.
If set, show Foxit flag on signature appearance.
Definition: fs_signature.h:175
Signature cannot be trusted (containing aggression).
Definition: fs_signature.h:133
BYTE STRING CLASS.
Definition: fx_string.h:317
Certificate is not set to sign a signature.
Definition: fs_signature.h:972
bool IsEmpty() const
Check whether current object is empty or not.
PAdESLevel
Enumeration for PAdES level.
Definition: fs_signature.h:247
WString GetCert(int32 index) const
Get a certificate from current signature's certificate chain by index.
Signature digest algorithm: sha512 algorithm.
Definition: fs_signature.h:227
Signature key name: signer.
Definition: fs_signature.h:201
virtual String GetDigest(const void *client_data)=0
A callback function used to get the digest after the calculation process is finished.
static ErrorCode Initialize()
Initialize time stamp server manager.
#define NULL
The null-pointer value.
Definition: fx_system.h:771
Definition: fs_signature.h:93
Signature digest algorithm: sha384 algorithm.
Definition: fs_signature.h:225
static void SetDefaultServer(int index)
Set default time stamp server object by index.
Cannot get verify relevant information.
Definition: fs_signature.h:165
Signature does not have any data for signing.
Definition: fs_signature.h:115
Signature digest algorithm: sha256 algorithm.
Definition: fs_signature.h:223
PAdES level: none.
Definition: fs_signature.h:251
Verification state of the time stamp is valid.
Definition: fs_signature.h:153
Fail to request during sending request process.
Definition: fs_signature.h:1257
~Signature()
Destructor.
Definition: fs_signature.h:280
uint32 GetState()
Get current state.
Definition: fs_image.h:430
virtual String Sign(const void *digest, uint32 digest_length, const wchar_t *cert_path, const WString &cert_password, Signature::DigestAlgorithm digest_algorithm, void *client_data)=0
A callback function used to do signing and return the signed data.
PAdES level: B-B.
Definition: fs_signature.h:253
bool ClearSignedData()
Clear the data and appearance if current signature is singed and verified valid.
If set, show label on signature appearance.
Definition: fs_signature.h:177
common::Progressive StartSign(const wchar_t *cert_path, const WString &cert_password, DigestAlgorithm digest_algorithm, const char *save_path, const void *client_data=0, common::PauseCallback *pause=0)
Start signing current signature if current signature is unsigned.
The signature is a time stamp signature.
Definition: fs_signature.h:151
Non expected byte range.
Definition: fs_signature.h:129
uint32 GetAppearanceFlags()
Get signature appearance flags.