public static function loadKeyFromX509Resource($res)
{
$key = openssl_get_publickey($res);
$details = openssl_pkey_get_details($key);
if (isset($details['key'])) {
$values = self::loadKeyFromPEM($details['key']);
openssl_x509_export($res, $out);
$values['x5c'] = [trim(preg_replace('#-.*-#', '', $out))];
if (function_exists('openssl_x509_fingerprint')) {
$values['x5t'] = Base64Url::encode(openssl_x509_fingerprint($res, 'sha1', true));
$values['x5t#256'] = Base64Url::encode(openssl_x509_fingerprint($res, 'sha256', true));
} else {
openssl_x509_export($res, $pem);
$values['x5t'] = Base64Url::encode(self::calculateX509Fingerprint($pem, 'sha1', true));
$values['x5t#256'] = Base64Url::encode(self::calculateX509Fingerprint($pem, 'sha256', true));
}
return $values;
}
throw new \InvalidArgumentException('Unable to load the certificate');
}