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_TLSv1_3_CLIENT (à partir de PHP 7.4.0)
  • 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
  • STREAM_CRYPTO_METHOD_TLSv1_3_SERVER (à partir de PHP 7.4.0)

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

VersionDescription
8.0.0session_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, $errstr, 30);
if (!
$fp) {
die(
"Impossible de se connecter : $errstr ($errno)");
}


stream_socket_enable_crypto($fp, true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);
fwrite($fp, "USER god\r\n");
fwrite($fp, "PASS secret\r\n");


stream_socket_enable_crypto($fp, false);

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

fclose($fp);
?>

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

To Top