50 lines
1.5 KiB
PHP
50 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace Google\Site_Kit_Dependencies\Firebase\JWT;
|
|
|
|
use InvalidArgumentException;
|
|
use OpenSSLAsymmetricKey;
|
|
use OpenSSLCertificate;
|
|
use TypeError;
|
|
class Key
|
|
{
|
|
/** @var string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate */
|
|
private $keyMaterial;
|
|
/** @var string */
|
|
private $algorithm;
|
|
/**
|
|
* @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate $keyMaterial
|
|
* @param string $algorithm
|
|
*/
|
|
public function __construct($keyMaterial, string $algorithm)
|
|
{
|
|
if (!\is_string($keyMaterial) && !$keyMaterial instanceof \OpenSSLAsymmetricKey && !$keyMaterial instanceof \OpenSSLCertificate && !\is_resource($keyMaterial)) {
|
|
throw new \TypeError('Key material must be a string, resource, or OpenSSLAsymmetricKey');
|
|
}
|
|
if (empty($keyMaterial)) {
|
|
throw new \InvalidArgumentException('Key material must not be empty');
|
|
}
|
|
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() : string
|
|
{
|
|
return $this->algorithm;
|
|
}
|
|
/**
|
|
* @return string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate
|
|
*/
|
|
public function getKeyMaterial()
|
|
{
|
|
return $this->keyMaterial;
|
|
}
|
|
}
|