openssl_pkcs7_sign
(PHP 4 >= 4.0.6, PHP 5, PHP 7)
openssl_pkcs7_sign — Подписать сообщение S/MIME
Описание
$infilename
, string $outfilename
, mixed $signcert
, mixed $privkey
, array $headers
, int $flags
= PKCS7_DETACHED
, string $extracerts
= ?
) : bool
openssl_pkcs7_sign() берет содержимое файла
infilename
и подписывает его с использованием сертификата
signcert
и закрытого ключа privkey
.
Список параметров
-
infilename
-
Файл, который нужно подписать.
-
outfilename
-
Файл, в который будет записана цифровая подпись.
-
signcert
-
Сертификат X.509, который будет использован для подписи. См. параметры ключа/сертификата.
-
privkey
-
privkey
задается секретным ключем, соответствующим сертификату. См. параметры открытого/секретного ключа. -
headers
-
headers
задается массивом заголовков, которые будут добавлены в начало данных после подписания. (см. openssl_pkcs7_encrypt() для получения дополнительной информации о формате этого параметра). -
flags
-
flags
используется для настройки вывода. См. константы PKCS7. -
extracerts
-
extracerts
может содержать имя файла, в котором хранятся дополнительные сертификаты для добавления их к подписи, например для облегчения верификации подписи разными пользователями.
Возвращаемые значения
Возвращает true
в случае успешного завершения или false
в случае возникновения ошибки.
Примеры
Пример #1 Пример использования openssl_pkcs7_sign()
<?php
// сообщение, которое вы хотите подписать для того, чтобы получатели могли
// проверить, что его послали именно вы
$data = <<<EOD
Разрешаю потратить на обед с контрагентом не более 100,000 рублей.
Ваш директор.
EOD;
// сохраняем сообщение в фалй
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
// шифруем
if (openssl_pkcs7_sign("msg.txt", "signed.txt", "file://mycert.pem",
array("file://mycert.pem", "mypassphrase"),
array("To" => "joes@example.com", // ассоциативный синтаксис
"From: HQ <ceo@example.com>", // индексированный синтаксис
"Subject" => "Представительские расходы")
)) {
// сообщение подписано - отправляем!
exec(ini_get("sendmail_path") . " < signed.txt");
}
?>