GitHub Access Token became invalid

It seems like the GitHub access token used for retrieving details about this repository from GitHub became invalid. This might prevent certain types of inspections from being run (in particular, everything related to pull requests).
Please ask an admin of your repository to re-new the access token on this website.
Completed
Push — master ( 584877...f7ba31 )
by Joni
05:42
created
lib/X509/Certificate/UniqueIdentifier.php 1 patch
Indentation   +62 added lines, -62 removed lines patch added patch discarded remove patch
@@ -13,72 +13,72 @@
 block discarded – undo
13 13
  */
14 14
 class UniqueIdentifier
15 15
 {
16
-    /**
17
-     * Identifier.
18
-     *
19
-     * @var BitString $_uid
20
-     */
21
-    protected $_uid;
16
+	/**
17
+	 * Identifier.
18
+	 *
19
+	 * @var BitString $_uid
20
+	 */
21
+	protected $_uid;
22 22
     
23
-    /**
24
-     * Constructor.
25
-     *
26
-     * @param BitString $bs
27
-     */
28
-    public function __construct(BitString $bs)
29
-    {
30
-        $this->_uid = $bs;
31
-    }
23
+	/**
24
+	 * Constructor.
25
+	 *
26
+	 * @param BitString $bs
27
+	 */
28
+	public function __construct(BitString $bs)
29
+	{
30
+		$this->_uid = $bs;
31
+	}
32 32
     
33
-    /**
34
-     * Initialize from ASN.1.
35
-     *
36
-     * @param BitString $bs
37
-     * @return self
38
-     */
39
-    public static function fromASN1(BitString $bs): self
40
-    {
41
-        return new self($bs);
42
-    }
33
+	/**
34
+	 * Initialize from ASN.1.
35
+	 *
36
+	 * @param BitString $bs
37
+	 * @return self
38
+	 */
39
+	public static function fromASN1(BitString $bs): self
40
+	{
41
+		return new self($bs);
42
+	}
43 43
     
44
-    /**
45
-     * Initialize from string.
46
-     *
47
-     * @param string $str
48
-     * @return self
49
-     */
50
-    public static function fromString(string $str): self
51
-    {
52
-        return new self(new BitString($str));
53
-    }
44
+	/**
45
+	 * Initialize from string.
46
+	 *
47
+	 * @param string $str
48
+	 * @return self
49
+	 */
50
+	public static function fromString(string $str): self
51
+	{
52
+		return new self(new BitString($str));
53
+	}
54 54
     
55
-    /**
56
-     * Get unique identifier as a string.
57
-     *
58
-     * @return string
59
-     */
60
-    public function string(): string
61
-    {
62
-        return $this->_uid->string();
63
-    }
55
+	/**
56
+	 * Get unique identifier as a string.
57
+	 *
58
+	 * @return string
59
+	 */
60
+	public function string(): string
61
+	{
62
+		return $this->_uid->string();
63
+	}
64 64
     
65
-    /**
66
-     * Get unique identifier as a bit string.
67
-     *
68
-     * @return BitString
69
-     */
70
-    public function bitString(): BitString
71
-    {
72
-        return $this->_uid;
73
-    }
65
+	/**
66
+	 * Get unique identifier as a bit string.
67
+	 *
68
+	 * @return BitString
69
+	 */
70
+	public function bitString(): BitString
71
+	{
72
+		return $this->_uid;
73
+	}
74 74
     
75
-    /**
76
-     * Get ASN.1 element.
77
-     *
78
-     * @return BitString
79
-     */
80
-    public function toASN1(): BitString
81
-    {
82
-        return $this->_uid;
83
-    }
75
+	/**
76
+	 * Get ASN.1 element.
77
+	 *
78
+	 * @return BitString
79
+	 */
80
+	public function toASN1(): BitString
81
+	{
82
+		return $this->_uid;
83
+	}
84 84
 }
Please login to merge, or discard this patch.
lib/X509/Certificate/CertificateChain.php 2 patches
Indentation   +117 added lines, -117 removed lines patch added patch discarded remove patch
@@ -13,131 +13,131 @@
 block discarded – undo
13 13
  */
14 14
 class CertificateChain implements \Countable, \IteratorAggregate
15 15
 {
16
-    /**
17
-     * List of certificates in a chain.
18
-     *
19
-     * @var Certificate[]
20
-     */
21
-    protected $_certs;
16
+	/**
17
+	 * List of certificates in a chain.
18
+	 *
19
+	 * @var Certificate[]
20
+	 */
21
+	protected $_certs;
22 22
     
23
-    /**
24
-     * Constructor.
25
-     *
26
-     * @param Certificate ...$certs List of certificates, end-entity first
27
-     */
28
-    public function __construct(Certificate ...$certs)
29
-    {
30
-        $this->_certs = $certs;
31
-    }
23
+	/**
24
+	 * Constructor.
25
+	 *
26
+	 * @param Certificate ...$certs List of certificates, end-entity first
27
+	 */
28
+	public function __construct(Certificate ...$certs)
29
+	{
30
+		$this->_certs = $certs;
31
+	}
32 32
     
33
-    /**
34
-     * Initialize from a list of PEMs.
35
-     *
36
-     * @param PEM ...$pems
37
-     * @return self
38
-     */
39
-    public static function fromPEMs(PEM ...$pems): self
40
-    {
41
-        $certs = array_map(
42
-            function (PEM $pem) {
43
-                return Certificate::fromPEM($pem);
44
-            }, $pems);
45
-        return new self(...$certs);
46
-    }
33
+	/**
34
+	 * Initialize from a list of PEMs.
35
+	 *
36
+	 * @param PEM ...$pems
37
+	 * @return self
38
+	 */
39
+	public static function fromPEMs(PEM ...$pems): self
40
+	{
41
+		$certs = array_map(
42
+			function (PEM $pem) {
43
+				return Certificate::fromPEM($pem);
44
+			}, $pems);
45
+		return new self(...$certs);
46
+	}
47 47
     
48
-    /**
49
-     * Initialize from a string containing multiple PEM blocks.
50
-     *
51
-     * @param string $str
52
-     * @return self
53
-     */
54
-    public static function fromPEMString(string $str): self
55
-    {
56
-        $pems = PEMBundle::fromString($str)->all();
57
-        return self::fromPEMs(...$pems);
58
-    }
48
+	/**
49
+	 * Initialize from a string containing multiple PEM blocks.
50
+	 *
51
+	 * @param string $str
52
+	 * @return self
53
+	 */
54
+	public static function fromPEMString(string $str): self
55
+	{
56
+		$pems = PEMBundle::fromString($str)->all();
57
+		return self::fromPEMs(...$pems);
58
+	}
59 59
     
60
-    /**
61
-     * Get all certificates in a chain ordered from the end-entity certificate
62
-     * to the trust anchor.
63
-     *
64
-     * @return Certificate[]
65
-     */
66
-    public function certificates(): array
67
-    {
68
-        return $this->_certs;
69
-    }
60
+	/**
61
+	 * Get all certificates in a chain ordered from the end-entity certificate
62
+	 * to the trust anchor.
63
+	 *
64
+	 * @return Certificate[]
65
+	 */
66
+	public function certificates(): array
67
+	{
68
+		return $this->_certs;
69
+	}
70 70
     
71
-    /**
72
-     * Get the end-entity certificate.
73
-     *
74
-     * @throws \LogicException
75
-     * @return Certificate
76
-     */
77
-    public function endEntityCertificate(): Certificate
78
-    {
79
-        if (!count($this->_certs)) {
80
-            throw new \LogicException("No certificates.");
81
-        }
82
-        return $this->_certs[0];
83
-    }
71
+	/**
72
+	 * Get the end-entity certificate.
73
+	 *
74
+	 * @throws \LogicException
75
+	 * @return Certificate
76
+	 */
77
+	public function endEntityCertificate(): Certificate
78
+	{
79
+		if (!count($this->_certs)) {
80
+			throw new \LogicException("No certificates.");
81
+		}
82
+		return $this->_certs[0];
83
+	}
84 84
     
85
-    /**
86
-     * Get the trust anchor certificate.
87
-     *
88
-     * @throws \LogicException
89
-     * @return Certificate
90
-     */
91
-    public function trustAnchorCertificate(): Certificate
92
-    {
93
-        if (!count($this->_certs)) {
94
-            throw new \LogicException("No certificates.");
95
-        }
96
-        return $this->_certs[count($this->_certs) - 1];
97
-    }
85
+	/**
86
+	 * Get the trust anchor certificate.
87
+	 *
88
+	 * @throws \LogicException
89
+	 * @return Certificate
90
+	 */
91
+	public function trustAnchorCertificate(): Certificate
92
+	{
93
+		if (!count($this->_certs)) {
94
+			throw new \LogicException("No certificates.");
95
+		}
96
+		return $this->_certs[count($this->_certs) - 1];
97
+	}
98 98
     
99
-    /**
100
-     * Convert certificate chain to certification path.
101
-     *
102
-     * @return CertificationPath
103
-     */
104
-    public function certificationPath(): CertificationPath
105
-    {
106
-        return CertificationPath::fromCertificateChain($this);
107
-    }
99
+	/**
100
+	 * Convert certificate chain to certification path.
101
+	 *
102
+	 * @return CertificationPath
103
+	 */
104
+	public function certificationPath(): CertificationPath
105
+	{
106
+		return CertificationPath::fromCertificateChain($this);
107
+	}
108 108
     
109
-    /**
110
-     * Convert certificate chain to string of PEM blocks.
111
-     *
112
-     * @return string
113
-     */
114
-    public function toPEMString(): string
115
-    {
116
-        return implode("\n",
117
-            array_map(
118
-                function (Certificate $cert) {
119
-                    return $cert->toPEM()->string();
120
-                }, $this->_certs));
121
-    }
109
+	/**
110
+	 * Convert certificate chain to string of PEM blocks.
111
+	 *
112
+	 * @return string
113
+	 */
114
+	public function toPEMString(): string
115
+	{
116
+		return implode("\n",
117
+			array_map(
118
+				function (Certificate $cert) {
119
+					return $cert->toPEM()->string();
120
+				}, $this->_certs));
121
+	}
122 122
     
123
-    /**
124
-     *
125
-     * @see \Countable::count()
126
-     * @return int
127
-     */
128
-    public function count(): int
129
-    {
130
-        return count($this->_certs);
131
-    }
123
+	/**
124
+	 *
125
+	 * @see \Countable::count()
126
+	 * @return int
127
+	 */
128
+	public function count(): int
129
+	{
130
+		return count($this->_certs);
131
+	}
132 132
     
133
-    /**
134
-     * Get iterator for certificates.
135
-     *
136
-     * @see \IteratorAggregate::getIterator()
137
-     * @return \ArrayIterator
138
-     */
139
-    public function getIterator(): \ArrayIterator
140
-    {
141
-        return new \ArrayIterator($this->_certs);
142
-    }
133
+	/**
134
+	 * Get iterator for certificates.
135
+	 *
136
+	 * @see \IteratorAggregate::getIterator()
137
+	 * @return \ArrayIterator
138
+	 */
139
+	public function getIterator(): \ArrayIterator
140
+	{
141
+		return new \ArrayIterator($this->_certs);
142
+	}
143 143
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -39,7 +39,7 @@  discard block
 block discarded – undo
39 39
     public static function fromPEMs(PEM ...$pems): self
40 40
     {
41 41
         $certs = array_map(
42
-            function (PEM $pem) {
42
+            function(PEM $pem) {
43 43
                 return Certificate::fromPEM($pem);
44 44
             }, $pems);
45 45
         return new self(...$certs);
@@ -115,7 +115,7 @@  discard block
 block discarded – undo
115 115
     {
116 116
         return implode("\n",
117 117
             array_map(
118
-                function (Certificate $cert) {
118
+                function(Certificate $cert) {
119 119
                     return $cert->toPEM()->string();
120 120
                 }, $this->_certs));
121 121
     }
Please login to merge, or discard this patch.
lib/X509/Certificate/Validity.php 1 patch
Indentation   +75 added lines, -75 removed lines patch added patch discarded remove patch
@@ -13,86 +13,86 @@
 block discarded – undo
13 13
  */
14 14
 class Validity
15 15
 {
16
-    /**
17
-     * Not before time.
18
-     *
19
-     * @var Time $_notBefore
20
-     */
21
-    protected $_notBefore;
16
+	/**
17
+	 * Not before time.
18
+	 *
19
+	 * @var Time $_notBefore
20
+	 */
21
+	protected $_notBefore;
22 22
     
23
-    /**
24
-     * Not after time.
25
-     *
26
-     * @var Time $_notAfter
27
-     */
28
-    protected $_notAfter;
23
+	/**
24
+	 * Not after time.
25
+	 *
26
+	 * @var Time $_notAfter
27
+	 */
28
+	protected $_notAfter;
29 29
     
30
-    /**
31
-     * Constructor.
32
-     *
33
-     * @param Time $not_before
34
-     * @param Time $not_after
35
-     */
36
-    public function __construct(Time $not_before, Time $not_after)
37
-    {
38
-        $this->_notBefore = $not_before;
39
-        $this->_notAfter = $not_after;
40
-    }
30
+	/**
31
+	 * Constructor.
32
+	 *
33
+	 * @param Time $not_before
34
+	 * @param Time $not_after
35
+	 */
36
+	public function __construct(Time $not_before, Time $not_after)
37
+	{
38
+		$this->_notBefore = $not_before;
39
+		$this->_notAfter = $not_after;
40
+	}
41 41
     
42
-    /**
43
-     * Initialize from ASN.1.
44
-     *
45
-     * @param Sequence $seq
46
-     */
47
-    public static function fromASN1(Sequence $seq): self
48
-    {
49
-        $nb = Time::fromASN1($seq->at(0)->asTime());
50
-        $na = Time::fromASN1($seq->at(1)->asTime());
51
-        return new self($nb, $na);
52
-    }
42
+	/**
43
+	 * Initialize from ASN.1.
44
+	 *
45
+	 * @param Sequence $seq
46
+	 */
47
+	public static function fromASN1(Sequence $seq): self
48
+	{
49
+		$nb = Time::fromASN1($seq->at(0)->asTime());
50
+		$na = Time::fromASN1($seq->at(1)->asTime());
51
+		return new self($nb, $na);
52
+	}
53 53
     
54
-    /**
55
-     * Initialize from date strings.
56
-     *
57
-     * @param string|null $nb_date Not before date
58
-     * @param string|null $na_date Not after date
59
-     * @param string|null $tz Timezone string
60
-     * @return self
61
-     */
62
-    public static function fromStrings($nb_date, $na_date, $tz = null): self
63
-    {
64
-        return new self(Time::fromString($nb_date, $tz),
65
-            Time::fromString($na_date, $tz));
66
-    }
54
+	/**
55
+	 * Initialize from date strings.
56
+	 *
57
+	 * @param string|null $nb_date Not before date
58
+	 * @param string|null $na_date Not after date
59
+	 * @param string|null $tz Timezone string
60
+	 * @return self
61
+	 */
62
+	public static function fromStrings($nb_date, $na_date, $tz = null): self
63
+	{
64
+		return new self(Time::fromString($nb_date, $tz),
65
+			Time::fromString($na_date, $tz));
66
+	}
67 67
     
68
-    /**
69
-     * Get not before time.
70
-     *
71
-     * @return Time
72
-     */
73
-    public function notBefore(): Time
74
-    {
75
-        return $this->_notBefore;
76
-    }
68
+	/**
69
+	 * Get not before time.
70
+	 *
71
+	 * @return Time
72
+	 */
73
+	public function notBefore(): Time
74
+	{
75
+		return $this->_notBefore;
76
+	}
77 77
     
78
-    /**
79
-     * Get not after time.
80
-     *
81
-     * @return Time
82
-     */
83
-    public function notAfter(): Time
84
-    {
85
-        return $this->_notAfter;
86
-    }
78
+	/**
79
+	 * Get not after time.
80
+	 *
81
+	 * @return Time
82
+	 */
83
+	public function notAfter(): Time
84
+	{
85
+		return $this->_notAfter;
86
+	}
87 87
     
88
-    /**
89
-     * Generate ASN.1 structure.
90
-     *
91
-     * @return Sequence
92
-     */
93
-    public function toASN1(): Sequence
94
-    {
95
-        return new Sequence($this->_notBefore->toASN1(),
96
-            $this->_notAfter->toASN1());
97
-    }
88
+	/**
89
+	 * Generate ASN.1 structure.
90
+	 *
91
+	 * @return Sequence
92
+	 */
93
+	public function toASN1(): Sequence
94
+	{
95
+		return new Sequence($this->_notBefore->toASN1(),
96
+			$this->_notAfter->toASN1());
97
+	}
98 98
 }
Please login to merge, or discard this patch.
lib/X509/Certificate/CertificateBundle.php 2 patches
Indentation   +189 added lines, -189 removed lines patch added patch discarded remove patch
@@ -12,208 +12,208 @@
 block discarded – undo
12 12
  */
13 13
 class CertificateBundle implements \Countable, \IteratorAggregate
14 14
 {
15
-    /**
16
-     * Certificates.
17
-     *
18
-     * @var Certificate[] $_certs
19
-     */
20
-    protected $_certs;
15
+	/**
16
+	 * Certificates.
17
+	 *
18
+	 * @var Certificate[] $_certs
19
+	 */
20
+	protected $_certs;
21 21
     
22
-    /**
23
-     * Mapping from public key id to array of certificates.
24
-     *
25
-     * @var null|(Certificate[])[]
26
-     */
27
-    private $_keyIdMap;
22
+	/**
23
+	 * Mapping from public key id to array of certificates.
24
+	 *
25
+	 * @var null|(Certificate[])[]
26
+	 */
27
+	private $_keyIdMap;
28 28
     
29
-    /**
30
-     * Constructor.
31
-     *
32
-     * @param Certificate[] $certs Certificate objects
33
-     */
34
-    public function __construct(Certificate ...$certs)
35
-    {
36
-        $this->_certs = $certs;
37
-    }
29
+	/**
30
+	 * Constructor.
31
+	 *
32
+	 * @param Certificate[] $certs Certificate objects
33
+	 */
34
+	public function __construct(Certificate ...$certs)
35
+	{
36
+		$this->_certs = $certs;
37
+	}
38 38
     
39
-    /**
40
-     * Reset internal cached variables on clone.
41
-     */
42
-    public function __clone()
43
-    {
44
-        $this->_keyIdMap = null;
45
-    }
39
+	/**
40
+	 * Reset internal cached variables on clone.
41
+	 */
42
+	public function __clone()
43
+	{
44
+		$this->_keyIdMap = null;
45
+	}
46 46
     
47
-    /**
48
-     * Initialize from PEMs.
49
-     *
50
-     * @param PEM[] $pems PEM objects
51
-     * @return self
52
-     */
53
-    public static function fromPEMs(PEM ...$pems): self
54
-    {
55
-        $certs = array_map(
56
-            function ($pem) {
57
-                return Certificate::fromPEM($pem);
58
-            }, $pems);
59
-        return new self(...$certs);
60
-    }
47
+	/**
48
+	 * Initialize from PEMs.
49
+	 *
50
+	 * @param PEM[] $pems PEM objects
51
+	 * @return self
52
+	 */
53
+	public static function fromPEMs(PEM ...$pems): self
54
+	{
55
+		$certs = array_map(
56
+			function ($pem) {
57
+				return Certificate::fromPEM($pem);
58
+			}, $pems);
59
+		return new self(...$certs);
60
+	}
61 61
     
62
-    /**
63
-     * Initialize from PEM bundle.
64
-     *
65
-     * @param PEMBundle $pem_bundle
66
-     * @return self
67
-     */
68
-    public static function fromPEMBundle(PEMBundle $pem_bundle): self
69
-    {
70
-        return self::fromPEMs(...$pem_bundle->all());
71
-    }
62
+	/**
63
+	 * Initialize from PEM bundle.
64
+	 *
65
+	 * @param PEMBundle $pem_bundle
66
+	 * @return self
67
+	 */
68
+	public static function fromPEMBundle(PEMBundle $pem_bundle): self
69
+	{
70
+		return self::fromPEMs(...$pem_bundle->all());
71
+	}
72 72
     
73
-    /**
74
-     * Get self with certificates added.
75
-     *
76
-     * @param Certificate[] $cert
77
-     * @return self
78
-     */
79
-    public function withCertificates(Certificate ...$cert): self
80
-    {
81
-        $obj = clone $this;
82
-        $obj->_certs = array_merge($obj->_certs, $cert);
83
-        return $obj;
84
-    }
73
+	/**
74
+	 * Get self with certificates added.
75
+	 *
76
+	 * @param Certificate[] $cert
77
+	 * @return self
78
+	 */
79
+	public function withCertificates(Certificate ...$cert): self
80
+	{
81
+		$obj = clone $this;
82
+		$obj->_certs = array_merge($obj->_certs, $cert);
83
+		return $obj;
84
+	}
85 85
     
86
-    /**
87
-     * Get self with certificates from PEMBundle added.
88
-     *
89
-     * @param PEMBundle $pem_bundle
90
-     * @return self
91
-     */
92
-    public function withPEMBundle(PEMBundle $pem_bundle): self
93
-    {
94
-        $certs = $this->_certs;
95
-        foreach ($pem_bundle as $pem) {
96
-            $certs[] = Certificate::fromPEM($pem);
97
-        }
98
-        return new self(...$certs);
99
-    }
86
+	/**
87
+	 * Get self with certificates from PEMBundle added.
88
+	 *
89
+	 * @param PEMBundle $pem_bundle
90
+	 * @return self
91
+	 */
92
+	public function withPEMBundle(PEMBundle $pem_bundle): self
93
+	{
94
+		$certs = $this->_certs;
95
+		foreach ($pem_bundle as $pem) {
96
+			$certs[] = Certificate::fromPEM($pem);
97
+		}
98
+		return new self(...$certs);
99
+	}
100 100
     
101
-    /**
102
-     * Get self with single certificate from PEM added.
103
-     *
104
-     * @param PEM $pem
105
-     * @return self
106
-     */
107
-    public function withPEM(PEM $pem): self
108
-    {
109
-        $certs = $this->_certs;
110
-        $certs[] = Certificate::fromPEM($pem);
111
-        return new self(...$certs);
112
-    }
101
+	/**
102
+	 * Get self with single certificate from PEM added.
103
+	 *
104
+	 * @param PEM $pem
105
+	 * @return self
106
+	 */
107
+	public function withPEM(PEM $pem): self
108
+	{
109
+		$certs = $this->_certs;
110
+		$certs[] = Certificate::fromPEM($pem);
111
+		return new self(...$certs);
112
+	}
113 113
     
114
-    /**
115
-     * Check whether bundle contains a given certificate.
116
-     *
117
-     * @param Certificate $cert
118
-     * @return bool
119
-     */
120
-    public function contains(Certificate $cert): bool
121
-    {
122
-        $id = self::_getCertKeyId($cert);
123
-        $map = $this->_getKeyIdMap();
124
-        if (!isset($map[$id])) {
125
-            return false;
126
-        }
127
-        foreach ($map[$id] as $c) {
128
-            /** @var Certificate $c */
129
-            if ($cert->equals($c)) {
130
-                return true;
131
-            }
132
-        }
133
-        return false;
134
-    }
114
+	/**
115
+	 * Check whether bundle contains a given certificate.
116
+	 *
117
+	 * @param Certificate $cert
118
+	 * @return bool
119
+	 */
120
+	public function contains(Certificate $cert): bool
121
+	{
122
+		$id = self::_getCertKeyId($cert);
123
+		$map = $this->_getKeyIdMap();
124
+		if (!isset($map[$id])) {
125
+			return false;
126
+		}
127
+		foreach ($map[$id] as $c) {
128
+			/** @var Certificate $c */
129
+			if ($cert->equals($c)) {
130
+				return true;
131
+			}
132
+		}
133
+		return false;
134
+	}
135 135
     
136
-    /**
137
-     * Get all certificates that have given subject key identifier.
138
-     *
139
-     * @param string $id
140
-     * @return Certificate[]
141
-     */
142
-    public function allBySubjectKeyIdentifier(string $id): array
143
-    {
144
-        $map = $this->_getKeyIdMap();
145
-        if (!isset($map[$id])) {
146
-            return array();
147
-        }
148
-        return $map[$id];
149
-    }
136
+	/**
137
+	 * Get all certificates that have given subject key identifier.
138
+	 *
139
+	 * @param string $id
140
+	 * @return Certificate[]
141
+	 */
142
+	public function allBySubjectKeyIdentifier(string $id): array
143
+	{
144
+		$map = $this->_getKeyIdMap();
145
+		if (!isset($map[$id])) {
146
+			return array();
147
+		}
148
+		return $map[$id];
149
+	}
150 150
     
151
-    /**
152
-     * Get all certificates in a bundle.
153
-     *
154
-     * @return Certificate[]
155
-     */
156
-    public function all(): array
157
-    {
158
-        return $this->_certs;
159
-    }
151
+	/**
152
+	 * Get all certificates in a bundle.
153
+	 *
154
+	 * @return Certificate[]
155
+	 */
156
+	public function all(): array
157
+	{
158
+		return $this->_certs;
159
+	}
160 160
     
161
-    /**
162
-     * Get certificate mapping by public key id.
163
-     *
164
-     * @return (Certificate[])[]
165
-     */
166
-    private function _getKeyIdMap(): array
167
-    {
168
-        // lazily build mapping
169
-        if (!isset($this->_keyIdMap)) {
170
-            $this->_keyIdMap = array();
171
-            foreach ($this->_certs as $cert) {
172
-                $id = self::_getCertKeyId($cert);
173
-                if (!isset($this->_keyIdMap[$id])) {
174
-                    $this->_keyIdMap[$id] = array();
175
-                }
176
-                array_push($this->_keyIdMap[$id], $cert);
177
-            }
178
-        }
179
-        return $this->_keyIdMap;
180
-    }
161
+	/**
162
+	 * Get certificate mapping by public key id.
163
+	 *
164
+	 * @return (Certificate[])[]
165
+	 */
166
+	private function _getKeyIdMap(): array
167
+	{
168
+		// lazily build mapping
169
+		if (!isset($this->_keyIdMap)) {
170
+			$this->_keyIdMap = array();
171
+			foreach ($this->_certs as $cert) {
172
+				$id = self::_getCertKeyId($cert);
173
+				if (!isset($this->_keyIdMap[$id])) {
174
+					$this->_keyIdMap[$id] = array();
175
+				}
176
+				array_push($this->_keyIdMap[$id], $cert);
177
+			}
178
+		}
179
+		return $this->_keyIdMap;
180
+	}
181 181
     
182
-    /**
183
-     * Get public key id for the certificate.
184
-     *
185
-     * @param Certificate $cert
186
-     * @return string
187
-     */
188
-    private static function _getCertKeyId(Certificate $cert): string
189
-    {
190
-        $exts = $cert->tbsCertificate()->extensions();
191
-        if ($exts->hasSubjectKeyIdentifier()) {
192
-            return $exts->subjectKeyIdentifier()->keyIdentifier();
193
-        }
194
-        return $cert->tbsCertificate()
195
-            ->subjectPublicKeyInfo()
196
-            ->keyIdentifier();
197
-    }
182
+	/**
183
+	 * Get public key id for the certificate.
184
+	 *
185
+	 * @param Certificate $cert
186
+	 * @return string
187
+	 */
188
+	private static function _getCertKeyId(Certificate $cert): string
189
+	{
190
+		$exts = $cert->tbsCertificate()->extensions();
191
+		if ($exts->hasSubjectKeyIdentifier()) {
192
+			return $exts->subjectKeyIdentifier()->keyIdentifier();
193
+		}
194
+		return $cert->tbsCertificate()
195
+			->subjectPublicKeyInfo()
196
+			->keyIdentifier();
197
+	}
198 198
     
199
-    /**
200
-     *
201
-     * @see \Countable::count()
202
-     * @return int
203
-     */
204
-    public function count(): int
205
-    {
206
-        return count($this->_certs);
207
-    }
199
+	/**
200
+	 *
201
+	 * @see \Countable::count()
202
+	 * @return int
203
+	 */
204
+	public function count(): int
205
+	{
206
+		return count($this->_certs);
207
+	}
208 208
     
209
-    /**
210
-     * Get iterator for certificates.
211
-     *
212
-     * @see \IteratorAggregate::getIterator()
213
-     * @return \ArrayIterator
214
-     */
215
-    public function getIterator(): \ArrayIterator
216
-    {
217
-        return new \ArrayIterator($this->_certs);
218
-    }
209
+	/**
210
+	 * Get iterator for certificates.
211
+	 *
212
+	 * @see \IteratorAggregate::getIterator()
213
+	 * @return \ArrayIterator
214
+	 */
215
+	public function getIterator(): \ArrayIterator
216
+	{
217
+		return new \ArrayIterator($this->_certs);
218
+	}
219 219
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -53,7 +53,7 @@
 block discarded – undo
53 53
     public static function fromPEMs(PEM ...$pems): self
54 54
     {
55 55
         $certs = array_map(
56
-            function ($pem) {
56
+            function($pem) {
57 57
                 return Certificate::fromPEM($pem);
58 58
             }, $pems);
59 59
         return new self(...$certs);
Please login to merge, or discard this patch.
lib/X509/Certificate/Extensions.php 2 patches
Indentation   +410 added lines, -410 removed lines patch added patch discarded remove patch
@@ -18,414 +18,414 @@
 block discarded – undo
18 18
  */
19 19
 class Extensions implements \Countable, \IteratorAggregate
20 20
 {
21
-    /**
22
-     * Extensions.
23
-     *
24
-     * @var Extension\Extension[] $_extensions
25
-     */
26
-    protected $_extensions;
27
-    
28
-    /**
29
-     * Constructor.
30
-     *
31
-     * @param Extension\Extension[] ...$extensions Extension objects
32
-     */
33
-    public function __construct(Ext\Extension ...$extensions)
34
-    {
35
-        $this->_extensions = array();
36
-        foreach ($extensions as $ext) {
37
-            $this->_extensions[$ext->oid()] = $ext;
38
-        }
39
-    }
40
-    
41
-    /**
42
-     * Initialize from ASN.1.
43
-     *
44
-     * @param Sequence $seq
45
-     * @return self
46
-     */
47
-    public static function fromASN1(Sequence $seq): self
48
-    {
49
-        $extensions = array_map(
50
-            function (UnspecifiedType $el) {
51
-                return Ext\Extension::fromASN1($el->asSequence());
52
-            }, $seq->elements());
53
-        return new self(...$extensions);
54
-    }
55
-    
56
-    /**
57
-     * Generate ASN.1 structure.
58
-     *
59
-     * @return Sequence
60
-     */
61
-    public function toASN1(): Sequence
62
-    {
63
-        $elements = array_values(
64
-            array_map(
65
-                function ($ext) {
66
-                    return $ext->toASN1();
67
-                }, $this->_extensions));
68
-        return new Sequence(...$elements);
69
-    }
70
-    
71
-    /**
72
-     * Get self with extensions added.
73
-     *
74
-     * @param Extension\Extension ...$ext One or more extensions to add
75
-     * @return self
76
-     */
77
-    public function withExtensions(Ext\Extension ...$exts): self
78
-    {
79
-        $obj = clone $this;
80
-        foreach ($exts as $ext) {
81
-            $obj->_extensions[$ext->oid()] = $ext;
82
-        }
83
-        return $obj;
84
-    }
85
-    
86
-    /**
87
-     * Check whether extension is present.
88
-     *
89
-     * @param string $oid Extensions OID
90
-     * @return bool
91
-     */
92
-    public function has(string $oid): bool
93
-    {
94
-        return isset($this->_extensions[$oid]);
95
-    }
96
-    
97
-    /**
98
-     * Get extension by OID.
99
-     *
100
-     * @param string $oid
101
-     * @throws \LogicException If extension is not present
102
-     * @return Extension\Extension
103
-     */
104
-    public function get(string $oid): Ext\Extension
105
-    {
106
-        if (!$this->has($oid)) {
107
-            throw new \LogicException("No extension by OID $oid.");
108
-        }
109
-        return $this->_extensions[$oid];
110
-    }
111
-    
112
-    /**
113
-     * Check whether 'Authority Key Identifier' extension is present.
114
-     *
115
-     * @return bool
116
-     */
117
-    public function hasAuthorityKeyIdentifier(): bool
118
-    {
119
-        return $this->has(Ext\Extension::OID_AUTHORITY_KEY_IDENTIFIER);
120
-    }
121
-    
122
-    /**
123
-     * Get 'Authority Key Identifier' extension.
124
-     *
125
-     * @throws \LogicException If extension is not present
126
-     * @return \X509\Certificate\Extension\AuthorityKeyIdentifierExtension
127
-     */
128
-    public function authorityKeyIdentifier(): Ext\AuthorityKeyIdentifierExtension
129
-    {
130
-        /** @var Extension\AuthorityKeyIdentifierExtension $keyIdentifier */
131
-        $keyIdentifier = $this->get(Ext\Extension::OID_AUTHORITY_KEY_IDENTIFIER);
132
-        return $keyIdentifier;
133
-    }
134
-    
135
-    /**
136
-     * Check whether 'Subject Key Identifier' extension is present.
137
-     *
138
-     * @return bool
139
-     */
140
-    public function hasSubjectKeyIdentifier(): bool
141
-    {
142
-        return $this->has(Ext\Extension::OID_SUBJECT_KEY_IDENTIFIER);
143
-    }
144
-    
145
-    /**
146
-     * Get 'Subject Key Identifier' extension.
147
-     *
148
-     * @throws \LogicException If extension is not present
149
-     * @return \X509\Certificate\Extension\SubjectKeyIdentifierExtension
150
-     */
151
-    public function subjectKeyIdentifier(): Ext\SubjectKeyIdentifierExtension
152
-    {
153
-        /** @var Extension\SubjectKeyIdentifierExtension $subjectKeyIdentifier */
154
-        $subjectKeyIdentifier = $this->get(
155
-            Ext\Extension::OID_SUBJECT_KEY_IDENTIFIER);
156
-        return $subjectKeyIdentifier;
157
-    }
158
-    
159
-    /**
160
-     * Check whether 'Key Usage' extension is present.
161
-     *
162
-     * @return bool
163
-     */
164
-    public function hasKeyUsage(): bool
165
-    {
166
-        return $this->has(Ext\Extension::OID_KEY_USAGE);
167
-    }
168
-    
169
-    /**
170
-     * Get 'Key Usage' extension.
171
-     *
172
-     * @throws \LogicException If extension is not present
173
-     * @return \X509\Certificate\Extension\KeyUsageExtension
174
-     */
175
-    public function keyUsage(): Ext\KeyUsageExtension
176
-    {
177
-        /** @var Extension\KeyUsageExtension $keyUsage */
178
-        $keyUsage = $this->get(Ext\Extension::OID_KEY_USAGE);
179
-        return $keyUsage;
180
-    }
181
-    
182
-    /**
183
-     * Check whether 'Certificate Policies' extension is present.
184
-     *
185
-     * @return bool
186
-     */
187
-    public function hasCertificatePolicies(): bool
188
-    {
189
-        return $this->has(Ext\Extension::OID_CERTIFICATE_POLICIES);
190
-    }
191
-    
192
-    /**
193
-     * Get 'Certificate Policies' extension.
194
-     *
195
-     * @throws \LogicException If extension is not present
196
-     * @return \X509\Certificate\Extension\CertificatePoliciesExtension
197
-     */
198
-    public function certificatePolicies(): Ext\CertificatePoliciesExtension
199
-    {
200
-        /** @var Extension\CertificatePoliciesExtension $certPolicies */
201
-        $certPolicies = $this->get(Ext\Extension::OID_CERTIFICATE_POLICIES);
202
-        return $certPolicies;
203
-    }
204
-    
205
-    /**
206
-     * Check whether 'Policy Mappings' extension is present.
207
-     *
208
-     * @return bool
209
-     */
210
-    public function hasPolicyMappings(): bool
211
-    {
212
-        return $this->has(Ext\Extension::OID_POLICY_MAPPINGS);
213
-    }
214
-    
215
-    /**
216
-     * Get 'Policy Mappings' extension.
217
-     *
218
-     * @throws \LogicException If extension is not present
219
-     * @return \X509\Certificate\Extension\PolicyMappingsExtension
220
-     */
221
-    public function policyMappings(): Ext\PolicyMappingsExtension
222
-    {
223
-        /** @var Extension\PolicyMappingsExtension $policyMappings */
224
-        $policyMappings = $this->get(Ext\Extension::OID_POLICY_MAPPINGS);
225
-        return $policyMappings;
226
-    }
227
-    
228
-    /**
229
-     * Check whether 'Subject Alternative Name' extension is present.
230
-     *
231
-     * @return bool
232
-     */
233
-    public function hasSubjectAlternativeName(): bool
234
-    {
235
-        return $this->has(Ext\Extension::OID_SUBJECT_ALT_NAME);
236
-    }
237
-    
238
-    /**
239
-     * Get 'Subject Alternative Name' extension.
240
-     *
241
-     * @throws \LogicException If extension is not present
242
-     * @return \X509\Certificate\Extension\SubjectAlternativeNameExtension
243
-     */
244
-    public function subjectAlternativeName(): Ext\SubjectAlternativeNameExtension
245
-    {
246
-        /** @var Extension\SubjectAlternativeNameExtension $subjectAltName */
247
-        $subjectAltName = $this->get(Ext\Extension::OID_SUBJECT_ALT_NAME);
248
-        return $subjectAltName;
249
-    }
250
-    
251
-    /**
252
-     * Check whether 'Issuer Alternative Name' extension is present.
253
-     *
254
-     * @return bool
255
-     */
256
-    public function hasIssuerAlternativeName(): bool
257
-    {
258
-        return $this->has(Ext\Extension::OID_ISSUER_ALT_NAME);
259
-    }
260
-    
261
-    /**
262
-     * Get 'Issuer Alternative Name' extension.
263
-     *
264
-     * @return \X509\Certificate\Extension\IssuerAlternativeNameExtension
265
-     */
266
-    public function issuerAlternativeName(): Ext\IssuerAlternativeNameExtension
267
-    {
268
-        /** @var Extension\IssuerAlternativeNameExtension $issuerAltName */
269
-        $issuerAltName = $this->get(Ext\Extension::OID_ISSUER_ALT_NAME);
270
-        return $issuerAltName;
271
-    }
272
-    
273
-    /**
274
-     * Check whether 'Basic Constraints' extension is present.
275
-     *
276
-     * @return bool
277
-     */
278
-    public function hasBasicConstraints(): bool
279
-    {
280
-        return $this->has(Ext\Extension::OID_BASIC_CONSTRAINTS);
281
-    }
282
-    
283
-    /**
284
-     * Get 'Basic Constraints' extension.
285
-     *
286
-     * @throws \LogicException If extension is not present
287
-     * @return \X509\Certificate\Extension\BasicConstraintsExtension
288
-     */
289
-    public function basicConstraints(): Ext\BasicConstraintsExtension
290
-    {
291
-        /** @var Extension\BasicConstraintsExtension $basicConstraints */
292
-        $basicConstraints = $this->get(Ext\Extension::OID_BASIC_CONSTRAINTS);
293
-        return $basicConstraints;
294
-    }
295
-    
296
-    /**
297
-     * Check whether 'Name Constraints' extension is present.
298
-     *
299
-     * @return bool
300
-     */
301
-    public function hasNameConstraints(): bool
302
-    {
303
-        return $this->has(Ext\Extension::OID_NAME_CONSTRAINTS);
304
-    }
305
-    
306
-    /**
307
-     * Get 'Name Constraints' extension.
308
-     *
309
-     * @throws \LogicException If extension is not present
310
-     * @return \X509\Certificate\Extension\NameConstraintsExtension
311
-     */
312
-    public function nameConstraints(): Ext\NameConstraintsExtension
313
-    {
314
-        /** @var Extension\NameConstraintsExtension $nameConstraints */
315
-        $nameConstraints = $this->get(Ext\Extension::OID_NAME_CONSTRAINTS);
316
-        return $nameConstraints;
317
-    }
318
-    
319
-    /**
320
-     * Check whether 'Policy Constraints' extension is present.
321
-     *
322
-     * @return bool
323
-     */
324
-    public function hasPolicyConstraints(): bool
325
-    {
326
-        return $this->has(Ext\Extension::OID_POLICY_CONSTRAINTS);
327
-    }
328
-    
329
-    /**
330
-     * Get 'Policy Constraints' extension.
331
-     *
332
-     * @throws \LogicException If extension is not present
333
-     * @return \X509\Certificate\Extension\PolicyConstraintsExtension
334
-     */
335
-    public function policyConstraints(): Ext\PolicyConstraintsExtension
336
-    {
337
-        /** @var Extension\PolicyConstraintsExtension $policyConstraints */
338
-        $policyConstraints = $this->get(Ext\Extension::OID_POLICY_CONSTRAINTS);
339
-        return $policyConstraints;
340
-    }
341
-    
342
-    /**
343
-     * Check whether 'Extended Key Usage' extension is present.
344
-     *
345
-     * @return bool
346
-     */
347
-    public function hasExtendedKeyUsage(): bool
348
-    {
349
-        return $this->has(Ext\Extension::OID_EXT_KEY_USAGE);
350
-    }
351
-    
352
-    /**
353
-     * Get 'Extended Key Usage' extension.
354
-     *
355
-     * @throws \LogicException If extension is not present
356
-     * @return \X509\Certificate\Extension\ExtendedKeyUsageExtension
357
-     */
358
-    public function extendedKeyUsage(): Ext\ExtendedKeyUsageExtension
359
-    {
360
-        /** @var Extension\ExtendedKeyUsageExtension $keyUsage */
361
-        $keyUsage = $this->get(Ext\Extension::OID_EXT_KEY_USAGE);
362
-        return $keyUsage;
363
-    }
364
-    
365
-    /**
366
-     * Check whether 'CRL Distribution Points' extension is present.
367
-     *
368
-     * @return bool
369
-     */
370
-    public function hasCRLDistributionPoints(): bool
371
-    {
372
-        return $this->has(Ext\Extension::OID_CRL_DISTRIBUTION_POINTS);
373
-    }
374
-    
375
-    /**
376
-     * Get 'CRL Distribution Points' extension.
377
-     *
378
-     * @throws \LogicException If extension is not present
379
-     * @return \X509\Certificate\Extension\CRLDistributionPointsExtension
380
-     */
381
-    public function crlDistributionPoints(): Ext\CRLDistributionPointsExtension
382
-    {
383
-        /** @var Extension\CRLDistributionPointsExtension $crlDist */
384
-        $crlDist = $this->get(Ext\Extension::OID_CRL_DISTRIBUTION_POINTS);
385
-        return $crlDist;
386
-    }
387
-    
388
-    /**
389
-     * Check whether 'Inhibit anyPolicy' extension is present.
390
-     *
391
-     * @return bool
392
-     */
393
-    public function hasInhibitAnyPolicy(): bool
394
-    {
395
-        return $this->has(Ext\Extension::OID_INHIBIT_ANY_POLICY);
396
-    }
397
-    
398
-    /**
399
-     * Get 'Inhibit anyPolicy' extension.
400
-     *
401
-     * @throws \LogicException If extension is not present
402
-     * @return \X509\Certificate\Extension\InhibitAnyPolicyExtension
403
-     */
404
-    public function inhibitAnyPolicy(): Ext\InhibitAnyPolicyExtension
405
-    {
406
-        /** @var Extension\InhibitAnyPolicyExtension $inhibitAny */
407
-        $inhibitAny = $this->get(Ext\Extension::OID_INHIBIT_ANY_POLICY);
408
-        return $inhibitAny;
409
-    }
410
-    
411
-    /**
412
-     *
413
-     * @see \Countable::count()
414
-     * @return int
415
-     */
416
-    public function count(): int
417
-    {
418
-        return count($this->_extensions);
419
-    }
420
-    
421
-    /**
422
-     * Get iterator for extensions.
423
-     *
424
-     * @see \IteratorAggregate::getIterator()
425
-     * @return \Traversable
426
-     */
427
-    public function getIterator(): \Traversable
428
-    {
429
-        return new \ArrayIterator($this->_extensions);
430
-    }
21
+	/**
22
+	 * Extensions.
23
+	 *
24
+	 * @var Extension\Extension[] $_extensions
25
+	 */
26
+	protected $_extensions;
27
+    
28
+	/**
29
+	 * Constructor.
30
+	 *
31
+	 * @param Extension\Extension[] ...$extensions Extension objects
32
+	 */
33
+	public function __construct(Ext\Extension ...$extensions)
34
+	{
35
+		$this->_extensions = array();
36
+		foreach ($extensions as $ext) {
37
+			$this->_extensions[$ext->oid()] = $ext;
38
+		}
39
+	}
40
+    
41
+	/**
42
+	 * Initialize from ASN.1.
43
+	 *
44
+	 * @param Sequence $seq
45
+	 * @return self
46
+	 */
47
+	public static function fromASN1(Sequence $seq): self
48
+	{
49
+		$extensions = array_map(
50
+			function (UnspecifiedType $el) {
51
+				return Ext\Extension::fromASN1($el->asSequence());
52
+			}, $seq->elements());
53
+		return new self(...$extensions);
54
+	}
55
+    
56
+	/**
57
+	 * Generate ASN.1 structure.
58
+	 *
59
+	 * @return Sequence
60
+	 */
61
+	public function toASN1(): Sequence
62
+	{
63
+		$elements = array_values(
64
+			array_map(
65
+				function ($ext) {
66
+					return $ext->toASN1();
67
+				}, $this->_extensions));
68
+		return new Sequence(...$elements);
69
+	}
70
+    
71
+	/**
72
+	 * Get self with extensions added.
73
+	 *
74
+	 * @param Extension\Extension ...$ext One or more extensions to add
75
+	 * @return self
76
+	 */
77
+	public function withExtensions(Ext\Extension ...$exts): self
78
+	{
79
+		$obj = clone $this;
80
+		foreach ($exts as $ext) {
81
+			$obj->_extensions[$ext->oid()] = $ext;
82
+		}
83
+		return $obj;
84
+	}
85
+    
86
+	/**
87
+	 * Check whether extension is present.
88
+	 *
89
+	 * @param string $oid Extensions OID
90
+	 * @return bool
91
+	 */
92
+	public function has(string $oid): bool
93
+	{
94
+		return isset($this->_extensions[$oid]);
95
+	}
96
+    
97
+	/**
98
+	 * Get extension by OID.
99
+	 *
100
+	 * @param string $oid
101
+	 * @throws \LogicException If extension is not present
102
+	 * @return Extension\Extension
103
+	 */
104
+	public function get(string $oid): Ext\Extension
105
+	{
106
+		if (!$this->has($oid)) {
107
+			throw new \LogicException("No extension by OID $oid.");
108
+		}
109
+		return $this->_extensions[$oid];
110
+	}
111
+    
112
+	/**
113
+	 * Check whether 'Authority Key Identifier' extension is present.
114
+	 *
115
+	 * @return bool
116
+	 */
117
+	public function hasAuthorityKeyIdentifier(): bool
118
+	{
119
+		return $this->has(Ext\Extension::OID_AUTHORITY_KEY_IDENTIFIER);
120
+	}
121
+    
122
+	/**
123
+	 * Get 'Authority Key Identifier' extension.
124
+	 *
125
+	 * @throws \LogicException If extension is not present
126
+	 * @return \X509\Certificate\Extension\AuthorityKeyIdentifierExtension
127
+	 */
128
+	public function authorityKeyIdentifier(): Ext\AuthorityKeyIdentifierExtension
129
+	{
130
+		/** @var Extension\AuthorityKeyIdentifierExtension $keyIdentifier */
131
+		$keyIdentifier = $this->get(Ext\Extension::OID_AUTHORITY_KEY_IDENTIFIER);
132
+		return $keyIdentifier;
133
+	}
134
+    
135
+	/**
136
+	 * Check whether 'Subject Key Identifier' extension is present.
137
+	 *
138
+	 * @return bool
139
+	 */
140
+	public function hasSubjectKeyIdentifier(): bool
141
+	{
142
+		return $this->has(Ext\Extension::OID_SUBJECT_KEY_IDENTIFIER);
143
+	}
144
+    
145
+	/**
146
+	 * Get 'Subject Key Identifier' extension.
147
+	 *
148
+	 * @throws \LogicException If extension is not present
149
+	 * @return \X509\Certificate\Extension\SubjectKeyIdentifierExtension
150
+	 */
151
+	public function subjectKeyIdentifier(): Ext\SubjectKeyIdentifierExtension
152
+	{
153
+		/** @var Extension\SubjectKeyIdentifierExtension $subjectKeyIdentifier */
154
+		$subjectKeyIdentifier = $this->get(
155
+			Ext\Extension::OID_SUBJECT_KEY_IDENTIFIER);
156
+		return $subjectKeyIdentifier;
157
+	}
158
+    
159
+	/**
160
+	 * Check whether 'Key Usage' extension is present.
161
+	 *
162
+	 * @return bool
163
+	 */
164
+	public function hasKeyUsage(): bool
165
+	{
166
+		return $this->has(Ext\Extension::OID_KEY_USAGE);
167
+	}
168
+    
169
+	/**
170
+	 * Get 'Key Usage' extension.
171
+	 *
172
+	 * @throws \LogicException If extension is not present
173
+	 * @return \X509\Certificate\Extension\KeyUsageExtension
174
+	 */
175
+	public function keyUsage(): Ext\KeyUsageExtension
176
+	{
177
+		/** @var Extension\KeyUsageExtension $keyUsage */
178
+		$keyUsage = $this->get(Ext\Extension::OID_KEY_USAGE);
179
+		return $keyUsage;
180
+	}
181
+    
182
+	/**
183
+	 * Check whether 'Certificate Policies' extension is present.
184
+	 *
185
+	 * @return bool
186
+	 */
187
+	public function hasCertificatePolicies(): bool
188
+	{
189
+		return $this->has(Ext\Extension::OID_CERTIFICATE_POLICIES);
190
+	}
191
+    
192
+	/**
193
+	 * Get 'Certificate Policies' extension.
194
+	 *
195
+	 * @throws \LogicException If extension is not present
196
+	 * @return \X509\Certificate\Extension\CertificatePoliciesExtension
197
+	 */
198
+	public function certificatePolicies(): Ext\CertificatePoliciesExtension
199
+	{
200
+		/** @var Extension\CertificatePoliciesExtension $certPolicies */
201
+		$certPolicies = $this->get(Ext\Extension::OID_CERTIFICATE_POLICIES);
202
+		return $certPolicies;
203
+	}
204
+    
205
+	/**
206
+	 * Check whether 'Policy Mappings' extension is present.
207
+	 *
208
+	 * @return bool
209
+	 */
210
+	public function hasPolicyMappings(): bool
211
+	{
212
+		return $this->has(Ext\Extension::OID_POLICY_MAPPINGS);
213
+	}
214
+    
215
+	/**
216
+	 * Get 'Policy Mappings' extension.
217
+	 *
218
+	 * @throws \LogicException If extension is not present
219
+	 * @return \X509\Certificate\Extension\PolicyMappingsExtension
220
+	 */
221
+	public function policyMappings(): Ext\PolicyMappingsExtension
222
+	{
223
+		/** @var Extension\PolicyMappingsExtension $policyMappings */
224
+		$policyMappings = $this->get(Ext\Extension::OID_POLICY_MAPPINGS);
225
+		return $policyMappings;
226
+	}
227
+    
228
+	/**
229
+	 * Check whether 'Subject Alternative Name' extension is present.
230
+	 *
231
+	 * @return bool
232
+	 */
233
+	public function hasSubjectAlternativeName(): bool
234
+	{
235
+		return $this->has(Ext\Extension::OID_SUBJECT_ALT_NAME);
236
+	}
237
+    
238
+	/**
239
+	 * Get 'Subject Alternative Name' extension.
240
+	 *
241
+	 * @throws \LogicException If extension is not present
242
+	 * @return \X509\Certificate\Extension\SubjectAlternativeNameExtension
243
+	 */
244
+	public function subjectAlternativeName(): Ext\SubjectAlternativeNameExtension
245
+	{
246
+		/** @var Extension\SubjectAlternativeNameExtension $subjectAltName */
247
+		$subjectAltName = $this->get(Ext\Extension::OID_SUBJECT_ALT_NAME);
248
+		return $subjectAltName;
249
+	}
250
+    
251
+	/**
252
+	 * Check whether 'Issuer Alternative Name' extension is present.
253
+	 *
254
+	 * @return bool
255
+	 */
256
+	public function hasIssuerAlternativeName(): bool
257
+	{
258
+		return $this->has(Ext\Extension::OID_ISSUER_ALT_NAME);
259
+	}
260
+    
261
+	/**
262
+	 * Get 'Issuer Alternative Name' extension.
263
+	 *
264
+	 * @return \X509\Certificate\Extension\IssuerAlternativeNameExtension
265
+	 */
266
+	public function issuerAlternativeName(): Ext\IssuerAlternativeNameExtension
267
+	{
268
+		/** @var Extension\IssuerAlternativeNameExtension $issuerAltName */
269
+		$issuerAltName = $this->get(Ext\Extension::OID_ISSUER_ALT_NAME);
270
+		return $issuerAltName;
271
+	}
272
+    
273
+	/**
274
+	 * Check whether 'Basic Constraints' extension is present.
275
+	 *
276
+	 * @return bool
277
+	 */
278
+	public function hasBasicConstraints(): bool
279
+	{
280
+		return $this->has(Ext\Extension::OID_BASIC_CONSTRAINTS);
281
+	}
282
+    
283
+	/**
284
+	 * Get 'Basic Constraints' extension.
285
+	 *
286
+	 * @throws \LogicException If extension is not present
287
+	 * @return \X509\Certificate\Extension\BasicConstraintsExtension
288
+	 */
289
+	public function basicConstraints(): Ext\BasicConstraintsExtension
290
+	{
291
+		/** @var Extension\BasicConstraintsExtension $basicConstraints */
292
+		$basicConstraints = $this->get(Ext\Extension::OID_BASIC_CONSTRAINTS);
293
+		return $basicConstraints;
294
+	}
295
+    
296
+	/**
297
+	 * Check whether 'Name Constraints' extension is present.
298
+	 *
299
+	 * @return bool
300
+	 */
301
+	public function hasNameConstraints(): bool
302
+	{
303
+		return $this->has(Ext\Extension::OID_NAME_CONSTRAINTS);
304
+	}
305
+    
306
+	/**
307
+	 * Get 'Name Constraints' extension.
308
+	 *
309
+	 * @throws \LogicException If extension is not present
310
+	 * @return \X509\Certificate\Extension\NameConstraintsExtension
311
+	 */
312
+	public function nameConstraints(): Ext\NameConstraintsExtension
313
+	{
314
+		/** @var Extension\NameConstraintsExtension $nameConstraints */
315
+		$nameConstraints = $this->get(Ext\Extension::OID_NAME_CONSTRAINTS);
316
+		return $nameConstraints;
317
+	}
318
+    
319
+	/**
320
+	 * Check whether 'Policy Constraints' extension is present.
321
+	 *
322
+	 * @return bool
323
+	 */
324
+	public function hasPolicyConstraints(): bool
325
+	{
326
+		return $this->has(Ext\Extension::OID_POLICY_CONSTRAINTS);
327
+	}
328
+    
329
+	/**
330
+	 * Get 'Policy Constraints' extension.
331
+	 *
332
+	 * @throws \LogicException If extension is not present
333
+	 * @return \X509\Certificate\Extension\PolicyConstraintsExtension
334
+	 */
335
+	public function policyConstraints(): Ext\PolicyConstraintsExtension
336
+	{
337
+		/** @var Extension\PolicyConstraintsExtension $policyConstraints */
338
+		$policyConstraints = $this->get(Ext\Extension::OID_POLICY_CONSTRAINTS);
339
+		return $policyConstraints;
340
+	}
341
+    
342
+	/**
343
+	 * Check whether 'Extended Key Usage' extension is present.
344
+	 *
345
+	 * @return bool
346
+	 */
347
+	public function hasExtendedKeyUsage(): bool
348
+	{
349
+		return $this->has(Ext\Extension::OID_EXT_KEY_USAGE);
350
+	}
351
+    
352
+	/**
353
+	 * Get 'Extended Key Usage' extension.
354
+	 *
355
+	 * @throws \LogicException If extension is not present
356
+	 * @return \X509\Certificate\Extension\ExtendedKeyUsageExtension
357
+	 */
358
+	public function extendedKeyUsage(): Ext\ExtendedKeyUsageExtension
359
+	{
360
+		/** @var Extension\ExtendedKeyUsageExtension $keyUsage */
361
+		$keyUsage = $this->get(Ext\Extension::OID_EXT_KEY_USAGE);
362
+		return $keyUsage;
363
+	}
364
+    
365
+	/**
366
+	 * Check whether 'CRL Distribution Points' extension is present.
367
+	 *
368
+	 * @return bool
369
+	 */
370
+	public function hasCRLDistributionPoints(): bool
371
+	{
372
+		return $this->has(Ext\Extension::OID_CRL_DISTRIBUTION_POINTS);
373
+	}
374
+    
375
+	/**
376
+	 * Get 'CRL Distribution Points' extension.
377
+	 *
378
+	 * @throws \LogicException If extension is not present
379
+	 * @return \X509\Certificate\Extension\CRLDistributionPointsExtension
380
+	 */
381
+	public function crlDistributionPoints(): Ext\CRLDistributionPointsExtension
382
+	{
383
+		/** @var Extension\CRLDistributionPointsExtension $crlDist */
384
+		$crlDist = $this->get(Ext\Extension::OID_CRL_DISTRIBUTION_POINTS);
385
+		return $crlDist;
386
+	}
387
+    
388
+	/**
389
+	 * Check whether 'Inhibit anyPolicy' extension is present.
390
+	 *
391
+	 * @return bool
392
+	 */
393
+	public function hasInhibitAnyPolicy(): bool
394
+	{
395
+		return $this->has(Ext\Extension::OID_INHIBIT_ANY_POLICY);
396
+	}
397
+    
398
+	/**
399
+	 * Get 'Inhibit anyPolicy' extension.
400
+	 *
401
+	 * @throws \LogicException If extension is not present
402
+	 * @return \X509\Certificate\Extension\InhibitAnyPolicyExtension
403
+	 */
404
+	public function inhibitAnyPolicy(): Ext\InhibitAnyPolicyExtension
405
+	{
406
+		/** @var Extension\InhibitAnyPolicyExtension $inhibitAny */
407
+		$inhibitAny = $this->get(Ext\Extension::OID_INHIBIT_ANY_POLICY);
408
+		return $inhibitAny;
409
+	}
410
+    
411
+	/**
412
+	 *
413
+	 * @see \Countable::count()
414
+	 * @return int
415
+	 */
416
+	public function count(): int
417
+	{
418
+		return count($this->_extensions);
419
+	}
420
+    
421
+	/**
422
+	 * Get iterator for extensions.
423
+	 *
424
+	 * @see \IteratorAggregate::getIterator()
425
+	 * @return \Traversable
426
+	 */
427
+	public function getIterator(): \Traversable
428
+	{
429
+		return new \ArrayIterator($this->_extensions);
430
+	}
431 431
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -47,7 +47,7 @@  discard block
 block discarded – undo
47 47
     public static function fromASN1(Sequence $seq): self
48 48
     {
49 49
         $extensions = array_map(
50
-            function (UnspecifiedType $el) {
50
+            function(UnspecifiedType $el) {
51 51
                 return Ext\Extension::fromASN1($el->asSequence());
52 52
             }, $seq->elements());
53 53
         return new self(...$extensions);
@@ -62,7 +62,7 @@  discard block
 block discarded – undo
62 62
     {
63 63
         $elements = array_values(
64 64
             array_map(
65
-                function ($ext) {
65
+                function($ext) {
66 66
                     return $ext->toASN1();
67 67
                 }, $this->_extensions));
68 68
         return new Sequence(...$elements);
Please login to merge, or discard this patch.
lib/X509/Certificate/Certificate.php 1 patch
Indentation   +231 added lines, -231 removed lines patch added patch discarded remove patch
@@ -19,235 +19,235 @@
 block discarded – undo
19 19
  */
20 20
 class Certificate
21 21
 {
22
-    /**
23
-     * "To be signed" certificate information.
24
-     *
25
-     * @var TBSCertificate $_tbsCertificate
26
-     */
27
-    protected $_tbsCertificate;
28
-    
29
-    /**
30
-     * Signature algorithm.
31
-     *
32
-     * @var SignatureAlgorithmIdentifier $_signatureAlgorithm
33
-     */
34
-    protected $_signatureAlgorithm;
35
-    
36
-    /**
37
-     * Signature value.
38
-     *
39
-     * @var Signature $_signatureValue
40
-     */
41
-    protected $_signatureValue;
42
-    
43
-    /**
44
-     * Constructor.
45
-     *
46
-     * @param TBSCertificate $tbsCert
47
-     * @param SignatureAlgorithmIdentifier $algo
48
-     * @param Signature $signature
49
-     */
50
-    public function __construct(TBSCertificate $tbsCert,
51
-        SignatureAlgorithmIdentifier $algo, Signature $signature)
52
-    {
53
-        $this->_tbsCertificate = $tbsCert;
54
-        $this->_signatureAlgorithm = $algo;
55
-        $this->_signatureValue = $signature;
56
-    }
57
-    
58
-    /**
59
-     * Initialize from ASN.1.
60
-     *
61
-     * @param Sequence $seq
62
-     * @return self
63
-     */
64
-    public static function fromASN1(Sequence $seq): self
65
-    {
66
-        $tbsCert = TBSCertificate::fromASN1($seq->at(0)->asSequence());
67
-        $algo = AlgorithmIdentifier::fromASN1($seq->at(1)->asSequence());
68
-        if (!$algo instanceof SignatureAlgorithmIdentifier) {
69
-            throw new \UnexpectedValueException(
70
-                "Unsupported signature algorithm " . $algo->oid() . ".");
71
-        }
72
-        $signature = Signature::fromSignatureData(
73
-            $seq->at(2)
74
-                ->asBitString()
75
-                ->string(), $algo);
76
-        return new self($tbsCert, $algo, $signature);
77
-    }
78
-    
79
-    /**
80
-     * Initialize from DER.
81
-     *
82
-     * @param string $data
83
-     * @return self
84
-     */
85
-    public static function fromDER(string $data): self
86
-    {
87
-        return self::fromASN1(Sequence::fromDER($data));
88
-    }
89
-    
90
-    /**
91
-     * Initialize from PEM.
92
-     *
93
-     * @param PEM $pem
94
-     * @throws \UnexpectedValueException
95
-     * @return self
96
-     */
97
-    public static function fromPEM(PEM $pem): self
98
-    {
99
-        if ($pem->type() != PEM::TYPE_CERTIFICATE) {
100
-            throw new \UnexpectedValueException("Invalid PEM type.");
101
-        }
102
-        return self::fromDER($pem->data());
103
-    }
104
-    
105
-    /**
106
-     * Get certificate information.
107
-     *
108
-     * @return TBSCertificate
109
-     */
110
-    public function tbsCertificate(): TBSCertificate
111
-    {
112
-        return $this->_tbsCertificate;
113
-    }
114
-    
115
-    /**
116
-     * Get signature algorithm.
117
-     *
118
-     * @return SignatureAlgorithmIdentifier
119
-     */
120
-    public function signatureAlgorithm(): SignatureAlgorithmIdentifier
121
-    {
122
-        return $this->_signatureAlgorithm;
123
-    }
124
-    
125
-    /**
126
-     * Get signature value.
127
-     *
128
-     * @return Signature
129
-     */
130
-    public function signatureValue(): Signature
131
-    {
132
-        return $this->_signatureValue;
133
-    }
134
-    
135
-    /**
136
-     * Check whether certificate is self-issued.
137
-     *
138
-     * @return bool
139
-     */
140
-    public function isSelfIssued(): bool
141
-    {
142
-        return $this->_tbsCertificate->subject()->equals(
143
-            $this->_tbsCertificate->issuer());
144
-    }
145
-    
146
-    /**
147
-     * Check whether certificate is semantically equal to another.
148
-     *
149
-     * @param Certificate $cert Certificate to compare to
150
-     * @return bool
151
-     */
152
-    public function equals(Certificate $cert): bool
153
-    {
154
-        return $this->_hasEqualSerialNumber($cert) &&
155
-             $this->_hasEqualPublicKey($cert) && $this->_hasEqualSubject($cert);
156
-    }
157
-    
158
-    /**
159
-     * Check whether certificate has serial number equal to another.
160
-     *
161
-     * @param Certificate $cert
162
-     * @return bool
163
-     */
164
-    private function _hasEqualSerialNumber(Certificate $cert): bool
165
-    {
166
-        $sn1 = $this->_tbsCertificate->serialNumber();
167
-        $sn2 = $cert->_tbsCertificate->serialNumber();
168
-        return $sn1 == $sn2;
169
-    }
170
-    
171
-    /**
172
-     * Check whether certificate has public key equal to another.
173
-     *
174
-     * @param Certificate $cert
175
-     * @return bool
176
-     */
177
-    private function _hasEqualPublicKey(Certificate $cert): bool
178
-    {
179
-        $kid1 = $this->_tbsCertificate->subjectPublicKeyInfo()->keyIdentifier();
180
-        $kid2 = $cert->_tbsCertificate->subjectPublicKeyInfo()->keyIdentifier();
181
-        return $kid1 == $kid2;
182
-    }
183
-    
184
-    /**
185
-     * Check whether certificate has subject equal to another.
186
-     *
187
-     * @param Certificate $cert
188
-     * @return bool
189
-     */
190
-    private function _hasEqualSubject(Certificate $cert): bool
191
-    {
192
-        $dn1 = $this->_tbsCertificate->subject();
193
-        $dn2 = $cert->_tbsCertificate->subject();
194
-        return $dn1->equals($dn2);
195
-    }
196
-    
197
-    /**
198
-     * Generate ASN.1 structure.
199
-     *
200
-     * @return Sequence
201
-     */
202
-    public function toASN1(): Sequence
203
-    {
204
-        return new Sequence($this->_tbsCertificate->toASN1(),
205
-            $this->_signatureAlgorithm->toASN1(),
206
-            $this->_signatureValue->bitString());
207
-    }
208
-    
209
-    /**
210
-     * Get certificate as a DER.
211
-     *
212
-     * @return string
213
-     */
214
-    public function toDER(): string
215
-    {
216
-        return $this->toASN1()->toDER();
217
-    }
218
-    
219
-    /**
220
-     * Get certificate as a PEM.
221
-     *
222
-     * @return PEM
223
-     */
224
-    public function toPEM(): PEM
225
-    {
226
-        return new PEM(PEM::TYPE_CERTIFICATE, $this->toDER());
227
-    }
228
-    
229
-    /**
230
-     * Verify certificate signature.
231
-     *
232
-     * @param PublicKeyInfo $pubkey_info Issuer's public key
233
-     * @param Crypto|null $crypto Crypto engine, use default if not set
234
-     * @return bool True if certificate signature is valid
235
-     */
236
-    public function verify(PublicKeyInfo $pubkey_info, Crypto $crypto = null): bool
237
-    {
238
-        $crypto = $crypto ?: Crypto::getDefault();
239
-        $data = $this->_tbsCertificate->toASN1()->toDER();
240
-        return $crypto->verify($data, $this->_signatureValue, $pubkey_info,
241
-            $this->_signatureAlgorithm);
242
-    }
243
-    
244
-    /**
245
-     * Get certificate as a PEM formatted string.
246
-     *
247
-     * @return string
248
-     */
249
-    public function __toString()
250
-    {
251
-        return $this->toPEM()->string();
252
-    }
22
+	/**
23
+	 * "To be signed" certificate information.
24
+	 *
25
+	 * @var TBSCertificate $_tbsCertificate
26
+	 */
27
+	protected $_tbsCertificate;
28
+    
29
+	/**
30
+	 * Signature algorithm.
31
+	 *
32
+	 * @var SignatureAlgorithmIdentifier $_signatureAlgorithm
33
+	 */
34
+	protected $_signatureAlgorithm;
35
+    
36
+	/**
37
+	 * Signature value.
38
+	 *
39
+	 * @var Signature $_signatureValue
40
+	 */
41
+	protected $_signatureValue;
42
+    
43
+	/**
44
+	 * Constructor.
45
+	 *
46
+	 * @param TBSCertificate $tbsCert
47
+	 * @param SignatureAlgorithmIdentifier $algo
48
+	 * @param Signature $signature
49
+	 */
50
+	public function __construct(TBSCertificate $tbsCert,
51
+		SignatureAlgorithmIdentifier $algo, Signature $signature)
52
+	{
53
+		$this->_tbsCertificate = $tbsCert;
54
+		$this->_signatureAlgorithm = $algo;
55
+		$this->_signatureValue = $signature;
56
+	}
57
+    
58
+	/**
59
+	 * Initialize from ASN.1.
60
+	 *
61
+	 * @param Sequence $seq
62
+	 * @return self
63
+	 */
64
+	public static function fromASN1(Sequence $seq): self
65
+	{
66
+		$tbsCert = TBSCertificate::fromASN1($seq->at(0)->asSequence());
67
+		$algo = AlgorithmIdentifier::fromASN1($seq->at(1)->asSequence());
68
+		if (!$algo instanceof SignatureAlgorithmIdentifier) {
69
+			throw new \UnexpectedValueException(
70
+				"Unsupported signature algorithm " . $algo->oid() . ".");
71
+		}
72
+		$signature = Signature::fromSignatureData(
73
+			$seq->at(2)
74
+				->asBitString()
75
+				->string(), $algo);
76
+		return new self($tbsCert, $algo, $signature);
77
+	}
78
+    
79
+	/**
80
+	 * Initialize from DER.
81
+	 *
82
+	 * @param string $data
83
+	 * @return self
84
+	 */
85
+	public static function fromDER(string $data): self
86
+	{
87
+		return self::fromASN1(Sequence::fromDER($data));
88
+	}
89
+    
90
+	/**
91
+	 * Initialize from PEM.
92
+	 *
93
+	 * @param PEM $pem
94
+	 * @throws \UnexpectedValueException
95
+	 * @return self
96
+	 */
97
+	public static function fromPEM(PEM $pem): self
98
+	{
99
+		if ($pem->type() != PEM::TYPE_CERTIFICATE) {
100
+			throw new \UnexpectedValueException("Invalid PEM type.");
101
+		}
102
+		return self::fromDER($pem->data());
103
+	}
104
+    
105
+	/**
106
+	 * Get certificate information.
107
+	 *
108
+	 * @return TBSCertificate
109
+	 */
110
+	public function tbsCertificate(): TBSCertificate
111
+	{
112
+		return $this->_tbsCertificate;
113
+	}
114
+    
115
+	/**
116
+	 * Get signature algorithm.
117
+	 *
118
+	 * @return SignatureAlgorithmIdentifier
119
+	 */
120
+	public function signatureAlgorithm(): SignatureAlgorithmIdentifier
121
+	{
122
+		return $this->_signatureAlgorithm;
123
+	}
124
+    
125
+	/**
126
+	 * Get signature value.
127
+	 *
128
+	 * @return Signature
129
+	 */
130
+	public function signatureValue(): Signature
131
+	{
132
+		return $this->_signatureValue;
133
+	}
134
+    
135
+	/**
136
+	 * Check whether certificate is self-issued.
137
+	 *
138
+	 * @return bool
139
+	 */
140
+	public function isSelfIssued(): bool
141
+	{
142
+		return $this->_tbsCertificate->subject()->equals(
143
+			$this->_tbsCertificate->issuer());
144
+	}
145
+    
146
+	/**
147
+	 * Check whether certificate is semantically equal to another.
148
+	 *
149
+	 * @param Certificate $cert Certificate to compare to
150
+	 * @return bool
151
+	 */
152
+	public function equals(Certificate $cert): bool
153
+	{
154
+		return $this->_hasEqualSerialNumber($cert) &&
155
+			 $this->_hasEqualPublicKey($cert) && $this->_hasEqualSubject($cert);
156
+	}
157
+    
158
+	/**
159
+	 * Check whether certificate has serial number equal to another.
160
+	 *
161
+	 * @param Certificate $cert
162
+	 * @return bool
163
+	 */
164
+	private function _hasEqualSerialNumber(Certificate $cert): bool
165
+	{
166
+		$sn1 = $this->_tbsCertificate->serialNumber();
167
+		$sn2 = $cert->_tbsCertificate->serialNumber();
168
+		return $sn1 == $sn2;
169
+	}
170
+    
171
+	/**
172
+	 * Check whether certificate has public key equal to another.
173
+	 *
174
+	 * @param Certificate $cert
175
+	 * @return bool
176
+	 */
177
+	private function _hasEqualPublicKey(Certificate $cert): bool
178
+	{
179
+		$kid1 = $this->_tbsCertificate->subjectPublicKeyInfo()->keyIdentifier();
180
+		$kid2 = $cert->_tbsCertificate->subjectPublicKeyInfo()->keyIdentifier();
181
+		return $kid1 == $kid2;
182
+	}
183
+    
184
+	/**
185
+	 * Check whether certificate has subject equal to another.
186
+	 *
187
+	 * @param Certificate $cert
188
+	 * @return bool
189
+	 */
190
+	private function _hasEqualSubject(Certificate $cert): bool
191
+	{
192
+		$dn1 = $this->_tbsCertificate->subject();
193
+		$dn2 = $cert->_tbsCertificate->subject();
194
+		return $dn1->equals($dn2);
195
+	}
196
+    
197
+	/**
198
+	 * Generate ASN.1 structure.
199
+	 *
200
+	 * @return Sequence
201
+	 */
202
+	public function toASN1(): Sequence
203
+	{
204
+		return new Sequence($this->_tbsCertificate->toASN1(),
205
+			$this->_signatureAlgorithm->toASN1(),
206
+			$this->_signatureValue->bitString());
207
+	}
208
+    
209
+	/**
210
+	 * Get certificate as a DER.
211
+	 *
212
+	 * @return string
213
+	 */
214
+	public function toDER(): string
215
+	{
216
+		return $this->toASN1()->toDER();
217
+	}
218
+    
219
+	/**
220
+	 * Get certificate as a PEM.
221
+	 *
222
+	 * @return PEM
223
+	 */
224
+	public function toPEM(): PEM
225
+	{
226
+		return new PEM(PEM::TYPE_CERTIFICATE, $this->toDER());
227
+	}
228
+    
229
+	/**
230
+	 * Verify certificate signature.
231
+	 *
232
+	 * @param PublicKeyInfo $pubkey_info Issuer's public key
233
+	 * @param Crypto|null $crypto Crypto engine, use default if not set
234
+	 * @return bool True if certificate signature is valid
235
+	 */
236
+	public function verify(PublicKeyInfo $pubkey_info, Crypto $crypto = null): bool
237
+	{
238
+		$crypto = $crypto ?: Crypto::getDefault();
239
+		$data = $this->_tbsCertificate->toASN1()->toDER();
240
+		return $crypto->verify($data, $this->_signatureValue, $pubkey_info,
241
+			$this->_signatureAlgorithm);
242
+	}
243
+    
244
+	/**
245
+	 * Get certificate as a PEM formatted string.
246
+	 *
247
+	 * @return string
248
+	 */
249
+	public function __toString()
250
+	{
251
+		return $this->toPEM()->string();
252
+	}
253 253
 }
Please login to merge, or discard this patch.
lib/X509/Certificate/Extension/PolicyMappingsExtension.php 2 patches
Indentation   +155 added lines, -155 removed lines patch added patch discarded remove patch
@@ -15,170 +15,170 @@
 block discarded – undo
15 15
  * @link https://tools.ietf.org/html/rfc5280#section-4.2.1.5
16 16
  */
17 17
 class PolicyMappingsExtension extends Extension implements 
18
-    \Countable,
19
-    \IteratorAggregate
18
+	\Countable,
19
+	\IteratorAggregate
20 20
 {
21
-    /**
22
-     * Policy mappings.
23
-     *
24
-     * @var PolicyMapping[] $_mappings
25
-     */
26
-    protected $_mappings;
21
+	/**
22
+	 * Policy mappings.
23
+	 *
24
+	 * @var PolicyMapping[] $_mappings
25
+	 */
26
+	protected $_mappings;
27 27
     
28
-    /**
29
-     * Constructor.
30
-     *
31
-     * @param bool $critical
32
-     * @param PolicyMapping[] $mappings One or more PolicyMapping objects
33
-     */
34
-    public function __construct(bool $critical, PolicyMapping ...$mappings)
35
-    {
36
-        parent::__construct(self::OID_POLICY_MAPPINGS, $critical);
37
-        $this->_mappings = $mappings;
38
-    }
28
+	/**
29
+	 * Constructor.
30
+	 *
31
+	 * @param bool $critical
32
+	 * @param PolicyMapping[] $mappings One or more PolicyMapping objects
33
+	 */
34
+	public function __construct(bool $critical, PolicyMapping ...$mappings)
35
+	{
36
+		parent::__construct(self::OID_POLICY_MAPPINGS, $critical);
37
+		$this->_mappings = $mappings;
38
+	}
39 39
     
40
-    /**
41
-     *
42
-     * {@inheritdoc}
43
-     * @return self
44
-     */
45
-    protected static function _fromDER(string $data, bool $critical): self
46
-    {
47
-        $mappings = array_map(
48
-            function (UnspecifiedType $el) {
49
-                return PolicyMapping::fromASN1($el->asSequence());
50
-            }, Sequence::fromDER($data)->elements());
51
-        if (!count($mappings)) {
52
-            throw new \UnexpectedValueException(
53
-                "PolicyMappings must have at least one mapping.");
54
-        }
55
-        return new self($critical, ...$mappings);
56
-    }
40
+	/**
41
+	 *
42
+	 * {@inheritdoc}
43
+	 * @return self
44
+	 */
45
+	protected static function _fromDER(string $data, bool $critical): self
46
+	{
47
+		$mappings = array_map(
48
+			function (UnspecifiedType $el) {
49
+				return PolicyMapping::fromASN1($el->asSequence());
50
+			}, Sequence::fromDER($data)->elements());
51
+		if (!count($mappings)) {
52
+			throw new \UnexpectedValueException(
53
+				"PolicyMappings must have at least one mapping.");
54
+		}
55
+		return new self($critical, ...$mappings);
56
+	}
57 57
     
58
-    /**
59
-     *
60
-     * {@inheritdoc}
61
-     * @return Sequence
62
-     */
63
-    protected function _valueASN1(): Sequence
64
-    {
65
-        if (!count($this->_mappings)) {
66
-            throw new \LogicException("No mappings.");
67
-        }
68
-        $elements = array_map(
69
-            function (PolicyMapping $mapping) {
70
-                return $mapping->toASN1();
71
-            }, $this->_mappings);
72
-        return new Sequence(...$elements);
73
-    }
58
+	/**
59
+	 *
60
+	 * {@inheritdoc}
61
+	 * @return Sequence
62
+	 */
63
+	protected function _valueASN1(): Sequence
64
+	{
65
+		if (!count($this->_mappings)) {
66
+			throw new \LogicException("No mappings.");
67
+		}
68
+		$elements = array_map(
69
+			function (PolicyMapping $mapping) {
70
+				return $mapping->toASN1();
71
+			}, $this->_mappings);
72
+		return new Sequence(...$elements);
73
+	}
74 74
     
75
-    /**
76
-     * Get all mappings.
77
-     *
78
-     * @return PolicyMapping[]
79
-     */
80
-    public function mappings(): array
81
-    {
82
-        return $this->_mappings;
83
-    }
75
+	/**
76
+	 * Get all mappings.
77
+	 *
78
+	 * @return PolicyMapping[]
79
+	 */
80
+	public function mappings(): array
81
+	{
82
+		return $this->_mappings;
83
+	}
84 84
     
85
-    /**
86
-     * Get mappings flattened into a single array of arrays of subject domains
87
-     * keyed by issuer domain.
88
-     *
89
-     * Eg. if policy mappings contains multiple mappings with the same issuer
90
-     * domain policy, their corresponding subject domain policies are placed
91
-     * under the same key.
92
-     *
93
-     * @return (string[])[]
94
-     */
95
-    public function flattenedMappings(): array
96
-    {
97
-        $mappings = array();
98
-        foreach ($this->_mappings as $mapping) {
99
-            $idp = $mapping->issuerDomainPolicy();
100
-            if (!isset($mappings[$idp])) {
101
-                $mappings[$idp] = array();
102
-            }
103
-            array_push($mappings[$idp], $mapping->subjectDomainPolicy());
104
-        }
105
-        return $mappings;
106
-    }
85
+	/**
86
+	 * Get mappings flattened into a single array of arrays of subject domains
87
+	 * keyed by issuer domain.
88
+	 *
89
+	 * Eg. if policy mappings contains multiple mappings with the same issuer
90
+	 * domain policy, their corresponding subject domain policies are placed
91
+	 * under the same key.
92
+	 *
93
+	 * @return (string[])[]
94
+	 */
95
+	public function flattenedMappings(): array
96
+	{
97
+		$mappings = array();
98
+		foreach ($this->_mappings as $mapping) {
99
+			$idp = $mapping->issuerDomainPolicy();
100
+			if (!isset($mappings[$idp])) {
101
+				$mappings[$idp] = array();
102
+			}
103
+			array_push($mappings[$idp], $mapping->subjectDomainPolicy());
104
+		}
105
+		return $mappings;
106
+	}
107 107
     
108
-    /**
109
-     * Get all subject domain policy OIDs that are mapped to given issuer
110
-     * domain policy OID.
111
-     *
112
-     * @param string $oid Issuer domain policy
113
-     * @return string[] List of OIDs in dotted format
114
-     */
115
-    public function issuerMappings(string $oid): array
116
-    {
117
-        $oids = array();
118
-        foreach ($this->_mappings as $mapping) {
119
-            if ($mapping->issuerDomainPolicy() == $oid) {
120
-                $oids[] = $mapping->subjectDomainPolicy();
121
-            }
122
-        }
123
-        return $oids;
124
-    }
108
+	/**
109
+	 * Get all subject domain policy OIDs that are mapped to given issuer
110
+	 * domain policy OID.
111
+	 *
112
+	 * @param string $oid Issuer domain policy
113
+	 * @return string[] List of OIDs in dotted format
114
+	 */
115
+	public function issuerMappings(string $oid): array
116
+	{
117
+		$oids = array();
118
+		foreach ($this->_mappings as $mapping) {
119
+			if ($mapping->issuerDomainPolicy() == $oid) {
120
+				$oids[] = $mapping->subjectDomainPolicy();
121
+			}
122
+		}
123
+		return $oids;
124
+	}
125 125
     
126
-    /**
127
-     * Get all mapped issuer domain policy OIDs.
128
-     *
129
-     * @return string[]
130
-     */
131
-    public function issuerDomainPolicies(): array
132
-    {
133
-        $idps = array_map(
134
-            function (PolicyMapping $mapping) {
135
-                return $mapping->issuerDomainPolicy();
136
-            }, $this->_mappings);
137
-        return array_values(array_unique($idps));
138
-    }
126
+	/**
127
+	 * Get all mapped issuer domain policy OIDs.
128
+	 *
129
+	 * @return string[]
130
+	 */
131
+	public function issuerDomainPolicies(): array
132
+	{
133
+		$idps = array_map(
134
+			function (PolicyMapping $mapping) {
135
+				return $mapping->issuerDomainPolicy();
136
+			}, $this->_mappings);
137
+		return array_values(array_unique($idps));
138
+	}
139 139
     
140
-    /**
141
-     * Check whether policy mappings have anyPolicy mapped.
142
-     *
143
-     * RFC 5280 section 4.2.1.5 states that "Policies MUST NOT be mapped either
144
-     * to or from the special value anyPolicy".
145
-     *
146
-     * @return bool
147
-     */
148
-    public function hasAnyPolicyMapping(): bool
149
-    {
150
-        foreach ($this->_mappings as $mapping) {
151
-            if ($mapping->issuerDomainPolicy() ==
152
-                 PolicyInformation::OID_ANY_POLICY) {
153
-                return true;
154
-            }
155
-            if ($mapping->subjectDomainPolicy() ==
156
-                 PolicyInformation::OID_ANY_POLICY) {
157
-                return true;
158
-            }
159
-        }
160
-        return false;
161
-    }
140
+	/**
141
+	 * Check whether policy mappings have anyPolicy mapped.
142
+	 *
143
+	 * RFC 5280 section 4.2.1.5 states that "Policies MUST NOT be mapped either
144
+	 * to or from the special value anyPolicy".
145
+	 *
146
+	 * @return bool
147
+	 */
148
+	public function hasAnyPolicyMapping(): bool
149
+	{
150
+		foreach ($this->_mappings as $mapping) {
151
+			if ($mapping->issuerDomainPolicy() ==
152
+				 PolicyInformation::OID_ANY_POLICY) {
153
+				return true;
154
+			}
155
+			if ($mapping->subjectDomainPolicy() ==
156
+				 PolicyInformation::OID_ANY_POLICY) {
157
+				return true;
158
+			}
159
+		}
160
+		return false;
161
+	}
162 162
     
163
-    /**
164
-     * Get the number of mappings.
165
-     *
166
-     * @see \Countable::count()
167
-     * @return int
168
-     */
169
-    public function count(): int
170
-    {
171
-        return count($this->_mappings);
172
-    }
163
+	/**
164
+	 * Get the number of mappings.
165
+	 *
166
+	 * @see \Countable::count()
167
+	 * @return int
168
+	 */
169
+	public function count(): int
170
+	{
171
+		return count($this->_mappings);
172
+	}
173 173
     
174
-    /**
175
-     * Get iterator for policy mappings.
176
-     *
177
-     * @see \IteratorAggregate::getIterator()
178
-     * @return \ArrayIterator
179
-     */
180
-    public function getIterator(): \ArrayIterator
181
-    {
182
-        return new \ArrayIterator($this->_mappings);
183
-    }
174
+	/**
175
+	 * Get iterator for policy mappings.
176
+	 *
177
+	 * @see \IteratorAggregate::getIterator()
178
+	 * @return \ArrayIterator
179
+	 */
180
+	public function getIterator(): \ArrayIterator
181
+	{
182
+		return new \ArrayIterator($this->_mappings);
183
+	}
184 184
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -45,7 +45,7 @@  discard block
 block discarded – undo
45 45
     protected static function _fromDER(string $data, bool $critical): self
46 46
     {
47 47
         $mappings = array_map(
48
-            function (UnspecifiedType $el) {
48
+            function(UnspecifiedType $el) {
49 49
                 return PolicyMapping::fromASN1($el->asSequence());
50 50
             }, Sequence::fromDER($data)->elements());
51 51
         if (!count($mappings)) {
@@ -66,7 +66,7 @@  discard block
 block discarded – undo
66 66
             throw new \LogicException("No mappings.");
67 67
         }
68 68
         $elements = array_map(
69
-            function (PolicyMapping $mapping) {
69
+            function(PolicyMapping $mapping) {
70 70
                 return $mapping->toASN1();
71 71
             }, $this->_mappings);
72 72
         return new Sequence(...$elements);
@@ -131,7 +131,7 @@  discard block
 block discarded – undo
131 131
     public function issuerDomainPolicies(): array
132 132
     {
133 133
         $idps = array_map(
134
-            function (PolicyMapping $mapping) {
134
+            function(PolicyMapping $mapping) {
135 135
                 return $mapping->issuerDomainPolicy();
136 136
             }, $this->_mappings);
137 137
         return array_values(array_unique($idps));
Please login to merge, or discard this patch.
lib/X509/Certificate/Extension/SubjectKeyIdentifierExtension.php 1 patch
Indentation   +44 added lines, -44 removed lines patch added patch discarded remove patch
@@ -13,52 +13,52 @@
 block discarded – undo
13 13
  */
14 14
 class SubjectKeyIdentifierExtension extends Extension
15 15
 {
16
-    /**
17
-     * Key identifier.
18
-     *
19
-     * @var string $_keyIdentifier
20
-     */
21
-    protected $_keyIdentifier;
16
+	/**
17
+	 * Key identifier.
18
+	 *
19
+	 * @var string $_keyIdentifier
20
+	 */
21
+	protected $_keyIdentifier;
22 22
     
23
-    /**
24
-     * Constructor.
25
-     *
26
-     * @param bool $critical
27
-     * @param string $keyIdentifier
28
-     */
29
-    public function __construct(bool $critical, string $keyIdentifier)
30
-    {
31
-        parent::__construct(self::OID_SUBJECT_KEY_IDENTIFIER, $critical);
32
-        $this->_keyIdentifier = $keyIdentifier;
33
-    }
23
+	/**
24
+	 * Constructor.
25
+	 *
26
+	 * @param bool $critical
27
+	 * @param string $keyIdentifier
28
+	 */
29
+	public function __construct(bool $critical, string $keyIdentifier)
30
+	{
31
+		parent::__construct(self::OID_SUBJECT_KEY_IDENTIFIER, $critical);
32
+		$this->_keyIdentifier = $keyIdentifier;
33
+	}
34 34
     
35
-    /**
36
-     *
37
-     * {@inheritdoc}
38
-     * @return self
39
-     */
40
-    protected static function _fromDER(string $data, bool $critical): self
41
-    {
42
-        return new self($critical, OctetString::fromDER($data)->string());
43
-    }
35
+	/**
36
+	 *
37
+	 * {@inheritdoc}
38
+	 * @return self
39
+	 */
40
+	protected static function _fromDER(string $data, bool $critical): self
41
+	{
42
+		return new self($critical, OctetString::fromDER($data)->string());
43
+	}
44 44
     
45
-    /**
46
-     * Get key identifier.
47
-     *
48
-     * @return string
49
-     */
50
-    public function keyIdentifier(): string
51
-    {
52
-        return $this->_keyIdentifier;
53
-    }
45
+	/**
46
+	 * Get key identifier.
47
+	 *
48
+	 * @return string
49
+	 */
50
+	public function keyIdentifier(): string
51
+	{
52
+		return $this->_keyIdentifier;
53
+	}
54 54
     
55
-    /**
56
-     *
57
-     * {@inheritdoc}
58
-     * @return OctetString
59
-     */
60
-    protected function _valueASN1(): OctetString
61
-    {
62
-        return new OctetString($this->_keyIdentifier);
63
-    }
55
+	/**
56
+	 *
57
+	 * {@inheritdoc}
58
+	 * @return OctetString
59
+	 */
60
+	protected function _valueASN1(): OctetString
61
+	{
62
+		return new OctetString($this->_keyIdentifier);
63
+	}
64 64
 }
Please login to merge, or discard this patch.
lib/X509/Certificate/Extension/PolicyConstraintsExtension.php 1 patch
Indentation   +113 added lines, -113 removed lines patch added patch discarded remove patch
@@ -16,125 +16,125 @@
 block discarded – undo
16 16
  */
17 17
 class PolicyConstraintsExtension extends Extension
18 18
 {
19
-    /**
20
-     *
21
-     * @var int $_requireExplicitPolicy
22
-     */
23
-    protected $_requireExplicitPolicy;
19
+	/**
20
+	 *
21
+	 * @var int $_requireExplicitPolicy
22
+	 */
23
+	protected $_requireExplicitPolicy;
24 24
     
25
-    /**
26
-     *
27
-     * @var int $_inhibitPolicyMapping
28
-     */
29
-    protected $_inhibitPolicyMapping;
25
+	/**
26
+	 *
27
+	 * @var int $_inhibitPolicyMapping
28
+	 */
29
+	protected $_inhibitPolicyMapping;
30 30
     
31
-    /**
32
-     * Constructor.
33
-     *
34
-     * @param bool $critical
35
-     * @param int|null $require_explicit_policy
36
-     * @param int|null $inhibit_policy_mapping
37
-     */
38
-    public function __construct(bool $critical, $require_explicit_policy = null,
39
-        $inhibit_policy_mapping = null)
40
-    {
41
-        parent::__construct(self::OID_POLICY_CONSTRAINTS, $critical);
42
-        $this->_requireExplicitPolicy = isset($require_explicit_policy) ? intval(
43
-            $require_explicit_policy) : null;
44
-        $this->_inhibitPolicyMapping = isset($inhibit_policy_mapping) ? intval(
45
-            $inhibit_policy_mapping) : null;
46
-    }
31
+	/**
32
+	 * Constructor.
33
+	 *
34
+	 * @param bool $critical
35
+	 * @param int|null $require_explicit_policy
36
+	 * @param int|null $inhibit_policy_mapping
37
+	 */
38
+	public function __construct(bool $critical, $require_explicit_policy = null,
39
+		$inhibit_policy_mapping = null)
40
+	{
41
+		parent::__construct(self::OID_POLICY_CONSTRAINTS, $critical);
42
+		$this->_requireExplicitPolicy = isset($require_explicit_policy) ? intval(
43
+			$require_explicit_policy) : null;
44
+		$this->_inhibitPolicyMapping = isset($inhibit_policy_mapping) ? intval(
45
+			$inhibit_policy_mapping) : null;
46
+	}
47 47
     
48
-    /**
49
-     *
50
-     * {@inheritdoc}
51
-     * @return self
52
-     */
53
-    protected static function _fromDER(string $data, bool $critical): self
54
-    {
55
-        $seq = Sequence::fromDER($data);
56
-        $require_explicit_policy = null;
57
-        $inhibit_policy_mapping = null;
58
-        if ($seq->hasTagged(0)) {
59
-            $require_explicit_policy = $seq->getTagged(0)
60
-                ->asImplicit(Element::TYPE_INTEGER)
61
-                ->asInteger()
62
-                ->intNumber();
63
-        }
64
-        if ($seq->hasTagged(1)) {
65
-            $inhibit_policy_mapping = $seq->getTagged(1)
66
-                ->asImplicit(Element::TYPE_INTEGER)
67
-                ->asInteger()
68
-                ->intNumber();
69
-        }
70
-        return new self($critical, $require_explicit_policy,
71
-            $inhibit_policy_mapping);
72
-    }
48
+	/**
49
+	 *
50
+	 * {@inheritdoc}
51
+	 * @return self
52
+	 */
53
+	protected static function _fromDER(string $data, bool $critical): self
54
+	{
55
+		$seq = Sequence::fromDER($data);
56
+		$require_explicit_policy = null;
57
+		$inhibit_policy_mapping = null;
58
+		if ($seq->hasTagged(0)) {
59
+			$require_explicit_policy = $seq->getTagged(0)
60
+				->asImplicit(Element::TYPE_INTEGER)
61
+				->asInteger()
62
+				->intNumber();
63
+		}
64
+		if ($seq->hasTagged(1)) {
65
+			$inhibit_policy_mapping = $seq->getTagged(1)
66
+				->asImplicit(Element::TYPE_INTEGER)
67
+				->asInteger()
68
+				->intNumber();
69
+		}
70
+		return new self($critical, $require_explicit_policy,
71
+			$inhibit_policy_mapping);
72
+	}
73 73
     
74
-    /**
75
-     * Whether requireExplicitPolicy is present.
76
-     *
77
-     * @return bool
78
-     */
79
-    public function hasRequireExplicitPolicy(): bool
80
-    {
81
-        return isset($this->_requireExplicitPolicy);
82
-    }
74
+	/**
75
+	 * Whether requireExplicitPolicy is present.
76
+	 *
77
+	 * @return bool
78
+	 */
79
+	public function hasRequireExplicitPolicy(): bool
80
+	{
81
+		return isset($this->_requireExplicitPolicy);
82
+	}
83 83
     
84
-    /**
85
-     * Get requireExplicitPolicy.
86
-     *
87
-     * @throws \LogicException
88
-     * @return int
89
-     */
90
-    public function requireExplicitPolicy(): int
91
-    {
92
-        if (!$this->hasRequireExplicitPolicy()) {
93
-            throw new \LogicException("requireExplicitPolicy not set.");
94
-        }
95
-        return $this->_requireExplicitPolicy;
96
-    }
84
+	/**
85
+	 * Get requireExplicitPolicy.
86
+	 *
87
+	 * @throws \LogicException
88
+	 * @return int
89
+	 */
90
+	public function requireExplicitPolicy(): int
91
+	{
92
+		if (!$this->hasRequireExplicitPolicy()) {
93
+			throw new \LogicException("requireExplicitPolicy not set.");
94
+		}
95
+		return $this->_requireExplicitPolicy;
96
+	}
97 97
     
98
-    /**
99
-     * Whether inhibitPolicyMapping is present.
100
-     *
101
-     * @return bool
102
-     */
103
-    public function hasInhibitPolicyMapping(): bool
104
-    {
105
-        return isset($this->_inhibitPolicyMapping);
106
-    }
98
+	/**
99
+	 * Whether inhibitPolicyMapping is present.
100
+	 *
101
+	 * @return bool
102
+	 */
103
+	public function hasInhibitPolicyMapping(): bool
104
+	{
105
+		return isset($this->_inhibitPolicyMapping);
106
+	}
107 107
     
108
-    /**
109
-     * Get inhibitPolicyMapping.
110
-     *
111
-     * @throws \LogicException
112
-     * @return int
113
-     */
114
-    public function inhibitPolicyMapping(): int
115
-    {
116
-        if (!$this->hasInhibitPolicyMapping()) {
117
-            throw new \LogicException("inhibitPolicyMapping not set.");
118
-        }
119
-        return $this->_inhibitPolicyMapping;
120
-    }
108
+	/**
109
+	 * Get inhibitPolicyMapping.
110
+	 *
111
+	 * @throws \LogicException
112
+	 * @return int
113
+	 */
114
+	public function inhibitPolicyMapping(): int
115
+	{
116
+		if (!$this->hasInhibitPolicyMapping()) {
117
+			throw new \LogicException("inhibitPolicyMapping not set.");
118
+		}
119
+		return $this->_inhibitPolicyMapping;
120
+	}
121 121
     
122
-    /**
123
-     *
124
-     * {@inheritdoc}
125
-     * @return Sequence
126
-     */
127
-    protected function _valueASN1(): Sequence
128
-    {
129
-        $elements = array();
130
-        if (isset($this->_requireExplicitPolicy)) {
131
-            $elements[] = new ImplicitlyTaggedType(0,
132
-                new Integer($this->_requireExplicitPolicy));
133
-        }
134
-        if (isset($this->_inhibitPolicyMapping)) {
135
-            $elements[] = new ImplicitlyTaggedType(1,
136
-                new Integer($this->_inhibitPolicyMapping));
137
-        }
138
-        return new Sequence(...$elements);
139
-    }
122
+	/**
123
+	 *
124
+	 * {@inheritdoc}
125
+	 * @return Sequence
126
+	 */
127
+	protected function _valueASN1(): Sequence
128
+	{
129
+		$elements = array();
130
+		if (isset($this->_requireExplicitPolicy)) {
131
+			$elements[] = new ImplicitlyTaggedType(0,
132
+				new Integer($this->_requireExplicitPolicy));
133
+		}
134
+		if (isset($this->_inhibitPolicyMapping)) {
135
+			$elements[] = new ImplicitlyTaggedType(1,
136
+				new Integer($this->_inhibitPolicyMapping));
137
+		}
138
+		return new Sequence(...$elements);
139
+	}
140 140
 }
Please login to merge, or discard this patch.