openssl_pkcs7_sign

(PHP 4 >= 4.0.6, PHP 5, PHP 7)

openssl_pkcs7_signSigne un message S/MIME

Description

openssl_pkcs7_sign ( string $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.

Liste de paramètres

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.

Valeurs de retour

Cette fonction retourne TRUE en cas de succès ou FALSE si une erreur survient.

Exemples

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");
}
?>