Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
3
namespace Firebase\JWT;
4
 
5
use InvalidArgumentException;
6
use OpenSSLAsymmetricKey;
7
use OpenSSLCertificate;
8
use TypeError;
9
 
10
class Key
11
{
12
    /** @var string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate */
13
    private $keyMaterial;
14
    /** @var string */
15
    private $algorithm;
16
 
17
    /**
18
     * @param string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate $keyMaterial
19
     * @param string $algorithm
20
     */
21
    public function __construct(
22
        $keyMaterial,
23
        string $algorithm
24
    ) {
25
        if (
26
            !\is_string($keyMaterial)
27
            && !$keyMaterial instanceof OpenSSLAsymmetricKey
28
            && !$keyMaterial instanceof OpenSSLCertificate
29
            && !\is_resource($keyMaterial)
30
        ) {
31
            throw new TypeError('Key material must be a string, resource, or OpenSSLAsymmetricKey');
32
        }
33
 
34
        if (empty($keyMaterial)) {
35
            throw new InvalidArgumentException('Key material must not be empty');
36
        }
37
 
38
        if (empty($algorithm)) {
39
            throw new InvalidArgumentException('Algorithm must not be empty');
40
        }
41
 
42
        // TODO: Remove in PHP 8.0 in favor of class constructor property promotion
43
        $this->keyMaterial = $keyMaterial;
44
        $this->algorithm = $algorithm;
45
    }
46
 
47
    /**
48
     * Return the algorithm valid for this key
49
     *
50
     * @return string
51
     */
52
    public function getAlgorithm(): string
53
    {
54
        return $this->algorithm;
55
    }
56
 
57
    /**
58
     * @return string|resource|OpenSSLAsymmetricKey|OpenSSLCertificate
59
     */
60
    public function getKeyMaterial()
61
    {
62
        return $this->keyMaterial;
63
    }
64
}