setasign\SetaPDF2\Core\SecHandler\PublicKey

Arcfour128 Generator class for RC4 40 bit public-key security handler

File: /SetaPDF v2/Core/SecHandler/PublicKey/Arcfour128.php
Old class name (alias): \SetaPDF_Core_SecHandler_PublicKey_Arcfour128

Class hierarchy

Implements

Summary

Constants

PERM_OWNER

Permission constant.

When set permits change of encryption and enables all other permissions.

See
  • PDF 32000-1:2008 - Table 24 - Public-Key security handler user access permissions

Properties

$_auth

Defines if this security handler is authenticated

$_authData

An array holding authentication data.

$_authMode

The auth mode

Says who is authenticated: user or owner

$_cipherId

The cipher id that is passed to openssl_pkcs7_encrypt().

See

$_document

The document to which this security handler is attached

$_encryptMetadata

Metadata are encrypted or not

$_encryptionKey

$_keyLength

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

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

$_stringAlgorithm

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


Static Methods


Methods

_cleanUp()

Removes temporary files.

_computeEncryptionKey()

protected \setasign\SetaPDF2\Core\SecHandler\PublicKey::_computeEncryptionKey (
string[] $envelopes,
string $seed,
bool|true $encryptMetadata = true
): string

Computes the encryption key.

Parameters
$envelopes : string[]
 
$seed : string
 
$encryptMetadata : bool|true
 

_computeHashR6()

protected \setasign\SetaPDF2\Core\SecHandler\AbstractHandler::_computeHashR6 (
string $data,
string $inputPassword,
string $userKey = ''
): string

Computes a hash for security handler revision 6.

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

_crypt()

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

_prepareEnvelopes()

Prepares the PKCS#7 envelopes.

Parameters
$recipients : \SetaPDF_Core_SecHandler_PublicKey_Recipient[]
 
$seed : string
 
Exceptions

Throws \Exception

_preparePermission()

Prepares permission flag.

Parameters
$permissions : int
 

auth()

public \setasign\SetaPDF2\Core\SecHandler\PublicKey::auth (
mixed $recipientCert = null,
mixed $recipientKey = null
): bool

Authenticate to the security handler with a certificate and private key.

Parameters
$recipientCert : mixed

See parameter $recipcert of openssl_pkcs7_decrypt().

$recipientKey : mixed

See parameter $recipkey of openssl_pkcs7_decrypt().

Exceptions

Throws \setasign\SetaPDF2\Core\SecHandler\Exception

Throws \Exception

decryptStream()

Decrypt a stream.

Parameters
$data : string
 
$param : \SetaPDF_Core_Type_IndirectObject
 
Exceptions

Throws \setasign\SetaPDF2\Core\SecHandler\Exception

decryptString()

Decrypt a string.

Parameters
$data : string
 
$param : \SetaPDF_Core_Type_IndirectObject
 
Exceptions

Throws \setasign\SetaPDF2\Core\SecHandler\Exception

encryptStream()

Encrypt a stream.

Parameters
$data : string
 
$param : \SetaPDF_Core_Type_IndirectObject
 
Exceptions

Throws \setasign\SetaPDF2\Core\SecHandler\Exception

encryptString()

Encrypt a string.

Parameters
$data : string
 
$param : \SetaPDF_Core_Type_IndirectObject
 
Exceptions

Throws \setasign\SetaPDF2\Core\SecHandler\Exception

getAuthMode()

Get the auth method.

Return Values

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

getCipherId()

Get the cipher id, that will be passed to openssl_pkcs7_encrypt().

See

getDocument()

Returns the document instance of this security handler.

getEncryptMetadata()

Returns true if the metadata are/will be encrypted.

getEncryptionDictionary()

getEncryptionKey()

Get the encryption key if known/authenticated.

Exceptions

Throws \setasign\SetaPDF2\Core\SecHandler\Exception

getPdfVersion()

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

Exceptions

Throws \setasign\SetaPDF2\NotImplementedException

getPermission()

Queries if a permission is granted.

Parameters
$permission : int
 

getStreamAlgorithm()

Get the stream algorithm data.

getStringAlgorithm()

Get the string algorithm data.

isAuth()

Queries if the security handler is authenticated.

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

setCipherId()

Set the cipher id, that will be passed to openssl_pkcs7_encrypt().

ISO/DIS 32000-2: 7.6.5.3 Public-key encryption algorithms:

The algorithms that shall be used to encrypt the enveloped data in the PKCS#7 object are: RC4 with key lengths up to 256-bits, DES, Triple DES, RC2 with key lengths up to 128 bits, 128-bit AES in Cipher Block Chaining (CBC) mode, 192-bit AES in CBC mode, 256-bit AES in CBC mode.
Parameters
$cipherId : int
 
See