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