Files
php-doc-ru/reference/openssl/functions/openssl-pkcs7-sign.xml
Alexey Pyltsyn b29815cd53 OpenSSL: improvements
git-svn-id: https://svn.php.net/repository/phpdoc/ru/trunk@344193 c90b9560-bf6c-de11-be94-00142212c4b1
2018-02-07 10:17:14 +00:00

168 lines
6.0 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 904d0aeccde44f12b8e87e326febc091bf3466f9 Maintainer: rjhdby Status: ready -->
<!-- Reviewed: yes Maintainer: lex -->
<refentry xmlns="http://docbook.org/ns/docbook" xml:id="function.openssl-pkcs7-sign">
<refnamediv>
<refname>openssl_pkcs7_sign</refname>
<refpurpose>Подписать сообщение S/MIME</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>openssl_pkcs7_sign</methodname>
<methodparam><type>string</type><parameter>infilename</parameter></methodparam>
<methodparam><type>string</type><parameter>outfilename</parameter></methodparam>
<methodparam><type>mixed</type><parameter>signcert</parameter></methodparam>
<methodparam><type>mixed</type><parameter>privkey</parameter></methodparam>
<methodparam><type>array</type><parameter>headers</parameter></methodparam>
<methodparam choice="opt"><type>int</type><parameter>flags</parameter><initializer>PKCS7_DETACHED</initializer></methodparam>
<methodparam choice="opt"><type>string</type><parameter>extracerts</parameter></methodparam>
</methodsynopsis>
<para>
<function>openssl_pkcs7_sign</function> берет содержимое файла
<parameter>infilename</parameter> и подписывает его с использованием сертификата
<parameter>signcert</parameter> и закрытого ключа <parameter>privkey</parameter>.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>infilename</parameter></term>
<listitem>
<para>
Файл, который нужно подписать.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>outfilename</parameter></term>
<listitem>
<para>
Файл, в который будет записана цифровая подпись.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>signcert</parameter></term>
<listitem>
<para>
Сертификат X.509, который будет использован для подписи.
См. <link linkend="openssl.certparams">параметры ключа/сертификата</link>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>privkey</parameter></term>
<listitem>
<para>
<parameter>privkey</parameter> задается секретным ключем, соответствующим сертификату.
См. <link linkend="openssl.certparams">параметры открытого/секретного ключа</link>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>headers</parameter></term>
<listitem>
<para>
<parameter>headers</parameter> задается массивом заголовков,
которые будут добавлены в начало данных после подписания. (см. <function>openssl_pkcs7_encrypt</function>
для получения дополнительной информации о формате этого параметра).
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>flags</parameter></term>
<listitem>
<para>
<parameter>flags</parameter> используется для настройки вывода. См. <link
linkend="openssl.pkcs7.flags">константы PKCS7</link>.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>extracerts</parameter></term>
<listitem>
<para>
<parameter>extracerts</parameter> может содержать имя файла,
в котором хранятся дополнительные сертификаты для добавления их
к подписи, например для облегчения верификации подписи разными пользователями.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
&return.success;
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования <function>openssl_pkcs7_sign</function></title>
<programlisting role="php">
<![CDATA[
<?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");
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->