Учебник РНР
Назад Вперёд

openssl_pkcs7_sign

(PHP 4 >= 4.0.6)

openssl_pkcs7_sign - подписывает сообщение S/MIME.

Описание

bool openssl_pkcs7_sign (string infilename, string outfilename, mixed signcert, mixed privkey, array headers [, long flags [, string extracertsfilename]])

Предупреждение!

Эта функция - ЭКСПЕРИМЕНТАЛЬНАЯ. Поведение, имя и всё остальное, что задокументировано для данной функции может быть изменено в будущих релизах РНР без предупреждения. Вы можете использовать эту функцию только на свой страх и риск.

openssl_pkcs7_sign() принимает содержимое файла infilename и подписывает его с использованием сертификата и совпадающего private-ключа, специфицированных параметрами signcert и privkey.

headers это массив шапок/headers, которые будут присоединяться впереди данных после их подписывания (см. в openssl_pkcs7_encrypt() о формате этого параметра).

flags можно использовать для изменения вывода - см. PKCS7-константы; если не специфицирован, по умолчанию будет PKCS7_DETACHED.

extracerts специфицирует имя файла, содержащего узел дополнительных сертификатов для включения в подпись, что может использоваться, например, для того, чтобы принимающий мог проверить сертификат, используемый вами.

Пример 1. openssl_pkcs7_sign()

// сообщение, которое вы хотели бы подписать, чтобы принимающий/recipient
// мог убедиться, что это именно вы его отправили
$data = <<<EOD

You have my authorization to spend $10,000 on dinner expenses.

The CEO
EOD;
// сохранить сообщение в файл
$fp = fopen("msg.txt", "w");
fwrite($fp, $data);
fclose($fp);
// зашифровать его
if (openssl_pkcs7_sign("msg.txt", "signed.txt", "mycert.pem",
    array("mycert.pem", "mypassphrase"),
    array("To" => "joes@sales.com", // синтаксис с ключами
          "From: HQ <ceo@sales.com>", // синтаксис с индексами
          "Subject" => "Eyes only"))
{
    // сообщение подписано - отправить его!
    exec(ini_get("sendmail_path") . " < signed.txt");
}

Примечание: эта функция была добавлена в 4.0.6.


Назад Оглавление Вперёд
openssl_pkcs7_encrypt Вверхopenssl_pkcs7_verify