(PHP 4 >= 4.0.6, PHP 5, PHP 7, PHP 8)
openssl_pkcs7_sign — Assina uma mensagem S/MIME
$input_filename
,$output_filename
,$certificate
,$private_key
,$headers
,$flags
= PKCS7_DETACHED
,$untrusted_certificates_filename
= null
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
.
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.
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.
|
Exemplo #1 Exemplo de openssl_pkcs7_sign()
<?php
// a mensagem que você 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");
}
?>