Documentation

Horde_Crypt_Smime extends Horde_Crypt
in package

Library to interact with the OpenSSL library and implement S/MIME.

Tags
author

Mike Cochrane mike@graftonhall.co.nz

author

Michael Slusarz slusarz@horde.org

category

Horde

copyright

2002-2017 Horde LLC

license

http://www.horde.org/licenses/lgpl21 LGPL 2.1

Table of Contents

$_params  : array<string|int, mixed>
Configuration parameters.
__construct()  : mixed
Constructor.
certToHTML()  : string
Convert a PEM format certificate to readable HTML version.
checkForOpenSSL()  : mixed
Check for the presence of the OpenSSL extension to PHP.
decrypt()  : string
Decrypt text via S/MIME.
encrypt()  : string
Encrypt text using S/MIME.
encryptMIMEPart()  : Horde_Mime_Part
Encrypt a MIME part using S/MIME. This produces S/MIME Version 3.2 compatible data (see RFC 5751 [3.3]).
extractSignedContents()  : string
Extract the contents from signed S/MIME data.
factory()  : Horde_Crypt
Attempts to return a concrete Horde_Crypt instance based on $driver.
getEmailFromKey()  : mixed
Extract the email address from a public key.
parseCert()  : array<string|int, mixed>
Extract the contents of a PEM format certificate to an array.
parsePKCS12Data()  : stdClass
Convert a PKCS 12 encrypted certificate package into a private key, public key, and any additional keys.
signAndEncryptMIMEPart()  : mixed
Sign and Encrypt a MIME part using S/MIME.
signMIMEPart()  : Horde_Mime_Part
Sign a MIME part using S/MIME. This produces S/MIME Version 3.2 compatible data (see RFC 5751 [3.4]).
verify()  : stdClass
Verify a signature using via S/MIME.
verifyPassphrase()  : bool
Verify a passphrase for a given private key.
_createTempFile()  : string
Create a temporary file that will be deleted at the end of this process.
_decryptMessage()  : string
Decrypt an S/MIME encrypted message using a private/public keypair and a passhprase.
_decryptSignature()  : string
Decrypt an S/MIME signed message using a public key.
_encryptMessage()  : string
Encrypt a message in S/MIME format using a public key.
_encryptSignature()  : string
Sign a message in S/MIME format using a private key.
_fixContentType()  : string
The Content-Type parameters PHP's openssl_pkcs7_* functions return are deprecated. Fix these headers to the correct ones (see RFC 2311).
_implodeValues()  : string
Formats a multi-value cert field.

Properties

$_params

Configuration parameters.

protected array<string|int, mixed> $_params = array()

Methods

__construct()

Constructor.

public __construct([array<string|int, mixed> $params = array() ]) : mixed
Parameters
$params : array<string|int, mixed> = array()

Configuration parameters:

  • temp: (string) Location of temporary directory.
Return values
mixed

certToHTML()

Convert a PEM format certificate to readable HTML version.

public certToHTML(string $cert) : string
Parameters
$cert : string

PEM format certificate.

Return values
string

HTML detailing the certificate.

checkForOpenSSL()

Check for the presence of the OpenSSL extension to PHP.

public checkForOpenSSL() : mixed
Tags
throws
Horde_Crypt_Exception
Return values
mixed

decrypt()

Decrypt text via S/MIME.

public decrypt(string $text[, array<string|int, mixed> $params = array() ]) : string
Parameters
$text : string

The text to be smime decrypted.

$params : array<string|int, mixed> = array()

The parameters needed for decryption. See the individual _decrypt*() functions for the parameter requirements.

Tags
throws
Horde_Crypt_Exception
Return values
string

The decrypted message.

encrypt()

Encrypt text using S/MIME.

public encrypt(string $text[, array<string|int, mixed> $params = array() ]) : string
Parameters
$text : string

The text to be encrypted.

$params : array<string|int, mixed> = array()

The parameters needed for encryption. See the individual _encrypt*() functions for the parameter requirements.

Tags
throws
Horde_Crypt_Exception
Return values
string

The encrypted message.

encryptMIMEPart()

Encrypt a MIME part using S/MIME. This produces S/MIME Version 3.2 compatible data (see RFC 5751 [3.3]).

public encryptMIMEPart(Horde_Mime_Part $mime_part[, array<string|int, mixed> $params = array() ]) : Horde_Mime_Part
Parameters
$mime_part : Horde_Mime_Part

The object to encrypt.

$params : array<string|int, mixed> = array()

The parameters required for encryption.

Tags
throws
Horde_Crypt_Exception
Return values
Horde_Mime_Part

An encrypted MIME part object.

extractSignedContents()

Extract the contents from signed S/MIME data.

public extractSignedContents(string $data[, string $sslpath = null ]) : string
Parameters
$data : string

The signed S/MIME data.

$sslpath : string = null

The path to the OpenSSL binary. @deprecated and not used, just for backwards-compatibility.

Tags
throws
Horde_Crypt_Exception
Return values
string

The contents embedded in the signed data.

factory()

Attempts to return a concrete Horde_Crypt instance based on $driver.

public static factory(string $driver[, array<string|int, mixed> $params = array() ]) : Horde_Crypt
Parameters
$driver : string

Either a driver name, or the full class name to use (class must extend Horde_Crypt).

$params : array<string|int, mixed> = array()

A hash containing any additional configuration or parameters a subclass might need.

Tags
throws
Horde_Crypt_Exception
Return values
Horde_Crypt

The newly created concrete instance.

getEmailFromKey()

Extract the email address from a public key.

public getEmailFromKey(string $key) : mixed
Parameters
$key : string

The public key.

Return values
mixed

Returns the first email address found, or null if there are none.

parseCert()

Extract the contents of a PEM format certificate to an array.

public parseCert(string $cert) : array<string|int, mixed>
Parameters
$cert : string

PEM format certificate.

Return values
array<string|int, mixed>

All extractable information about the certificate.

parsePKCS12Data()

Convert a PKCS 12 encrypted certificate package into a private key, public key, and any additional keys.

public parsePKCS12Data(string $pkcs12, array<string|int, mixed> $params) : stdClass
Parameters
$pkcs12 : string

The PKCS 12 data.

$params : array<string|int, mixed>

The parameters needed for parsing.

Parameters:
===========
'sslpath' => The path to the OpenSSL binary. (REQUIRED)
'password' => The password to use to decrypt the data. (Optional)
'newpassword' => The password to use to encrypt the private key.
                 (Optional)
Tags
throws
Horde_Crypt_Exception
Return values
stdClass

An object. 'private' - The private key in PEM format. 'public' - The public key in PEM format. 'certs' - An array of additional certs.

signAndEncryptMIMEPart()

Sign and Encrypt a MIME part using S/MIME.

public signAndEncryptMIMEPart(Horde_Mime_Part $mime_part[, array<string|int, mixed> $sign_params = array() ][, array<string|int, mixed> $encrypt_params = array() ]) : mixed
Parameters
$mime_part : Horde_Mime_Part

The object to sign and encrypt.

$sign_params : array<string|int, mixed> = array()

The parameters required for signing. @see _encryptSignature().

$encrypt_params : array<string|int, mixed> = array()

The parameters required for encryption. @see _encryptMessage().

Tags
throws
Horde_Crypt_Exception
Return values
mixed

A Horde_Mime_Part object that is signed and encrypted.

signMIMEPart()

Sign a MIME part using S/MIME. This produces S/MIME Version 3.2 compatible data (see RFC 5751 [3.4]).

public signMIMEPart(Horde_Mime_Part $mime_part, array<string|int, mixed> $params) : Horde_Mime_Part
Parameters
$mime_part : Horde_Mime_Part

The object to sign.

$params : array<string|int, mixed>

The parameters required for signing.

Tags
throws
Horde_Crypt_Exception
Return values
Horde_Mime_Part

A signed MIME part object.

verify()

Verify a signature using via S/MIME.

public verify(string $text, mixed $certs) : stdClass
Parameters
$text : string

The multipart/signed data to be verified.

$certs : mixed

Either a single or array of root certificates.

Tags
throws
Horde_Crypt_Exception
Return values
stdClass

Object with the following elements:

cert - (string) The certificate of the signer stored in the message (in
       PEM format).
email - (string) The email of the signing person.
msg - (string) Status string.
verify - (boolean) True if certificate was verified.

verifyPassphrase()

Verify a passphrase for a given private key.

public verifyPassphrase(string $private_key, string $passphrase) : bool
Parameters
$private_key : string

The user's private key.

$passphrase : string

The user's passphrase.

Return values
bool

Returns true on valid passphrase, false on invalid passphrase.

_createTempFile()

Create a temporary file that will be deleted at the end of this process.

protected _createTempFile([string $descrip = 'horde-crypt' ][, bool $delete = true ]) : string
Parameters
$descrip : string = 'horde-crypt'

Description string to use in filename.

$delete : bool = true

Delete the file automatically?

Return values
string

Filename of a temporary file.

_decryptMessage()

Decrypt an S/MIME encrypted message using a private/public keypair and a passhprase.

protected _decryptMessage(string $text, array<string|int, mixed> $params) : string
Parameters
$text : string

The text to be decrypted.

$params : array<string|int, mixed>

The parameters needed for decryption.

Parameters:
===========
'type'        =>  'message' (REQUIRED)
'pubkey'      =>  public key. (REQUIRED)
'privkey'     =>  private key. (REQUIRED)
'passphrase'  =>  Passphrase for Key. (REQUIRED)
Tags
throws
Horde_Crypt_Exception
Return values
string

The decrypted message.

_decryptSignature()

Decrypt an S/MIME signed message using a public key.

protected _decryptSignature(string $text, array<string|int, mixed> $params) : string
Parameters
$text : string

The text to be verified.

$params : array<string|int, mixed>

The parameters needed for verification.

Tags
throws
Horde_Crypt_Exception
Return values
string

The verification message.

_encryptMessage()

Encrypt a message in S/MIME format using a public key.

protected _encryptMessage(string $text, array<string|int, mixed> $params) : string
Parameters
$text : string

The text to be encrypted.

$params : array<string|int, mixed>

The parameters needed for encryption.

  • type: (string) [REQUIRED] 'message'.
  • pubkey: (mixed) [REQUIRED] Public key/cert or array of public keys/certs.
Tags
throws
Horde_Crypt_Exception
Return values
string

The encrypted message.

_encryptSignature()

Sign a message in S/MIME format using a private key.

protected _encryptSignature(string $text, array<string|int, mixed> $params) : string
Parameters
$text : string

The text to be signed.

$params : array<string|int, mixed>

The (string) parameters needed for signing:

  • 'certs': Additional signing certs (Optional)
  • 'passphrase': Passphrase for key (REQUIRED)
  • 'privkey': Private key (REQUIRED)
  • 'pubkey': Public key (REQUIRED)
  • 'sigtype': Determine the signature type to use. (Optional):
    • 'cleartext': Make a clear text signature
    • 'detach': Make a detached signature (DEFAULT)
  • 'type': 'signature' (REQUIRED)
Tags
throws
Horde_Crypt_Exception
Return values
string

The signed message.

_fixContentType()

The Content-Type parameters PHP's openssl_pkcs7_* functions return are deprecated. Fix these headers to the correct ones (see RFC 2311).

protected _fixContentType(string $text, string $type) : string
Parameters
$text : string

The PKCS7 data.

$type : string

Is this 'message' or 'signature' data?

Return values
string

The PKCS7 data with the correct Content-Type parameter.

_implodeValues()

Formats a multi-value cert field.

protected _implodeValues(array<string|int, mixed>|string $values) : string
Parameters
$values : array<string|int, mixed>|string

A cert field value.

Return values
string

The formatted cert field value(s).

Search results