setasign\SetaPDF2\Core\SecHandler

Standard Security handler class handling standard encryption features

File: /SetaPDF v2/Core/SecHandler/Standard.php
Old class name (alias): \SetaPDF_Core_SecHandler_Standard

Class hierarchy

Implements

Summary

Static Properties

$_padding

static protected string Standard::$_padding =

The padding string


Properties

$_auth

protected bool AbstractHandler::$_auth = false

Defines if this security handler is authenticated

$_authMode

protected ?string AbstractHandler::$_authMode

The auth mode

Says who is authenticated: user or owner

$_document

The document to which this security handler is attached

$_encryptMetadata

protected bool AbstractHandler::$_encryptMetadata = true

Metadata are encrypted or not

$_encryptionDictionary

$_encryptionKey

protected string AbstractHandler::$_encryptionKey

The encryption key

$_keyLength

protected int AbstractHandler::$_keyLength = 5

The key length in bytes

This value is still needed if crypt filters are in use:

  • It is needed to compute the encryption key.
  • It is needed to compute the O value It is NOT documented which key length should be used for this things if a crypt filter is in use.

$_streamAlgorithm

protected array AbstractHandler::$_streamAlgorithm = array(...)

The algorithm key length to be used for en/decrypting stream

$_stringAlgorithm

protected array AbstractHandler::$_stringAlgorithm = array(...)

The algorithm key length to be used for en/decrypting strings


Static Methods

ensurePasswordEncoding()

public static Standard::ensurePasswordEncoding (
int $revision,
string $password,
string $encoding
): string

This method ensures the correct encoding of a password.

Internally the password is converted into the required encoding for the desired revision and it is pocessed with the SASLprep profile if requried.

Parameters
$revision : int
 
$password : string
 
$encoding : string
 
Exceptions

Throws \setasign\SetaPDF2\NotImplementedException

ensurePermissions()

public static Standard::ensurePermissions (
int $permissions,
int $revision
): int

Ensures bits in the permission flag.

Parameters
$permissions : int
 
$revision : int
 
Exceptions

Throws Exception


Methods

__construct()

The constructor.

Parameters
$document : \SetaPDF_Core_Document
 
$encryptionDictionary : \SetaPDF_Core_Type_Dictionary
 
Exceptions

Throws Exception

Throws \setasign\SetaPDF2\Core\Type\Exception

_authByOwnerPassword()

protected Standard::_authByOwnerPassword (
string $ownerPassword = ''
): string|bool

Internal method to authenticate with the owner password.

Parameters
$ownerPassword : string
 
Return Values

The encryption key if the authentication was successful. False if not.

Exceptions

Throws \setasign\SetaPDF2\NotImplementedException

Throws \setasign\SetaPDF2\Core\Type\Exception

Throws Exception

_authByUserPassword()

protected Standard::_authByUserPassword (
string $userPassword = ''
): string|bool

Internal method to authenticate with the user password.

Parameters
$userPassword : string
 
Return Values

The encryption key if the authentication was successful. False if not.

Exceptions

Throws Exception

Throws \setasign\SetaPDF2\Core\Type\Exception

Throws \setasign\SetaPDF2\NotImplementedException

_computeEncryptionKey()

protected Standard::_computeEncryptionKey (
string $password = ''
): string

Compute the encryption key based on a password.

Parameters
$password : string
 
Exceptions

Throws \setasign\SetaPDF2\NotImplementedException

Throws \setasign\SetaPDF2\Core\Type\Exception

Throws Exception

_computeHashR6()

protected AbstractHandler::_computeHashR6 (
string $data,
string $inputPassword,
string $userKey = ''
): string

Computes a hash for security handler revision 6.

Parameters
$data : string
 
$inputPassword : string
 
$userKey : string
 

_computeOValue()

protected Standard::_computeOValue (
string $userPassword,
string $ownerPassword = ''
): string

Compute the O value.

Parameters
$userPassword : string
 
$ownerPassword : string
 
Exceptions

Throws Exception

Throws \setasign\SetaPDF2\Core\Type\Exception

_computeUValue()

protected Standard::_computeUValue (
string $encryptionKey
): string

Compute the U value.

Parameters
$encryptionKey : string
 
Exceptions

Throws Exception

Throws \setasign\SetaPDF2\Core\Type\Exception

_crypt()

protected AbstractHandler::_crypt (
string $data,
array $algorithm,
\SetaPDF_Core_Type_IndirectObject $param = null,
bool $encrypt = true
): string

Encrypts or decrypts data using Algorithm 1 of the PDF specification.

Parameters
$data : string
 
$algorithm : array
 
$param : \SetaPDF_Core_Type_IndirectObject
 
$encrypt : bool
 
Exceptions

Throws Exception

_getEncryptionKeyByUserPassword()

protected Standard::_getEncryptionKeyByUserPassword (
string $password = ''
): string

Get the encryption key by the user password.

Parameters
$password : string
 
Exceptions

Throws Exception

Throws \setasign\SetaPDF2\Core\Type\Exception

Throws \setasign\SetaPDF2\NotImplementedException

auth()

public Standard::auth (
string $password = null,
?string $encoding = null
): bool

Authenticate against the security handler.

This method will try to auth first with the owner password.

If this fails it will try to auth to the user password.

Parameters
$password : string
 
$encoding : ?string
 
Return Values

Authentication was successful or not

Exceptions

Throws \setasign\SetaPDF2\NotImplementedException

Throws \setasign\SetaPDF2\Core\Type\Exception

Throws Exception

authByOwnerPassword()

public Standard::authByOwnerPassword (
string $password,
?string $encoding = null
): bool

Authenticate with the owner password.

Parameters
$password : string
 
$encoding : ?string
 
Exceptions

Throws \setasign\SetaPDF2\NotImplementedException

Throws \setasign\SetaPDF2\Core\Type\Exception

Throws Exception

authByUserPassword()

public Standard::authByUserPassword (
string $password,
null $encoding = null
): bool

Authenticate with the user password.

Parameters
$password : string
 
$encoding : null
 
Exceptions

Throws \setasign\SetaPDF2\NotImplementedException

Throws \setasign\SetaPDF2\Core\Type\Exception

Throws Exception

decryptStream()

public AbstractHandler::decryptStream (
string $data,
\SetaPDF_Core_Type_IndirectObject $param = null
): string

Decrypt a stream.

Parameters
$data : string
 
$param : \SetaPDF_Core_Type_IndirectObject
 
Exceptions

Throws Exception

decryptString()

public AbstractHandler::decryptString (
string $data,
\SetaPDF_Core_Type_IndirectObject $param = null
): string

Decrypt a string.

Parameters
$data : string
 
$param : \SetaPDF_Core_Type_IndirectObject
 
Exceptions

Throws Exception

encryptStream()

public AbstractHandler::encryptStream (
string $data,
\SetaPDF_Core_Type_IndirectObject $param = null
): string

Encrypt a stream.

Parameters
$data : string
 
$param : \SetaPDF_Core_Type_IndirectObject
 
Exceptions

Throws Exception

encryptString()

public AbstractHandler::encryptString (
string $data,
\SetaPDF_Core_Type_IndirectObject $param = null
): string

Encrypt a string.

Parameters
$data : string
 
$param : \SetaPDF_Core_Type_IndirectObject
 
Exceptions

Throws Exception

getAuthMode()

public AbstractHandler::getAuthMode (
void
): string

Get the auth method.

Return Values

"user", "owner" or an empty string if not authenticated.

getDocument()

Returns the document instance of this security handler.

getEncryptMetadata()

public AbstractHandler::getEncryptMetadata (
void
): bool

Returns true if the metadata are/will be encrypted.

getEncryptionDictionary()

Gets the encryption dictionary.

getEncryptionKey()

public AbstractHandler::getEncryptionKey (
void
): string

Get the encryption key if known/authenticated.

Exceptions

Throws Exception

getPdfVersion()

public AbstractHandler::getPdfVersion (
void
): string

Get the PDF version, which is needed for the currently used encryption algorithm.

Exceptions

Throws \setasign\SetaPDF2\NotImplementedException

getPermission()

public Standard::getPermission (
int $permission
): bool

Queries if a permission is granted.

Parameters
$permission : int
 
Exceptions

Throws \setasign\SetaPDF2\Core\Type\Exception

getPermissions()

public Standard::getPermissions (
void
): int

Returns current permissions.

See

getRevision()

public Standard::getRevision (
void
): int

Get the revision of the security handler.

Exceptions

Throws \setasign\SetaPDF2\Core\Type\Exception

getStreamAlgorithm()

public AbstractHandler::getStreamAlgorithm (
void
): array

Get the stream algorithm data.

getStringAlgorithm()

public AbstractHandler::getStringAlgorithm (
void
): array

Get the string algorithm data.

isAuth()

public AbstractHandler::isAuth (
void
): bool

Queries if the security handler is authenticated.

If not it tries by calling auth() without a password.