PHP Function Reference

PHP stream_socket_enable_crypto() Function



The PHP stream_socket_enable_crypto() function enables or disables encryption on the stream. Once the crypto settings are established, cryptography can be turned on and off dynamically by passing true or false in the enable parameter.

Syntax

stream_socket_enable_crypto(stream, enable, crypto_type, session_stream)

Parameters

socket Required. Specify the stream resource.
enable Required. Specify true/false to enable/disable cryptography on the stream.
crypto_type Optional. Setup encryption on the stream. Valid methods are
  • 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
If omitted, the crypto_method context option on the stream's SSL context will be used instead.
session_stream Optional. Seed the stream with settings from session_stream.

Return Value

Returns true on success, false if negotiation has failed or 0 if there is not enough data and you should try again (only for non-blocking sockets).

Example: stream_socket_enable_crypto() example

The example below shows the usage of stream_socket_enable_crypto() function.

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

//turning on the encryption for login phase
stream_socket_enable_crypto($fp, true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);
fwrite($fp, "USER god\r\n");
fwrite($fp, "PASS secret\r\n");

//turning off the encryption for the rest
stream_socket_enable_crypto($fp, false);

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

fclose($fp);
?>

❮ PHP Streams Reference

5