<?php

$ip="fred.tznic.or.tz";
$port=700;
$cert="/tmp/tznic.pem";

$context = stream_context_create();
$result = stream_context_set_option($context, 'ssl', 'local_cert', $cert);
$result = stream_context_set_option($context, 'ssl', 'verify_peer', false);
$result = stream_context_set_option($context, 'ssl', 'verify_host', false);
$result = stream_context_set_option($context, 'ssl', 'allow_self_signed', true);

$fp = stream_socket_client("tls://$ip:$port", $errno,$errstr, 20, STREAM_CLIENT_CONNECT, $context);

if(!$fp) echo "CONNECT ERROR: $errstr ($errno)\n"; 

else 
{
     $headerstr = "";
     while (strlen($headerstr) < 4)
     {
        $lenstr = fread($fp,4 - strlen($headerstr)); #Get the size of the complete EPP Data Unit
        if ($lenstr === false) die("Socket error");
        $headerstr = $headerstr . $lenstr;
     }
     $bytes = unpack("Nbytes", $headerstr);
     $bytes = $bytes['bytes']; #PHP unpack returns an assoc array
     $data = "";
     while(strlen($data) < ($bytes - 4 ) )
     {
        $tmpdata = fread($fp, ($bytes-4) - strlen($data)); #1st 4 bytes have already been read
        if ($tmpdata ===false) die("Didn't receive any XML data?");
        $data = $data . $tmpdata;
     }

     print $data;
}

?>
