(PHP 4 >= 4.0.6, PHP 5, PHP 7)
openssl_pkcs7_sign — Signe un message S/MIME
$infilename
, string $outfilename
, mixed $signcert
, mixed $privkey
, array $headers
[, int $flags = PKCS7_DETACHED
[, string $extracerts
]] ) : bool
openssl_pkcs7_sign() prend le contenu du fichier
infilename et le signe en utilisant le
certificat et la clé privée contenus dans les arguments
signcert et privkey.
infilename
outfilename
signcert
privkey
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 sert à modifier le message final.
Voyez les constantes PKCS7.
extracerts
extracerts 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.
Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.
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
Tu peux dépenser jusqu'à 10000 euros en note de frais.
Ton boss
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", "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");
}
?>