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 ( eef5cb...fe4976 )
by Joni
06:29
created

PolicyInformation::hasUserNoticeQualifier()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 3
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 2
CRAP Score 1

Importance

Changes 0
Metric Value
c 0
b 0
f 0
dl 0
loc 3
ccs 2
cts 2
cp 1
rs 10
nc 1
cc 1
eloc 2
nop 0
crap 1
1
<?php
2
3
namespace X509\Certificate\Extension\CertificatePolicy;
4
5
use ASN1\Type\Constructed\Sequence;
6
use ASN1\Type\Primitive\ObjectIdentifier;
7
use ASN1\Type\UnspecifiedType;
8
9
10
/**
11
 * Implements <i>PolicyInformation</i> ASN.1 type used by
12
 * 'Certificate Policies' certificate extension.
13
 *
14
 * @link https://tools.ietf.org/html/rfc5280#section-4.2.1.4
15
 */
16
class PolicyInformation implements \Countable, \IteratorAggregate
17
{
18
	/**
19
	 * Wildcard policy.
20
	 *
21
	 * @var string
22
	 */
23
	const OID_ANY_POLICY = "2.5.29.32.0";
24
	
25
	/**
26
	 * Policy identifier.
27
	 *
28
	 * @var string $_oid
29
	 */
30
	protected $_oid;
31
	
32
	/**
33
	 * Policy qualifiers.
34
	 *
35
	 * @var PolicyQualifierInfo[] $_qualifiers
36
	 */
37
	protected $_qualifiers;
38
	
39
	/**
40
	 * Constructor
41
	 *
42
	 * @param string $oid
43
	 * @param PolicyQualifierInfo ...$qualifiers
44
	 */
45 24
	public function __construct($oid, PolicyQualifierInfo ...$qualifiers) {
46 24
		$this->_oid = $oid;
47 24
		$this->_qualifiers = array();
48 24
		foreach ($qualifiers as $qual) {
49 16
			$this->_qualifiers[$qual->oid()] = $qual;
50 24
		}
51 24
	}
52
	
53
	/**
54
	 * Initialize from ASN.1.
55
	 *
56
	 * @param Sequence $seq
57
	 * @return self
58
	 */
59 11
	public static function fromASN1(Sequence $seq) {
60 11
		$oid = $seq->at(0)
61 11
			->asObjectIdentifier()
62 11
			->oid();
63 11
		$qualifiers = array();
64 11
		if (count($seq) > 1) {
65 11
			$qualifiers = array_map(
66
				function (UnspecifiedType $el) {
67 11
					return PolicyQualifierInfo::fromASN1($el->asSequence());
68 11
				}, $seq->at(1)
69 11
					->asSequence()
70 11
					->elements());
71 11
		}
72 11
		return new self($oid, ...$qualifiers);
73 1
	}
74
	
75
	/**
76
	 * Get policy identifier.
77
	 *
78
	 * @return string
79
	 */
80 26
	public function oid() {
81 26
		return $this->_oid;
82
	}
83
	
84
	/**
85
	 * Check whether this policy is anyPolicy.
86
	 *
87
	 * @return bool
88
	 */
89 15
	public function isAnyPolicy() {
90 15
		return self::OID_ANY_POLICY == $this->_oid;
91
	}
92
	
93
	/**
94
	 * Get policy qualifiers.
95
	 *
96
	 * @return PolicyQualifierInfo[]
97
	 */
98 14
	public function qualifiers() {
99 14
		return array_values($this->_qualifiers);
100
	}
101
	
102
	/**
103
	 * Check whether qualifier is present.
104
	 *
105
	 * @param string $oid
106
	 * @return boolean
107
	 */
108 13
	public function has($oid) {
109 13
		return isset($this->_qualifiers[$oid]);
110
	}
111
	
112
	/**
113
	 * Get qualifier by OID.
114
	 *
115
	 * @param string $oid
116
	 * @throws \OutOfBoundsException
117
	 * @return PolicyQualifierInfo
118
	 */
119 9
	public function get($oid) {
120 9
		if (!$this->has($oid)) {
121 1
			throw new \LogicException("No $oid qualifier.");
122
		}
123 8
		return $this->_qualifiers[$oid];
124
	}
125
	
126
	/**
127
	 * Check whether CPS qualifier is present.
128
	 *
129
	 * @return bool
130
	 */
131 3
	public function hasCPSQualifier() {
132 3
		return $this->has(PolicyQualifierInfo::OID_CPS);
133
	}
134
	
135
	/**
136
	 * Get CPS qualifier.
137
	 *
138
	 * @throws \LogicException
139
	 * @return CPSQualifier
140
	 */
141 3
	public function CPSQualifier() {
142 3
		if (!$this->hasCPSQualifier()) {
143 1
			throw new \LogicException("CPS qualifier not set.");
144
		}
145 2
		return $this->get(PolicyQualifierInfo::OID_CPS);
146
	}
147
	
148
	/**
149
	 * Check whether user notice qualifier is present.
150
	 *
151
	 * @return bool
152
	 */
153 4
	public function hasUserNoticeQualifier() {
154 4
		return $this->has(PolicyQualifierInfo::OID_UNOTICE);
155
	}
156
	
157
	/**
158
	 * Get user notice qualifier.
159
	 *
160
	 * @throws \LogicException
161
	 * @return UserNoticeQualifier
162
	 */
163 4
	public function userNoticeQualifier() {
164 4
		if (!$this->hasUserNoticeQualifier()) {
165 1
			throw new \LogicException("User notice qualifier not set.");
166
		}
167 3
		return $this->get(PolicyQualifierInfo::OID_UNOTICE);
168
	}
169
	
170
	/**
171
	 * Get ASN.1 structure.
172
	 *
173
	 * @return Sequence
174
	 */
175 31
	public function toASN1() {
176 31
		$elements = array(new ObjectIdentifier($this->_oid));
177 31
		if (count($this->_qualifiers)) {
178 18
			$qualifiers = array_map(
179 18
				function (PolicyQualifierInfo $pqi) {
180 18
					return $pqi->toASN1();
181 18
				}, array_values($this->_qualifiers));
182 18
			$elements[] = new Sequence(...$qualifiers);
183 18
		}
184 31
		return new Sequence(...$elements);
185
	}
186
	
187
	/**
188
	 * Get number of qualifiers.
189
	 *
190
	 * @see Countable::count()
191
	 * @return int
192
	 */
193 2
	public function count() {
194 2
		return count($this->_qualifiers);
195
	}
196
	
197
	/**
198
	 * Get iterator for qualifiers.
199
	 *
200
	 * @see IteratorAggregate::getIterator()
201
	 * @return \ArrayIterator
202
	 */
203 2
	public function getIterator() {
204 2
		return new \ArrayIterator($this->_qualifiers);
205
	}
206
}
207