Files
php-doc-ru/reference/openssl/functions/openssl-seal.xml
2024-05-23 07:09:56 +03:00

208 lines
7.3 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"?>
<!-- EN-Revision: 5bc68add3da3cd18c40f851e944b15095d3a26aa Maintainer: rjhdby Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.openssl-seal" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>openssl_seal</refname>
<refpurpose>Запечатывает (зашифровывает) данные</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>int</type><type>false</type></type><methodname>openssl_seal</methodname>
<methodparam><type>string</type><parameter>data</parameter></methodparam>
<methodparam><type>string</type><parameter role="reference">sealed_data</parameter></methodparam>
<methodparam><type>array</type><parameter role="reference">encrypted_keys</parameter></methodparam>
<methodparam><type>array</type><parameter>public_key</parameter></methodparam>
<methodparam><type>string</type><parameter>cipher_algo</parameter></methodparam>
<methodparam choice="opt"><type>string</type><parameter role="reference">iv</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
Функция <function>openssl_seal</function> запечатывает (шифрует)
данные <parameter>data</parameter>, методом <parameter>cipher_algo</parameter>
со сгенерированным случайно секретным ключом. Ключ шифруется
каждым открытым ключом, который связан с идентификаторами в массиве <parameter>public_key</parameter>,
и каждый зашифрованный ключ возвращается в параметре <parameter>encrypted_keys</parameter>.
То есть можно разослать запечатанные данные сразу нескольким получателям.
Каждый получатель должен получить как запечатанные данные, так и ключ конверта,
который зашифровали открытым ключом получателя.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>data</parameter></term>
<listitem>
<para>
Запечатываемые данные.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>sealed_data</parameter></term>
<listitem>
<para>
Данные, которые запечатала функция.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>encrypted_keys</parameter></term>
<listitem>
<para>
Массив зашифрованных ключей.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>public_key</parameter></term>
<listitem>
<para>
Массив экземпляров класса <classname>OpenSSLAsymmetricKey</classname>, которые содержат открытые ключи.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>cipher_algo</parameter></term>
<listitem>
<para>
Метод шифрования.
<caution>
<simpara>
Значение по умолчанию (<literal>RC4</literal>) считается небезопасным.
Настоятельно рекомендуется явно указывать метод безопасного шифрования.
</simpara>
</caution>
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>iv</parameter></term>
<listitem>
<para>
Инициализирующий вектор.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Функция возвращает длину запечатанных данных или &false;.
В случае успешного выполнения параметр <parameter>sealed_data</parameter> будет содержать
запечатанные данные, а параметр <parameter>encrypted_keys</parameter> — зашифрованные ключи.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.0.0</entry>
<entry>
Параметр <parameter>public_key</parameter> теперь принимает массив (&array;) экземпляров
класса <classname>OpenSSLAsymmetricKey</classname>;
раньше принимался массив (&array;) ресурсов (&resource;) с типом <literal>OpenSSL key</literal>.
</entry>
</row>
<row>
<entry>8.0.0</entry>
<entry>
Параметр <parameter>cipher_algo</parameter> теперь обязательный параметр.
</entry>
</row>
<row>
<entry>8.0.0</entry>
<entry>
Параметр <parameter>iv</parameter> теперь принимает значение null.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Пример использования функции <function>openssl_seal</function></title>
<programlisting role="php">
<![CDATA[
<?php
// Предполагается, что переменная $data содержит данные, которые необходимо запечатать
// Получаем и подготавливаем открытые ключи для получателей
$fp = fopen("/src/openssl-0.9.6/demos/maurice/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk1 = openssl_get_publickey($cert);
// Повторяем для второго получателя
$fp = fopen("/src/openssl-0.9.6/demos/sign/cert.pem", "r");
$cert = fread($fp, 8192);
fclose($fp);
$pk2 = openssl_get_publickey($cert);
// Запечатываем сообщение; только владельцы ключей $pk1 и $pk2 смогут расшифровать запечатанные данные $sealed ключами
// $ekeys[0] и $ekeys[1]
openssl_seal($data, $sealed, $ekeys, array($pk1, $pk2));
// Высвобождаем ресурсы ключей
openssl_free_key($pk1);
openssl_free_key($pk2);
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>openssl_open</function></member>
</simplelist>
</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
-->