stream_socket_enable_crypto

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

stream_socket_enable_cryptoActive ou non le chiffrement, pour un socket déjà connecté

Description

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

Active ou non le chiffrement, pour un socket déjà connecté.

Une fois les paramètres de chiffrement définis, le chiffrement peut être activé et désactivé dynamiquement en passant true ou false dans le paramètre enable.

Liste de paramètres

stream

La ressource de flux.

enable

Active ou non le chiffrement sur le flux.

crypto_method

Configure le chiffrement sur le flux. Les méthodes valides sont

  • STREAM_CRYPTO_METHOD_SSLv2_CLIENT
  • STREAM_CRYPTO_METHOD_SSLv3_CLIENT
  • STREAM_CRYPTO_METHOD_SSLv23_CLIENT
  • STREAM_CRYPTO_METHOD_ANY_CLIENT
  • STREAM_CRYPTO_METHOD_TLS_CLIENT
  • STREAM_CRYPTO_METHOD_TLSv1_0_CLIENT
  • STREAM_CRYPTO_METHOD_TLSv1_1_CLIENT
  • STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT
  • STREAM_CRYPTO_METHOD_SSLv2_SERVER
  • STREAM_CRYPTO_METHOD_SSLv3_SERVER
  • STREAM_CRYPTO_METHOD_SSLv23_SERVER
  • STREAM_CRYPTO_METHOD_ANY_SERVER
  • STREAM_CRYPTO_METHOD_TLS_SERVER
  • STREAM_CRYPTO_METHOD_TLSv1_0_SERVER
  • STREAM_CRYPTO_METHOD_TLSv1_1_SERVER
  • STREAM_CRYPTO_METHOD_TLSv1_2_SERVER

Si omis, l'option de contexte crypto_method sur le contexte SSL du flux sera utilisée à la place.

session_stream

Initialise le flux avec la configuration issue du paramètre session_stream.

Valeurs de retour

Retourne true en cas de succès, false si la négociation a échoué ou 0 s'il n'y a pas assez de données et que vous devez essayer encore (uniquement pour les sockets non-bloquants).

Historique

Version Description
8.0.0 session_stream est désormais nullable.

Exemples

Exemple #1 Exemple avec stream_socket_enable_crypto()

<?php
$fp 
stream_socket_client("tcp://myproto.example.com:31337"$errno$errstr30);
if (!
$fp) {
    die(
"Impossible de se connecter : $errstr ($errno)");
}

/* Activation du chiffrement durant l'identification */
stream_socket_enable_crypto($fptrueSTREAM_CRYPTO_METHOD_SSLv23_CLIENT);
fwrite($fp"USER god\r\n");
fwrite($fp"PASS secret\r\n");

/* Désactivation du chiffrement pour le reste */
stream_socket_enable_crypto($fpfalse);

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

fclose($fp);
?>

Résultat de l'exemple ci-dessus est similaire à :