Public Member Functions | |
Signature (Field field) | |
Constructor, with parent class object. More... | |
Signature (PDFDoc document, PDFDictionary sig_field_dict) | |
Constructor, from signature field dictionary. More... | |
bool | ClearSignedData () |
Clear the data and appearance if current signature is singed and verified valid. More... | |
int | GetAppearanceFlags () |
Get signature appearance flags. More... | |
System.Drawing.Bitmap | GetBitmap () |
Get a bitmap which is used for the signature appearance. More... | |
bool | GetByteRangeArray (int[] out_byte_range_array) |
Get the byte ranges data, including 4 elements. More... | |
string | GetCert (int index) |
Get a certificate from current signature's certificate chain by index. More... | |
int | GetCertCount () |
Get the count of certificates in current signature's certificate chain. More... | |
string | GetCertificateInfo (string key) |
Get certificate information. More... | |
PDFDoc | GetDocument () |
Get the PDF document, which current signature belongs to. More... | |
string | GetFilter () |
Get filter. More... | |
string | GetKeyValue (Signature.KeyName key) |
Get the string value for specified key name. More... | |
PDFDictionary | GetSignatureDict () |
Get signature dictionary. More... | |
DateTime | GetSignTime () |
Get time of signing. More... | |
int | GetState () |
Get current state. More... | |
string | GetSubFilter () |
Get sub filter. More... | |
new bool | IsEmpty () |
Check whether current object is empty or not. More... | |
bool | IsSigned () |
Check whether current signature is signed or not. More... | |
void | SetAppearanceContent (string appearance_content) |
Set customized appearance content (as low level drawing operation commands) for signed signature appearance. More... | |
void | SetAppearanceFlags (int appearance_flags) |
Set signature appearance flags. More... | |
void | SetBitmap (System.Drawing.Bitmap bitmap) |
Set a bitmap for the signature appearance. More... | |
void | SetCertChain (WStringArray cert_chain) |
Set a certificate chain. More... | |
void | SetDefaultContentsLength (int default_length) |
Set the default length of signature contents which represents signature value (known as signed data). More... | |
void | SetFilter (string filter) |
Set filter. More... | |
void | SetImage (Image image, int frame_index) |
Set an image for the signature appearance, with a specified frame index. More... | |
void | SetImage (string file_path, int frame_index) |
Set an image for the signature appearance, with a specified frame index. More... | |
void | SetKeyValue (Signature.KeyName key, string value) |
Set the string value for specified key name. More... | |
void | SetSignTime (DateTime sign_time) |
Set time of signing. More... | |
void | SetSubFilter (string sub_filter) |
Set sub filter. More... | |
Progressive | StartSign (string cert_path, byte[] cert_password, Signature.DigestAlgorithm digest_algorithm, string save_path, global::System.IntPtr client_data, PauseCallback pause) |
Start signing current signature if current signature is unsigned. More... | |
Progressive | StartVerify (global::System.IntPtr client_data, PauseCallback pause) |
Start verifying current signature if current signature is signed. More... | |
![]() | |
Field (PDFDoc document, PDFDictionary field_dict) | |
Constructor, from field dictionary. More... | |
Field (Field field) | |
Constructor, with another Field object. More... | |
Alignment | GetAlignment () |
Get the alignment value. More... | |
string | GetAlternateName () |
Get alternate name. More... | |
Control | GetControl (int index) |
Get a form control by index. More... | |
Control | GetControl (PDFPage page, int index) |
Get a form control by index, in a specified PDF page. More... | |
int | GetControlCount () |
Get count of form controls. More... | |
int | GetControlCount (PDFPage page) |
Get count of form controls in a specified PDF page. More... | |
DefaultAppearance | GetDefaultAppearance () |
Get the default appearance data. More... | |
string | GetDefaultValue () |
Get default value. More... | |
PDFObject | GetDefaultValueObj () |
Get the PDF object of field's default value. More... | |
PDFDictionary | GetDict () |
Get the PDF dictionary of current object. More... | |
int | GetFlags () |
Get field flags. More... | |
PDFObject | GetInheritedAttribute (string attribute_name) |
Get the PDF object for specified attribute which may be inherited from the ancestor node in the field tree. More... | |
string | GetMappingName () |
Get mapping name. More... | |
int | GetMaxLength () |
Get maximum length of the field's text, in characters. More... | |
string | GetName () |
Get field name. More... | |
ChoiceOptionArray | GetOptions () |
Get options of list box or combo box. More... | |
int | GetTopVisibleIndex () |
Get top index of option for scrollable list boxes. More... | |
Field.Type | GetType () |
Get field type. More... | |
string | GetValue () |
Get value. More... | |
PDFObject | GetValueObj () |
Get the PDF object of field's value. More... | |
bool | IsEmpty () |
Check whether current object is empty or not. More... | |
bool | Reset () |
Reset data in current field to its default value. (Not support signature field) More... | |
void | SetAlignment (Alignment alignment) |
Set alignment property of a form, as a document-wide default value. (Not support signature field) More... | |
void | SetAlternateName (string alternate_name) |
Set alternate name. (Not support signature field) More... | |
void | SetDefaultAppearance (DefaultAppearance default_ap) |
Set default appearance data. More... | |
void | SetDefualtValue (string value) |
Set default value. More... | |
void | SetFlags (int flags) |
Set field flags. More... | |
void | SetMappingName (string name) |
Set mapping name. (Not support signature field) More... | |
void | SetMaxLength (int max_length) |
Set maximum length of the field's text, in characters. More... | |
void | SetOptions (ChoiceOptionArray option_array) |
Set options of list box or combo box. More... | |
void | SetTopVisibleIndex (int index) |
Set top index for scrollable list boxes. More... | |
void | SetValue (string value) |
Set value. More... | |
A digital signature (PDF 1.3) can be used to authenticate the identity of a user and the document's contents. It stores information about the signer and the state of the document when it was signed. The signature is contained in a signature field, as a type of form field, so class Signature is derived from class Field. A Signature object can be retrieved/added by following functions:
To be counted and retrieved as a signature object directly from PDF document, please use functions pdf::PDFDoc::GetSignatureCount and pdf::PDFDoc::GetSignature.
To be counted and retrieved as a signature field, please use functions interform::Form::GetFieldCount and interform::Form::GetField when field type is e_TypeSignature.
To add a new signature, please use function PDFPage::AddSignature.
To remove a signature, please use function pdf::PDFDoc::RemoveSignature.
In a signature, filter and sub filter keys are used to specify the filter and sub filter of signature callback object which will be used to sign and verify the signature. Foxit PDF SDK has default signature callbacks for following filter and sub filter:
filter: "Adobe.PPKLite" and sub filter: "adbe.pkcs7.detached"
filter: "Adobe.PPKLite" and sub filter: "adbe.pkcs7.sha1"
If user wants to use customized signature callback, please refer to function common::Library::RegisterSignatureCallback.
This class offers functions to get/set signature information/properties, sign or verify a signature, and so on. For example:
To sign an unsigned signature, please use functions Signature::StartSign. When signing a signature successfully, user is strongly recommended to close current document and then open the signed PDF document and then do following operation.
To verify a signed signature, please use functions Signature::StartVerify.
To retrieve signature dictionary directly, please use function Signature::GetSignatureDict.
Before signing an unsigned signature, user can call following functions to set information for signing and signed appearance:
For using default Foxit appearance template, following functions can be used to set related information: Signature::SetAppearanceFlags, Signature::SetSignTime, Signature::SetKeyValue, Signature::SetBitmap, Signature::SetImage.
For using customized appearance, please set appearance stream content by function Signature::SetAppearanceContent.
If an unsigned signature has been set some information for signing, but the document is saved directly or closed without signing the signature, these data (including filter and sub filter) will be lost in the saved document or in the closed document. When the document is opened again, the unsigned signature needs to be specified at least filter and sub filter for signing; otherwise, this signature cannot be signed.
|
strong |
Enumeration for signature appearance flags.
Values of this enumeration can be used alone or in combination.
|
strong |
Enumeration for signature digest algorithm.
Values of this enumeration should be used alone.
Enumerator | |
---|---|
e_DigestSHA1 | Signature digest algorithm: sha1 algorithm. |
e_DigestSHA256 | Signature digest algorithm: sha256 algorithm. |
e_DigestSHA384 | Signature digest algorithm: sha384 algorithm. |
e_DigestSHA512 | Signature digest algorithm: sha512 algorithm. |
|
strong |
Enumeration for signature key name.
Values of this enumeration should be used alone.
Enumerator | |
---|---|
e_KeyNameSigner | Signature key name: signer. |
e_KeyNameLocation | Signature key name: location. |
e_KeyNameReason | Signature key name: reason. |
e_KeyNameContactInfo | Signature key name: contact information. |
e_KeyNameDN | Signature key name: distinguish name. |
e_KeyNameText | Signature key name: text content. |
|
strong |
Enumeration for signature states.
Values of this enumeration can be used alone or in combination.
These values can be divided into four parts:
e_StateXXX values represent signed state, before signature is verified successfully.
e_StateVerifyXXX values represent the verified state of a signature.
e_StateVerifyIssueXXX values represent the verified state of issue for a signature, with more details.
e_StateVerifyTimestampXXX values represent the verified state for time stamp, with more details.
Enumerator | |
---|---|
e_StateUnknown | Unknown signature. |
e_StateNoSignData | Signature does not have any data for signing. |
e_StateUnsigned | Unsigned signature. |
e_StateSigned | Signed signature. |
e_StateVerifyValid | Verification state of a signature is valid. |
e_StateVerifyInvalid | Verification state of a signature is invalid. |
e_StateVerifyErrorData | Signature data is destroyed (that means the signature data cannot be parsed properly). |
e_StateVerifyNoSupportWay | Unsupported signature. |
e_StateVerifyErrorByteRange | Non expected byte range. |
e_StateVerifyChange | The document has been changed within the scope of the signature. |
e_StateVerifyIncredible | Signature cannot be trusted (containing aggression). |
e_StateVerifyNoChange | The document has not been changed within the scope of the signature. |
e_StateVerifyIssueValid | Verification state of the issuer is valid. |
e_StateVerifyIssueUnknown | Verification state of the issuer is unknown. |
e_StateVerifyIssueRevoke | Certificate for verifying issuer is revoked. |
e_StateVerifyIssueExpire | Certificate for verifying issuer is expired. |
e_StateVerifyIssueUncheck | Not check the issuer. |
e_StateVerifyIssueCurrent | The verified issue is current issuer. |
e_StateVerifyTimestampNone | No timestamp or not check timestamp. |
e_StateVerifyTimestampDoc | The signature is a timestamp signature. |
e_StateVerifyTimestampValid | Verification state of the timestamp is valid. |
e_StateVerifyTimestampInvalid | Verification state of the timestamp is invalid. |
e_StateVerifyTimestampExpire | Verification state of the timestamp is expired. |
e_StateVerifyTimestampIssueUnknown | Verification state of the timestamp issuer is unknown. |
e_StateVerifyTimestampIssueValid | Verification state of the timestamp issuer is valid. |
e_StateVerifyTimestampTimeBefore | Verification state of the timestamp time is valid, since the times is before the expiration date. |
|
inline |
Constructor, with parent class object.
field | Parent class object. |
|
inline |
Constructor, from signature field dictionary.
document | A valid PDF document. |
sig_field_dict | A PDF dictionary which represents a signature field. It should belong to the PDF document specified by parameter document; |
|
inline |
Clear the data and appearance if current signature is singed and verified valid.
This function is used for a signed and valid signature.
|
inline |
Get signature appearance flags.
Signature appearance flags indicate which information will be shown. Currently, this is only useful after Signature::SetAppearanceFlags is called successfully. For a signature gotten from PDF document, the return value of this function would be useless.
|
inline |
Get a bitmap which is used for the signature appearance.
|
inline |
Get the byte ranges data, including 4 elements.
This function is used for a signed signature to retrieve its byte range for digest calculation. The array of byte ranges contains 4 elements. These 4 elements are always in pairs of integers (starting byte offset, length in bytes), describing the exact byte range for the digest calculation.
Please refer to <PDF Reference 1.7> Section 8.7 Digital Signatures for more details.
out_byte_range_array | Output parameter that receives data of byte ranges. Please ensure this array can contain 4 elements. |
|
inline |
Get a certificate from current signature's certificate chain by index.
This function is recommended to be used before verifying a signature. When sub filter of current signature is "adbe.x509.rsa_sha1", application needs to call this function to get verified public certificate before verifying signature. The first certificate in certificate chain is the signing certificate, and it can be used to verify the signature.
index | The index of certificate to be gotten. Valid range: from 0 to (count-1). count is returned by function Signature::GetCertCount. |
|
inline |
Get the count of certificates in current signature's certificate chain.
This function is recommended to be used before verifying a signature. When sub filter of current signature is "adbe.x509.rsa_sha1", application needs to call this function to get the count of certificates in certificate chain and then call function Signature::GetCert to get verified public certificate before verifying signature.
|
inline |
Get certificate information.
This function is used for a signed signature. Currently, this function only supports for iOS and android platform.
key | Certificate key string. Currently it can be one of the following keys: "SerialNumber" "Issuer" "Subject" "ValidPeriodFrom" "ValidPeriodTo" |
|
inline |
Get the PDF document, which current signature belongs to.
|
inline |
Get filter.
Filter and sub filter are used to specify which registered signature callback object will be used to sign/verify current signature.
|
inline |
Get the string value for specified key name.
This function is used to get string value of some key in signature dictionary, such as "Reason", "Location" and so on. Specially,
key | Key name. Please refer to e_KeyNameXXX values and it should be one of them. |
|
inline |
Get signature dictionary.
Signature dictionary is a part of signature field dictionary.
|
inline |
Get time of signing.
|
inline |
Get current state.
Before verifying a signature, this function is to get the state about if current signature is signed or if current signature is lack of data for signing.
After verifying a signature, this function is to get the verified state – which indicates that the verified signature is signed; if the verified signature is still unsigned, this function will get the unsigned state instead.
|
inline |
Get sub filter.
Filter and sub filter are used to specify which registered signature callback object will be used to sign/verify current signature.
|
inline |
Check whether current object is empty or not.
When the current object is empty, that means current object is useless.
|
inline |
Check whether current signature is signed or not.
|
inline |
Set customized appearance content (as low level drawing operation commands) for signed signature appearance.
This function can only be used for an unsigned signature before calling function Signature::StartSign for the unsigned signature.
Once customized appearance content is set, it will be used as the signed appearance. In this case, appearance flags set by function Signature::SetAppearanceFlags will be ignored and related informations will not be used in appearance – these information are set by following functions: Signature::SetSignTime, Signature::SetKeyValue (except filter and sub- filter), Signature::SetBitmap, Signature::SetImage.
appearance_content | Customized appearance content. This should be sequence of drawing operation commands to be used for the appearance, for example "10 10 m 20 10 l S". Please refer to <PDF Reference 1.7> P196 for more details. |
|
inline |
Set signature appearance flags.
This function is recommended to be used before calling function Signature::StartSign for an unsigned signature. Signature appearance flags indicate which information will be shown in the signed appearance. If customized appearance content has been set by function Signature::SetAppearanceContent, appearance flags will be ignored.
appearance_flags | Signature appearance flags. Please refer to e_APFlagXXX values and it should be one or a combination of them. |
|
inline |
Set a bitmap for the signature appearance.
This function is recommended to be used before calling function Signature::StartSign for an unsigned signature. If customized appearance content has been set by function Signature::SetAppearanceContent, the bitmap will not be used in signed appearance.
bitmap | A bitmap to be set to the appearance. It should be valid. |
|
inline |
Set a certificate chain.
This function is recommended to be used before signing an unsigned signature. When the signature sub filter is "adbe.x509.rsa_sha1", users need to call this function to set the cert chain to the signature. For other sub filter, this function will return directly without doing anything.
cert_chain | A string array that represents the certificate chain. |
|
inline |
Set the default length of signature contents which represents signature value (known as signed data).
This function can only be used before function Signature::StartSign for an unsigned signature. Signature contents represent the signature value (known as signed data). When initializing the signature field, the signature contents will be initialized with the default length 7942. When using custom signature callback to sign and verify an unsigned signature, user can call this function to change the default length of signature contents. In this case, user should also ensure that the length of returned signed data in callback function SignatureCallback::StartSign should not be larger than the default length set by this function.
default_length | The default length of the signature value (known as signed data), in bytes. It should not be less than 4098. |
|
inline |
Set filter.
Filter and sub filter are used to specify which registered signature callback object will be used to sign/verify current signature. User could should set filter and sub filter to use default signature callback in Foxit PDF SDK, or use other filter and sub fitler but please ensure that a signature callback object with non-default filter and sub filter should has been registered in Foxit PDF SDK before signing or verifying current signature. Filter and sub filter for default signature callback are:
filter: "Adobe.PPKLite" and sub filter: "adbe.pkcs7.detached"
filter: "Adobe.PPKLite" and sub filter: "adbe.pkcs7.sha1"
filter | String for filter. It cannot be an empty string. |
|
inline |
Set an image for the signature appearance, with a specified frame index.
This function is recommended to be used before calling function Signature::StartSign for an unsigned signature. If customized appearance content has been set by function Signature::SetAppearanceContent, the image will not be used in signed appearance.
Input image may contain multiple frames, and only one frame of the image can be set to current signature.
image | An image. One of its frames will be set to current signature. This image contains at least one frame and the image type should not be Image::e_Unknown . |
frame_index | Frame index. Valid range: from 0 to (count-1). count is returned by function common::Image::GetFrameCount. |
|
inline |
Set an image for the signature appearance, with a specified frame index.
This function is recommended to be used before calling function Signature::StartSign for an unsigned signature. If customized appearance content has been set by function Signature::SetAppearanceContent, the image will not be used in signed appearance.
Input image may contain multiple frames, and only one frame of the image can be set to current signature.
file_path | A full path of an existing image file. It should not be an empty string. |
frame_index | Frame index. Valid range: from 0 to (count-1). count is returned by function common::Image::GetFrameCount of input image file. |
|
inline |
Set the string value for specified key name.
This function is recommended to be used before calling function Signature::StartSign for an unsigned signature.
This function is used to set string value of some key in signature dictionary, such as signer, reason, location and so on.
key | Key name. Please refer to e_KeyNameXXX values and it should be one of them. |
value | New string value. |
|
inline |
Set time of signing.
This function is recommended to be used before calling function Signature::StartSign for an unsigned signature.
sign_time | The signing time. |
|
inline |
Set sub filter.
Filter and sub filter are used to specify which registered signature callback object will be used to sign/verify current signature. User could should set filter and sub filter to use default signature callback in Foxit PDF SDK, or use other filter and sub fitler but please ensure that a signature callback object with non-default filter and sub filter should has been registered in Foxit PDF SDK before signing or verifying current signature. Filter and sub filter for default signature callback are:
filter: "Adobe.PPKLite" and sub filter: "adbe.pkcs7.detached"
filter: "Adobe.PPKLite" and sub filter: "adbe.pkcs7.sha1"
sub_filter | String for sub filter. |
|
inline |
Start signing current signature if current signature is unsigned.
This function is used for an unsigned signature. Filter and sub filter keys of current signature specify the name of signature callback object which will be used to sign current signature. So before signing, please ensure current signature has valid filter and sub filter string values. If the filter and sub filter are one of following strings that means to use the default signature callback in Foxit PDF SDK:
filter: "Adobe.PPKLite" and sub filter: "adbe.pkcs7.detached"
filter: "Adobe.PPKLite" and sub filter: "adbe.pkcs7.sha1"
For other filter and sub filter, please ensure a customized signature callback with them has been registered to Foxit PDF SDK by function common::Library::RegisterSignatureCallback.
: It may take a long time to sign a signature, so Foxit PDF SDK uses a progressive process to do this.
cert_path | A full path of a PFX certificate file (including file name and extension), which will be used for signing. This can be an empty string if not necessary in custom signature callback. When this file path is not empty, it should be a valid path. |
cert_password | A password string used to open the cert file. If this is an empty string, that means no password is required. |
digest_algorithm | The algorithm of message digest for signed data. Please refer to e_DigestXXX values and it should be one of these values. |
save_path | A full PDF file path for saving the signing result. The signed document would be saved to another PDF file. |
client_data | A user-defined object, which will be passed to call back functions in SignatureCallback. This is useless if the default callback object will be used to sign current signature. |
pause | Pause object which decides if the signing process needs to be paused. This can be null which means not to pause during the signing process. If this is not null, it should be a valid pause object implemented by user. |
|
inline |
Start verifying current signature if current signature is signed.
This function is used for a signed signature. Filter and sub filter keys of current signature specify the name of signature callback object which will be used to verify current signature. So before verifying, please ensure: the necessary signature callback object has been registered by function common::Library::RegisterSignatureCallback. If the filter and sub filter of current signed signature are one of following strings that means to use the default signature callback in Foxit PDF SDK and user does not need to register one for them:
filter: "Adobe.PPKLite" and sub filter: "adbe.pkcs7.detached"
filter: "Adobe.PPKLite" and sub filter: "adbe.pkcs7.sha1"
It may take a long time to verify a signature, so Foxit PDF SDK uses a progressive process to do this.
client_data | A user-defined object, which will be passed to call back functions in SignatureCallback. This is useless if the default callback object will be used to verify current signature. |
pause | Pause object which decides if the verifying process needs to be paused. This can be null which means not to pause during the verifying process. If this is not null, it should be a valid pause object implemented by user. |