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/fs_image.h"
21 
27 namespace foxit {
31 namespace pdf {
83 class Signature FS_FINAL : public interform::Field {
84  public:
101  typedef enum _States {
103  e_StateUnknown = 0x00000000,
105  e_StateNoSignData = 0x00000200,
107  e_StateUnsigned = 0x00000001,
109  e_StateSigned = 0x00000002,
111  e_StateVerifyValid = 0x00000004,
113  e_StateVerifyInvalid = 0x00000008,
121  e_StateVerifyChange = 0x00000080,
125  e_StateVerifyNoChange = 0x00000400,
154  } States;
155 
161  typedef enum _APFlags {
165  e_APFlagLabel = 0x0002,
167  e_APFlagReason = 0x0004,
171  e_APFlagDN = 0x0010,
175  e_APFlagSigner = 0x0040,
177  e_APFlagBitmap = 0x0080,
179  e_APFlagText = 0x0100
180  } APFlags;
181 
187  typedef enum _KeyName {
200  } KeyName;
201 
207  typedef enum _DigestAlgorithm {
216  } DigestAlgorithm;
217 
218 
224  explicit Signature(const interform::Field& field);
225 
233  Signature(const foxit::pdf::PDFDoc& document, foxit::pdf::objects::PDFDictionary* sig_field_dict);
234  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
235  explicit Signature(FS_HANDLE handle = NULL);
236 
239 
247  bool IsEmpty() const;
248 
254  bool IsSigned();
255 
305  common::Progressive StartSign(const wchar_t* cert_path, const WString& cert_password,
306  DigestAlgorithm digest_algorithm, const char* save_path,
307  const void* client_data = NULL, common::PauseCallback* pause = NULL);
308 
358  common::Progressive StartSign(const wchar_t* cert_path, const WString& cert_password,
359  DigestAlgorithm digest_algorithm, const wchar_t* save_path,
360  const void* client_data = NULL, common::PauseCallback* pause = NULL);
361 
389  common::Progressive StartVerify(const void* client_data = NULL, common::PauseCallback* pause = NULL);
390 
410  String GetCertificateInfo(const char* key);
411 
426  bool GetByteRangeArray(uint32 out_byte_range_array[4]);
427 
454  uint32 GetState();
455 
464  bool ClearSignedData();
465 
472 
484 
500  void SetAppearanceFlags(uint32 appearance_flags);
501 
520  void SetAppearanceContent(const String& appearance_content);
521 
529 
540  void SetSignTime(const DateTime& sign_time);
541 
550  String GetFilter();
569  void SetFilter(const char* filter);
570 
598  void SetSubFilter(const char* sub_filter);
599 
612 
627  void SetKeyValue(KeyName key, const wchar_t* value);
628 
636 
648  void SetBitmap(const common::Bitmap& bitmap);
649 
665  void SetImage(const common::Image& image, int frame_index);
666 
682  void SetImage(const char* file_path, int frame_index);
683 
699  void SetImage(const wchar_t* file_path, int frame_index);
700 
709 
727  void SetDefaultContentsLength(uint32 default_length);
728 
739  int32 GetCertCount() const;
740 
755  WString GetCert(int32 index) const;
756 
769  void SetCertChain(const WStringArray& cert_chain);
770 };
771 
782  public:
788  virtual void Release() = 0;
789 
808  virtual bool StartCalcDigest(const common::file::ReaderCallback* file, const uint32* byte_range_array,
809  uint32 size_of_array, const Signature& signature, const void* client_data) = 0;
810 
829  virtual common::Progressive::State ContinueCalcDigest(const void* client_data,
830  const common::PauseCallback* pause) = 0;
831 
843  virtual String GetDigest(const void* client_data) = 0;
844 
866  virtual String Sign(const void* digest, uint32 digest_length, const wchar_t* cert_path,
867  const WString& cert_password, Signature::DigestAlgorithm digest_algorithm,
868  void* client_data) = 0;
869 
886  virtual uint32 VerifySigState(const void* digest, uint32 digest_length,
887  const void* signed_data, uint32 signed_data_len,
888  void* client_data) = 0;
889 
897  virtual bool IsNeedPadData() = 0;
898 
899  protected:
900  ~SignatureCallback() {}
901 };
902 } // namespace pdf
903 } // namespace foxit
904 #endif // FS_SIGNATURE_H_
905 
If set, show signing time on signature appearance.
Definition: fs_signature.h:169
If set, show distinguish name on signature appearance.
Definition: fs_signature.h:171
common::Bitmap GetBitmap()
Get a bitmap which is used for the signature appearance.
Signature digest algorithm: sha1 algorithm.
Definition: fs_signature.h:209
Signature key name: location.
Definition: fs_signature.h:191
Definition: fs_image.h:36
Signature key name: distinguish name.
Definition: fs_signature.h:197
Unsigned signature.
Definition: fs_signature.h:107
If set, show text content on signature appearance.
Definition: fs_signature.h:179
If set, show location on signature appearance.
Definition: fs_signature.h:173
bool IsSigned()
Check whether current signature is signed or not.
Certificate for verifying issuer is revoked.
Definition: fs_signature.h:131
void SetAppearanceContent(const String &appearance_content)
Set customized appearance content (as low level drawing operation commands) for signed signature appe...
Definition: fs_basictypes.h:223
Definition: fs_basictypes.h:366
Verification state of the timestamp is invalid.
Definition: fs_signature.h:145
States
Enumeration for signature states.
Definition: fs_signature.h:101
int32 GetCertCount() const
Get the count of certificates in current signature's certificate chain.
KeyName
Enumeration for signature key name.
Definition: fs_signature.h:187
String GetFilter()
Get filter.
The document has not been changed within the scope of the signature.
Definition: fs_signature.h:125
No timestamp or not check timestamp.
Definition: fs_signature.h:139
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 do verifying and return the verify state.
WIDE STRING CLASS.
Definition: fx_string.h:1463
Unsupported signature.
Definition: fs_signature.h:117
State
Enumeration for progress state.
Definition: fs_common.h:389
Not check the issuer.
Definition: fs_signature.h:135
If set, show bitmap on signature appearance.
Definition: fs_signature.h:177
WString GetKeyValue(KeyName key)
Get the string value for specified key name.
Definition: fs_pdfdoc.h:338
Unknown signature.
Definition: fs_signature.h:103
Signature key name: contact information.
Definition: fs_signature.h:195
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...
The document has been changed within the scope of the signature.
Definition: fs_signature.h:121
Header file for image and bitmap related definitions and classes.
Signature key name: reason.
Definition: fs_signature.h:193
If set, show reason on signature appearance.
Definition: fs_signature.h:167
Signature data is destroyed (that means the signature data cannot be parsed properly).
Definition: fs_signature.h:115
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.
Definition: fs_signature.h:781
Verification state of the timestamp is expired.
Definition: fs_signature.h:147
bool GetByteRangeArray(uint32 out_byte_range_array[4])
Get the byte ranges data, including 4 elements.
Certificate for verifying issuer is expired.
Definition: fs_signature.h:133
Verification state of the issuer is unknown.
Definition: fs_signature.h:129
If set, show signer on signature appearance.
Definition: fs_signature.h:175
Verification state of the timestamp time is valid, since the times is before the expiration date...
Definition: fs_signature.h:153
Verification state of the timestamp issuer is valid.
Definition: fs_signature.h:151
common::Progressive StartVerify(const void *client_data=0, common::PauseCallback *pause=0)
Start verifying current signature if current signature is signed.
void SetFilter(const char *filter)
Set filter.
void SetDefaultContentsLength(uint32 default_length)
Set the default length of signature contents which represents signature value (known as signed data)...
Definition: fx_basic.h:3566
Signature(const interform::Field &field)
Constructor, with parent class object.
virtual bool IsNeedPadData()=0
Check whether to return all contents with padding zero or not, when callback function SignatureCallba...
DigestAlgorithm
Enumeration for signature digest algorithm.
Definition: fs_signature.h:207
virtual void Release()=0
A callback function used to release current SignatureCallback object itself.
objects::PDFDictionary * GetSignatureDict() const
Get signature dictionary.
Definition: fs_common.h:382
Definition: fs_pdfform.h:145
Verification state of the timestamp issuer is unknown.
Definition: fs_signature.h:149
The verified issue is current issuer.
Definition: fs_signature.h:137
void SetBitmap(const common::Bitmap &bitmap)
Set a bitmap for the signature appearance.
FX_UINT32 uint32
32-bit unsigned integer.
Definition: fs_basictypes.h:195
Signed signature.
Definition: fs_signature.h:109
void * FS_HANDLE
Handle type.
Definition: fs_basictypes.h:213
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:161
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:113
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:193
Verification state of a signature is valid.
Definition: fs_signature.h:111
Signature key name: text content.
Definition: fs_signature.h:199
Verification state of the issuer is valid.
Definition: fs_signature.h:127
Definition: fs_pdfobject.h:762
Foxit namespace.
Definition: fs_connectedpdf.h:26
DateTime GetSignTime()
Get time of signing.
If set, show Foxit flag on signature appearance.
Definition: fs_signature.h:163
Signature cannot be trusted (containing aggression).
Definition: fs_signature.h:123
BYTE STRING CLASS.
Definition: fx_string.h:317
bool IsEmpty() const
Check whether current object is empty or not.
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:215
Signature key name: signer.
Definition: fs_signature.h:189
virtual String GetDigest(const void *client_data)=0
A callback function used to get the digest after the calculation process is finished.
#define NULL
The null-pointer value.
Definition: fx_system.h:767
Definition: fs_signature.h:83
Signature digest algorithm: sha384 algorithm.
Definition: fs_signature.h:213
Signature does not have any data for signing.
Definition: fs_signature.h:105
Signature digest algorithm: sha256 algorithm.
Definition: fs_signature.h:211
Verification state of the timestamp is valid.
Definition: fs_signature.h:143
~Signature()
Destructor.
Definition: fs_signature.h:238
uint32 GetState()
Get current state.
Definition: fs_image.h:426
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.
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:165
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 timestamp signature.
Definition: fs_signature.h:141
Non expected byte range.
Definition: fs_signature.h:119
uint32 GetAppearanceFlags()
Get signature appearance flags.

Foxit Software Corporation Logo
@2018 Foxit Software Incorporated. All rights reserved.