openssl_pkcs7_sign

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_pkcs7_signSigne un message S/MIME

Description

openssl_pkcs7_sign(
    string$input_filename,
    string$output_filename,
    OpenSSLCertificate|string$certificate,
    OpenSSLAsymmetricKey|OpenSSLCertificate|array|string$private_key,
    ?array$headers,
    int$flags = PKCS7_DETACHED,
    ?string$untrusted_certificates_filename = null
): bool

openssl_pkcs7_sign() prend le contenu du fichier input_filename et le signe en utilisant le certificat et la clé privée contenus dans les arguments certificate et private_key.

Liste de paramètres

input_filename

Le fichier d'entrée que vous avez l'intention de signer numériquement.

output_filename

Le fichier où la signature numérique sera écrite.

certificate

Le certificat X.509 utilisé pour signer numériquement input_filename. Voir paramètres Clé/Certificat pour une liste de valeur valide.

private_key

private_key est la clé privée correspondant à certificate. Voir paramètres Clé Publique/Privée pour une liste de valeur valide.

headers

headers est un tableau d'en-têtes qui seront ajoutés aux données chiffrées (voir la fonction openssl_pkcs7_encrypt() pour plus de détails sur le format du paramètre).

flags

flags peut être utilisé pour modifier la sortie. Voir les constantes PKCS7.

untrusted_certificates_filename

untrusted_certificates_filename spécifie le nom du fichier contenant un ensemble de certificats supplémentaires à inclure dans la signature, qui pourront aider le destinataire à vérifier les données que vous utilisez.

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Historique

VersionDescription
8.0.0certificate accepte désormais une instance de OpenSSLCertificate ; auparavant, une ressource de type OpenSSL X.509 CSR était acceptée.
8.0.0private_key accepte désormais une instance de OpenSSLAsymmetricKey ou OpenSSLCertificate ; auparavant, une ressource de type OpenSSL key ou OpenSSL X.509 était acceptée.

Exemples

Exemple #1 Exemple avec openssl_pkcs7_sign()

<?php
// le message que vous voulez signer, afin que le destinataire soit sûr qu'il
// vient bien de vous
$data = <<<EOD

Vous êtes autorisé à dépenser 10 000€ en note de frais.

Le PDG
EOD;
// sauvez le message dans un fichier
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
// encrypt it
if (openssl_pkcs7_sign("msg.txt", "signed.txt", "file://mycert.pem",
array(
"file://mycert.pem", "mypassphrase"),
array(
"To" => "joes@example.com", // syntaxe à clé
"From: HQ <ceo@example.com>", // syntaxe indexée
"Subject" => "Eyes only")
)) {
// message signée - envoyez-le !
exec(ini_get("sendmail_path") . " < signed.txt");
}
?>
To Top