setasign\SetaPDF2\Signer

Signer The main class of the SetaPDF-Signer Component

File: /SetaPDF v2/Signer/Signer.php
Old class name (alias): \SetaPDF_Signer

Class hierarchy

Summary

Constants

CERTIFICATION_LEVEL_FORM_FILLING

Certification level constant

CERTIFICATION_LEVEL_FORM_FILLING_AND_ANNOTATIONS

Certification level constant

CERTIFICATION_LEVEL_NONE

public const int Signer::CERTIFICATION_LEVEL_NONE = 0

Certification level constant

CERTIFICATION_LEVEL_NO_CHANGES_ALLOWED

Certification level constant

PROP_CONTACT_INFO

public const string Signer::PROP_CONTACT_INFO = 'ContactInfo'

Property constant

PROP_LOCATION

public const string Signer::PROP_LOCATION = 'Location'

Property constant

PROP_NAME

public const string Signer::PROP_NAME = 'Name'

Property constant

PROP_REASON

public const string Signer::PROP_REASON = 'Reason'

Property constant

PROP_TIME_OF_SIGNING

public const string Signer::PROP_TIME_OF_SIGNING = 'M'

Property constant

VERSION

public const string Signer::VERSION = '2.47.0.2095'

Version


Properties

$_allowSignatureContentLengthChange

Defines if the signatureContentLength property can be changed automatically, if a signature value doesn't fit into the reserved space.

$_appearance

$_byteRange

The byte range value

$_certificationLevel

protected int Signer::$_certificationLevel = 0

The certification level

$_document

Document which shall be signed

$_fieldName

protected string Signer::$_fieldName = 'Signature'

The signature field name

$_offsetEndPlaceholder

protected string Signer::$_offsetEndPlaceholder = '(<---OFFSET--->)'

A placeholder for the second length value in the ByteRange array

$_placeHolderByteOffset

The byte offset position of the place holder/reserved space

$_secHandlerCallback

protected ?callback Signer::$_secHandlerCallback

The callback for authenticating at the security handler of the document

$_signatureContentLength

protected int Signer::$_signatureContentLength = 15000

The byte length of the reserved space for the signature content

$_signatureProperties

protected array Signer::$_signatureProperties = array(...)

The signature properties

$_tempDocument

A temporary instance of the signed document

$_tempWriter

The temporary writer instance

$_timestampModule


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 \setasign\SetaPDF2\Core\Type\Exception

Throws \setasign\SetaPDF2\Core\SecHandler\Exception

getSignatureFieldNames()


Methods

__construct()

public Signer::__construct (
\SetaPDF_Core_Document $document,
?callback $secHandlerCallback = null
)

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

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

Throws \setasign\SetaPDF2\Core\SecHandler\Exception

_addDocMp()

protected Signer::_addDocMp (): void

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

Throws \setasign\SetaPDF2\Core\SecHandler\Exception

_checkCertificationLevel()

protected Signer::_checkCertificationLevel (
void
): void

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 Exception

Throws \setasign\SetaPDF2\Core\Type\IndirectReference\Exception

Throws \setasign\SetaPDF2\Core\Type\Exception

Throws \setasign\SetaPDF2\Core\SecHandler\Exception

_createSignatureDictionary()

_createTimestampSignatureDictionary()

Creates the signature dictionary.

Parameters
$field : \SetaPDF_Signer_SignatureField

The signature field

$module : ?\SetaPDF_Signer_Signature_DictionaryInterface
 

_ensureSignatureField()

protected Signer::_ensureSignatureField (
\SetaPDF_Core_Document $document,
bool $returnFieldInstance = false
): ?\SetaPDF_Signer_SignatureField

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 Exception

_prepareTmpDocument()

Prepares the temporary document instance.

Parameters
$type : string
 
$tmpDocument : \SetaPDF_Signer_TmpDocument
 
$path : string
 
$module : ?\SetaPDF_Signer_Signature_DictionaryInterface
 
Exceptions

Throws \setasign\SetaPDF2\Core\Exception

Throws Exception

_updateAcroForm()

protected Signer::_updateAcroForm (): void

Updates the AcroForm dictionary.

Parameters
$document : \SetaPDF_Core_Document

The document instance

addSignatureField()

public Signer::addSignatureField (
string $fieldName = SignatureField::DEFAULT_FIELD_NAME,
int $pageNumber = 1,
int|string $xOrPosition = 0,
int|array $yOrTranslate = 0,
int $width = 0,
int $height = 0
): \SetaPDF_Signer_SignatureField

Proxy method for 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 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 \setasign\SetaPDF2\Core\Exception

Throws \setasign\SetaPDF2\Core\SecHandler\Exception

Throws \setasign\SetaPDF2\Core\Type\Exception

Throws \setasign\SetaPDF2\Core\Type\IndirectReference\Exception

See

addTimeStamp()

public Signer::addTimeStamp (
string $signature,
\SetaPDF_Signer_TmpDocument $tmpDocument
): string

Forwards the signature to a timestamp module and merges the result into the signature container.

Parameters
$signature : string
 
$tmpDocument : \SetaPDF_Signer_TmpDocument
 
Exceptions

Throws Exception

cleanUp()

public Signer::cleanUp (
void
): void

Release memory and cycled references.

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 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 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.

getContactInfo()

public Signer::getContactInfo (
void
): bool|string

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()

public Signer::getLocation (
void
): bool|string

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()

public Signer::getName (
void
): bool|string

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()

public Signer::getReason (
void
): bool|string

Get the reason for the signing.

Return Values

If no name exist FALSE will be returned. Otherwise the value will be returned.

See

getSignatureContentLength()

public Signer::getSignatureContentLength (
void
): int

Get the signature content length that will be used to reserve space for the final signature.

getSignatureField()

public Signer::getSignatureField (
string $fieldName = SignatureField::DEFAULT_FIELD_NAME,
bool $create = true
): bool|\SetaPDF_Signer_SignatureField

Proxy method to 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 \setasign\SetaPDF2\Core\Exception

Throws \setasign\SetaPDF2\Core\SecHandler\Exception

Throws \setasign\SetaPDF2\Core\Type\Exception

Throws \setasign\SetaPDF2\Core\Type\IndirectReference\Exception

Throws Exception

See

getSignatureProperty()

public Signer::getSignatureProperty (
string $name
): bool|string

Get a signature property.

Parameters
$name : string

See and use 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()

Get the time of signing.

Exceptions

Throws \Exception

See

getTimestampModule()

Get the current timestamp module.

preSign()

Prepares a temporary document instance to be used further in an asynchronous signature workflow.

Parameters
$writer : \SetaPDF_Core_Writer_FileInterface
 
$module : ?\SetaPDF_Signer_Signature_DictionaryInterface
 
$saveMethod : int

The $method parameter passed to the main save() call of the document instance. See \setasign\SetaPDF2\Core\Document::save() method.

Exceptions

Throws Exception

Throws \setasign\SetaPDF2\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 : ?\SetaPDF_Signer_Signature_DictionaryInterface
 
$saveMethod : int

The $method parameter passed to the main save() call of the document instance. See \setasign\SetaPDF2\Core\Document::save() method.*

Exceptions

Throws Exception

Throws \setasign\SetaPDF2\Core\Exception

See

saveSignature()

public Signer::saveSignature (
\SetaPDF_Signer_TmpDocument $tmpDocument,
string $signature
): void

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 Exception

Throws Exception\ContentLength

setAllowSignatureContentLengthChange()

public Signer::setAllowSignatureContentLengthChange (
bool $allowSignatureContentLengthChange
): void

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 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()

public Signer::setCertificationLevel (
int $certificationLevel
): void

Set the certification level.

Parameters
$certificationLevel : int

Possible values are defined in the Signer::CERTIFICATION_LEVEL_XXX constants.

See

setContactInfo()

public Signer::setContactInfo (
string $contactInfo
): void

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()

public Signer::setLocation (
string $location
): void

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()

public Signer::setName (
string $name
): void

Set the name of the person or authority signing the document.

Parameters
$name : string

The value in UTF-8 encoding

See

setReason()

public Signer::setReason (
string $reason
): void

Set the reason for the signing.

Parameters
$reason : string

The reason for the signing in UTF-8 encoding

See

setSignatureContentLength()

public Signer::setSignatureContentLength (
int $length
): void

Set the signature content length that will be used to reserve space for the final signature.

Parameters
$length : int

The length of the signature content.

setSignatureFieldName()

public Signer::setSignatureFieldName (
string $fieldName
): void

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()

public Signer::setSignatureProperty (
string $name,
string $value
): void

Set a signature property.

Parameters
$name : string

See and use Signer::PROP_* constants for valid names

$value : string

The value in UTF-8 encoding

Exceptions

Throws \InvalidArgumentException if the name is not valid

setTimeOfSigning()

public Signer::setTimeOfSigning (): void

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 \setasign\SetaPDF2\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 : int

The $method parameter passed to the main save() call of the document instance. See \setasign\SetaPDF2\Core\Document::save() method.

Exceptions

Throws Exception

Throws \setasign\SetaPDF2\Core\Exception

timestamp()

Adds a document level timestamp.

The \setasign\SetaPDF2\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 : int

The $method parameter passed to the main save() call of the document instance. See \setasign\SetaPDF2\Core\Document::save() method.

Return Values

The timestamp token/signature

Exceptions

Throws Exception

Throws Exception\ContentLength

Throws \setasign\SetaPDF2\Core\Exception