(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_pkcs7_sign — Signe un message S/MIME
$input_filename
,$output_filename
,$certificate
,$private_key
,$headers
,$flags
= PKCS7_DETACHED
,$untrusted_certificates_filename
= null
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
.
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.
Version | Description |
---|---|
8.0.0 | certificate accepte désormais une instance de OpenSSLCertificate ; auparavant, une ressource de type OpenSSL X.509 CSR était acceptée. |
8.0.0 | private_key accepte désormais une instance de OpenSSLAsymmetricKey ou OpenSSLCertificate ; auparavant, une ressource de type OpenSSL key ou OpenSSL X.509 était acceptée. |
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");
}
?>