function TlsHelper::getCertificateNames
Extract DNS names out of an X.509 certificate.
Parameters
mixed $certificate X.509 certificate:
Return value
array{cn: string, san: string[]}|null
1 call to TlsHelper::getCertificateNames()
- TlsHelper::checkCertificateHost in vendor/
composer/ composer/ src/ Composer/ Util/ TlsHelper.php - Match hostname against a certificate.
File
-
vendor/
composer/ composer/ src/ Composer/ Util/ TlsHelper.php, line 62
Class
- TlsHelper
- @author Chris Smith <chris@cs278.org>
Namespace
Composer\UtilCode
public static function getCertificateNames($certificate) : ?array {
if (is_array($certificate)) {
$info = $certificate;
}
elseif (CaBundle::isOpensslParseSafe()) {
$info = openssl_x509_parse($certificate, false);
}
if (!isset($info['subject']['commonName'])) {
return null;
}
$commonName = strtolower($info['subject']['commonName']);
$subjectAltNames = [];
if (isset($info['extensions']['subjectAltName'])) {
$subjectAltNames = Preg::split('{\\s*,\\s*}', $info['extensions']['subjectAltName']);
$subjectAltNames = array_filter(array_map(static function ($name) : ?string {
if (0 === strpos($name, 'DNS:')) {
return strtolower(ltrim(substr($name, 4)));
}
return null;
}, $subjectAltNames), function (?string $san) {
return $san !== null;
});
$subjectAltNames = array_values($subjectAltNames);
}
return [
'cn' => $commonName,
'san' => $subjectAltNames,
];
}