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 ( da62d3...8abb02 )
by Joni
02:44
created
lib/X509/AttributeCertificate/AttributeCertificate.php 1 patch
Indentation   +199 added lines, -199 removed lines patch added patch discarded remove patch
@@ -20,203 +20,203 @@
 block discarded – undo
20 20
  */
21 21
 class AttributeCertificate
22 22
 {
23
-    /**
24
-     * Attribute certificate info.
25
-     *
26
-     * @var AttributeCertificateInfo $_acinfo
27
-     */
28
-    protected $_acinfo;
29
-    
30
-    /**
31
-     * Signature algorithm identifier.
32
-     *
33
-     * @var SignatureAlgorithmIdentifier $_signatureAlgorithm
34
-     */
35
-    protected $_signatureAlgorithm;
36
-    
37
-    /**
38
-     * Signature value.
39
-     *
40
-     * @var Signature $_signatureValue
41
-     */
42
-    protected $_signatureValue;
43
-    
44
-    /**
45
-     * Constructor.
46
-     *
47
-     * @param AttributeCertificateInfo $acinfo
48
-     * @param SignatureAlgorithmIdentifier $algo
49
-     * @param Signature $signature
50
-     */
51
-    public function __construct(AttributeCertificateInfo $acinfo,
52
-        SignatureAlgorithmIdentifier $algo, Signature $signature)
53
-    {
54
-        $this->_acinfo = $acinfo;
55
-        $this->_signatureAlgorithm = $algo;
56
-        $this->_signatureValue = $signature;
57
-    }
58
-    
59
-    /**
60
-     * Initialize from ASN.1.
61
-     *
62
-     * @param Sequence $seq
63
-     * @return self
64
-     */
65
-    public static function fromASN1(Sequence $seq): self
66
-    {
67
-        $acinfo = AttributeCertificateInfo::fromASN1($seq->at(0)->asSequence());
68
-        $algo = AlgorithmIdentifier::fromASN1($seq->at(1)->asSequence());
69
-        if (!$algo instanceof SignatureAlgorithmIdentifier) {
70
-            throw new \UnexpectedValueException(
71
-                "Unsupported signature algorithm " . $algo->oid() . ".");
72
-        }
73
-        $signature = Signature::fromSignatureData(
74
-            $seq->at(2)
75
-                ->asBitString()
76
-                ->string(), $algo);
77
-        return new self($acinfo, $algo, $signature);
78
-    }
79
-    
80
-    /**
81
-     * Initialize from DER data.
82
-     *
83
-     * @param string $data
84
-     * @return self
85
-     */
86
-    public static function fromDER(string $data): self
87
-    {
88
-        return self::fromASN1(Sequence::fromDER($data));
89
-    }
90
-    
91
-    /**
92
-     * Initialize from PEM.
93
-     *
94
-     * @param PEM $pem
95
-     * @throws \UnexpectedValueException
96
-     * @return self
97
-     */
98
-    public static function fromPEM(PEM $pem): self
99
-    {
100
-        if ($pem->type() !== PEM::TYPE_ATTRIBUTE_CERTIFICATE) {
101
-            throw new \UnexpectedValueException("Invalid PEM type.");
102
-        }
103
-        return self::fromDER($pem->data());
104
-    }
105
-    
106
-    /**
107
-     * Get attribute certificate info.
108
-     *
109
-     * @return AttributeCertificateInfo
110
-     */
111
-    public function acinfo(): AttributeCertificateInfo
112
-    {
113
-        return $this->_acinfo;
114
-    }
115
-    
116
-    /**
117
-     * Get signature algorithm identifier.
118
-     *
119
-     * @return SignatureAlgorithmIdentifier
120
-     */
121
-    public function signatureAlgorithm(): SignatureAlgorithmIdentifier
122
-    {
123
-        return $this->_signatureAlgorithm;
124
-    }
125
-    
126
-    /**
127
-     * Get signature value.
128
-     *
129
-     * @return Signature
130
-     */
131
-    public function signatureValue(): Signature
132
-    {
133
-        return $this->_signatureValue;
134
-    }
135
-    
136
-    /**
137
-     * Get ASN.1 structure.
138
-     *
139
-     * @return Sequence
140
-     */
141
-    public function toASN1(): Sequence
142
-    {
143
-        return new Sequence($this->_acinfo->toASN1(),
144
-            $this->_signatureAlgorithm->toASN1(),
145
-            $this->_signatureValue->bitString());
146
-    }
147
-    
148
-    /**
149
-     * Get attribute certificate as a DER.
150
-     *
151
-     * @return string
152
-     */
153
-    public function toDER(): string
154
-    {
155
-        return $this->toASN1()->toDER();
156
-    }
157
-    
158
-    /**
159
-     * Get attribute certificate as a PEM.
160
-     *
161
-     * @return PEM
162
-     */
163
-    public function toPEM(): PEM
164
-    {
165
-        return new PEM(PEM::TYPE_ATTRIBUTE_CERTIFICATE, $this->toDER());
166
-    }
167
-    
168
-    /**
169
-     * Check whether attribute certificate is issued to the subject identified
170
-     * by given public key certificate.
171
-     *
172
-     * @param Certificate $cert Certificate
173
-     * @return boolean
174
-     */
175
-    public function isHeldBy(Certificate $cert): bool
176
-    {
177
-        if (!$this->_acinfo->holder()->identifiesPKC($cert)) {
178
-            return false;
179
-        }
180
-        return true;
181
-    }
182
-    
183
-    /**
184
-     * Check whether attribute certificate is issued by given public key
185
-     * certificate.
186
-     *
187
-     * @param Certificate $cert Certificate
188
-     * @return boolean
189
-     */
190
-    public function isIssuedBy(Certificate $cert): bool
191
-    {
192
-        if (!$this->_acinfo->issuer()->identifiesPKC($cert)) {
193
-            return false;
194
-        }
195
-        return true;
196
-    }
197
-    
198
-    /**
199
-     * Verify signature.
200
-     *
201
-     * @param PublicKeyInfo $pubkey_info Signer's public key
202
-     * @param Crypto|null $crypto Crypto engine, use default if not set
203
-     * @return bool
204
-     */
205
-    public function verify(PublicKeyInfo $pubkey_info, Crypto $crypto = null): bool
206
-    {
207
-        $crypto = $crypto ?: Crypto::getDefault();
208
-        $data = $this->_acinfo->toASN1()->toDER();
209
-        return $crypto->verify($data, $this->_signatureValue, $pubkey_info,
210
-            $this->_signatureAlgorithm);
211
-    }
212
-    
213
-    /**
214
-     * Get attribute certificate as a PEM formatted string.
215
-     *
216
-     * @return string
217
-     */
218
-    public function __toString()
219
-    {
220
-        return $this->toPEM()->string();
221
-    }
23
+	/**
24
+	 * Attribute certificate info.
25
+	 *
26
+	 * @var AttributeCertificateInfo $_acinfo
27
+	 */
28
+	protected $_acinfo;
29
+    
30
+	/**
31
+	 * Signature algorithm identifier.
32
+	 *
33
+	 * @var SignatureAlgorithmIdentifier $_signatureAlgorithm
34
+	 */
35
+	protected $_signatureAlgorithm;
36
+    
37
+	/**
38
+	 * Signature value.
39
+	 *
40
+	 * @var Signature $_signatureValue
41
+	 */
42
+	protected $_signatureValue;
43
+    
44
+	/**
45
+	 * Constructor.
46
+	 *
47
+	 * @param AttributeCertificateInfo $acinfo
48
+	 * @param SignatureAlgorithmIdentifier $algo
49
+	 * @param Signature $signature
50
+	 */
51
+	public function __construct(AttributeCertificateInfo $acinfo,
52
+		SignatureAlgorithmIdentifier $algo, Signature $signature)
53
+	{
54
+		$this->_acinfo = $acinfo;
55
+		$this->_signatureAlgorithm = $algo;
56
+		$this->_signatureValue = $signature;
57
+	}
58
+    
59
+	/**
60
+	 * Initialize from ASN.1.
61
+	 *
62
+	 * @param Sequence $seq
63
+	 * @return self
64
+	 */
65
+	public static function fromASN1(Sequence $seq): self
66
+	{
67
+		$acinfo = AttributeCertificateInfo::fromASN1($seq->at(0)->asSequence());
68
+		$algo = AlgorithmIdentifier::fromASN1($seq->at(1)->asSequence());
69
+		if (!$algo instanceof SignatureAlgorithmIdentifier) {
70
+			throw new \UnexpectedValueException(
71
+				"Unsupported signature algorithm " . $algo->oid() . ".");
72
+		}
73
+		$signature = Signature::fromSignatureData(
74
+			$seq->at(2)
75
+				->asBitString()
76
+				->string(), $algo);
77
+		return new self($acinfo, $algo, $signature);
78
+	}
79
+    
80
+	/**
81
+	 * Initialize from DER data.
82
+	 *
83
+	 * @param string $data
84
+	 * @return self
85
+	 */
86
+	public static function fromDER(string $data): self
87
+	{
88
+		return self::fromASN1(Sequence::fromDER($data));
89
+	}
90
+    
91
+	/**
92
+	 * Initialize from PEM.
93
+	 *
94
+	 * @param PEM $pem
95
+	 * @throws \UnexpectedValueException
96
+	 * @return self
97
+	 */
98
+	public static function fromPEM(PEM $pem): self
99
+	{
100
+		if ($pem->type() !== PEM::TYPE_ATTRIBUTE_CERTIFICATE) {
101
+			throw new \UnexpectedValueException("Invalid PEM type.");
102
+		}
103
+		return self::fromDER($pem->data());
104
+	}
105
+    
106
+	/**
107
+	 * Get attribute certificate info.
108
+	 *
109
+	 * @return AttributeCertificateInfo
110
+	 */
111
+	public function acinfo(): AttributeCertificateInfo
112
+	{
113
+		return $this->_acinfo;
114
+	}
115
+    
116
+	/**
117
+	 * Get signature algorithm identifier.
118
+	 *
119
+	 * @return SignatureAlgorithmIdentifier
120
+	 */
121
+	public function signatureAlgorithm(): SignatureAlgorithmIdentifier
122
+	{
123
+		return $this->_signatureAlgorithm;
124
+	}
125
+    
126
+	/**
127
+	 * Get signature value.
128
+	 *
129
+	 * @return Signature
130
+	 */
131
+	public function signatureValue(): Signature
132
+	{
133
+		return $this->_signatureValue;
134
+	}
135
+    
136
+	/**
137
+	 * Get ASN.1 structure.
138
+	 *
139
+	 * @return Sequence
140
+	 */
141
+	public function toASN1(): Sequence
142
+	{
143
+		return new Sequence($this->_acinfo->toASN1(),
144
+			$this->_signatureAlgorithm->toASN1(),
145
+			$this->_signatureValue->bitString());
146
+	}
147
+    
148
+	/**
149
+	 * Get attribute certificate as a DER.
150
+	 *
151
+	 * @return string
152
+	 */
153
+	public function toDER(): string
154
+	{
155
+		return $this->toASN1()->toDER();
156
+	}
157
+    
158
+	/**
159
+	 * Get attribute certificate as a PEM.
160
+	 *
161
+	 * @return PEM
162
+	 */
163
+	public function toPEM(): PEM
164
+	{
165
+		return new PEM(PEM::TYPE_ATTRIBUTE_CERTIFICATE, $this->toDER());
166
+	}
167
+    
168
+	/**
169
+	 * Check whether attribute certificate is issued to the subject identified
170
+	 * by given public key certificate.
171
+	 *
172
+	 * @param Certificate $cert Certificate
173
+	 * @return boolean
174
+	 */
175
+	public function isHeldBy(Certificate $cert): bool
176
+	{
177
+		if (!$this->_acinfo->holder()->identifiesPKC($cert)) {
178
+			return false;
179
+		}
180
+		return true;
181
+	}
182
+    
183
+	/**
184
+	 * Check whether attribute certificate is issued by given public key
185
+	 * certificate.
186
+	 *
187
+	 * @param Certificate $cert Certificate
188
+	 * @return boolean
189
+	 */
190
+	public function isIssuedBy(Certificate $cert): bool
191
+	{
192
+		if (!$this->_acinfo->issuer()->identifiesPKC($cert)) {
193
+			return false;
194
+		}
195
+		return true;
196
+	}
197
+    
198
+	/**
199
+	 * Verify signature.
200
+	 *
201
+	 * @param PublicKeyInfo $pubkey_info Signer's public key
202
+	 * @param Crypto|null $crypto Crypto engine, use default if not set
203
+	 * @return bool
204
+	 */
205
+	public function verify(PublicKeyInfo $pubkey_info, Crypto $crypto = null): bool
206
+	{
207
+		$crypto = $crypto ?: Crypto::getDefault();
208
+		$data = $this->_acinfo->toASN1()->toDER();
209
+		return $crypto->verify($data, $this->_signatureValue, $pubkey_info,
210
+			$this->_signatureAlgorithm);
211
+	}
212
+    
213
+	/**
214
+	 * Get attribute certificate as a PEM formatted string.
215
+	 *
216
+	 * @return string
217
+	 */
218
+	public function __toString()
219
+	{
220
+		return $this->toPEM()->string();
221
+	}
222 222
 }
Please login to merge, or discard this patch.
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): UniqueIdentifier
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): UniqueIdentifier
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): UniqueIdentifier
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): UniqueIdentifier
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/CertificationRequest/Attributes.php 2 patches
Indentation   +96 added lines, -96 removed lines patch added patch discarded remove patch
@@ -20,107 +20,107 @@
 block discarded – undo
20 20
  */
21 21
 class Attributes implements \Countable, \IteratorAggregate
22 22
 {
23
-    use AttributeContainer;
23
+	use AttributeContainer;
24 24
     
25
-    /**
26
-     * Mapping from OID to attribute value class name.
27
-     *
28
-     * @internal
29
-     *
30
-     * @var array
31
-     */
32
-    const MAP_OID_TO_CLASS = array(
33
-        /* @formatter:off */
34
-        ExtensionRequestValue::OID => ExtensionRequestValue::class
35
-        /* @formatter:on */
36
-    );
25
+	/**
26
+	 * Mapping from OID to attribute value class name.
27
+	 *
28
+	 * @internal
29
+	 *
30
+	 * @var array
31
+	 */
32
+	const MAP_OID_TO_CLASS = array(
33
+		/* @formatter:off */
34
+		ExtensionRequestValue::OID => ExtensionRequestValue::class
35
+		/* @formatter:on */
36
+	);
37 37
     
38
-    /**
39
-     * Constructor.
40
-     *
41
-     * @param Attribute ...$attribs Attribute objects
42
-     */
43
-    public function __construct(Attribute ...$attribs)
44
-    {
45
-        $this->_attributes = $attribs;
46
-    }
38
+	/**
39
+	 * Constructor.
40
+	 *
41
+	 * @param Attribute ...$attribs Attribute objects
42
+	 */
43
+	public function __construct(Attribute ...$attribs)
44
+	{
45
+		$this->_attributes = $attribs;
46
+	}
47 47
     
48
-    /**
49
-     * Initialize from attribute values.
50
-     *
51
-     * @param AttributeValue ...$values
52
-     * @return self
53
-     */
54
-    public static function fromAttributeValues(AttributeValue ...$values): Attributes
55
-    {
56
-        $attribs = array_map(
57
-            function (AttributeValue $value) {
58
-                return $value->toAttribute();
59
-            }, $values);
60
-        return new self(...$attribs);
61
-    }
48
+	/**
49
+	 * Initialize from attribute values.
50
+	 *
51
+	 * @param AttributeValue ...$values
52
+	 * @return self
53
+	 */
54
+	public static function fromAttributeValues(AttributeValue ...$values): Attributes
55
+	{
56
+		$attribs = array_map(
57
+			function (AttributeValue $value) {
58
+				return $value->toAttribute();
59
+			}, $values);
60
+		return new self(...$attribs);
61
+	}
62 62
     
63
-    /**
64
-     * Initialize from ASN.1.
65
-     *
66
-     * @param Set $set
67
-     * @return self
68
-     */
69
-    public static function fromASN1(Set $set): Attributes
70
-    {
71
-        $attribs = array_map(
72
-            function (UnspecifiedType $el) {
73
-                return Attribute::fromASN1($el->asSequence());
74
-            }, $set->elements());
75
-        // cast attributes
76
-        $attribs = array_map(
77
-            function (Attribute $attr) {
78
-                $oid = $attr->oid();
79
-                if (array_key_exists($oid, self::MAP_OID_TO_CLASS)) {
80
-                    $cls = self::MAP_OID_TO_CLASS[$oid];
81
-                    return $attr->castValues($cls);
82
-                }
83
-                return $attr;
84
-            }, $attribs);
85
-        return new self(...$attribs);
86
-    }
63
+	/**
64
+	 * Initialize from ASN.1.
65
+	 *
66
+	 * @param Set $set
67
+	 * @return self
68
+	 */
69
+	public static function fromASN1(Set $set): Attributes
70
+	{
71
+		$attribs = array_map(
72
+			function (UnspecifiedType $el) {
73
+				return Attribute::fromASN1($el->asSequence());
74
+			}, $set->elements());
75
+		// cast attributes
76
+		$attribs = array_map(
77
+			function (Attribute $attr) {
78
+				$oid = $attr->oid();
79
+				if (array_key_exists($oid, self::MAP_OID_TO_CLASS)) {
80
+					$cls = self::MAP_OID_TO_CLASS[$oid];
81
+					return $attr->castValues($cls);
82
+				}
83
+				return $attr;
84
+			}, $attribs);
85
+		return new self(...$attribs);
86
+	}
87 87
     
88
-    /**
89
-     * Check whether extension request attribute is present.
90
-     *
91
-     * @return bool
92
-     */
93
-    public function hasExtensionRequest(): bool
94
-    {
95
-        return $this->has(ExtensionRequestValue::OID);
96
-    }
88
+	/**
89
+	 * Check whether extension request attribute is present.
90
+	 *
91
+	 * @return bool
92
+	 */
93
+	public function hasExtensionRequest(): bool
94
+	{
95
+		return $this->has(ExtensionRequestValue::OID);
96
+	}
97 97
     
98
-    /**
99
-     * Get extension request attribute value.
100
-     *
101
-     * @throws \LogicException
102
-     * @return ExtensionRequestValue
103
-     */
104
-    public function extensionRequest(): ExtensionRequestValue
105
-    {
106
-        if (!$this->hasExtensionRequest()) {
107
-            throw new \LogicException("No extension request attribute.");
108
-        }
109
-        return $this->firstOf(ExtensionRequestValue::OID)->first();
110
-    }
98
+	/**
99
+	 * Get extension request attribute value.
100
+	 *
101
+	 * @throws \LogicException
102
+	 * @return ExtensionRequestValue
103
+	 */
104
+	public function extensionRequest(): ExtensionRequestValue
105
+	{
106
+		if (!$this->hasExtensionRequest()) {
107
+			throw new \LogicException("No extension request attribute.");
108
+		}
109
+		return $this->firstOf(ExtensionRequestValue::OID)->first();
110
+	}
111 111
     
112
-    /**
113
-     * Generate ASN.1 structure.
114
-     *
115
-     * @return Set
116
-     */
117
-    public function toASN1(): Set
118
-    {
119
-        $elements = array_map(
120
-            function (Attribute $attr) {
121
-                return $attr->toASN1();
122
-            }, array_values($this->_attributes));
123
-        $set = new Set(...$elements);
124
-        return $set->sortedSetOf();
125
-    }
112
+	/**
113
+	 * Generate ASN.1 structure.
114
+	 *
115
+	 * @return Set
116
+	 */
117
+	public function toASN1(): Set
118
+	{
119
+		$elements = array_map(
120
+			function (Attribute $attr) {
121
+				return $attr->toASN1();
122
+			}, array_values($this->_attributes));
123
+		$set = new Set(...$elements);
124
+		return $set->sortedSetOf();
125
+	}
126 126
 }
Please login to merge, or discard this patch.
Spacing   +4 added lines, -4 removed lines patch added patch discarded remove patch
@@ -54,7 +54,7 @@  discard block
 block discarded – undo
54 54
     public static function fromAttributeValues(AttributeValue ...$values): Attributes
55 55
     {
56 56
         $attribs = array_map(
57
-            function (AttributeValue $value) {
57
+            function(AttributeValue $value) {
58 58
                 return $value->toAttribute();
59 59
             }, $values);
60 60
         return new self(...$attribs);
@@ -69,12 +69,12 @@  discard block
 block discarded – undo
69 69
     public static function fromASN1(Set $set): Attributes
70 70
     {
71 71
         $attribs = array_map(
72
-            function (UnspecifiedType $el) {
72
+            function(UnspecifiedType $el) {
73 73
                 return Attribute::fromASN1($el->asSequence());
74 74
             }, $set->elements());
75 75
         // cast attributes
76 76
         $attribs = array_map(
77
-            function (Attribute $attr) {
77
+            function(Attribute $attr) {
78 78
                 $oid = $attr->oid();
79 79
                 if (array_key_exists($oid, self::MAP_OID_TO_CLASS)) {
80 80
                     $cls = self::MAP_OID_TO_CLASS[$oid];
@@ -117,7 +117,7 @@  discard block
 block discarded – undo
117 117
     public function toASN1(): Set
118 118
     {
119 119
         $elements = array_map(
120
-            function (Attribute $attr) {
120
+            function(Attribute $attr) {
121 121
                 return $attr->toASN1();
122 122
             }, array_values($this->_attributes));
123 123
         $set = new Set(...$elements);
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 Ext\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): Extensions
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 Ext\Extension ...$exts One or more extensions to add
75
-     * @return self
76
-     */
77
-    public function withExtensions(Ext\Extension ...$exts): Extensions
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 Ext\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): Extensions
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 Ext\Extension ...$exts One or more extensions to add
75
+	 * @return self
76
+	 */
77
+	public function withExtensions(Ext\Extension ...$exts): Extensions
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): Extensions
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/AttributeCertificate/ObjectDigestInfo.php 1 patch
Indentation   +81 added lines, -81 removed lines patch added patch discarded remove patch
@@ -20,92 +20,92 @@
 block discarded – undo
20 20
  */
21 21
 class ObjectDigestInfo
22 22
 {
23
-    const TYPE_PUBLIC_KEY = 0;
24
-    const TYPE_PUBLIC_KEY_CERT = 1;
25
-    const TYPE_OTHER_OBJECT_TYPES = 2;
23
+	const TYPE_PUBLIC_KEY = 0;
24
+	const TYPE_PUBLIC_KEY_CERT = 1;
25
+	const TYPE_OTHER_OBJECT_TYPES = 2;
26 26
     
27
-    /**
28
-     * Object type.
29
-     *
30
-     * @var int $_digestedObjectType
31
-     */
32
-    protected $_digestedObjectType;
27
+	/**
28
+	 * Object type.
29
+	 *
30
+	 * @var int $_digestedObjectType
31
+	 */
32
+	protected $_digestedObjectType;
33 33
     
34
-    /**
35
-     * OID of other object type.
36
-     *
37
-     * @var string|null $_otherObjectTypeID
38
-     */
39
-    protected $_otherObjectTypeID;
34
+	/**
35
+	 * OID of other object type.
36
+	 *
37
+	 * @var string|null $_otherObjectTypeID
38
+	 */
39
+	protected $_otherObjectTypeID;
40 40
     
41
-    /**
42
-     * Digest algorithm.
43
-     *
44
-     * @var AlgorithmIdentifierType $_digestAlgorithm
45
-     */
46
-    protected $_digestAlgorithm;
41
+	/**
42
+	 * Digest algorithm.
43
+	 *
44
+	 * @var AlgorithmIdentifierType $_digestAlgorithm
45
+	 */
46
+	protected $_digestAlgorithm;
47 47
     
48
-    /**
49
-     * Object digest.
50
-     *
51
-     * @var BitString $_objectDigest
52
-     */
53
-    protected $_objectDigest;
48
+	/**
49
+	 * Object digest.
50
+	 *
51
+	 * @var BitString $_objectDigest
52
+	 */
53
+	protected $_objectDigest;
54 54
     
55
-    /**
56
-     * Constructor.
57
-     *
58
-     * @param int $type
59
-     * @param AlgorithmIdentifierType $algo
60
-     * @param BitString $digest
61
-     */
62
-    public function __construct(int $type, AlgorithmIdentifierType $algo,
63
-        BitString $digest)
64
-    {
65
-        $this->_digestedObjectType = $type;
66
-        $this->_otherObjectTypeID = null;
67
-        $this->_digestAlgorithm = $algo;
68
-        $this->_objectDigest = $digest;
69
-    }
55
+	/**
56
+	 * Constructor.
57
+	 *
58
+	 * @param int $type
59
+	 * @param AlgorithmIdentifierType $algo
60
+	 * @param BitString $digest
61
+	 */
62
+	public function __construct(int $type, AlgorithmIdentifierType $algo,
63
+		BitString $digest)
64
+	{
65
+		$this->_digestedObjectType = $type;
66
+		$this->_otherObjectTypeID = null;
67
+		$this->_digestAlgorithm = $algo;
68
+		$this->_objectDigest = $digest;
69
+	}
70 70
     
71
-    /**
72
-     * Initialize from ASN.1.
73
-     *
74
-     * @param Sequence $seq
75
-     * @return self
76
-     */
77
-    public static function fromASN1(Sequence $seq): ObjectDigestInfo
78
-    {
79
-        $type = $seq->at(0)
80
-            ->asEnumerated()
81
-            ->intNumber();
82
-        $oid = null;
83
-        $idx = 1;
84
-        if ($seq->has($idx, Element::TYPE_OBJECT_IDENTIFIER)) {
85
-            $oid = $seq->at($idx++)
86
-                ->asObjectIdentifier()
87
-                ->oid();
88
-        }
89
-        $algo = AlgorithmIdentifier::fromASN1($seq->at($idx++)->asSequence());
90
-        $digest = $seq->at($idx)->asBitString();
91
-        $obj = new self($type, $algo, $digest);
92
-        $obj->_otherObjectTypeID = $oid;
93
-        return $obj;
94
-    }
71
+	/**
72
+	 * Initialize from ASN.1.
73
+	 *
74
+	 * @param Sequence $seq
75
+	 * @return self
76
+	 */
77
+	public static function fromASN1(Sequence $seq): ObjectDigestInfo
78
+	{
79
+		$type = $seq->at(0)
80
+			->asEnumerated()
81
+			->intNumber();
82
+		$oid = null;
83
+		$idx = 1;
84
+		if ($seq->has($idx, Element::TYPE_OBJECT_IDENTIFIER)) {
85
+			$oid = $seq->at($idx++)
86
+				->asObjectIdentifier()
87
+				->oid();
88
+		}
89
+		$algo = AlgorithmIdentifier::fromASN1($seq->at($idx++)->asSequence());
90
+		$digest = $seq->at($idx)->asBitString();
91
+		$obj = new self($type, $algo, $digest);
92
+		$obj->_otherObjectTypeID = $oid;
93
+		return $obj;
94
+	}
95 95
     
96
-    /**
97
-     * Generate ASN.1 structure.
98
-     *
99
-     * @return Sequence
100
-     */
101
-    public function toASN1(): Sequence
102
-    {
103
-        $elements = array(new Enumerated($this->_digestedObjectType));
104
-        if (isset($this->_otherObjectTypeID)) {
105
-            $elements[] = new ObjectIdentifier($this->_otherObjectTypeID);
106
-        }
107
-        $elements[] = $this->_digestAlgorithm->toASN1();
108
-        $elements[] = $this->_objectDigest;
109
-        return new Sequence(...$elements);
110
-    }
96
+	/**
97
+	 * Generate ASN.1 structure.
98
+	 *
99
+	 * @return Sequence
100
+	 */
101
+	public function toASN1(): Sequence
102
+	{
103
+		$elements = array(new Enumerated($this->_digestedObjectType));
104
+		if (isset($this->_otherObjectTypeID)) {
105
+			$elements[] = new ObjectIdentifier($this->_otherObjectTypeID);
106
+		}
107
+		$elements[] = $this->_digestAlgorithm->toASN1();
108
+		$elements[] = $this->_objectDigest;
109
+		return new Sequence(...$elements);
110
+	}
111 111
 }
Please login to merge, or discard this patch.
lib/X509/AttributeCertificate/IssuerSerial.php 1 patch
Indentation   +156 added lines, -156 removed lines patch added patch discarded remove patch
@@ -19,172 +19,172 @@
 block discarded – undo
19 19
  */
20 20
 class IssuerSerial
21 21
 {
22
-    /**
23
-     * Issuer name.
24
-     *
25
-     * @var GeneralNames $_issuer
26
-     */
27
-    protected $_issuer;
22
+	/**
23
+	 * Issuer name.
24
+	 *
25
+	 * @var GeneralNames $_issuer
26
+	 */
27
+	protected $_issuer;
28 28
     
29
-    /**
30
-     * Serial number.
31
-     *
32
-     * @var string $_serial
33
-     */
34
-    protected $_serial;
29
+	/**
30
+	 * Serial number.
31
+	 *
32
+	 * @var string $_serial
33
+	 */
34
+	protected $_serial;
35 35
     
36
-    /**
37
-     * Issuer unique ID.
38
-     *
39
-     * @var UniqueIdentifier|null $_issuerUID
40
-     */
41
-    protected $_issuerUID;
36
+	/**
37
+	 * Issuer unique ID.
38
+	 *
39
+	 * @var UniqueIdentifier|null $_issuerUID
40
+	 */
41
+	protected $_issuerUID;
42 42
     
43
-    /**
44
-     * Constructor.
45
-     *
46
-     * @param GeneralNames $issuer
47
-     * @param string|int $serial
48
-     * @param UniqueIdentifier|null $uid
49
-     */
50
-    public function __construct(GeneralNames $issuer, $serial,
51
-        UniqueIdentifier $uid = null)
52
-    {
53
-        $this->_issuer = $issuer;
54
-        $this->_serial = strval($serial);
55
-        $this->_issuerUID = $uid;
56
-    }
43
+	/**
44
+	 * Constructor.
45
+	 *
46
+	 * @param GeneralNames $issuer
47
+	 * @param string|int $serial
48
+	 * @param UniqueIdentifier|null $uid
49
+	 */
50
+	public function __construct(GeneralNames $issuer, $serial,
51
+		UniqueIdentifier $uid = null)
52
+	{
53
+		$this->_issuer = $issuer;
54
+		$this->_serial = strval($serial);
55
+		$this->_issuerUID = $uid;
56
+	}
57 57
     
58
-    /**
59
-     * Initialize from ASN.1.
60
-     *
61
-     * @param Sequence $seq
62
-     * @return self
63
-     */
64
-    public static function fromASN1(Sequence $seq): IssuerSerial
65
-    {
66
-        $issuer = GeneralNames::fromASN1($seq->at(0)->asSequence());
67
-        $serial = $seq->at(1)
68
-            ->asInteger()
69
-            ->number();
70
-        $uid = null;
71
-        if ($seq->has(2, Element::TYPE_BIT_STRING)) {
72
-            $uid = UniqueIdentifier::fromASN1($seq->at(2)->asBitString());
73
-        }
74
-        return new self($issuer, $serial, $uid);
75
-    }
58
+	/**
59
+	 * Initialize from ASN.1.
60
+	 *
61
+	 * @param Sequence $seq
62
+	 * @return self
63
+	 */
64
+	public static function fromASN1(Sequence $seq): IssuerSerial
65
+	{
66
+		$issuer = GeneralNames::fromASN1($seq->at(0)->asSequence());
67
+		$serial = $seq->at(1)
68
+			->asInteger()
69
+			->number();
70
+		$uid = null;
71
+		if ($seq->has(2, Element::TYPE_BIT_STRING)) {
72
+			$uid = UniqueIdentifier::fromASN1($seq->at(2)->asBitString());
73
+		}
74
+		return new self($issuer, $serial, $uid);
75
+	}
76 76
     
77
-    /**
78
-     * Initialize from a public key certificate.
79
-     *
80
-     * @param Certificate $cert
81
-     * @return self
82
-     */
83
-    public static function fromPKC(Certificate $cert): IssuerSerial
84
-    {
85
-        $tbsCert = $cert->tbsCertificate();
86
-        $issuer = new GeneralNames(new DirectoryName($tbsCert->issuer()));
87
-        $serial = $tbsCert->serialNumber();
88
-        $uid = $tbsCert->hasIssuerUniqueID() ? $tbsCert->issuerUniqueID() : null;
89
-        return new self($issuer, $serial, $uid);
90
-    }
77
+	/**
78
+	 * Initialize from a public key certificate.
79
+	 *
80
+	 * @param Certificate $cert
81
+	 * @return self
82
+	 */
83
+	public static function fromPKC(Certificate $cert): IssuerSerial
84
+	{
85
+		$tbsCert = $cert->tbsCertificate();
86
+		$issuer = new GeneralNames(new DirectoryName($tbsCert->issuer()));
87
+		$serial = $tbsCert->serialNumber();
88
+		$uid = $tbsCert->hasIssuerUniqueID() ? $tbsCert->issuerUniqueID() : null;
89
+		return new self($issuer, $serial, $uid);
90
+	}
91 91
     
92
-    /**
93
-     * Get issuer name.
94
-     *
95
-     * @return GeneralNames
96
-     */
97
-    public function issuer(): GeneralNames
98
-    {
99
-        return $this->_issuer;
100
-    }
92
+	/**
93
+	 * Get issuer name.
94
+	 *
95
+	 * @return GeneralNames
96
+	 */
97
+	public function issuer(): GeneralNames
98
+	{
99
+		return $this->_issuer;
100
+	}
101 101
     
102
-    /**
103
-     * Get serial number.
104
-     *
105
-     * @return string
106
-     */
107
-    public function serial(): string
108
-    {
109
-        return $this->_serial;
110
-    }
102
+	/**
103
+	 * Get serial number.
104
+	 *
105
+	 * @return string
106
+	 */
107
+	public function serial(): string
108
+	{
109
+		return $this->_serial;
110
+	}
111 111
     
112
-    /**
113
-     * Check whether issuer unique identifier is present.
114
-     *
115
-     * @return bool
116
-     */
117
-    public function hasIssuerUID(): bool
118
-    {
119
-        return isset($this->_issuerUID);
120
-    }
112
+	/**
113
+	 * Check whether issuer unique identifier is present.
114
+	 *
115
+	 * @return bool
116
+	 */
117
+	public function hasIssuerUID(): bool
118
+	{
119
+		return isset($this->_issuerUID);
120
+	}
121 121
     
122
-    /**
123
-     * Get issuer unique identifier.
124
-     *
125
-     * @throws \LogicException
126
-     * @return UniqueIdentifier
127
-     */
128
-    public function issuerUID(): UniqueIdentifier
129
-    {
130
-        if (!$this->hasIssuerUID()) {
131
-            throw new \LogicException("issuerUID not set.");
132
-        }
133
-        return $this->_issuerUID;
134
-    }
122
+	/**
123
+	 * Get issuer unique identifier.
124
+	 *
125
+	 * @throws \LogicException
126
+	 * @return UniqueIdentifier
127
+	 */
128
+	public function issuerUID(): UniqueIdentifier
129
+	{
130
+		if (!$this->hasIssuerUID()) {
131
+			throw new \LogicException("issuerUID not set.");
132
+		}
133
+		return $this->_issuerUID;
134
+	}
135 135
     
136
-    /**
137
-     * Generate ASN.1 structure.
138
-     *
139
-     * @return Sequence
140
-     */
141
-    public function toASN1(): Sequence
142
-    {
143
-        $elements = array($this->_issuer->toASN1(), new Integer($this->_serial));
144
-        if (isset($this->_issuerUID)) {
145
-            $elements[] = $this->_issuerUID->toASN1();
146
-        }
147
-        return new Sequence(...$elements);
148
-    }
136
+	/**
137
+	 * Generate ASN.1 structure.
138
+	 *
139
+	 * @return Sequence
140
+	 */
141
+	public function toASN1(): Sequence
142
+	{
143
+		$elements = array($this->_issuer->toASN1(), new Integer($this->_serial));
144
+		if (isset($this->_issuerUID)) {
145
+			$elements[] = $this->_issuerUID->toASN1();
146
+		}
147
+		return new Sequence(...$elements);
148
+	}
149 149
     
150
-    /**
151
-     * Check whether this IssuerSerial identifies given certificate.
152
-     *
153
-     * @param Certificate $cert
154
-     * @return boolean
155
-     */
156
-    public function identifiesPKC(Certificate $cert): bool
157
-    {
158
-        $tbs = $cert->tbsCertificate();
159
-        if (!$tbs->issuer()->equals($this->_issuer->firstDN())) {
160
-            return false;
161
-        }
162
-        if (strval($tbs->serialNumber()) != strval($this->_serial)) {
163
-            return false;
164
-        }
165
-        if ($this->_issuerUID && !$this->_checkUniqueID($cert)) {
166
-            return false;
167
-        }
168
-        return true;
169
-    }
150
+	/**
151
+	 * Check whether this IssuerSerial identifies given certificate.
152
+	 *
153
+	 * @param Certificate $cert
154
+	 * @return boolean
155
+	 */
156
+	public function identifiesPKC(Certificate $cert): bool
157
+	{
158
+		$tbs = $cert->tbsCertificate();
159
+		if (!$tbs->issuer()->equals($this->_issuer->firstDN())) {
160
+			return false;
161
+		}
162
+		if (strval($tbs->serialNumber()) != strval($this->_serial)) {
163
+			return false;
164
+		}
165
+		if ($this->_issuerUID && !$this->_checkUniqueID($cert)) {
166
+			return false;
167
+		}
168
+		return true;
169
+	}
170 170
     
171
-    /**
172
-     * Check whether issuerUID matches given certificate.
173
-     *
174
-     * @param Certificate $cert
175
-     * @return boolean
176
-     */
177
-    private function _checkUniqueID(Certificate $cert): bool
178
-    {
179
-        if (!$cert->tbsCertificate()->hasIssuerUniqueID()) {
180
-            return false;
181
-        }
182
-        $uid = $cert->tbsCertificate()
183
-            ->issuerUniqueID()
184
-            ->string();
185
-        if ($this->_issuerUID->string() != $uid) {
186
-            return false;
187
-        }
188
-        return true;
189
-    }
171
+	/**
172
+	 * Check whether issuerUID matches given certificate.
173
+	 *
174
+	 * @param Certificate $cert
175
+	 * @return boolean
176
+	 */
177
+	private function _checkUniqueID(Certificate $cert): bool
178
+	{
179
+		if (!$cert->tbsCertificate()->hasIssuerUniqueID()) {
180
+			return false;
181
+		}
182
+		$uid = $cert->tbsCertificate()
183
+			->issuerUniqueID()
184
+			->string();
185
+		if ($this->_issuerUID->string() != $uid) {
186
+			return false;
187
+		}
188
+		return true;
189
+	}
190 190
 }
Please login to merge, or discard this patch.