27 foreach ($context[
'kex'][
'client']->getServerHostKeyAlgos() as $algo) {
28 if (isset($context[
'serverKeys'][$algo])) {
33 if ($hostAlgo === null) {
34 throw new \RuntimeException();
36 $response = $this->createResponse($decoder, $transport, $context, $hostAlgo);
38 $logging = \Plop\Plop::getInstance();
39 $secret = gmp_strval($response->getSharedSecret(), 16);
41 "Shared secret:\r\n%s",
43 wordwrap($secret, 16,
' ',
true)
50 wordwrap(bin2hex($response->getExchangeHash()), 16,
' ',
true)
54 if (!isset($context[
'sessionIdentifier'])) {
55 $context[
'sessionIdentifier'] = $response->getExchangeHash();
57 $context[
'DH'] = $response;
58 $transport->writeMessage($response);
62 protected function createResponse(
68 $kexAlgo = $context[
'kexAlgo'];
69 $kexAlgo =
new $kexAlgo();
83 return new \fpoirotte\Pssht\Messages\KEXDH\REPLY(
85 $context[
'serverKeys'][$hostAlgo],
86 $transport->getEncryptor(),
88 $context[
'kex'][
'server'],
89 $context[
'kex'][
'client'],
90 $context[
'identity'][
'server'],
91 $context[
'identity'][
'client']
static unserialize(\fpoirotte\Pssht\Wire\Decoder $decoder)
handle($msgType,\fpoirotte\Pssht\Wire\Decoder $decoder,\fpoirotte\Pssht\Transport $transport, array &$context)