(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_pkcs7_sign — Firma un mensaje S/MIME
$infilename
,$outfilename
,$signcert
,$privkey
,$headers
,$flags
= PKCS7_DETACHED,$extracerts
= ?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ó.
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");
}
?>