streams_crypto_method.phpt 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. --TEST--
  2. Specific crypto method for ssl:// transports.
  3. --SKIPIF--
  4. <?php
  5. if (!extension_loaded("openssl")) die("skip openssl not loaded");
  6. if (!function_exists("proc_open")) die("skip no proc_open");
  7. if (OPENSSL_VERSION_NUMBER < 0x10001001) die("skip OpenSSLv1.0.1 required");
  8. --FILE--
  9. <?php
  10. $serverCode = <<<'CODE'
  11. $serverUri = "ssl://127.0.0.1:64321";
  12. $serverFlags = STREAM_SERVER_BIND | STREAM_SERVER_LISTEN;
  13. $serverCtx = stream_context_create(['ssl' => [
  14. 'local_cert' => __DIR__ . '/streams_crypto_method.pem',
  15. ]]);
  16. $server = stream_socket_server($serverUri, $errno, $errstr, $serverFlags, $serverCtx);
  17. phpt_notify();
  18. $client = @stream_socket_accept($server);
  19. if ($client) {
  20. $in = '';
  21. while (!preg_match('/\r?\n\r?\n/', $in)) {
  22. $in .= fread($client, 2048);
  23. }
  24. $response = "HTTP/1.0 200 OK\r\n"
  25. . "Content-Type: text/plain\r\n"
  26. . "Content-Length: 12\r\n"
  27. . "Connection: close\r\n"
  28. . "\r\n"
  29. . "Hello World!";
  30. fwrite($client, $response);
  31. fclose($client);
  32. }
  33. CODE;
  34. $clientCode = <<<'CODE'
  35. $serverUri = "https://127.0.0.1:64321/";
  36. $clientFlags = STREAM_CLIENT_CONNECT;
  37. $clientCtx = stream_context_create(['ssl' => [
  38. 'crypto_method' => STREAM_CRYPTO_METHOD_TLSv1_2_CLIENT,
  39. 'verify_peer' => false,
  40. 'verify_peer_name' => false
  41. ]]);
  42. phpt_wait();
  43. echo file_get_contents($serverUri, false, $clientCtx);
  44. CODE;
  45. include 'ServerClientTestCase.inc';
  46. ServerClientTestCase::getInstance()->run($clientCode, $serverCode);
  47. --EXPECTF--
  48. Hello World!