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 {
84 class Signature FS_FINAL : public interform::Field {
85  public:
102  typedef enum _States {
104  e_StateUnknown = 0x00000000,
106  e_StateNoSignData = 0x00000200,
108  e_StateUnsigned = 0x00000001,
110  e_StateSigned = 0x00000002,
112  e_StateVerifyValid = 0x00000004,
114  e_StateVerifyInvalid = 0x00000008,
122  e_StateVerifyChange = 0x00000080,
126  e_StateVerifyNoChange = 0x00000400,
155  } States;
156 
162  typedef enum _APFlags {
166  e_APFlagLabel = 0x0002,
168  e_APFlagReason = 0x0004,
172  e_APFlagDN = 0x0010,
176  e_APFlagSigner = 0x0040,
178  e_APFlagBitmap = 0x0080,
180  e_APFlagText = 0x0100
181  } APFlags;
182 
188  typedef enum _KeyName {
201  } KeyName;
202 
208  typedef enum _DigestAlgorithm {
217  } DigestAlgorithm;
218 
219 
225  explicit Signature(const interform::Field& field);
226 
234  Signature(const foxit::pdf::PDFDoc& document, foxit::pdf::objects::PDFDictionary* sig_field_dict);
235  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
236  explicit Signature(FS_HANDLE handle = NULL);
237 
240 
248  bool IsEmpty() const;
249 
255  bool IsSigned();
256 
306  common::Progressive StartSign(const wchar_t* cert_path, const WString& cert_password,
307  DigestAlgorithm digest_algorithm, const char* save_path,
308  const void* client_data = NULL, common::PauseCallback* pause = NULL);
309 
359  common::Progressive StartSign(const wchar_t* cert_path, const WString& cert_password,
360  DigestAlgorithm digest_algorithm, const wchar_t* save_path,
361  const void* client_data = NULL, common::PauseCallback* pause = NULL);
362 
390  common::Progressive StartVerify(const void* client_data = NULL, common::PauseCallback* pause = NULL);
391 
411  String GetCertificateInfo(const char* key);
412 
427  bool GetByteRangeArray(uint32 out_byte_range_array[4]);
428 
455  uint32 GetState();
456 
465  bool ClearSignedData();
466 
473 
485 
501  void SetAppearanceFlags(uint32 appearance_flags);
502 
521  void SetAppearanceContent(const String& appearance_content);
522 
530 
541  void SetSignTime(const DateTime& sign_time);
542 
551  String GetFilter();
570  void SetFilter(const char* filter);
571 
599  void SetSubFilter(const char* sub_filter);
600 
613 
628  void SetKeyValue(KeyName key, const wchar_t* value);
629 
637 
649  void SetBitmap(const common::Bitmap& bitmap);
650 
666  void SetImage(const common::Image& image, int frame_index);
667 
683  void SetImage(const char* file_path, int frame_index);
684 
700  void SetImage(const wchar_t* file_path, int frame_index);
701 
710 
728  void SetDefaultContentsLength(uint32 default_length);
729 
740  int32 GetCertCount() const;
741 
756  WString GetCert(int32 index) const;
757 
770  void SetCertChain(const WStringArray& cert_chain);
771 };
772 
783  public:
789  virtual void Release() = 0;
790 
809  virtual bool StartCalcDigest(const common::file::ReaderCallback* file, const uint32* byte_range_array,
810  uint32 size_of_array, const Signature& signature, const void* client_data) = 0;
811 
830  virtual common::Progressive::State ContinueCalcDigest(const void* client_data,
831  const common::PauseCallback* pause) = 0;
832 
844  virtual String GetDigest(const void* client_data) = 0;
845 
867  virtual String Sign(const void* digest, uint32 digest_length, const wchar_t* cert_path,
868  const WString& cert_password, Signature::DigestAlgorithm digest_algorithm,
869  void* client_data) = 0;
870 
887  virtual uint32 VerifySigState(const void* digest, uint32 digest_length,
888  const void* signed_data, uint32 signed_data_len,
889  void* client_data) = 0;
890 
898  virtual bool IsNeedPadData() = 0;
899 
900  protected:
901  ~SignatureCallback() {}
902 };
903 } // namespace pdf
904 } // namespace foxit
905 #endif // FS_SIGNATURE_H_
906 
If set, show signing time on signature appearance.
Definition: fs_signature.h:170
If set, show distinguish name on signature appearance.
Definition: fs_signature.h:172
common::Bitmap GetBitmap()
Get a bitmap which is used for the signature appearance.
Signature digest algorithm: sha1 algorithm.
Definition: fs_signature.h:210
Signature key name: location.
Definition: fs_signature.h:192
Definition: fs_image.h:36
Signature key name: distinguish name.
Definition: fs_signature.h:198
Unsigned signature.
Definition: fs_signature.h:108
If set, show text content on signature appearance.
Definition: fs_signature.h:180
If set, show location on signature appearance.
Definition: fs_signature.h:174
bool IsSigned()
Check whether current signature is signed or not.
Certificate for verifying issuer is revoked.
Definition: fs_signature.h:132
void SetAppearanceContent(const String &appearance_content)
Set customized appearance content (as low level drawing operation commands) for signed signature appe...
Definition: fs_basictypes.h:226
Definition: fs_basictypes.h:375
Verification state of the timestamp is invalid.
Definition: fs_signature.h:146
States
Enumeration for signature states.
Definition: fs_signature.h:102
int32 GetCertCount() const
Get the count of certificates in current signature's certificate chain.
KeyName
Enumeration for signature key name.
Definition: fs_signature.h:188
String GetFilter()
Get filter.
The document has not been changed within the scope of the signature.
Definition: fs_signature.h:126
No timestamp or not check timestamp.
Definition: fs_signature.h:140
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:1470
Unsupported signature.
Definition: fs_signature.h:118
State
Enumeration for progress state.
Definition: fs_common.h:392
Not check the issuer.
Definition: fs_signature.h:136
If set, show bitmap on signature appearance.
Definition: fs_signature.h:178
WString GetKeyValue(KeyName key)
Get the string value for specified key name.
Definition: fs_pdfdoc.h:338
Unknown signature.
Definition: fs_signature.h:104
Signature key name: contact information.
Definition: fs_signature.h:196
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:122
Header file for image and bitmap related definitions and classes.
Signature key name: reason.
Definition: fs_signature.h:194
If set, show reason on signature appearance.
Definition: fs_signature.h:168
Signature data is destroyed (that means the signature data cannot be parsed properly).
Definition: fs_signature.h:116
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:782
Verification state of the timestamp is expired.
Definition: fs_signature.h:148
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:134
Verification state of the issuer is unknown.
Definition: fs_signature.h:130
If set, show signer on signature appearance.
Definition: fs_signature.h:176
Verification state of the timestamp time is valid, since the times is before the expiration date...
Definition: fs_signature.h:154
Verification state of the timestamp issuer is valid.
Definition: fs_signature.h:152
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:3690
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:208
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:385
Definition: fs_pdfform.h:145
Verification state of the timestamp issuer is unknown.
Definition: fs_signature.h:150
The verified issue is current issuer.
Definition: fs_signature.h:138
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:110
void * FS_HANDLE
Handle type.
Definition: fs_basictypes.h:216
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:162
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:114
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
Verification state of a signature is valid.
Definition: fs_signature.h:112
Signature key name: text content.
Definition: fs_signature.h:200
Verification state of the issuer is valid.
Definition: fs_signature.h:128
Definition: fs_pdfobject.h:763
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:164
Signature cannot be trusted (containing aggression).
Definition: fs_signature.h:124
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:216
Signature key name: signer.
Definition: fs_signature.h:190
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:773
Definition: fs_signature.h:84
Signature digest algorithm: sha384 algorithm.
Definition: fs_signature.h:214
Signature does not have any data for signing.
Definition: fs_signature.h:106
Signature digest algorithm: sha256 algorithm.
Definition: fs_signature.h:212
Verification state of the timestamp is valid.
Definition: fs_signature.h:144
~Signature()
Destructor.
Definition: fs_signature.h:239
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:166
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:142
Non expected byte range.
Definition: fs_signature.h:120
uint32 GetAppearanceFlags()
Get signature appearance flags.

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