(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
Le fichier d'entrée que vous avez l'intention de signé numériquement.
outfilename
Le fichier où la signature numérique sera écrite.
signcert
Le certificat X.509 utilisé pour signer numériquement infilename. Voir paramètres Clé/Certificat pour une liste de valeur valide.
privkey
privkey
est la clé privée correspondant à signcert.
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
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
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" => "[email protected]", // syntaxe à clé
"From: HQ <[email protected]>", // syntaxe indexée
"Subject" => "Eyes only")
)) {
// message signée - envoyez-le !
exec(ini_get("sendmail_path") . " < signed.txt");
}
?>