if (str_contains($host, ':'
)) { $host = '['.
$host.']';
} $this->info
['primary_ip'
] =
$host;
$this->info
['primary_port'
] =
$stream->
getRemoteAddress()->
getPort();
$this->info
['pretransfer_time'
] =
microtime(true
) -
$this->info
['start_time'
];
$this->info
['debug'
] .=
sprintf("* Connected to %s (%s) port %d\n",
$request->
getUri()->
getHost(),
$host,
$this->info
['primary_port'
]);
if ((isset($this->info
['peer_certificate_chain'
]) ||
$this->pinSha256
) && null !==
$tlsInfo =
$stream->
getTlsInfo()) { foreach ($tlsInfo->
getPeerCertificates() as $cert) { $this->info
['peer_certificate_chain'
][] =
openssl_x509_read($cert->
toPem());
} if ($this->pinSha256
) { $pin =
openssl_pkey_get_public($this->info
['peer_certificate_chain'
][0
]);
$pin =
openssl_pkey_get_details($pin)['key'
];
$pin = \
array_slice(explode("\n",
$pin), 1, -2
);
$pin =
base64_decode(implode('',
$pin));
$pin =
base64_encode(hash('sha256',
$pin, true
));
if (!\
in_array($pin,
$this->pinSha256, true
)) { throw new TransportException(sprintf('SSL public key does not match pinned public key for "%s".',
$this->info
['url'
]));
}