Files
php-doc-ru/reference/stream/functions/stream-socket-enable-crypto.xml
2023-01-07 10:23:43 +03:00

196 lines
7.4 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: f39a3a7f3a686a4b0d09bab2250440ffe74ee097 Maintainer: mch Status: ready -->
<!-- Reviewed: no -->
<refentry xml:id="function.stream-socket-enable-crypto" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>stream_socket_enable_crypto</refname>
<refpurpose>Включает или отключает шифрование на уже подключённом сокете</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>int</type><type>bool</type></type><methodname>stream_socket_enable_crypto</methodname>
<methodparam><type>resource</type><parameter>stream</parameter></methodparam>
<methodparam><type>bool</type><parameter>enable</parameter></methodparam>
<methodparam choice="opt"><type class="union"><type>int</type><type>null</type></type><parameter>crypto_method</parameter><initializer>&null;</initializer></methodparam>
<methodparam choice="opt"><type class="union"><type>resource</type><type>null</type></type><parameter>session_stream</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<simpara>
Включает или отключает шифрование на потоке.
</simpara>
<simpara>
После настройки шифрования, криптография может быть включена
или выключена динамически при помощи передачи значения &true; или &false;
параметру <parameter>enable</parameter>.
</simpara>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>stream</parameter></term>
<listitem>
<para>
Потоковый ресурс.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>enable</parameter></term>
<listitem>
<para>
Включить/отключить криптографию на потоке.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>crypto_method</parameter></term>
<listitem>
<para>
Включить шифрование на потоке.
Допустимые методы
<itemizedlist>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_SSLv2_CLIENT</constant></simpara></listitem>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_SSLv3_CLIENT</constant></simpara></listitem>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_SSLv23_CLIENT</constant></simpara></listitem>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_ANY_CLIENT</constant></simpara></listitem>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_TLS_CLIENT</constant></simpara></listitem>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT</constant></simpara></listitem>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT</constant></simpara></listitem>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT</constant></simpara></listitem>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_TLSv1_3_CLIENT</constant> (начиная с PHP 7.4.0)</simpara></listitem>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_SSLv2_SERVER</constant></simpara></listitem>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_SSLv3_SERVER</constant></simpara></listitem>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_SSLv23_SERVER</constant></simpara></listitem>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_ANY_SERVER</constant></simpara></listitem>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_TLS_SERVER</constant></simpara></listitem>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_TLSv1_0_SERVER</constant></simpara></listitem>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_TLSv1_1_SERVER</constant></simpara></listitem>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_TLSv1_2_SERVER</constant></simpara></listitem>
<listitem><simpara><constant>STREAM_CRYPTO_METHOD_TLSv1_3_SERVER</constant> (начиная с PHP 7.4.0)</simpara></listitem>
</itemizedlist>
</para>
<para>
Если не указан, то будет использован параметр
<literal>crypto_method</literal> из SSL контекста потока.
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>session_stream</parameter></term>
<listitem>
<para>
Использовать в потоке настройки из <parameter>session_stream</parameter>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Возвращает &true; в случае успешного выполнения, &false;, если не удалось установить шифрование
или <literal>0</literal>, если недостаточно данных и вы должны попытаться ещё раз
(только для неблокирующих сокетов).
</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>session_stream</parameter> теперь допускает значение null.
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples"><!-- {{{ -->
&reftitle.examples;
<para>
<example xml:id="stream-socket-enable-crypto.example.basic"><!-- {{{ -->
<title>Пример использования <function>stream_socket_enable_crypto</function></title>
<programlisting role="php">
<![CDATA[
<?php
$fp = stream_socket_client("tcp://myproto.example.com:31337", $errno, $errstr, 30);
if (!$fp) {
die("Не могу соединиться: $errstr ($errno)");
}
/* Включить шифрование для этапа входа в систему */
stream_socket_enable_crypto($fp, true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);
fwrite($fp, "USER бог\r\n");
fwrite($fp, "PASS секрет\r\n");
/* Отключить шифрование для всего остального */
stream_socket_enable_crypto($fp, false);
while ($motd = fgets($fp)) {
echo $motd;
}
fclose($fp);
?>
]]>
</programlisting>
&example.outputs.similar;
<screen>
<![CDATA[
]]>
</screen>
</example><!-- }}} -->
</para>
</refsect1><!-- }}} -->
<refsect1 role="seealso"><!-- {{{ -->
&reftitle.seealso;
<para>
<simplelist>
<member><xref linkend="ref.openssl"/></member>
<member><xref linkend="transports"/></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
-->