(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_pkcs7_sign — Firma un mensaje S/MIME
$input_filename
,$output_filename
,$certificate
,$private_key
,$headers
,$flags
= PKCS7_DETACHED
,$untrusted_certificates_filename
= null
openssl_pkcs7_sign() toma el contenido del fichero
input_filename
y lo firma utilizando el
certificado y la clave privada contenidos en los argumentos
certificate
y private_key
.
input_filename
El fichero de entrada que se tiene la intención de firmar digitalmente.
output_filename
El fichero donde se escribirá la firma digital.
certificate
El certificado X.509 utilizado para firmar digitalmente input_filename
.
Ver parámetros Clave/Certificado
para una lista de valores válidos.
private_key
private_key
es la clave privada correspondiente a certificate
.
Ver parámetros Clave Pública/Privada
para una lista de valores válidos.
headers
headers
es un array de encabezados que
serán añadidos a los datos cifrados (ver la función
openssl_pkcs7_encrypt() para más detalles sobre
el formato del parámetro).
flags
flags
puede ser utilizado para modificar la salida.
Ver las constantes PKCS7.
untrusted_certificates_filename
untrusted_certificates_filename
especifica el nombre del fichero que contiene
un conjunto de certificados adicionales a incluir en la
firma, los cuales podrán ayudar al destinatario a verificar los
datos que se utilizan.
Versión | Descripción |
---|---|
8.0.0 |
certificate ahora acepta una instancia de
OpenSSLCertificate ;
anteriormente, se aceptaba un recurso de tipo OpenSSL X.509 CSR .
|
8.0.0 |
private_key ahora acepta una instancia de
OpenSSLAsymmetricKey o OpenSSLCertificate ;
anteriormente, se aceptaba un recurso de tipo OpenSSL key o OpenSSL X.509 .
|
Ejemplo #1 Ejemplo con openssl_pkcs7_sign()
<?php
// el mensaje que se quiere firmar, para que el destinatario esté seguro de que
// proviene de usted
$data = <<<EOD
Usted está autorizado a gastar 10 000€ en gastos de viaje.
El PDG
EOD;
// guardar el mensaje en un fichero
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
// cifrarlo
if (openssl_pkcs7_sign("msg.txt", "signed.txt", "file://mycert.pem",
array("file://mycert.pem", "mypassphrase"),
array("To" => "joes@example.com", // sintaxis con clave
"From: HQ <ceo@example.com>", // sintaxis indexada
"Subject" => "Eyes only")
)) {
// mensaje firmado - ¡envíelo!
exec(ini_get("sendmail_path") . " < signed.txt");
}
?>