12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- <?php
- namespace 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;
- }
- }
|