Jose\KeyConverter\KeyConverter::loadKeyFromX509Resource PHP Method

loadKeyFromX509Resource() public static method

public static loadKeyFromX509Resource ( resource $res ) : array
$res resource
return array
    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');
    }

Usage Example

示例#1
0
 /**
  * {@inheritdoc}
  */
 public static function createFromX509Resource($res, array $additional_values = [])
 {
     $values = KeyConverter::loadKeyFromX509Resource($res);
     $values = array_merge($values, $additional_values);
     return new JWK($values);
 }