(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_filenameLe fichier d'entrée que vous avez l'intention de signer numériquement.
output_filenameLe 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 | certificateaccepte désormais une instance de
       OpenSSLCertificate ;
       auparavant, une ressource de typeOpenSSL X.509 CSRétait acceptée. | 
| 8.0.0 | private_keyaccepte désormais une instance de
       OpenSSLAsymmetricKey ou OpenSSLCertificate ;
       auparavant, une ressource de typeOpenSSL keyouOpenSSL 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");
}
?>