<?php
namespace Firebase\JWT;
use InvalidArgumentException;
use OpenSSLAsymmetricKey;
> use OpenSSLCertificate;
> use TypeError;
class Key
{
< /** @var string $algorithm */
< private $algorithm;
<
< /** @var string|resource|OpenSSLAsymmetricKey $keyMaterial */
> /** @var string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate */
private $keyMaterial;
> /** @var string */
> private $algorithm;
/**
< * @param string|resource|OpenSSLAsymmetricKey $keyMaterial
> * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate $keyMaterial
* @param string $algorithm
*/
< public function __construct($keyMaterial, $algorithm)
< {
> public function __construct(
> $keyMaterial,
> string $algorithm
> ) {
if (
< !is_string($keyMaterial)
< && !is_resource($keyMaterial)
> !\is_string($keyMaterial)
&& !$keyMaterial instanceof OpenSSLAsymmetricKey
> && !$keyMaterial instanceof OpenSSLCertificate
) {
> && !\is_resource($keyMaterial)
< throw new InvalidArgumentException('Type error: $keyMaterial must be a string, resource, or OpenSSLAsymmetricKey');
> throw new TypeError('Key material must be a string, resource, or OpenSSLAsymmetricKey');
}
if (empty($keyMaterial)) {
< throw new InvalidArgumentException('Type error: $keyMaterial must not be empty');
> throw new InvalidArgumentException('Key material must not be empty');
}
< if (!is_string($algorithm)|| empty($keyMaterial)) {
< throw new InvalidArgumentException('Type error: $algorithm must be a string');
> if (empty($algorithm)) {
> throw new InvalidArgumentException('Algorithm must not be empty');
}
> // TODO: Remove in PHP 8.0 in favor of class constructor property promotion
$this->keyMaterial = $keyMaterial;
$this->algorithm = $algorithm;
}
/**
* Return the algorithm valid for this key
*
* @return string
*/
< public function getAlgorithm()
> public function getAlgorithm(): string
{
return $this->algorithm;
}
/**
< * @return string|resource|OpenSSLAsymmetricKey
> * @return string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate
*/
public function getKeyMaterial()
{
return $this->keyMaterial;
}
}