Firma un mensaje S/MIME

# openssl_pkcs7_sign

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

openssl_pkcs7_sign — Firma un mensaje S/MIME

### Descripción

function openssl_pkcs7_sign(
string `$input_filename`,
string `$output_filename`,
OpenSSLCertificate|string `$certificate`,
#[\SensitiveParameter]OpenSSLAsymmetricKey|OpenSSLCertificate|array|string `$private_key`,
?array `$headers`,
int `$flags` = `PKCS7_DETACHED`,
?string `$untrusted_certificates_filename` = `null`
): bool

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

### Parámetros

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

### Valores devueltos

Esta función retorna `true` en caso de éxito o `false` si ocurre un error.

### Historial de cambios

Versión | Descripción
--- | ---
8.0.0 | `certificate` ahora acepta una instancia de OpenSSLCertificate ; anteriormente, se aceptaba un resource de tipo `OpenSSL X.509 CSR`.
8.0.0 | `private_key` ahora acepta una instancia de OpenSSLAsymmetricKey o OpenSSLCertificate ; anteriormente, se aceptaba un resource de tipo `OpenSSL key` o `OpenSSL X.509`.

### Ejemplos

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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open