(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.
Cette fonction retourne true
en cas de succès ou false
si une erreur survient.
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");
}
?>