(PHP 4 >= 4.0.6, PHP 5, PHP 7)
openssl_pkcs7_encrypt — Chiffre un message S/MIME
$infile
, string $outfile
, mixed $recipcerts
, array $headers
[, int $flags
= 0
[, int $cipherid
= OPENSSL_CIPHER_RC2_40
]] )
openssl_pkcs7_encrypt() prend le contenu du fichier
infilename
et le chiffre en utilisant un
chiffrement RC2 à 40-bit, de manière à ce que le message ne puisse
être lu que par le possesseur de recipcerts
.
infile
outfile
recipcerts
Soit un certificat X.509, soit un tableau de certificats X.509.
headers
headers
est un tableau d'en-têtes qui seront
ajoutés en tête de message, une fois que les données auront été
chiffrées.
headers
peut être un tableau associatif, dont
les clés sont les noms d'en-tête, ou bien un tableau indexé dont chaque
ligne contient un en-tête complet.
flags
flags
peut être utilisé pour spécifier
des options qui affecteront le chiffrement (voir les
constantes PKCS7).
cipherid
Une des constantes cipher.
Cette fonction retourne TRUE
en cas de
succès ou FALSE
si une erreur survient.
Exemple #1 Exemple avec openssl_pkcs7_encrypt()
<?php
// le message que vous souhaitez chiffrer et envoyer à votre agent secret
// en mission commandée, appelé "nighthawk". Vous avez son certificat
// dans le fichier "nighthawk.pem"
$data = <<<EOD
Nighthawk,
Top secret, uniquement votre lecture !
L'ennemi approche! Rendez-vous au café à 8 h 30,
pour votre faux passeport.
HQ
EOD;
// Chargement de la clé
$key = file_get_contents("nighthawk.pem");
// Sauvegarde du message dans un fichier
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
// Chiffrons-le
if (openssl_pkcs7_encrypt("msg.txt", "enc.txt", $key,
array("To" => "nighthawk@example.com", // syntaxe sous forme de clé
"From: HQ <hq@example.com>", // syntaxe sous forme d'indexe
"Subject" => "Que pour vos yeux !"))) {
// message chiffré - envoyez-le !
exec(ini_get("sendmail_path") . " < enc.txt");
}
?>