<?php
// server.php

$serverPrivateKeyFile 'file://ca/private/server.key';
$clientCertificateFile 'file://ca/certs/client.crt';

$context = new ZMQContext();
$socket $context->getSocket(ZMQ::SOCKET_REP);
$socket->bind('ipc://magic.ipc');

$clientPublicKey openssl_pkey_get_public($clientCertificateFile);
$serverPrivateKey openssl_pkey_get_private($serverPrivateKeyFile);

$msg unserialize($socket->recv());
$signatureCheck openssl_verify($msg['data'], $msg['signature'], $clientPublicKey);
openssl_private_decrypt($msg['data'], $decrypted$serverPrivateKey);
echo 
$signatureCheck === 'Success' 'Failed';
echo 
PHP_EOL;
print_r($decrypted);
echo 
PHP_EOL;