SetaPDF_Signer The main class of the SetaPDF-Signer Component
File: /SetaPDF v2/Signer.php
Class hierarchy
Summary
Methods
- __construct()
- _addDocMp()
- _callSecHandlerCallback()
- _checkCertificationLevel()
- _createSignatureDictionary()
- _createTimestampSignatureDictionary()
- _ensureSignatureField()
- _prepareTmpDocument()
- _updateAcroForm()
- addSignatureField()
- addTimeStamp()
- cleanUp()
- createSignature()
- createTimestampSignature()
- getAllowSignatureContentLengthChange()
- getAppearance()
- getCertificationLevel()
- getContactInfo()
- getLocation()
- getName()
- getReason()
- getSignatureContentLength()
- getSignatureField()
- getSignatureProperty()
- getTimeOfSigning()
- getTimestampModule()
- preSign()
- preTimestamp()
- saveSignature()
- setAllowSignatureContentLengthChange()
- setAppearance()
- setCertificationLevel()
- setContactInfo()
- setLocation()
- setName()
- setReason()
- setSignatureContentLength()
- setSignatureFieldName()
- setSignatureProperty()
- setTimeOfSigning()
- setTimestampModule()
- sign()
- timestamp()
Constants
CERTIFICATION_LEVEL_FORM_FILLING
Certification level constant
CERTIFICATION_LEVEL_FORM_FILLING_AND_ANNOTATIONS
Certification level constant
CERTIFICATION_LEVEL_NONE
Certification level constant
CERTIFICATION_LEVEL_NO_CHANGES_ALLOWED
Certification level constant
PROP_CONTACT_INFO
Property constant
PROP_LOCATION
Property constant
PROP_NAME
Property constant
PROP_REASON
Property constant
PROP_TIME_OF_SIGNING
Property constant
VERSION
Version
Properties
$_allowSignatureContentLengthChange
Defines if the signatureContentLength property can be changed automatically, if a signature value doesn't fit into the reserved space.
$_byteRange
The byte range value
$_document
Document which shall be signed
$_placeHolderByteOffset
The byte offset position of the place holder/reserved space
$_secHandlerCallback
The callback for authenticating at the security handler of the document
$_tempDocument
A temporary instance of the signed document
Static Methods
getCertificationLevelByDocument()
Check a PDF document for a certification signature and its level
Parameters
- $document : SetaPDF_Core_Document
Return Values
The certification level or null if the document has no certification signature.
Exceptions
Throws SetaPDF_Core_Type_Exception
getSignatureFieldNames()
Returns all signature field names.
Parameters
- $document : SetaPDF_Core_Document
Exceptions
Throws SetaPDF_Core_SecHandler_Exception
Throws SetaPDF_Core_Type_Exception
Methods
__construct()
The constructor.
If the passed document is protected by a security handler it is possible to pass a callback as second parameter that will be called if an authentication is needed.
Parameters
- $document : SetaPDF_Core_Document
The document instance
- $secHandlerCallback : callback|null
A callback which should auth on a security handler (if needed). The callback will be called with two parameters: The first parameter will be the security handler and the second parameter is the current document instance. It should return true or false whether the authentication was successful or not.
Exceptions
_addDocMp()
Adds the document modification detection and prevention data.
Parameters
- $dictionary : SetaPDF_Core_Type_Dictionary
_callSecHandlerCallback()
Calls a defined callback that should authenticate on the documents security handler.
Parameters
- $document : SetaPDF_Core_Document
The document instance
Exceptions
_checkCertificationLevel()
Verifies if the defined certification level can be applied.
Certification signatures can only be applied if the document has no other existing signature.
Exceptions
Throws SetaPDF_Signer_Exception
Throws SetaPDF_Core_Type_IndirectReference_Exception
Throws SetaPDF_Core_Type_Exception
_createSignatureDictionary()
Creates the signature dictionary.
Parameters
- $field : SetaPDF_Signer_SignatureField
The signature field
- $module : null|SetaPDF_Signer_Signature_DictionaryInterface
_createTimestampSignatureDictionary()
Creates the signature dictionary.
Parameters
- $field : SetaPDF_Signer_SignatureField
The signature field
- $module : null|SetaPDF_Signer_Signature_DictionaryInterface
_ensureSignatureField()
Ensures a valid signature field instance.
Parameters
- $document : SetaPDF_Core_Document
The document instance
- $returnFieldInstance : bool
If true the field instance will be returned, otherwise null will be returned.
Exceptions
Throws SetaPDF_Signer_Exception
_prepareTmpDocument()
Prepares the temporary document instance.
Parameters
- $type : string
- $tmpDocument : SetaPDF_Signer_TmpDocument
- $path : string
- $module : null|SetaPDF_Signer_Signature_DictionaryInterface
Exceptions
Throws SetaPDF_Core_Exception
Throws SetaPDF_Signer_Exception
_updateAcroForm()
addSignatureField()
Proxy method for SetaPDF_Signer_SignatureField::add()
.
Parameters
- $fieldName : string
The field name in UTF-8 encoding
- $pageNumber : int
The page number on which the signature field shall appear.
- $xOrPosition : int|string
Integer with the x-position or
SetaPDF_Signer_SignatureField::POSITION_XXX
- $yOrTranslate : int|array
Integer with the y-position (if $xOrPosition is an integer) or an array with the keys 'x' and 'y'
- $width : int
Width of the signature field
- $height : int
Height of the signature field
Exceptions
Throws SetaPDF_Core_Exception
Throws SetaPDF_Core_SecHandler_Exception
Throws SetaPDF_Core_Type_Exception
Throws SetaPDF_Core_Type_IndirectReference_Exception
See
addTimeStamp()
Forwards the signature to a timestamp module and merges the result into the signature container.
Parameters
- $signature : string
- $tmpDocument : SetaPDF_Signer_TmpDocument
Exceptions
Throws SetaPDF_Signer_Exception
createSignature()
Creates a signature based on a temporary document instance and a signature module.
Parameters
- $tmpDocument : SetaPDF_Signer_TmpDocument
- $module : SetaPDF_Signer_Signature_Module_ModuleInterface
Exceptions
Throws SetaPDF_Signer_Exception
See
createTimestampSignature()
Creates a timestamp signature based on a temporary document instance.
The timestamp module has to be added to the signer instance through the
setTimestampModule()
method.
Parameters
- $tmpDocument : SetaPDF_Signer_TmpDocument
Exceptions
Throws SetaPDF_Signer_Exception
See
getAllowSignatureContentLengthChange()
Get the flag specifying whether the signature content length (reserved space) could be changed automatically ot not.
getAppearance()
Get the current appearance module.
getCertificationLevel()
Get the certification level.
Possible values are defined in the SetaPDF_Signer::CERTIFICATION_LEVEL_*
constants.
See
getContactInfo()
Get the information provided by the signer to enable a recipient to contact the signer to verify the signature.
Return Values
If no contact info exist FALSE will be returned. Otherwise, the value will be returned.
See
getLocation()
Get the CPU host name or physical location of the signing.
Return Values
If no location exist FALSE will be returned. Otherwise the value will be returned.
See
getName()
Get the name of the person or authority signing the document.
Return Values
If no name exist FALSE will be returned. Otherwise the value will be returned.
See
getReason()
Get the reason for the signing.
Return Values
If no name exist FALSE will be returned. Otherwise the value will be returned.
See
getSignatureContentLength()
Get the signature content length that will be used to reserve space for the final signature.
getSignatureField()
Proxy method to SetaPDF_Signer_SignatureField::get()
.
Parameters
- $fieldName : string
The field name in UTF-8 encoding
- $create : bool
Automatically creates a hidden field if none was found by the specified name
Exceptions
Throws SetaPDF_Core_Exception
Throws SetaPDF_Core_SecHandler_Exception
Throws SetaPDF_Core_Type_Exception
Throws SetaPDF_Core_Type_IndirectReference_Exception
Throws SetaPDF_Signer_Exception
See
getSignatureProperty()
Get a signature property.
Parameters
- $name : string
See and use
SetaPDF_Signer::PROP_*
constants for valid names
Return Values
If the name is not valid FALSE will be returned. Otherwise the value will be returned.
getTimeOfSigning()
preSign()
Prepares a temporary document instance to be used further in an asynchronous signature workflow.
Parameters
- $writer : SetaPDF_Core_Writer_FileInterface
- $module : null|SetaPDF_Signer_Signature_DictionaryInterface
- $saveMethod : integer
The $method parameter passed to the main save() call of the document instance. See
SetaPDF_Core_Document::save()
method.
Exceptions
Throws SetaPDF_Signer_Exception
Throws SetaPDF_Core_Exception
See
preTimestamp()
Prepares a temporary document instance to be used further in an asynchronous timestamp workflow.
Parameters
- $writer : SetaPDF_Core_Writer_FileInterface
- $module : null|SetaPDF_Signer_Signature_DictionaryInterface
- $saveMethod : integer
The $method parameter passed to the main save() call of the document instance. See
SetaPDF_Core_Document::save()
method.*
Exceptions
Throws SetaPDF_Signer_Exception
Throws SetaPDF_Core_Exception
See
saveSignature()
Add a signature result to the temporary document instance and saves it to the main documents writer instance.
Parameters
- $tmpDocument : SetaPDF_Signer_TmpDocument
- $signature : string
The PKCS7 byte string to be added to the temporary document.
Exceptions
Throws SetaPDF_Signer_Exception
setAllowSignatureContentLengthChange()
Set a flag specifying whether the signature content length (reserved space) could be changed automatically or not.
If this value is set to true and the resulting signature is bigger than the reserved space (defined by
SetaPDF_Signer::setSignatureContentLength()
the signature content length will be increased and the
signature process will restart.
Parameters
- $allowSignatureContentLengthChange : bool
The flag status
setAppearance()
Set an appearance instance.
Parameters
- $appearance : SetaPDF_Signer_Signature_Appearance_AbstractAppearance
The appearance instance
setCertificationLevel()
Set the certification level.
Parameters
- $certificationLevel : integer
Possible values are defined in the
SetaPDF_Signer::CERTIFICATION_LEVEL_XXX
constants.
See
setContactInfo()
Set the information provided by the signer to enable a recipient to contact the signer to verify the signature.
Parameters
- $contactInfo : string
The contact info in UTF-8 encoding
See
setLocation()
Set the host name or physical location of the signing.
Parameters
- $location : string
The physical location or host name in UTF-8 encoding
See
setName()
Set the name of the person or authority signing the document.
Parameters
- $name : string
The value in UTF-8 encoding
See
setReason()
Set the reason for the signing.
Parameters
- $reason : string
The reason for the signing in UTF-8 encoding
See
setSignatureContentLength()
Set the signature content length that will be used to reserve space for the final signature.
Parameters
- $length : integer
The length of the signature content.
setSignatureFieldName()
Set the signature field name.
This can be the name of an existing signature field or an individual name which will be used to create a hidden field automatically.
Parameters
- $fieldName : string
The field name in UTF-8 encoding
setSignatureProperty()
Set a signature property.
Parameters
- $name : string
See and use
SetaPDF_Signer::PROP_*
constants for valid names- $value : string
The value in UTF-8 encoding
Exceptions
Throws InvalidArgumentException if the name is not valid
setTimeOfSigning()
Set the time of signing.
Parameters
- $timeOfSigning : string|DateTime|SetaPDF_Core_DataStructure_Date
The time of signing in UTF-8 encoding
See
setTimestampModule()
Set a timestamp module.
Parameters
- $module : SetaPDF_Signer_Timestamp_Module_ModuleInterface
The timestamp module instance
sign()
Digital signs the initial document.
The SetaPDF_Core_Document
instance will be temporary saved and finished. It is not possible to
work on it further. The final PDF will be passed to the previously attached writer instance, so that the final
signed document will be written to the correct writer.
Parameters
- $module : SetaPDF_Signer_Signature_Module_ModuleInterface
The module instance
- $saveMethod : integer
The $method parameter passed to the main save() call of the document instance. See
SetaPDF_Core_Document::save()
method.
Exceptions
Throws SetaPDF_Signer_Exception
Throws SetaPDF_Core_Exception
timestamp()
Adds a document level timestamp.
The SetaPDF_Core_Document
instance will be temporary saved and finished. It is not possible to
work on it further. The final PDF will be passed to the previously attached writer instance, so that the final
signed document will be written to the correct writer.
Parameters
- $saveMethod : integer
The $method parameter passed to the main save() call of the document instance. See
SetaPDF_Core_Document::save()
method.
Return Values
The timestamp token/signature
Exceptions
Throws SetaPDF_Signer_Exception
Throws SetaPDF_Signer_Exception_ContentLength
Throws SetaPDF_Core_Exception