stream_socket_enable_crypto

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

stream_socket_enable_cryptoActiva o desactiva el cifrado para un socket ya conectado

Descripción

stream_socket_enable_crypto(
    resource $stream,
    bool $enable,
    ?int $crypto_method = null,
    ?resource $session_stream = null
): int|bool

Activa o desactiva el cifrado para un socket ya conectado.

Una vez definidos los parámetros de cifrado, este puede ser activado y desactivado dinámicamente pasando true o false en el argumento enable.

Parámetros

stream

El recurso de flujo.

enable

Activa o desactiva el cifrado en el flujo.

crypto_method

Configura el cifrado en el flujo. Los métodos válidos son

Si se omite, la opción de contexto crypto_method en el contexto SSL del flujo será utilizada en su lugar.

session_stream

Inicializa el flujo con la configuración proveniente del argumento session_stream.

Valores devueltos

Retorna true en caso de éxito, false si la negociación falló o 0 si no hay suficientes datos y se debe intentar nuevamente (únicamente para sockets no bloqueantes).

Historial de cambios

Versión Descripción
8.0.0 session_stream ahora es nullable.

Ejemplos

Ejemplo #1 Ejemplo con stream_socket_enable_crypto()

<?php
$fp
= stream_socket_client("tcp://myproto.example.com:31337", $errno, $errstr, 30);
if (!
$fp) {
die(
"Imposible conectar: $errstr ($errno)");
}

/* Activación del cifrado durante la identificación */
stream_socket_enable_crypto($fp, true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);
fwrite($fp, "USER god\r\n");
fwrite($fp, "PASS secret\r\n");

/* Desactivación del cifrado para el resto */
stream_socket_enable_crypto($fp, false);

while (
$motd = fgets($fp)) {
echo
$motd;
}

fclose($fp);
?>

El resultado del ejemplo sería algo similar a: