(PHP 4 >= 4.0.6, PHP 5, PHP 7)
openssl_pkcs7_sign — Firma un mensaje S/MIME
$infilename
   , string $outfilename
   , mixed $signcert
   , mixed $privkey
   , array $headers
   [, int $flags = PKCS7_DETACHED
   [, string $extracerts
  ]] ) : bool
   openssl_pkcs7_sign() toma el contenido del archivo
   nombrado por infilename y lo firma usando el
   certificado y su clave privada coincidente especificados por los
   parámetros signcert y
   privkey.
  
infilename
outfilename
signcert
privkey
headers
       headers es una matriz de cabeceras que
       serán añadidas delante de la información después de que se haya firmado (véase
       openssl_pkcs7_encrypt() para más información acerca
       del formato de este parámetro).
      
flags
       flags se puede usar para alterar la salida - véase constantes PKCS7.
      
extracerts
       extracerts especifica el nombre de un archivo que contiene
       un grupo de certificados extra, para incluir en la firma, que puede ser usado para,
       por ejemplo, ayudar al destinatario a verificar el certificado que se usó.
      
   Devuelve TRUE en caso de éxito o FALSE en caso de error.
  
Ejemplo #1 Ejemplo de openssl_pkcs7_sign()
<?php
// el mensaje que quiere firmar, por lo que el destinatario puede estar serguro de fue usted
// el que lo envió
$data = <<<EOD
Tiene mi autorización para emplear $10,000 en gastos de comida.
El Presidente
EOD;
// guardar el mensaje en un archivo
$fp = fopen("mensaje.txt", "w");
fwrite($fp, $data);
fclose($fp);
// encriptarlo
if (openssl_pkcs7_sign("mensaje.txt", "firmado.txt", "micert.pem",
    array("file://micert.pem", "mi_frase_de_contraseña"),
    array("Para" => "joes@example.com", // sintaxis asociativa
          "DE: C.G. <presidente@example.com>", // sintaxis indexada
          "Tema" => "Confidencial")
    )) {
    // mensaje firmado - ¡envíelo!
    exec(ini_get("ruta_correo") . " < firmado.txt");
}
?>