Assina uma mensagem S/MIME

# openssl_pkcs7_sign

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

openssl_pkcs7_sign — Assina uma mensagem S/MIME

### Descrição

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() pega o conteúdo do arquivo chamado `input_filename` e o assina usando o certificado informado em `certificate` e sua chave privada correspondente especificada por `private_key`.

### Parâmetros

`input_filename`

  O arquivo de entrada a ser assinado digitalmente.

`output_filename`

  O arquivo no qual a assinatura digital será gravada.

`certificate`

  O certificado X.509 usado para assinar digitalmente `input_filename`. Consulte Parâmetros de chave/certificado para obter uma lista de valores válidos.

`private_key`

  `private_key` é a chave privada correspondente ao `certificate`. Consulte Parâmetros de chave pública/privada para obter uma lista de valores válidos.

`headers`

  `headers` é um array de cabeçalhos que serão anexados aos dados após serem assinados (veja openssl_pkcs7_encrypt() para mais informações sobre o formato deste parâmetro).

`flags`

  `flags` são opções que podem ser usadas para alterar a saída - veja as constantes PKCS7.

`untrusted_certificates_filename`

  `untrusted_certificates_filename` especifica o nome de um arquivo contendo vários certificados extras para incluir na assinatura que pode, por exemplo, ser usado para ajudar o destinatário a verificar o certificado que você usou.

### Valor Retornado

Retorna `true` em caso de sucesso ou `false` em caso de falha.

### Registro de Alterações

Versão | Descrição
--- | ---
8.0.0 | `certificate` agora aceita uma instância de OpenSSLCertificate; anteriormente, um resource do tipo `OpenSSL X.509 CSR` era aceito.
8.0.0 | `private_key` agora aceita uma instância de OpenSSLAsymmetricKey ou de OpenSSLCertificate; anteriormente, um resource do tipo `OpenSSL key` ou `OpenSSL X.509 CSR` era aceito.

### Exemplos

Exemplo #1 Exemplo de openssl_pkcs7_sign()

    <?php
    // a mensagem que se deseja assinar para que o destinatário possa ter certeza de que
    // foi você quem a enviou
    $data = <<<EOD

    Você tem minha autorização para gastar R$ 10 mil em despesas de jantar.

    O Presidente
    EOD;
    // salva mensagem em arquivo
    $fp = fopen("msg.txt", "w");
    fwrite($fp, $data);
    fclose($fp);
    // criptografa o arquivo
    if (openssl_pkcs7_sign("msg.txt", "assinado.txt", "file://meu_certificado.pem",
        array("file://meu_certificado.pem", "minha_senha"),
        array("To" => "fulanodetal@example.com", // sintaxe de chaves
              "From: HQ <presidente@example.com>", // sintaxe de índice
              "Subject" => "Ultra secreto")
        )) {
        // mensagem assinada - enviando!
        exec(ini_get("sendmail_path") . " < assinado.txt");
    }
    ?>

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