# openssl_pkcs7_sign

(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)

openssl_pkcs7_sign — Firma un mensaje S/MIME

### Descripción

openssl_pkcs7_sign(
string `$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`.

### Parámetros

`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ó.

### Valores devueltos

Devuelve `true` en caso de éxito o `false` en caso de error.

### Ejemplos

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