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/Extension/AAControlsExtension.php 1 patch
Indentation   +198 added lines, -198 removed lines patch added patch discarded remove patch
@@ -19,215 +19,215 @@
 block discarded – undo
19 19
  */
20 20
 class AAControlsExtension extends Extension
21 21
 {
22
-    /**
23
-     * Path length contraint.
24
-     *
25
-     * @var int|null $_pathLenConstraint
26
-     */
27
-    protected $_pathLenConstraint;
22
+	/**
23
+	 * Path length contraint.
24
+	 *
25
+	 * @var int|null $_pathLenConstraint
26
+	 */
27
+	protected $_pathLenConstraint;
28 28
     
29
-    /**
30
-     * Permitted attributes.
31
-     *
32
-     * Array of OID's.
33
-     *
34
-     * @var string[]|null $_permittedAttrs
35
-     */
36
-    protected $_permittedAttrs;
29
+	/**
30
+	 * Permitted attributes.
31
+	 *
32
+	 * Array of OID's.
33
+	 *
34
+	 * @var string[]|null $_permittedAttrs
35
+	 */
36
+	protected $_permittedAttrs;
37 37
     
38
-    /**
39
-     * Excluded attributes.
40
-     *
41
-     * Array of OID's.
42
-     *
43
-     * @var string[]|null $_excludedAttrs
44
-     */
45
-    protected $_excludedAttrs;
38
+	/**
39
+	 * Excluded attributes.
40
+	 *
41
+	 * Array of OID's.
42
+	 *
43
+	 * @var string[]|null $_excludedAttrs
44
+	 */
45
+	protected $_excludedAttrs;
46 46
     
47
-    /**
48
-     * Whether to permit unspecified attributes.
49
-     *
50
-     * @var bool $_permitUnSpecified
51
-     */
52
-    protected $_permitUnSpecified;
47
+	/**
48
+	 * Whether to permit unspecified attributes.
49
+	 *
50
+	 * @var bool $_permitUnSpecified
51
+	 */
52
+	protected $_permitUnSpecified;
53 53
     
54
-    /**
55
-     * Constructor.
56
-     *
57
-     * @param bool $critical
58
-     * @param int|null $path_len
59
-     * @param string[]|null $permitted
60
-     * @param string[]|null $excluded
61
-     * @param bool $permit_unspecified
62
-     */
63
-    public function __construct(bool $critical, $path_len = null,
64
-        array $permitted = null, array $excluded = null, bool $permit_unspecified = true)
65
-    {
66
-        parent::__construct(self::OID_AA_CONTROLS, $critical);
67
-        $this->_pathLenConstraint = $path_len;
68
-        $this->_permittedAttrs = $permitted;
69
-        $this->_excludedAttrs = $excluded;
70
-        $this->_permitUnSpecified = $permit_unspecified;
71
-    }
54
+	/**
55
+	 * Constructor.
56
+	 *
57
+	 * @param bool $critical
58
+	 * @param int|null $path_len
59
+	 * @param string[]|null $permitted
60
+	 * @param string[]|null $excluded
61
+	 * @param bool $permit_unspecified
62
+	 */
63
+	public function __construct(bool $critical, $path_len = null,
64
+		array $permitted = null, array $excluded = null, bool $permit_unspecified = true)
65
+	{
66
+		parent::__construct(self::OID_AA_CONTROLS, $critical);
67
+		$this->_pathLenConstraint = $path_len;
68
+		$this->_permittedAttrs = $permitted;
69
+		$this->_excludedAttrs = $excluded;
70
+		$this->_permitUnSpecified = $permit_unspecified;
71
+	}
72 72
     
73
-    /**
74
-     *
75
-     * {@inheritdoc}
76
-     * @return self
77
-     */
78
-    protected static function _fromDER(string $data, bool $critical): self
79
-    {
80
-        $seq = Sequence::fromDER($data);
81
-        $path_len = null;
82
-        $permitted = null;
83
-        $excluded = null;
84
-        $permit_unspecified = true;
85
-        $idx = 0;
86
-        if ($seq->has($idx, Element::TYPE_INTEGER)) {
87
-            $path_len = $seq->at($idx++)
88
-                ->asInteger()
89
-                ->intNumber();
90
-        }
91
-        if ($seq->hasTagged(0)) {
92
-            $attr_seq = $seq->getTagged(0)
93
-                ->asImplicit(Element::TYPE_SEQUENCE)
94
-                ->asSequence();
95
-            $permitted = array_map(
96
-                function (UnspecifiedType $el) {
97
-                    return $el->asObjectIdentifier()->oid();
98
-                }, $attr_seq->elements());
99
-            $idx++;
100
-        }
101
-        if ($seq->hasTagged(1)) {
102
-            $attr_seq = $seq->getTagged(1)
103
-                ->asImplicit(Element::TYPE_SEQUENCE)
104
-                ->asSequence();
105
-            $excluded = array_map(
106
-                function (UnspecifiedType $el) {
107
-                    return $el->asObjectIdentifier()->oid();
108
-                }, $attr_seq->elements());
109
-            $idx++;
110
-        }
111
-        if ($seq->has($idx, Element::TYPE_BOOLEAN)) {
112
-            $permit_unspecified = $seq->at($idx++)
113
-                ->asBoolean()
114
-                ->value();
115
-        }
116
-        return new self($critical, $path_len, $permitted, $excluded,
117
-            $permit_unspecified);
118
-    }
73
+	/**
74
+	 *
75
+	 * {@inheritdoc}
76
+	 * @return self
77
+	 */
78
+	protected static function _fromDER(string $data, bool $critical): self
79
+	{
80
+		$seq = Sequence::fromDER($data);
81
+		$path_len = null;
82
+		$permitted = null;
83
+		$excluded = null;
84
+		$permit_unspecified = true;
85
+		$idx = 0;
86
+		if ($seq->has($idx, Element::TYPE_INTEGER)) {
87
+			$path_len = $seq->at($idx++)
88
+				->asInteger()
89
+				->intNumber();
90
+		}
91
+		if ($seq->hasTagged(0)) {
92
+			$attr_seq = $seq->getTagged(0)
93
+				->asImplicit(Element::TYPE_SEQUENCE)
94
+				->asSequence();
95
+			$permitted = array_map(
96
+				function (UnspecifiedType $el) {
97
+					return $el->asObjectIdentifier()->oid();
98
+				}, $attr_seq->elements());
99
+			$idx++;
100
+		}
101
+		if ($seq->hasTagged(1)) {
102
+			$attr_seq = $seq->getTagged(1)
103
+				->asImplicit(Element::TYPE_SEQUENCE)
104
+				->asSequence();
105
+			$excluded = array_map(
106
+				function (UnspecifiedType $el) {
107
+					return $el->asObjectIdentifier()->oid();
108
+				}, $attr_seq->elements());
109
+			$idx++;
110
+		}
111
+		if ($seq->has($idx, Element::TYPE_BOOLEAN)) {
112
+			$permit_unspecified = $seq->at($idx++)
113
+				->asBoolean()
114
+				->value();
115
+		}
116
+		return new self($critical, $path_len, $permitted, $excluded,
117
+			$permit_unspecified);
118
+	}
119 119
     
120
-    /**
121
-     * Check whether path length constraint is present.
122
-     *
123
-     * @return bool
124
-     */
125
-    public function hasPathLen(): bool
126
-    {
127
-        return isset($this->_pathLenConstraint);
128
-    }
120
+	/**
121
+	 * Check whether path length constraint is present.
122
+	 *
123
+	 * @return bool
124
+	 */
125
+	public function hasPathLen(): bool
126
+	{
127
+		return isset($this->_pathLenConstraint);
128
+	}
129 129
     
130
-    /**
131
-     * Get path length constraint.
132
-     *
133
-     * @throws \LogicException
134
-     * @return int
135
-     */
136
-    public function pathLen(): int
137
-    {
138
-        if (!$this->hasPathLen()) {
139
-            throw new \LogicException("pathLen not set.");
140
-        }
141
-        return $this->_pathLenConstraint;
142
-    }
130
+	/**
131
+	 * Get path length constraint.
132
+	 *
133
+	 * @throws \LogicException
134
+	 * @return int
135
+	 */
136
+	public function pathLen(): int
137
+	{
138
+		if (!$this->hasPathLen()) {
139
+			throw new \LogicException("pathLen not set.");
140
+		}
141
+		return $this->_pathLenConstraint;
142
+	}
143 143
     
144
-    /**
145
-     * Check whether permitted attributes are present.
146
-     *
147
-     * @return bool
148
-     */
149
-    public function hasPermittedAttrs(): bool
150
-    {
151
-        return isset($this->_permittedAttrs);
152
-    }
144
+	/**
145
+	 * Check whether permitted attributes are present.
146
+	 *
147
+	 * @return bool
148
+	 */
149
+	public function hasPermittedAttrs(): bool
150
+	{
151
+		return isset($this->_permittedAttrs);
152
+	}
153 153
     
154
-    /**
155
-     * Get OID's of permitted attributes.
156
-     *
157
-     * @throws \LogicException
158
-     * @return string[]
159
-     */
160
-    public function permittedAttrs(): array
161
-    {
162
-        if (!$this->hasPermittedAttrs()) {
163
-            throw new \LogicException("permittedAttrs not set.");
164
-        }
165
-        return $this->_permittedAttrs;
166
-    }
154
+	/**
155
+	 * Get OID's of permitted attributes.
156
+	 *
157
+	 * @throws \LogicException
158
+	 * @return string[]
159
+	 */
160
+	public function permittedAttrs(): array
161
+	{
162
+		if (!$this->hasPermittedAttrs()) {
163
+			throw new \LogicException("permittedAttrs not set.");
164
+		}
165
+		return $this->_permittedAttrs;
166
+	}
167 167
     
168
-    /**
169
-     * Check whether excluded attributes are present.
170
-     *
171
-     * @return bool
172
-     */
173
-    public function hasExcludedAttrs(): bool
174
-    {
175
-        return isset($this->_excludedAttrs);
176
-    }
168
+	/**
169
+	 * Check whether excluded attributes are present.
170
+	 *
171
+	 * @return bool
172
+	 */
173
+	public function hasExcludedAttrs(): bool
174
+	{
175
+		return isset($this->_excludedAttrs);
176
+	}
177 177
     
178
-    /**
179
-     * Get OID's of excluded attributes.
180
-     *
181
-     * @throws \LogicException
182
-     * @return string[]
183
-     */
184
-    public function excludedAttrs(): array
185
-    {
186
-        if (!$this->hasExcludedAttrs()) {
187
-            throw new \LogicException("excludedAttrs not set.");
188
-        }
189
-        return $this->_excludedAttrs;
190
-    }
178
+	/**
179
+	 * Get OID's of excluded attributes.
180
+	 *
181
+	 * @throws \LogicException
182
+	 * @return string[]
183
+	 */
184
+	public function excludedAttrs(): array
185
+	{
186
+		if (!$this->hasExcludedAttrs()) {
187
+			throw new \LogicException("excludedAttrs not set.");
188
+		}
189
+		return $this->_excludedAttrs;
190
+	}
191 191
     
192
-    /**
193
-     * Whether to permit attributes that are not explicitly specified in
194
-     * neither permitted nor excluded list.
195
-     *
196
-     * @return bool
197
-     */
198
-    public function permitUnspecified(): bool
199
-    {
200
-        return $this->_permitUnSpecified;
201
-    }
192
+	/**
193
+	 * Whether to permit attributes that are not explicitly specified in
194
+	 * neither permitted nor excluded list.
195
+	 *
196
+	 * @return bool
197
+	 */
198
+	public function permitUnspecified(): bool
199
+	{
200
+		return $this->_permitUnSpecified;
201
+	}
202 202
     
203
-    /**
204
-     *
205
-     * {@inheritdoc}
206
-     * @return Sequence
207
-     */
208
-    protected function _valueASN1(): Sequence
209
-    {
210
-        $elements = array();
211
-        if (isset($this->_pathLenConstraint)) {
212
-            $elements[] = new Integer($this->_pathLenConstraint);
213
-        }
214
-        if (isset($this->_permittedAttrs)) {
215
-            $oids = array_map(
216
-                function ($oid) {
217
-                    return new ObjectIdentifier($oid);
218
-                }, $this->_permittedAttrs);
219
-            $elements[] = new ImplicitlyTaggedType(0, new Sequence(...$oids));
220
-        }
221
-        if (isset($this->_excludedAttrs)) {
222
-            $oids = array_map(
223
-                function ($oid) {
224
-                    return new ObjectIdentifier($oid);
225
-                }, $this->_excludedAttrs);
226
-            $elements[] = new ImplicitlyTaggedType(1, new Sequence(...$oids));
227
-        }
228
-        if ($this->_permitUnSpecified !== true) {
229
-            $elements[] = new Boolean(false);
230
-        }
231
-        return new Sequence(...$elements);
232
-    }
203
+	/**
204
+	 *
205
+	 * {@inheritdoc}
206
+	 * @return Sequence
207
+	 */
208
+	protected function _valueASN1(): Sequence
209
+	{
210
+		$elements = array();
211
+		if (isset($this->_pathLenConstraint)) {
212
+			$elements[] = new Integer($this->_pathLenConstraint);
213
+		}
214
+		if (isset($this->_permittedAttrs)) {
215
+			$oids = array_map(
216
+				function ($oid) {
217
+					return new ObjectIdentifier($oid);
218
+				}, $this->_permittedAttrs);
219
+			$elements[] = new ImplicitlyTaggedType(0, new Sequence(...$oids));
220
+		}
221
+		if (isset($this->_excludedAttrs)) {
222
+			$oids = array_map(
223
+				function ($oid) {
224
+					return new ObjectIdentifier($oid);
225
+				}, $this->_excludedAttrs);
226
+			$elements[] = new ImplicitlyTaggedType(1, new Sequence(...$oids));
227
+		}
228
+		if ($this->_permitUnSpecified !== true) {
229
+			$elements[] = new Boolean(false);
230
+		}
231
+		return new Sequence(...$elements);
232
+	}
233 233
 }
Please login to merge, or discard this patch.
lib/X509/Certificate/Extension/NameConstraintsExtension.php 1 patch
Indentation   +110 added lines, -110 removed lines patch added patch discarded remove patch
@@ -16,122 +16,122 @@
 block discarded – undo
16 16
  */
17 17
 class NameConstraintsExtension extends Extension
18 18
 {
19
-    /**
20
-     * Permitted subtrees.
21
-     *
22
-     * @var GeneralSubtrees|null $_permitted
23
-     */
24
-    protected $_permitted;
19
+	/**
20
+	 * Permitted subtrees.
21
+	 *
22
+	 * @var GeneralSubtrees|null $_permitted
23
+	 */
24
+	protected $_permitted;
25 25
     
26
-    /**
27
-     * Excluded subtrees.
28
-     *
29
-     * @var GeneralSubtrees|null $_excluded
30
-     */
31
-    protected $_excluded;
26
+	/**
27
+	 * Excluded subtrees.
28
+	 *
29
+	 * @var GeneralSubtrees|null $_excluded
30
+	 */
31
+	protected $_excluded;
32 32
     
33
-    /**
34
-     * Constructor.
35
-     *
36
-     * @param bool $critical
37
-     * @param GeneralSubtrees $permitted
38
-     * @param GeneralSubtrees $excluded
39
-     */
40
-    public function __construct(bool $critical, GeneralSubtrees $permitted = null,
41
-        GeneralSubtrees $excluded = null)
42
-    {
43
-        parent::__construct(self::OID_NAME_CONSTRAINTS, $critical);
44
-        $this->_permitted = $permitted;
45
-        $this->_excluded = $excluded;
46
-    }
33
+	/**
34
+	 * Constructor.
35
+	 *
36
+	 * @param bool $critical
37
+	 * @param GeneralSubtrees $permitted
38
+	 * @param GeneralSubtrees $excluded
39
+	 */
40
+	public function __construct(bool $critical, GeneralSubtrees $permitted = null,
41
+		GeneralSubtrees $excluded = null)
42
+	{
43
+		parent::__construct(self::OID_NAME_CONSTRAINTS, $critical);
44
+		$this->_permitted = $permitted;
45
+		$this->_excluded = $excluded;
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
-        $permitted = null;
57
-        $excluded = null;
58
-        if ($seq->hasTagged(0)) {
59
-            $permitted = GeneralSubtrees::fromASN1(
60
-                $seq->getTagged(0)
61
-                    ->asImplicit(Element::TYPE_SEQUENCE)
62
-                    ->asSequence());
63
-        }
64
-        if ($seq->hasTagged(1)) {
65
-            $excluded = GeneralSubtrees::fromASN1(
66
-                $seq->getTagged(1)
67
-                    ->asImplicit(Element::TYPE_SEQUENCE)
68
-                    ->asSequence());
69
-        }
70
-        return new self($critical, $permitted, $excluded);
71
-    }
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
+		$permitted = null;
57
+		$excluded = null;
58
+		if ($seq->hasTagged(0)) {
59
+			$permitted = GeneralSubtrees::fromASN1(
60
+				$seq->getTagged(0)
61
+					->asImplicit(Element::TYPE_SEQUENCE)
62
+					->asSequence());
63
+		}
64
+		if ($seq->hasTagged(1)) {
65
+			$excluded = GeneralSubtrees::fromASN1(
66
+				$seq->getTagged(1)
67
+					->asImplicit(Element::TYPE_SEQUENCE)
68
+					->asSequence());
69
+		}
70
+		return new self($critical, $permitted, $excluded);
71
+	}
72 72
     
73
-    /**
74
-     * Whether permitted subtrees are present.
75
-     *
76
-     * @return bool
77
-     */
78
-    public function hasPermittedSubtrees(): bool
79
-    {
80
-        return isset($this->_permitted);
81
-    }
73
+	/**
74
+	 * Whether permitted subtrees are present.
75
+	 *
76
+	 * @return bool
77
+	 */
78
+	public function hasPermittedSubtrees(): bool
79
+	{
80
+		return isset($this->_permitted);
81
+	}
82 82
     
83
-    /**
84
-     * Get permitted subtrees.
85
-     *
86
-     * @throws \LogicException
87
-     * @return GeneralSubtrees
88
-     */
89
-    public function permittedSubtrees(): GeneralSubtrees
90
-    {
91
-        if (!$this->hasPermittedSubtrees()) {
92
-            throw new \LogicException("No permitted subtrees.");
93
-        }
94
-        return $this->_permitted;
95
-    }
83
+	/**
84
+	 * Get permitted subtrees.
85
+	 *
86
+	 * @throws \LogicException
87
+	 * @return GeneralSubtrees
88
+	 */
89
+	public function permittedSubtrees(): GeneralSubtrees
90
+	{
91
+		if (!$this->hasPermittedSubtrees()) {
92
+			throw new \LogicException("No permitted subtrees.");
93
+		}
94
+		return $this->_permitted;
95
+	}
96 96
     
97
-    /**
98
-     * Whether excluded subtrees are present.
99
-     *
100
-     * @return bool
101
-     */
102
-    public function hasExcludedSubtrees(): bool
103
-    {
104
-        return isset($this->_excluded);
105
-    }
97
+	/**
98
+	 * Whether excluded subtrees are present.
99
+	 *
100
+	 * @return bool
101
+	 */
102
+	public function hasExcludedSubtrees(): bool
103
+	{
104
+		return isset($this->_excluded);
105
+	}
106 106
     
107
-    /**
108
-     * Get excluded subtrees.
109
-     *
110
-     * @throws \LogicException
111
-     * @return GeneralSubtrees
112
-     */
113
-    public function excludedSubtrees(): GeneralSubtrees
114
-    {
115
-        if (!$this->hasExcludedSubtrees()) {
116
-            throw new \LogicException("No excluded subtrees.");
117
-        }
118
-        return $this->_excluded;
119
-    }
107
+	/**
108
+	 * Get excluded subtrees.
109
+	 *
110
+	 * @throws \LogicException
111
+	 * @return GeneralSubtrees
112
+	 */
113
+	public function excludedSubtrees(): GeneralSubtrees
114
+	{
115
+		if (!$this->hasExcludedSubtrees()) {
116
+			throw new \LogicException("No excluded subtrees.");
117
+		}
118
+		return $this->_excluded;
119
+	}
120 120
     
121
-    /**
122
-     *
123
-     * {@inheritdoc}
124
-     * @return Sequence
125
-     */
126
-    protected function _valueASN1(): Sequence
127
-    {
128
-        $elements = array();
129
-        if (isset($this->_permitted)) {
130
-            $elements[] = new ImplicitlyTaggedType(0, $this->_permitted->toASN1());
131
-        }
132
-        if (isset($this->_excluded)) {
133
-            $elements[] = new ImplicitlyTaggedType(1, $this->_excluded->toASN1());
134
-        }
135
-        return new Sequence(...$elements);
136
-    }
121
+	/**
122
+	 *
123
+	 * {@inheritdoc}
124
+	 * @return Sequence
125
+	 */
126
+	protected function _valueASN1(): Sequence
127
+	{
128
+		$elements = array();
129
+		if (isset($this->_permitted)) {
130
+			$elements[] = new ImplicitlyTaggedType(0, $this->_permitted->toASN1());
131
+		}
132
+		if (isset($this->_excluded)) {
133
+			$elements[] = new ImplicitlyTaggedType(1, $this->_excluded->toASN1());
134
+		}
135
+		return new Sequence(...$elements);
136
+	}
137 137
 }
Please login to merge, or discard this patch.
lib/X509/Certificate/Extension/Extension.php 1 patch
Indentation   +199 added lines, -199 removed lines patch added patch discarded remove patch
@@ -19,214 +19,214 @@
 block discarded – undo
19 19
  */
20 20
 abstract class Extension
21 21
 {
22
-    // OID's from standard certificate extensions
23
-    const OID_OBSOLETE_AUTHORITY_KEY_IDENTIFIER = "2.5.29.1";
24
-    const OID_OBSOLETE_KEY_ATTRIBUTES = "2.5.29.2";
25
-    const OID_OBSOLETE_CERTIFICATE_POLICIES = "2.5.29.3";
26
-    const OID_OBSOLETE_KEY_USAGE_RESTRICTION = "2.5.29.4";
27
-    const OID_OBSOLETE_POLICY_MAPPING = "2.5.29.5";
28
-    const OID_OBSOLETE_SUBTREES_CONSTRAINT = "2.5.29.6";
29
-    const OID_OBSOLETE_SUBJECT_ALT_NAME = "2.5.29.7";
30
-    const OID_OBSOLETE_ISSUER_ALT_NAME = "2.5.29.8";
31
-    const OID_SUBJECT_DIRECTORY_ATTRIBUTES = "2.5.29.9";
32
-    const OID_OBSOLETE_BASIC_CONSTRAINTS = "2.5.29.10";
33
-    const OID_SUBJECT_KEY_IDENTIFIER = "2.5.29.14";
34
-    const OID_KEY_USAGE = "2.5.29.15";
35
-    const OID_PRIVATE_KEY_USAGE_PERIOD = "2.5.29.16";
36
-    const OID_SUBJECT_ALT_NAME = "2.5.29.17";
37
-    const OID_ISSUER_ALT_NAME = "2.5.29.18";
38
-    const OID_BASIC_CONSTRAINTS = "2.5.29.19";
39
-    const OID_CRL_NUMBER = "2.5.29.20";
40
-    const OID_REASON_CODE = "2.5.29.21";
41
-    const OID_OBSOLETE_EXPIRATION_DATE = "2.5.29.22";
42
-    const OID_INSTRUCTION_CODE = "2.5.29.23";
43
-    const OID_INVALIDITY_DATE = "2.5.29.24";
44
-    const OID_OBSOLETE_CRL_DISTRIBUTION_POINTS = "2.5.29.25";
45
-    const OID_OBSOLETE_ISSUING_DISTRIBUTION_POINT = "2.5.29.26";
46
-    const OID_DELTA_CRL_INDICATOR = "2.5.29.27";
47
-    const OID_ISSUING_DISTRIBUTION_POINT = "2.5.29.28";
48
-    const OID_CERTIFICATE_ISSUER = "2.5.29.29";
49
-    const OID_NAME_CONSTRAINTS = "2.5.29.30";
50
-    const OID_CRL_DISTRIBUTION_POINTS = "2.5.29.31";
51
-    const OID_CERTIFICATE_POLICIES = "2.5.29.32";
52
-    const OID_POLICY_MAPPINGS = "2.5.29.33";
53
-    const OID_OBSOLETE_POLICY_CONSTRAINTS = "2.5.29.34";
54
-    const OID_AUTHORITY_KEY_IDENTIFIER = "2.5.29.35";
55
-    const OID_POLICY_CONSTRAINTS = "2.5.29.36";
56
-    const OID_EXT_KEY_USAGE = "2.5.29.37";
57
-    const OID_AUTHORITY_ATTRIBUTE_IDENTIFIER = "2.5.29.38";
58
-    const OID_ROLE_SPEC_CERT_IDENTIFIER = "2.5.29.39";
59
-    const OID_CRL_STREAM_IDENTIFIER = "2.5.29.40";
60
-    const OID_BASIC_ATT_CONSTRAINTS = "2.5.29.41";
61
-    const OID_DELEGATED_NAME_CONSTRAINTS = "2.5.29.42";
62
-    const OID_TIME_SPECIFICATION = "2.5.29.43";
63
-    const OID_CRL_SCOPE = "2.5.29.44";
64
-    const OID_STATUS_REFERRALS = "2.5.29.45";
65
-    const OID_FRESHEST_CRL = "2.5.29.46";
66
-    const OID_ORDERED_LIST = "2.5.29.47";
67
-    const OID_ATTRIBUTE_DESCRIPTOR = "2.5.29.48";
68
-    const OID_USER_NOTICE = "2.5.29.49";
69
-    const OID_SOA_IDENTIFIER = "2.5.29.50";
70
-    const OID_BASE_UPDATE_TIME = "2.5.29.51";
71
-    const OID_ACCEPTABLE_CERT_POLICIES = "2.5.29.52";
72
-    const OID_DELTA_INFO = "2.5.29.53";
73
-    const OID_INHIBIT_ANY_POLICY = "2.5.29.54";
74
-    const OID_TARGET_INFORMATION = "2.5.29.55";
75
-    const OID_NO_REV_AVAIL = "2.5.29.56";
76
-    const OID_ACCEPTABLE_PRIVILEGE_POLICIES = "2.5.29.57";
77
-    const OID_TO_BE_REVOKED = "2.5.29.58";
78
-    const OID_REVOKED_GROUPS = "2.5.29.59";
79
-    const OID_EXPIRED_CERTS_ON_CRL = "2.5.29.60";
80
-    const OID_INDIRECT_ISSUER = "2.5.29.61";
81
-    const OID_NO_ASSERTION = "2.5.29.62";
82
-    const OID_AA_ISSUING_DISTRIBUTION_POINT = "2.5.29.63";
83
-    const OID_ISSUED_ON_BEHALF_OF = "2.5.29.64";
84
-    const OID_SINGLE_USE = "2.5.29.65";
85
-    const OID_GROUP_AC = "2.5.29.66";
86
-    const OID_ALLOWED_ATT_ASS = "2.5.29.67";
87
-    const OID_ATTRIBUTE_MAPPINGS = "2.5.29.68";
88
-    const OID_HOLDER_NAME_CONSTRAINTS = "2.5.29.69";
22
+	// OID's from standard certificate extensions
23
+	const OID_OBSOLETE_AUTHORITY_KEY_IDENTIFIER = "2.5.29.1";
24
+	const OID_OBSOLETE_KEY_ATTRIBUTES = "2.5.29.2";
25
+	const OID_OBSOLETE_CERTIFICATE_POLICIES = "2.5.29.3";
26
+	const OID_OBSOLETE_KEY_USAGE_RESTRICTION = "2.5.29.4";
27
+	const OID_OBSOLETE_POLICY_MAPPING = "2.5.29.5";
28
+	const OID_OBSOLETE_SUBTREES_CONSTRAINT = "2.5.29.6";
29
+	const OID_OBSOLETE_SUBJECT_ALT_NAME = "2.5.29.7";
30
+	const OID_OBSOLETE_ISSUER_ALT_NAME = "2.5.29.8";
31
+	const OID_SUBJECT_DIRECTORY_ATTRIBUTES = "2.5.29.9";
32
+	const OID_OBSOLETE_BASIC_CONSTRAINTS = "2.5.29.10";
33
+	const OID_SUBJECT_KEY_IDENTIFIER = "2.5.29.14";
34
+	const OID_KEY_USAGE = "2.5.29.15";
35
+	const OID_PRIVATE_KEY_USAGE_PERIOD = "2.5.29.16";
36
+	const OID_SUBJECT_ALT_NAME = "2.5.29.17";
37
+	const OID_ISSUER_ALT_NAME = "2.5.29.18";
38
+	const OID_BASIC_CONSTRAINTS = "2.5.29.19";
39
+	const OID_CRL_NUMBER = "2.5.29.20";
40
+	const OID_REASON_CODE = "2.5.29.21";
41
+	const OID_OBSOLETE_EXPIRATION_DATE = "2.5.29.22";
42
+	const OID_INSTRUCTION_CODE = "2.5.29.23";
43
+	const OID_INVALIDITY_DATE = "2.5.29.24";
44
+	const OID_OBSOLETE_CRL_DISTRIBUTION_POINTS = "2.5.29.25";
45
+	const OID_OBSOLETE_ISSUING_DISTRIBUTION_POINT = "2.5.29.26";
46
+	const OID_DELTA_CRL_INDICATOR = "2.5.29.27";
47
+	const OID_ISSUING_DISTRIBUTION_POINT = "2.5.29.28";
48
+	const OID_CERTIFICATE_ISSUER = "2.5.29.29";
49
+	const OID_NAME_CONSTRAINTS = "2.5.29.30";
50
+	const OID_CRL_DISTRIBUTION_POINTS = "2.5.29.31";
51
+	const OID_CERTIFICATE_POLICIES = "2.5.29.32";
52
+	const OID_POLICY_MAPPINGS = "2.5.29.33";
53
+	const OID_OBSOLETE_POLICY_CONSTRAINTS = "2.5.29.34";
54
+	const OID_AUTHORITY_KEY_IDENTIFIER = "2.5.29.35";
55
+	const OID_POLICY_CONSTRAINTS = "2.5.29.36";
56
+	const OID_EXT_KEY_USAGE = "2.5.29.37";
57
+	const OID_AUTHORITY_ATTRIBUTE_IDENTIFIER = "2.5.29.38";
58
+	const OID_ROLE_SPEC_CERT_IDENTIFIER = "2.5.29.39";
59
+	const OID_CRL_STREAM_IDENTIFIER = "2.5.29.40";
60
+	const OID_BASIC_ATT_CONSTRAINTS = "2.5.29.41";
61
+	const OID_DELEGATED_NAME_CONSTRAINTS = "2.5.29.42";
62
+	const OID_TIME_SPECIFICATION = "2.5.29.43";
63
+	const OID_CRL_SCOPE = "2.5.29.44";
64
+	const OID_STATUS_REFERRALS = "2.5.29.45";
65
+	const OID_FRESHEST_CRL = "2.5.29.46";
66
+	const OID_ORDERED_LIST = "2.5.29.47";
67
+	const OID_ATTRIBUTE_DESCRIPTOR = "2.5.29.48";
68
+	const OID_USER_NOTICE = "2.5.29.49";
69
+	const OID_SOA_IDENTIFIER = "2.5.29.50";
70
+	const OID_BASE_UPDATE_TIME = "2.5.29.51";
71
+	const OID_ACCEPTABLE_CERT_POLICIES = "2.5.29.52";
72
+	const OID_DELTA_INFO = "2.5.29.53";
73
+	const OID_INHIBIT_ANY_POLICY = "2.5.29.54";
74
+	const OID_TARGET_INFORMATION = "2.5.29.55";
75
+	const OID_NO_REV_AVAIL = "2.5.29.56";
76
+	const OID_ACCEPTABLE_PRIVILEGE_POLICIES = "2.5.29.57";
77
+	const OID_TO_BE_REVOKED = "2.5.29.58";
78
+	const OID_REVOKED_GROUPS = "2.5.29.59";
79
+	const OID_EXPIRED_CERTS_ON_CRL = "2.5.29.60";
80
+	const OID_INDIRECT_ISSUER = "2.5.29.61";
81
+	const OID_NO_ASSERTION = "2.5.29.62";
82
+	const OID_AA_ISSUING_DISTRIBUTION_POINT = "2.5.29.63";
83
+	const OID_ISSUED_ON_BEHALF_OF = "2.5.29.64";
84
+	const OID_SINGLE_USE = "2.5.29.65";
85
+	const OID_GROUP_AC = "2.5.29.66";
86
+	const OID_ALLOWED_ATT_ASS = "2.5.29.67";
87
+	const OID_ATTRIBUTE_MAPPINGS = "2.5.29.68";
88
+	const OID_HOLDER_NAME_CONSTRAINTS = "2.5.29.69";
89 89
     
90
-    // OID's from private certificate extensions arc
91
-    const OID_AA_CONTROLS = "1.3.6.1.5.5.7.1.6";
90
+	// OID's from private certificate extensions arc
91
+	const OID_AA_CONTROLS = "1.3.6.1.5.5.7.1.6";
92 92
     
93
-    /**
94
-     * Mapping from extension ID to implementation class name.
95
-     *
96
-     * @internal
97
-     *
98
-     * @var array
99
-     */
100
-    const MAP_OID_TO_CLASS = array(
101
-        /* @formatter:off */
102
-        self::OID_AUTHORITY_KEY_IDENTIFIER => AuthorityKeyIdentifierExtension::class,
103
-        self::OID_SUBJECT_KEY_IDENTIFIER => SubjectKeyIdentifierExtension::class,
104
-        self::OID_KEY_USAGE => KeyUsageExtension::class,
105
-        self::OID_CERTIFICATE_POLICIES => CertificatePoliciesExtension::class,
106
-        self::OID_POLICY_MAPPINGS => PolicyMappingsExtension::class,
107
-        self::OID_SUBJECT_ALT_NAME => SubjectAlternativeNameExtension::class,
108
-        self::OID_ISSUER_ALT_NAME => IssuerAlternativeNameExtension::class,
109
-        self::OID_SUBJECT_DIRECTORY_ATTRIBUTES => SubjectDirectoryAttributesExtension::class,
110
-        self::OID_BASIC_CONSTRAINTS => BasicConstraintsExtension::class,
111
-        self::OID_NAME_CONSTRAINTS => NameConstraintsExtension::class,
112
-        self::OID_POLICY_CONSTRAINTS => PolicyConstraintsExtension::class,
113
-        self::OID_EXT_KEY_USAGE => ExtendedKeyUsageExtension::class,
114
-        self::OID_CRL_DISTRIBUTION_POINTS => CRLDistributionPointsExtension::class,
115
-        self::OID_INHIBIT_ANY_POLICY => InhibitAnyPolicyExtension::class,
116
-        self::OID_FRESHEST_CRL => FreshestCRLExtension::class,
117
-        self::OID_NO_REV_AVAIL => NoRevocationAvailableExtension::class,
118
-        self::OID_TARGET_INFORMATION => TargetInformationExtension::class,
119
-        self::OID_AA_CONTROLS => AAControlsExtension::class
120
-        /* @formatter:on */
121
-    );
93
+	/**
94
+	 * Mapping from extension ID to implementation class name.
95
+	 *
96
+	 * @internal
97
+	 *
98
+	 * @var array
99
+	 */
100
+	const MAP_OID_TO_CLASS = array(
101
+		/* @formatter:off */
102
+		self::OID_AUTHORITY_KEY_IDENTIFIER => AuthorityKeyIdentifierExtension::class,
103
+		self::OID_SUBJECT_KEY_IDENTIFIER => SubjectKeyIdentifierExtension::class,
104
+		self::OID_KEY_USAGE => KeyUsageExtension::class,
105
+		self::OID_CERTIFICATE_POLICIES => CertificatePoliciesExtension::class,
106
+		self::OID_POLICY_MAPPINGS => PolicyMappingsExtension::class,
107
+		self::OID_SUBJECT_ALT_NAME => SubjectAlternativeNameExtension::class,
108
+		self::OID_ISSUER_ALT_NAME => IssuerAlternativeNameExtension::class,
109
+		self::OID_SUBJECT_DIRECTORY_ATTRIBUTES => SubjectDirectoryAttributesExtension::class,
110
+		self::OID_BASIC_CONSTRAINTS => BasicConstraintsExtension::class,
111
+		self::OID_NAME_CONSTRAINTS => NameConstraintsExtension::class,
112
+		self::OID_POLICY_CONSTRAINTS => PolicyConstraintsExtension::class,
113
+		self::OID_EXT_KEY_USAGE => ExtendedKeyUsageExtension::class,
114
+		self::OID_CRL_DISTRIBUTION_POINTS => CRLDistributionPointsExtension::class,
115
+		self::OID_INHIBIT_ANY_POLICY => InhibitAnyPolicyExtension::class,
116
+		self::OID_FRESHEST_CRL => FreshestCRLExtension::class,
117
+		self::OID_NO_REV_AVAIL => NoRevocationAvailableExtension::class,
118
+		self::OID_TARGET_INFORMATION => TargetInformationExtension::class,
119
+		self::OID_AA_CONTROLS => AAControlsExtension::class
120
+		/* @formatter:on */
121
+	);
122 122
     
123
-    /**
124
-     * Extension's OID.
125
-     *
126
-     * @var string $_oid
127
-     */
128
-    protected $_oid;
123
+	/**
124
+	 * Extension's OID.
125
+	 *
126
+	 * @var string $_oid
127
+	 */
128
+	protected $_oid;
129 129
     
130
-    /**
131
-     * Whether extension is critical.
132
-     *
133
-     * @var bool $_critical
134
-     */
135
-    protected $_critical;
130
+	/**
131
+	 * Whether extension is critical.
132
+	 *
133
+	 * @var bool $_critical
134
+	 */
135
+	protected $_critical;
136 136
     
137
-    /**
138
-     * Get ASN.1 structure of the extension value.
139
-     *
140
-     * @return Element
141
-     */
142
-    abstract protected function _valueASN1();
137
+	/**
138
+	 * Get ASN.1 structure of the extension value.
139
+	 *
140
+	 * @return Element
141
+	 */
142
+	abstract protected function _valueASN1();
143 143
     
144
-    /**
145
-     * Parse extension value from DER.
146
-     *
147
-     * @param string $data DER data
148
-     * @param bool $critical Whether extension is critical
149
-     * @throws \BadMethodCallException
150
-     * @return self
151
-     */
152
-    protected static function _fromDER(string $data, bool $critical)
153
-    {
154
-        throw new \BadMethodCallException(
155
-            __FUNCTION__ . " must be implemented in derived class.");
156
-    }
144
+	/**
145
+	 * Parse extension value from DER.
146
+	 *
147
+	 * @param string $data DER data
148
+	 * @param bool $critical Whether extension is critical
149
+	 * @throws \BadMethodCallException
150
+	 * @return self
151
+	 */
152
+	protected static function _fromDER(string $data, bool $critical)
153
+	{
154
+		throw new \BadMethodCallException(
155
+			__FUNCTION__ . " must be implemented in derived class.");
156
+	}
157 157
     
158
-    /**
159
-     * Constructor.
160
-     *
161
-     * @param string $oid Extension OID
162
-     * @param bool $critical Whether extension is critical
163
-     */
164
-    public function __construct(string $oid, bool $critical)
165
-    {
166
-        $this->_oid = $oid;
167
-        $this->_critical = $critical;
168
-    }
158
+	/**
159
+	 * Constructor.
160
+	 *
161
+	 * @param string $oid Extension OID
162
+	 * @param bool $critical Whether extension is critical
163
+	 */
164
+	public function __construct(string $oid, bool $critical)
165
+	{
166
+		$this->_oid = $oid;
167
+		$this->_critical = $critical;
168
+	}
169 169
     
170
-    /**
171
-     * Initialize from ASN.1.
172
-     *
173
-     * @param Sequence $seq
174
-     * @return self
175
-     */
176
-    public static function fromASN1(Sequence $seq): Extension
177
-    {
178
-        $extnID = $seq->at(0)
179
-            ->asObjectIdentifier()
180
-            ->oid();
181
-        $critical = false;
182
-        $idx = 1;
183
-        if ($seq->has($idx, Element::TYPE_BOOLEAN)) {
184
-            $critical = $seq->at($idx++)
185
-                ->asBoolean()
186
-                ->value();
187
-        }
188
-        $data = $seq->at($idx)
189
-            ->asOctetString()
190
-            ->string();
191
-        if (array_key_exists($extnID, self::MAP_OID_TO_CLASS)) {
192
-            $cls = self::MAP_OID_TO_CLASS[$extnID];
193
-            return $cls::_fromDER($data, $critical);
194
-        }
195
-        return new UnknownExtension($extnID, $critical, new DERData($data));
196
-    }
170
+	/**
171
+	 * Initialize from ASN.1.
172
+	 *
173
+	 * @param Sequence $seq
174
+	 * @return self
175
+	 */
176
+	public static function fromASN1(Sequence $seq): Extension
177
+	{
178
+		$extnID = $seq->at(0)
179
+			->asObjectIdentifier()
180
+			->oid();
181
+		$critical = false;
182
+		$idx = 1;
183
+		if ($seq->has($idx, Element::TYPE_BOOLEAN)) {
184
+			$critical = $seq->at($idx++)
185
+				->asBoolean()
186
+				->value();
187
+		}
188
+		$data = $seq->at($idx)
189
+			->asOctetString()
190
+			->string();
191
+		if (array_key_exists($extnID, self::MAP_OID_TO_CLASS)) {
192
+			$cls = self::MAP_OID_TO_CLASS[$extnID];
193
+			return $cls::_fromDER($data, $critical);
194
+		}
195
+		return new UnknownExtension($extnID, $critical, new DERData($data));
196
+	}
197 197
     
198
-    /**
199
-     * Get extension OID.
200
-     *
201
-     * @return string
202
-     */
203
-    public function oid(): string
204
-    {
205
-        return $this->_oid;
206
-    }
198
+	/**
199
+	 * Get extension OID.
200
+	 *
201
+	 * @return string
202
+	 */
203
+	public function oid(): string
204
+	{
205
+		return $this->_oid;
206
+	}
207 207
     
208
-    /**
209
-     * Check whether extension is critical.
210
-     *
211
-     * @return bool
212
-     */
213
-    public function isCritical(): bool
214
-    {
215
-        return $this->_critical;
216
-    }
208
+	/**
209
+	 * Check whether extension is critical.
210
+	 *
211
+	 * @return bool
212
+	 */
213
+	public function isCritical(): bool
214
+	{
215
+		return $this->_critical;
216
+	}
217 217
     
218
-    /**
219
-     * Generate ASN.1 structure.
220
-     *
221
-     * @return Sequence
222
-     */
223
-    public function toASN1(): Sequence
224
-    {
225
-        $elements = array(new ObjectIdentifier($this->_oid));
226
-        if ($this->_critical) {
227
-            $elements[] = new Boolean(true);
228
-        }
229
-        $elements[] = new OctetString($this->_valueASN1()->toDER());
230
-        return new Sequence(...$elements);
231
-    }
218
+	/**
219
+	 * Generate ASN.1 structure.
220
+	 *
221
+	 * @return Sequence
222
+	 */
223
+	public function toASN1(): Sequence
224
+	{
225
+		$elements = array(new ObjectIdentifier($this->_oid));
226
+		if ($this->_critical) {
227
+			$elements[] = new Boolean(true);
228
+		}
229
+		$elements[] = new OctetString($this->_valueASN1()->toDER());
230
+		return new Sequence(...$elements);
231
+	}
232 232
 }
Please login to merge, or discard this patch.
lib/X509/Certificate/Extension/SubjectDirectoryAttributesExtension.php 1 patch
Indentation   +47 added lines, -47 removed lines patch added patch discarded remove patch
@@ -15,55 +15,55 @@
 block discarded – undo
15 15
  * @link https://tools.ietf.org/html/rfc5280#section-4.2.1.8
16 16
  */
17 17
 class SubjectDirectoryAttributesExtension extends Extension implements 
18
-    \Countable,
19
-    \IteratorAggregate
18
+	\Countable,
19
+	\IteratorAggregate
20 20
 {
21
-    use AttributeContainer;
21
+	use AttributeContainer;
22 22
     
23
-    /**
24
-     * Constructor.
25
-     *
26
-     * @param bool $critical
27
-     * @param Attribute ...$attribs One or more Attribute objects
28
-     */
29
-    public function __construct(bool $critical, Attribute ...$attribs)
30
-    {
31
-        parent::__construct(self::OID_SUBJECT_DIRECTORY_ATTRIBUTES, $critical);
32
-        $this->_attributes = $attribs;
33
-    }
23
+	/**
24
+	 * Constructor.
25
+	 *
26
+	 * @param bool $critical
27
+	 * @param Attribute ...$attribs One or more Attribute objects
28
+	 */
29
+	public function __construct(bool $critical, Attribute ...$attribs)
30
+	{
31
+		parent::__construct(self::OID_SUBJECT_DIRECTORY_ATTRIBUTES, $critical);
32
+		$this->_attributes = $attribs;
33
+	}
34 34
     
35
-    /**
36
-     *
37
-     * {@inheritdoc}
38
-     * @return self
39
-     */
40
-    protected static function _fromDER(string $data, bool $critical): self
41
-    {
42
-        $attribs = array_map(
43
-            function (UnspecifiedType $el) {
44
-                return Attribute::fromASN1($el->asSequence());
45
-            }, Sequence::fromDER($data)->elements());
46
-        if (!count($attribs)) {
47
-            throw new \UnexpectedValueException(
48
-                "SubjectDirectoryAttributes must have at least one Attribute.");
49
-        }
50
-        return new self($critical, ...$attribs);
51
-    }
35
+	/**
36
+	 *
37
+	 * {@inheritdoc}
38
+	 * @return self
39
+	 */
40
+	protected static function _fromDER(string $data, bool $critical): self
41
+	{
42
+		$attribs = array_map(
43
+			function (UnspecifiedType $el) {
44
+				return Attribute::fromASN1($el->asSequence());
45
+			}, Sequence::fromDER($data)->elements());
46
+		if (!count($attribs)) {
47
+			throw new \UnexpectedValueException(
48
+				"SubjectDirectoryAttributes must have at least one Attribute.");
49
+		}
50
+		return new self($critical, ...$attribs);
51
+	}
52 52
     
53
-    /**
54
-     *
55
-     * {@inheritdoc}
56
-     * @return Sequence
57
-     */
58
-    protected function _valueASN1(): Sequence
59
-    {
60
-        if (!count($this->_attributes)) {
61
-            throw new \LogicException("No attributes");
62
-        }
63
-        $elements = array_map(
64
-            function (Attribute $attr) {
65
-                return $attr->toASN1();
66
-            }, array_values($this->_attributes));
67
-        return new Sequence(...$elements);
68
-    }
53
+	/**
54
+	 *
55
+	 * {@inheritdoc}
56
+	 * @return Sequence
57
+	 */
58
+	protected function _valueASN1(): Sequence
59
+	{
60
+		if (!count($this->_attributes)) {
61
+			throw new \LogicException("No attributes");
62
+		}
63
+		$elements = array_map(
64
+			function (Attribute $attr) {
65
+				return $attr->toASN1();
66
+			}, array_values($this->_attributes));
67
+		return new Sequence(...$elements);
68
+	}
69 69
 }
Please login to merge, or discard this patch.
lib/X509/Certificate/Extension/TargetInformationExtension.php 1 patch
Indentation   +123 added lines, -123 removed lines patch added patch discarded remove patch
@@ -19,139 +19,139 @@
 block discarded – undo
19 19
  * @link https://tools.ietf.org/html/rfc5755#section-4.3.2
20 20
  */
21 21
 class TargetInformationExtension extends Extension implements 
22
-    \Countable,
23
-    \IteratorAggregate
22
+	\Countable,
23
+	\IteratorAggregate
24 24
 {
25
-    /**
26
-     * Targets elements.
27
-     *
28
-     * @var Targets[] $_targets
29
-     */
30
-    protected $_targets;
25
+	/**
26
+	 * Targets elements.
27
+	 *
28
+	 * @var Targets[] $_targets
29
+	 */
30
+	protected $_targets;
31 31
     
32
-    /**
33
-     * Targets[] merged to single Targets.
34
-     *
35
-     * @var Targets|null
36
-     */
37
-    private $_merged;
32
+	/**
33
+	 * Targets[] merged to single Targets.
34
+	 *
35
+	 * @var Targets|null
36
+	 */
37
+	private $_merged;
38 38
     
39
-    /**
40
-     * Constructor.
41
-     *
42
-     * @param bool $critical
43
-     * @param Targets[] $targets
44
-     */
45
-    public function __construct(bool $critical, Targets ...$targets)
46
-    {
47
-        parent::__construct(self::OID_TARGET_INFORMATION, $critical);
48
-        $this->_targets = $targets;
49
-    }
39
+	/**
40
+	 * Constructor.
41
+	 *
42
+	 * @param bool $critical
43
+	 * @param Targets[] $targets
44
+	 */
45
+	public function __construct(bool $critical, Targets ...$targets)
46
+	{
47
+		parent::__construct(self::OID_TARGET_INFORMATION, $critical);
48
+		$this->_targets = $targets;
49
+	}
50 50
     
51
-    /**
52
-     * Initialize from one or more Target objects.
53
-     *
54
-     * Extension criticality shall be set to true as specified by RFC 5755.
55
-     *
56
-     * @param Target[] $target
57
-     * @return TargetInformationExtension
58
-     */
59
-    public static function fromTargets(Target ...$target): self
60
-    {
61
-        return new self(true, new Targets(...$target));
62
-    }
51
+	/**
52
+	 * Initialize from one or more Target objects.
53
+	 *
54
+	 * Extension criticality shall be set to true as specified by RFC 5755.
55
+	 *
56
+	 * @param Target[] $target
57
+	 * @return TargetInformationExtension
58
+	 */
59
+	public static function fromTargets(Target ...$target): self
60
+	{
61
+		return new self(true, new Targets(...$target));
62
+	}
63 63
     
64
-    /**
65
-     * Reset internal state on clone.
66
-     */
67
-    public function __clone()
68
-    {
69
-        $this->_merged = null;
70
-    }
64
+	/**
65
+	 * Reset internal state on clone.
66
+	 */
67
+	public function __clone()
68
+	{
69
+		$this->_merged = null;
70
+	}
71 71
     
72
-    /**
73
-     *
74
-     * {@inheritdoc}
75
-     * @return self
76
-     */
77
-    protected static function _fromDER(string $data, bool $critical): self
78
-    {
79
-        $targets = array_map(
80
-            function (UnspecifiedType $el) {
81
-                return Targets::fromASN1($el->asSequence());
82
-            }, Sequence::fromDER($data)->elements());
83
-        return new self($critical, ...$targets);
84
-    }
72
+	/**
73
+	 *
74
+	 * {@inheritdoc}
75
+	 * @return self
76
+	 */
77
+	protected static function _fromDER(string $data, bool $critical): self
78
+	{
79
+		$targets = array_map(
80
+			function (UnspecifiedType $el) {
81
+				return Targets::fromASN1($el->asSequence());
82
+			}, Sequence::fromDER($data)->elements());
83
+		return new self($critical, ...$targets);
84
+	}
85 85
     
86
-    /**
87
-     * Get all targets.
88
-     *
89
-     * @return Targets
90
-     */
91
-    public function targets(): Targets
92
-    {
93
-        if (!isset($this->_merged)) {
94
-            $a = array();
95
-            foreach ($this->_targets as $targets) {
96
-                $a = array_merge($a, $targets->all());
97
-            }
98
-            $this->_merged = new Targets(...$a);
99
-        }
100
-        return $this->_merged;
101
-    }
86
+	/**
87
+	 * Get all targets.
88
+	 *
89
+	 * @return Targets
90
+	 */
91
+	public function targets(): Targets
92
+	{
93
+		if (!isset($this->_merged)) {
94
+			$a = array();
95
+			foreach ($this->_targets as $targets) {
96
+				$a = array_merge($a, $targets->all());
97
+			}
98
+			$this->_merged = new Targets(...$a);
99
+		}
100
+		return $this->_merged;
101
+	}
102 102
     
103
-    /**
104
-     * Get all name targets.
105
-     *
106
-     * @return Target[]
107
-     */
108
-    public function names(): array
109
-    {
110
-        return $this->targets()->nameTargets();
111
-    }
103
+	/**
104
+	 * Get all name targets.
105
+	 *
106
+	 * @return Target[]
107
+	 */
108
+	public function names(): array
109
+	{
110
+		return $this->targets()->nameTargets();
111
+	}
112 112
     
113
-    /**
114
-     * Get all group targets.
115
-     *
116
-     * @return Target[]
117
-     */
118
-    public function groups(): array
119
-    {
120
-        return $this->targets()->groupTargets();
121
-    }
113
+	/**
114
+	 * Get all group targets.
115
+	 *
116
+	 * @return Target[]
117
+	 */
118
+	public function groups(): array
119
+	{
120
+		return $this->targets()->groupTargets();
121
+	}
122 122
     
123
-    /**
124
-     *
125
-     * @see \X509\Certificate\Extension\Extension::_valueASN1()
126
-     * @return Sequence
127
-     */
128
-    protected function _valueASN1(): Sequence
129
-    {
130
-        $elements = array_map(
131
-            function (Targets $targets) {
132
-                return $targets->toASN1();
133
-            }, $this->_targets);
134
-        return new Sequence(...$elements);
135
-    }
123
+	/**
124
+	 *
125
+	 * @see \X509\Certificate\Extension\Extension::_valueASN1()
126
+	 * @return Sequence
127
+	 */
128
+	protected function _valueASN1(): Sequence
129
+	{
130
+		$elements = array_map(
131
+			function (Targets $targets) {
132
+				return $targets->toASN1();
133
+			}, $this->_targets);
134
+		return new Sequence(...$elements);
135
+	}
136 136
     
137
-    /**
138
-     *
139
-     * @see \Countable::count()
140
-     * @return int
141
-     */
142
-    public function count(): int
143
-    {
144
-        return count($this->targets());
145
-    }
137
+	/**
138
+	 *
139
+	 * @see \Countable::count()
140
+	 * @return int
141
+	 */
142
+	public function count(): int
143
+	{
144
+		return count($this->targets());
145
+	}
146 146
     
147
-    /**
148
-     * Get iterator for targets.
149
-     *
150
-     * @see \IteratorAggregate::getIterator()
151
-     * @return \ArrayIterator
152
-     */
153
-    public function getIterator(): \ArrayIterator
154
-    {
155
-        return new \ArrayIterator($this->targets()->all());
156
-    }
147
+	/**
148
+	 * Get iterator for targets.
149
+	 *
150
+	 * @see \IteratorAggregate::getIterator()
151
+	 * @return \ArrayIterator
152
+	 */
153
+	public function getIterator(): \ArrayIterator
154
+	{
155
+		return new \ArrayIterator($this->targets()->all());
156
+	}
157 157
 }
Please login to merge, or discard this patch.
lib/X509/CertificationPath/Policy/PolicyNode.php 1 patch
Indentation   +238 added lines, -238 removed lines patch added patch discarded remove patch
@@ -14,265 +14,265 @@
 block discarded – undo
14 14
  */
15 15
 class PolicyNode implements \IteratorAggregate, \Countable
16 16
 {
17
-    /**
18
-     * Policy OID.
19
-     *
20
-     * @var string
21
-     */
22
-    protected $_validPolicy;
17
+	/**
18
+	 * Policy OID.
19
+	 *
20
+	 * @var string
21
+	 */
22
+	protected $_validPolicy;
23 23
     
24
-    /**
25
-     * List of qualifiers.
26
-     *
27
-     * @var \X509\Certificate\Extension\CertificatePolicy\PolicyQualifierInfo[]
28
-     */
29
-    protected $_qualifiers;
24
+	/**
25
+	 * List of qualifiers.
26
+	 *
27
+	 * @var \X509\Certificate\Extension\CertificatePolicy\PolicyQualifierInfo[]
28
+	 */
29
+	protected $_qualifiers;
30 30
     
31
-    /**
32
-     * List of expected policy OIDs.
33
-     *
34
-     * @var string[]
35
-     */
36
-    protected $_expectedPolicies;
31
+	/**
32
+	 * List of expected policy OIDs.
33
+	 *
34
+	 * @var string[]
35
+	 */
36
+	protected $_expectedPolicies;
37 37
     
38
-    /**
39
-     * List of child nodes.
40
-     *
41
-     * @var PolicyNode[]
42
-     */
43
-    protected $_children;
38
+	/**
39
+	 * List of child nodes.
40
+	 *
41
+	 * @var PolicyNode[]
42
+	 */
43
+	protected $_children;
44 44
     
45
-    /**
46
-     * Reference to the parent node.
47
-     *
48
-     * @var PolicyNode|null
49
-     */
50
-    protected $_parent;
45
+	/**
46
+	 * Reference to the parent node.
47
+	 *
48
+	 * @var PolicyNode|null
49
+	 */
50
+	protected $_parent;
51 51
     
52
-    /**
53
-     * Constructor.
54
-     *
55
-     * @param string $valid_policy Policy OID
56
-     * @param \X509\Certificate\Extension\CertificatePolicy\PolicyQualifierInfo[] $qualifiers
57
-     * @param string[] $expected_policies
58
-     */
59
-    public function __construct(string $valid_policy, array $qualifiers,
60
-        array $expected_policies)
61
-    {
62
-        $this->_validPolicy = $valid_policy;
63
-        $this->_qualifiers = $qualifiers;
64
-        $this->_expectedPolicies = $expected_policies;
65
-        $this->_children = array();
66
-    }
52
+	/**
53
+	 * Constructor.
54
+	 *
55
+	 * @param string $valid_policy Policy OID
56
+	 * @param \X509\Certificate\Extension\CertificatePolicy\PolicyQualifierInfo[] $qualifiers
57
+	 * @param string[] $expected_policies
58
+	 */
59
+	public function __construct(string $valid_policy, array $qualifiers,
60
+		array $expected_policies)
61
+	{
62
+		$this->_validPolicy = $valid_policy;
63
+		$this->_qualifiers = $qualifiers;
64
+		$this->_expectedPolicies = $expected_policies;
65
+		$this->_children = array();
66
+	}
67 67
     
68
-    /**
69
-     * Create initial node for the policy tree.
70
-     *
71
-     * @return self
72
-     */
73
-    public static function anyPolicyNode(): self
74
-    {
75
-        return new self(PolicyInformation::OID_ANY_POLICY, array(),
76
-            array(PolicyInformation::OID_ANY_POLICY));
77
-    }
68
+	/**
69
+	 * Create initial node for the policy tree.
70
+	 *
71
+	 * @return self
72
+	 */
73
+	public static function anyPolicyNode(): self
74
+	{
75
+		return new self(PolicyInformation::OID_ANY_POLICY, array(),
76
+			array(PolicyInformation::OID_ANY_POLICY));
77
+	}
78 78
     
79
-    /**
80
-     * Get the valid policy OID.
81
-     *
82
-     * @return string
83
-     */
84
-    public function validPolicy(): string
85
-    {
86
-        return $this->_validPolicy;
87
-    }
79
+	/**
80
+	 * Get the valid policy OID.
81
+	 *
82
+	 * @return string
83
+	 */
84
+	public function validPolicy(): string
85
+	{
86
+		return $this->_validPolicy;
87
+	}
88 88
     
89
-    /**
90
-     * Check whether node has anyPolicy as a valid policy.
91
-     *
92
-     * @return boolean
93
-     */
94
-    public function isAnyPolicy(): bool
95
-    {
96
-        return PolicyInformation::OID_ANY_POLICY == $this->_validPolicy;
97
-    }
89
+	/**
90
+	 * Check whether node has anyPolicy as a valid policy.
91
+	 *
92
+	 * @return boolean
93
+	 */
94
+	public function isAnyPolicy(): bool
95
+	{
96
+		return PolicyInformation::OID_ANY_POLICY == $this->_validPolicy;
97
+	}
98 98
     
99
-    /**
100
-     * Get the qualifier set.
101
-     *
102
-     * @return \X509\Certificate\Extension\CertificatePolicy\PolicyQualifierInfo[]
103
-     */
104
-    public function qualifiers(): array
105
-    {
106
-        return $this->_qualifiers;
107
-    }
99
+	/**
100
+	 * Get the qualifier set.
101
+	 *
102
+	 * @return \X509\Certificate\Extension\CertificatePolicy\PolicyQualifierInfo[]
103
+	 */
104
+	public function qualifiers(): array
105
+	{
106
+		return $this->_qualifiers;
107
+	}
108 108
     
109
-    /**
110
-     * Check whether node has OID as an expected policy.
111
-     *
112
-     * @param string $oid
113
-     * @return boolean
114
-     */
115
-    public function hasExpectedPolicy(string $oid): bool
116
-    {
117
-        return in_array($oid, $this->_expectedPolicies);
118
-    }
109
+	/**
110
+	 * Check whether node has OID as an expected policy.
111
+	 *
112
+	 * @param string $oid
113
+	 * @return boolean
114
+	 */
115
+	public function hasExpectedPolicy(string $oid): bool
116
+	{
117
+		return in_array($oid, $this->_expectedPolicies);
118
+	}
119 119
     
120
-    /**
121
-     * Get the expected policy set.
122
-     *
123
-     * @return string[]
124
-     */
125
-    public function expectedPolicies(): array
126
-    {
127
-        return $this->_expectedPolicies;
128
-    }
120
+	/**
121
+	 * Get the expected policy set.
122
+	 *
123
+	 * @return string[]
124
+	 */
125
+	public function expectedPolicies(): array
126
+	{
127
+		return $this->_expectedPolicies;
128
+	}
129 129
     
130
-    /**
131
-     * Set expected policies.
132
-     *
133
-     * @param string ...$oids Policy OIDs
134
-     */
135
-    public function setExpectedPolicies(string ...$oids)
136
-    {
137
-        $this->_expectedPolicies = $oids;
138
-    }
130
+	/**
131
+	 * Set expected policies.
132
+	 *
133
+	 * @param string ...$oids Policy OIDs
134
+	 */
135
+	public function setExpectedPolicies(string ...$oids)
136
+	{
137
+		$this->_expectedPolicies = $oids;
138
+	}
139 139
     
140
-    /**
141
-     * Check whether node has a child node with given valid policy OID.
142
-     *
143
-     * @param string $oid
144
-     * @return boolean
145
-     */
146
-    public function hasChildWithValidPolicy(string $oid): bool
147
-    {
148
-        foreach ($this->_children as $node) {
149
-            if ($node->validPolicy() == $oid) {
150
-                return true;
151
-            }
152
-        }
153
-        return false;
154
-    }
140
+	/**
141
+	 * Check whether node has a child node with given valid policy OID.
142
+	 *
143
+	 * @param string $oid
144
+	 * @return boolean
145
+	 */
146
+	public function hasChildWithValidPolicy(string $oid): bool
147
+	{
148
+		foreach ($this->_children as $node) {
149
+			if ($node->validPolicy() == $oid) {
150
+				return true;
151
+			}
152
+		}
153
+		return false;
154
+	}
155 155
     
156
-    /**
157
-     * Add child node.
158
-     *
159
-     * @param PolicyNode $node
160
-     * @return self
161
-     */
162
-    public function addChild(PolicyNode $node): self
163
-    {
164
-        $id = spl_object_hash($node);
165
-        $node->_parent = $this;
166
-        $this->_children[$id] = $node;
167
-        return $this;
168
-    }
156
+	/**
157
+	 * Add child node.
158
+	 *
159
+	 * @param PolicyNode $node
160
+	 * @return self
161
+	 */
162
+	public function addChild(PolicyNode $node): self
163
+	{
164
+		$id = spl_object_hash($node);
165
+		$node->_parent = $this;
166
+		$this->_children[$id] = $node;
167
+		return $this;
168
+	}
169 169
     
170
-    /**
171
-     * Get the child nodes.
172
-     *
173
-     * @return PolicyNode[]
174
-     */
175
-    public function children(): array
176
-    {
177
-        return array_values($this->_children);
178
-    }
170
+	/**
171
+	 * Get the child nodes.
172
+	 *
173
+	 * @return PolicyNode[]
174
+	 */
175
+	public function children(): array
176
+	{
177
+		return array_values($this->_children);
178
+	}
179 179
     
180
-    /**
181
-     * Remove this node from the tree.
182
-     *
183
-     * @return self The removed node
184
-     */
185
-    public function remove(): self
186
-    {
187
-        if ($this->_parent) {
188
-            $id = spl_object_hash($this);
189
-            unset($this->_parent->_children[$id]);
190
-            unset($this->_parent);
191
-        }
192
-        return $this;
193
-    }
180
+	/**
181
+	 * Remove this node from the tree.
182
+	 *
183
+	 * @return self The removed node
184
+	 */
185
+	public function remove(): self
186
+	{
187
+		if ($this->_parent) {
188
+			$id = spl_object_hash($this);
189
+			unset($this->_parent->_children[$id]);
190
+			unset($this->_parent);
191
+		}
192
+		return $this;
193
+	}
194 194
     
195
-    /**
196
-     * Check whether node has a parent.
197
-     *
198
-     * @return bool
199
-     */
200
-    public function hasParent(): bool
201
-    {
202
-        return isset($this->_parent);
203
-    }
195
+	/**
196
+	 * Check whether node has a parent.
197
+	 *
198
+	 * @return bool
199
+	 */
200
+	public function hasParent(): bool
201
+	{
202
+		return isset($this->_parent);
203
+	}
204 204
     
205
-    /**
206
-     * Get the parent node.
207
-     *
208
-     * @return PolicyNode|null
209
-     */
210
-    public function parent()
211
-    {
212
-        return $this->_parent;
213
-    }
205
+	/**
206
+	 * Get the parent node.
207
+	 *
208
+	 * @return PolicyNode|null
209
+	 */
210
+	public function parent()
211
+	{
212
+		return $this->_parent;
213
+	}
214 214
     
215
-    /**
216
-     * Get chain of parent nodes from this node's parent to the root node.
217
-     *
218
-     * @return PolicyNode[]
219
-     */
220
-    public function parents(): array
221
-    {
222
-        if (!$this->_parent) {
223
-            return array();
224
-        }
225
-        $nodes = $this->_parent->parents();
226
-        $nodes[] = $this->_parent;
227
-        return array_reverse($nodes);
228
-    }
215
+	/**
216
+	 * Get chain of parent nodes from this node's parent to the root node.
217
+	 *
218
+	 * @return PolicyNode[]
219
+	 */
220
+	public function parents(): array
221
+	{
222
+		if (!$this->_parent) {
223
+			return array();
224
+		}
225
+		$nodes = $this->_parent->parents();
226
+		$nodes[] = $this->_parent;
227
+		return array_reverse($nodes);
228
+	}
229 229
     
230
-    /**
231
-     * Walk tree from this node, applying a callback for each node.
232
-     *
233
-     * Nodes are traversed depth-first and callback shall be applied post-order.
234
-     *
235
-     * @param callable $fn
236
-     */
237
-    public function walkNodes(callable $fn)
238
-    {
239
-        foreach ($this->_children as $node) {
240
-            $node->walkNodes($fn);
241
-        }
242
-        $fn($this);
243
-    }
230
+	/**
231
+	 * Walk tree from this node, applying a callback for each node.
232
+	 *
233
+	 * Nodes are traversed depth-first and callback shall be applied post-order.
234
+	 *
235
+	 * @param callable $fn
236
+	 */
237
+	public function walkNodes(callable $fn)
238
+	{
239
+		foreach ($this->_children as $node) {
240
+			$node->walkNodes($fn);
241
+		}
242
+		$fn($this);
243
+	}
244 244
     
245
-    /**
246
-     * Get the total number of nodes in a tree.
247
-     *
248
-     * @return int
249
-     */
250
-    public function nodeCount(): int
251
-    {
252
-        $c = 1;
253
-        foreach ($this->_children as $child) {
254
-            $c += $child->nodeCount();
255
-        }
256
-        return $c;
257
-    }
245
+	/**
246
+	 * Get the total number of nodes in a tree.
247
+	 *
248
+	 * @return int
249
+	 */
250
+	public function nodeCount(): int
251
+	{
252
+		$c = 1;
253
+		foreach ($this->_children as $child) {
254
+			$c += $child->nodeCount();
255
+		}
256
+		return $c;
257
+	}
258 258
     
259
-    /**
260
-     * Get the number of child nodes.
261
-     *
262
-     * @see \Countable::count()
263
-     */
264
-    public function count(): int
265
-    {
266
-        return count($this->_children);
267
-    }
259
+	/**
260
+	 * Get the number of child nodes.
261
+	 *
262
+	 * @see \Countable::count()
263
+	 */
264
+	public function count(): int
265
+	{
266
+		return count($this->_children);
267
+	}
268 268
     
269
-    /**
270
-     * Get iterator for the child nodes.
271
-     *
272
-     * @see \IteratorAggregate::getIterator()
273
-     */
274
-    public function getIterator(): \ArrayIterator
275
-    {
276
-        return new \ArrayIterator($this->_children);
277
-    }
269
+	/**
270
+	 * Get iterator for the child nodes.
271
+	 *
272
+	 * @see \IteratorAggregate::getIterator()
273
+	 */
274
+	public function getIterator(): \ArrayIterator
275
+	{
276
+		return new \ArrayIterator($this->_children);
277
+	}
278 278
 }
Please login to merge, or discard this patch.
lib/X509/CertificationPath/Policy/PolicyTree.php 1 patch
Indentation   +393 added lines, -393 removed lines patch added patch discarded remove patch
@@ -10,411 +10,411 @@
 block discarded – undo
10 10
 
11 11
 class PolicyTree
12 12
 {
13
-    /**
14
-     * Root node at depth zero.
15
-     *
16
-     * @var PolicyNode|null
17
-     */
18
-    protected $_root;
13
+	/**
14
+	 * Root node at depth zero.
15
+	 *
16
+	 * @var PolicyNode|null
17
+	 */
18
+	protected $_root;
19 19
     
20
-    /**
21
-     * Constructor.
22
-     *
23
-     * @param PolicyNode $root Initial root node
24
-     */
25
-    public function __construct(PolicyNode $root)
26
-    {
27
-        $this->_root = $root;
28
-    }
20
+	/**
21
+	 * Constructor.
22
+	 *
23
+	 * @param PolicyNode $root Initial root node
24
+	 */
25
+	public function __construct(PolicyNode $root)
26
+	{
27
+		$this->_root = $root;
28
+	}
29 29
     
30
-    /**
31
-     * Process policy information from the certificate.
32
-     *
33
-     * Certificate policies extension must be present.
34
-     *
35
-     * @param ValidatorState $state
36
-     * @param Certificate $cert
37
-     * @return ValidatorState
38
-     */
39
-    public function processPolicies(ValidatorState $state, Certificate $cert): ValidatorState
40
-    {
41
-        $policies = $cert->tbsCertificate()
42
-            ->extensions()
43
-            ->certificatePolicies();
44
-        $tree = clone $this;
45
-        // (d.1) for each policy P not equal to anyPolicy
46
-        foreach ($policies as $policy) {
47
-            if ($policy->isAnyPolicy()) {
48
-                $tree->_processAnyPolicy($policy, $cert, $state);
49
-            } else {
50
-                $tree->_processPolicy($policy, $state);
51
-            }
52
-        }
53
-        // if whole tree is pruned
54
-        if (!$tree->_pruneTree($state->index() - 1)) {
55
-            return $state->withoutValidPolicyTree();
56
-        }
57
-        return $state->withValidPolicyTree($tree);
58
-    }
30
+	/**
31
+	 * Process policy information from the certificate.
32
+	 *
33
+	 * Certificate policies extension must be present.
34
+	 *
35
+	 * @param ValidatorState $state
36
+	 * @param Certificate $cert
37
+	 * @return ValidatorState
38
+	 */
39
+	public function processPolicies(ValidatorState $state, Certificate $cert): ValidatorState
40
+	{
41
+		$policies = $cert->tbsCertificate()
42
+			->extensions()
43
+			->certificatePolicies();
44
+		$tree = clone $this;
45
+		// (d.1) for each policy P not equal to anyPolicy
46
+		foreach ($policies as $policy) {
47
+			if ($policy->isAnyPolicy()) {
48
+				$tree->_processAnyPolicy($policy, $cert, $state);
49
+			} else {
50
+				$tree->_processPolicy($policy, $state);
51
+			}
52
+		}
53
+		// if whole tree is pruned
54
+		if (!$tree->_pruneTree($state->index() - 1)) {
55
+			return $state->withoutValidPolicyTree();
56
+		}
57
+		return $state->withValidPolicyTree($tree);
58
+	}
59 59
     
60
-    /**
61
-     * Process policy mappings from the certificate.
62
-     *
63
-     * @param ValidatorState $state
64
-     * @param Certificate $cert
65
-     * @return ValidatorState
66
-     */
67
-    public function processMappings(ValidatorState $state, Certificate $cert): ValidatorState
68
-    {
69
-        $tree = clone $this;
70
-        if ($state->policyMapping() > 0) {
71
-            $tree->_applyMappings($cert, $state);
72
-        } else if ($state->policyMapping() == 0) {
73
-            $tree->_deleteMappings($cert, $state);
74
-        }
75
-        // if whole tree is pruned
76
-        if (!$tree->_root) {
77
-            return $state->withoutValidPolicyTree();
78
-        }
79
-        return $state->withValidPolicyTree($tree);
80
-    }
60
+	/**
61
+	 * Process policy mappings from the certificate.
62
+	 *
63
+	 * @param ValidatorState $state
64
+	 * @param Certificate $cert
65
+	 * @return ValidatorState
66
+	 */
67
+	public function processMappings(ValidatorState $state, Certificate $cert): ValidatorState
68
+	{
69
+		$tree = clone $this;
70
+		if ($state->policyMapping() > 0) {
71
+			$tree->_applyMappings($cert, $state);
72
+		} else if ($state->policyMapping() == 0) {
73
+			$tree->_deleteMappings($cert, $state);
74
+		}
75
+		// if whole tree is pruned
76
+		if (!$tree->_root) {
77
+			return $state->withoutValidPolicyTree();
78
+		}
79
+		return $state->withValidPolicyTree($tree);
80
+	}
81 81
     
82
-    /**
83
-     * Calculate policy intersection as specified in Wrap-Up Procedure 6.1.5.g.
84
-     *
85
-     * @param ValidatorState $state
86
-     * @param array $policies
87
-     * @return ValidatorState
88
-     */
89
-    public function calculateIntersection(ValidatorState $state, array $policies): ValidatorState
90
-    {
91
-        $tree = clone $this;
92
-        $valid_policy_node_set = $tree->_validPolicyNodeSet();
93
-        // 2. If the valid_policy of any node in the valid_policy_node_set
94
-        // is not in the user-initial-policy-set and is not anyPolicy,
95
-        // delete this node and all its children.
96
-        $valid_policy_node_set = array_filter($valid_policy_node_set,
97
-            function (PolicyNode $node) use ($policies) {
98
-                if ($node->isAnyPolicy()) {
99
-                    return true;
100
-                }
101
-                if (in_array($node->validPolicy(), $policies)) {
102
-                    return true;
103
-                }
104
-                $node->remove();
105
-                return false;
106
-            });
107
-        // array of valid policy OIDs
108
-        $valid_policy_set = array_map(
109
-            function (PolicyNode $node) {
110
-                return $node->validPolicy();
111
-            }, $valid_policy_node_set);
112
-        // 3. If the valid_policy_tree includes a node of depth n with
113
-        // the valid_policy anyPolicy and the user-initial-policy-set 
114
-        // is not any-policy
115
-        foreach ($tree->_nodesAtDepth($state->index()) as $node) {
116
-            if ($node->hasParent() && $node->isAnyPolicy()) {
117
-                // a. Set P-Q to the qualifier_set in the node of depth n
118
-                // with valid_policy anyPolicy.
119
-                $pq = $node->qualifiers();
120
-                // b. For each P-OID in the user-initial-policy-set that is not
121
-                // the valid_policy of a node in the valid_policy_node_set,
122
-                // create a child node whose parent is the node of depth n-1
123
-                // with the valid_policy anyPolicy.
124
-                $poids = array_diff($policies, $valid_policy_set);
125
-                foreach ($tree->_nodesAtDepth($state->index() - 1) as $parent) {
126
-                    if ($parent->isAnyPolicy()) {
127
-                        // Set the values in the child node as follows: 
128
-                        // set the valid_policy to P-OID, set the qualifier_set
129
-                        // to P-Q, and set the expected_policy_set to {P-OID}.
130
-                        foreach ($poids as $poid) {
131
-                            $parent->addChild(
132
-                                new PolicyNode($poid, $pq, array($poid)));
133
-                        }
134
-                        break;
135
-                    }
136
-                }
137
-                // c. Delete the node of depth n with the
138
-                // valid_policy anyPolicy.
139
-                $node->remove();
140
-            }
141
-        }
142
-        // 4. If there is a node in the valid_policy_tree of depth n-1 or less
143
-        // without any child nodes, delete that node. Repeat this step until
144
-        // there are no nodes of depth n-1 or less without children.
145
-        if (!$tree->_pruneTree($state->index() - 1)) {
146
-            return $state->withoutValidPolicyTree();
147
-        }
148
-        return $state->withValidPolicyTree($tree);
149
-    }
82
+	/**
83
+	 * Calculate policy intersection as specified in Wrap-Up Procedure 6.1.5.g.
84
+	 *
85
+	 * @param ValidatorState $state
86
+	 * @param array $policies
87
+	 * @return ValidatorState
88
+	 */
89
+	public function calculateIntersection(ValidatorState $state, array $policies): ValidatorState
90
+	{
91
+		$tree = clone $this;
92
+		$valid_policy_node_set = $tree->_validPolicyNodeSet();
93
+		// 2. If the valid_policy of any node in the valid_policy_node_set
94
+		// is not in the user-initial-policy-set and is not anyPolicy,
95
+		// delete this node and all its children.
96
+		$valid_policy_node_set = array_filter($valid_policy_node_set,
97
+			function (PolicyNode $node) use ($policies) {
98
+				if ($node->isAnyPolicy()) {
99
+					return true;
100
+				}
101
+				if (in_array($node->validPolicy(), $policies)) {
102
+					return true;
103
+				}
104
+				$node->remove();
105
+				return false;
106
+			});
107
+		// array of valid policy OIDs
108
+		$valid_policy_set = array_map(
109
+			function (PolicyNode $node) {
110
+				return $node->validPolicy();
111
+			}, $valid_policy_node_set);
112
+		// 3. If the valid_policy_tree includes a node of depth n with
113
+		// the valid_policy anyPolicy and the user-initial-policy-set 
114
+		// is not any-policy
115
+		foreach ($tree->_nodesAtDepth($state->index()) as $node) {
116
+			if ($node->hasParent() && $node->isAnyPolicy()) {
117
+				// a. Set P-Q to the qualifier_set in the node of depth n
118
+				// with valid_policy anyPolicy.
119
+				$pq = $node->qualifiers();
120
+				// b. For each P-OID in the user-initial-policy-set that is not
121
+				// the valid_policy of a node in the valid_policy_node_set,
122
+				// create a child node whose parent is the node of depth n-1
123
+				// with the valid_policy anyPolicy.
124
+				$poids = array_diff($policies, $valid_policy_set);
125
+				foreach ($tree->_nodesAtDepth($state->index() - 1) as $parent) {
126
+					if ($parent->isAnyPolicy()) {
127
+						// Set the values in the child node as follows: 
128
+						// set the valid_policy to P-OID, set the qualifier_set
129
+						// to P-Q, and set the expected_policy_set to {P-OID}.
130
+						foreach ($poids as $poid) {
131
+							$parent->addChild(
132
+								new PolicyNode($poid, $pq, array($poid)));
133
+						}
134
+						break;
135
+					}
136
+				}
137
+				// c. Delete the node of depth n with the
138
+				// valid_policy anyPolicy.
139
+				$node->remove();
140
+			}
141
+		}
142
+		// 4. If there is a node in the valid_policy_tree of depth n-1 or less
143
+		// without any child nodes, delete that node. Repeat this step until
144
+		// there are no nodes of depth n-1 or less without children.
145
+		if (!$tree->_pruneTree($state->index() - 1)) {
146
+			return $state->withoutValidPolicyTree();
147
+		}
148
+		return $state->withValidPolicyTree($tree);
149
+	}
150 150
     
151
-    /**
152
-     * Get policies at given policy tree depth.
153
-     *
154
-     * @param int $i Depth in range 1..n
155
-     * @return PolicyInformation[]
156
-     */
157
-    public function policiesAtDepth(int $i): array
158
-    {
159
-        $policies = array();
160
-        foreach ($this->_nodesAtDepth($i) as $node) {
161
-            $policies[] = new PolicyInformation($node->validPolicy(),
162
-                ...$node->qualifiers());
163
-        }
164
-        return $policies;
165
-    }
151
+	/**
152
+	 * Get policies at given policy tree depth.
153
+	 *
154
+	 * @param int $i Depth in range 1..n
155
+	 * @return PolicyInformation[]
156
+	 */
157
+	public function policiesAtDepth(int $i): array
158
+	{
159
+		$policies = array();
160
+		foreach ($this->_nodesAtDepth($i) as $node) {
161
+			$policies[] = new PolicyInformation($node->validPolicy(),
162
+				...$node->qualifiers());
163
+		}
164
+		return $policies;
165
+	}
166 166
     
167
-    /**
168
-     * Process single policy information.
169
-     *
170
-     * @param PolicyInformation $policy
171
-     * @param ValidatorState $state
172
-     */
173
-    protected function _processPolicy(PolicyInformation $policy,
174
-        ValidatorState $state)
175
-    {
176
-        $p_oid = $policy->oid();
177
-        $i = $state->index();
178
-        $match_count = 0;
179
-        // (d.1.i) for each node of depth i-1 in the valid_policy_tree...
180
-        foreach ($this->_nodesAtDepth($i - 1) as $node) {
181
-            // ...where P-OID is in the expected_policy_set
182
-            if ($node->hasExpectedPolicy($p_oid)) {
183
-                $node->addChild(
184
-                    new PolicyNode($p_oid, $policy->qualifiers(), array($p_oid)));
185
-                ++$match_count;
186
-            }
187
-        }
188
-        // (d.1.ii) if there was no match in step (i)...
189
-        if (!$match_count) {
190
-            // ...and the valid_policy_tree includes a node of depth i-1 with
191
-            // the valid_policy anyPolicy
192
-            foreach ($this->_nodesAtDepth($i - 1) as $node) {
193
-                if ($node->isAnyPolicy()) {
194
-                    $node->addChild(
195
-                        new PolicyNode($p_oid, $policy->qualifiers(),
196
-                            array($p_oid)));
197
-                }
198
-            }
199
-        }
200
-    }
167
+	/**
168
+	 * Process single policy information.
169
+	 *
170
+	 * @param PolicyInformation $policy
171
+	 * @param ValidatorState $state
172
+	 */
173
+	protected function _processPolicy(PolicyInformation $policy,
174
+		ValidatorState $state)
175
+	{
176
+		$p_oid = $policy->oid();
177
+		$i = $state->index();
178
+		$match_count = 0;
179
+		// (d.1.i) for each node of depth i-1 in the valid_policy_tree...
180
+		foreach ($this->_nodesAtDepth($i - 1) as $node) {
181
+			// ...where P-OID is in the expected_policy_set
182
+			if ($node->hasExpectedPolicy($p_oid)) {
183
+				$node->addChild(
184
+					new PolicyNode($p_oid, $policy->qualifiers(), array($p_oid)));
185
+				++$match_count;
186
+			}
187
+		}
188
+		// (d.1.ii) if there was no match in step (i)...
189
+		if (!$match_count) {
190
+			// ...and the valid_policy_tree includes a node of depth i-1 with
191
+			// the valid_policy anyPolicy
192
+			foreach ($this->_nodesAtDepth($i - 1) as $node) {
193
+				if ($node->isAnyPolicy()) {
194
+					$node->addChild(
195
+						new PolicyNode($p_oid, $policy->qualifiers(),
196
+							array($p_oid)));
197
+				}
198
+			}
199
+		}
200
+	}
201 201
     
202
-    /**
203
-     * Process anyPolicy policy information.
204
-     *
205
-     * @param PolicyInformation $policy
206
-     * @param Certificate $cert
207
-     * @param ValidatorState $state
208
-     */
209
-    protected function _processAnyPolicy(PolicyInformation $policy,
210
-        Certificate $cert, ValidatorState $state)
211
-    {
212
-        $i = $state->index();
213
-        // if (a) inhibit_anyPolicy is greater than 0 or
214
-        // (b) i<n and the certificate is self-issued
215
-        if (!($state->inhibitAnyPolicy() > 0 ||
216
-             ($i < $state->pathLength() && $cert->isSelfIssued()))) {
217
-            return;
218
-        }
219
-        // for each node in the valid_policy_tree of depth i-1
220
-        foreach ($this->_nodesAtDepth($i - 1) as $node) {
221
-            // for each value in the expected_policy_set
222
-            foreach ($node->expectedPolicies() as $p_oid) {
223
-                // that does not appear in a child node
224
-                if (!$node->hasChildWithValidPolicy($p_oid)) {
225
-                    $node->addChild(
226
-                        new PolicyNode($p_oid, $policy->qualifiers(),
227
-                            array($p_oid)));
228
-                }
229
-            }
230
-        }
231
-    }
202
+	/**
203
+	 * Process anyPolicy policy information.
204
+	 *
205
+	 * @param PolicyInformation $policy
206
+	 * @param Certificate $cert
207
+	 * @param ValidatorState $state
208
+	 */
209
+	protected function _processAnyPolicy(PolicyInformation $policy,
210
+		Certificate $cert, ValidatorState $state)
211
+	{
212
+		$i = $state->index();
213
+		// if (a) inhibit_anyPolicy is greater than 0 or
214
+		// (b) i<n and the certificate is self-issued
215
+		if (!($state->inhibitAnyPolicy() > 0 ||
216
+			 ($i < $state->pathLength() && $cert->isSelfIssued()))) {
217
+			return;
218
+		}
219
+		// for each node in the valid_policy_tree of depth i-1
220
+		foreach ($this->_nodesAtDepth($i - 1) as $node) {
221
+			// for each value in the expected_policy_set
222
+			foreach ($node->expectedPolicies() as $p_oid) {
223
+				// that does not appear in a child node
224
+				if (!$node->hasChildWithValidPolicy($p_oid)) {
225
+					$node->addChild(
226
+						new PolicyNode($p_oid, $policy->qualifiers(),
227
+							array($p_oid)));
228
+				}
229
+			}
230
+		}
231
+	}
232 232
     
233
-    /**
234
-     * Apply policy mappings to the policy tree.
235
-     *
236
-     * @param Certificate $cert
237
-     * @param ValidatorState $state
238
-     */
239
-    protected function _applyMappings(Certificate $cert, ValidatorState $state)
240
-    {
241
-        $policy_mappings = $cert->tbsCertificate()
242
-            ->extensions()
243
-            ->policyMappings();
244
-        // (6.1.4. b.1.) for each node in the valid_policy_tree of depth i...
245
-        foreach ($policy_mappings->flattenedMappings() as $idp => $sdps) {
246
-            $match_count = 0;
247
-            foreach ($this->_nodesAtDepth($state->index()) as $node) {
248
-                // ...where ID-P is the valid_policy
249
-                if ($node->validPolicy() == $idp) {
250
-                    // set expected_policy_set to the set of subjectDomainPolicy
251
-                    // values that are specified as equivalent to ID-P by
252
-                    // the policy mappings extension
253
-                    $node->setExpectedPolicies(...$sdps);
254
-                    ++$match_count;
255
-                }
256
-            }
257
-            // if no node of depth i in the valid_policy_tree has
258
-            // a valid_policy of ID-P...
259
-            if (!$match_count) {
260
-                $this->_applyAnyPolicyMapping($cert, $state, $idp, $sdps);
261
-            }
262
-        }
263
-    }
233
+	/**
234
+	 * Apply policy mappings to the policy tree.
235
+	 *
236
+	 * @param Certificate $cert
237
+	 * @param ValidatorState $state
238
+	 */
239
+	protected function _applyMappings(Certificate $cert, ValidatorState $state)
240
+	{
241
+		$policy_mappings = $cert->tbsCertificate()
242
+			->extensions()
243
+			->policyMappings();
244
+		// (6.1.4. b.1.) for each node in the valid_policy_tree of depth i...
245
+		foreach ($policy_mappings->flattenedMappings() as $idp => $sdps) {
246
+			$match_count = 0;
247
+			foreach ($this->_nodesAtDepth($state->index()) as $node) {
248
+				// ...where ID-P is the valid_policy
249
+				if ($node->validPolicy() == $idp) {
250
+					// set expected_policy_set to the set of subjectDomainPolicy
251
+					// values that are specified as equivalent to ID-P by
252
+					// the policy mappings extension
253
+					$node->setExpectedPolicies(...$sdps);
254
+					++$match_count;
255
+				}
256
+			}
257
+			// if no node of depth i in the valid_policy_tree has
258
+			// a valid_policy of ID-P...
259
+			if (!$match_count) {
260
+				$this->_applyAnyPolicyMapping($cert, $state, $idp, $sdps);
261
+			}
262
+		}
263
+	}
264 264
     
265
-    /**
266
-     * Apply anyPolicy mapping to the policy tree as specified in 6.1.4 (b)(1).
267
-     *
268
-     * @param Certificate $cert
269
-     * @param ValidatorState $state
270
-     * @param string $idp OID of the issuer domain policy
271
-     * @param array $sdps Array of subject domain policy OIDs
272
-     */
273
-    protected function _applyAnyPolicyMapping(Certificate $cert,
274
-        ValidatorState $state, $idp, array $sdps)
275
-    {
276
-        // (6.1.4. b.1.) ...but there is a node of depth i with
277
-        // a valid_policy of anyPolicy
278
-        foreach ($this->_nodesAtDepth($state->index()) as $node) {
279
-            if ($node->isAnyPolicy()) {
280
-                // then generate a child node of the node of depth i-1
281
-                // that has a valid_policy of anyPolicy as follows...
282
-                foreach ($this->_nodesAtDepth($state->index() - 1) as $node) {
283
-                    if ($node->isAnyPolicy()) {
284
-                        // try to fetch qualifiers of anyPolicy certificate policy
285
-                        $qualifiers = array();
286
-                        try {
287
-                            $qualifiers = $cert->tbsCertificate()
288
-                                ->extensions()
289
-                                ->certificatePolicies()
290
-                                ->anyPolicy()
291
-                                ->qualifiers();
292
-                        } catch (\LogicException $e) {
293
-                            // if there's no policies or no qualifiers
294
-                        }
295
-                        $node->addChild(
296
-                            new PolicyNode($idp, $qualifiers, $sdps));
297
-                        // bail after first anyPolicy has been processed
298
-                        break;
299
-                    }
300
-                }
301
-                // bail after first anyPolicy has been processed
302
-                break;
303
-            }
304
-        }
305
-    }
265
+	/**
266
+	 * Apply anyPolicy mapping to the policy tree as specified in 6.1.4 (b)(1).
267
+	 *
268
+	 * @param Certificate $cert
269
+	 * @param ValidatorState $state
270
+	 * @param string $idp OID of the issuer domain policy
271
+	 * @param array $sdps Array of subject domain policy OIDs
272
+	 */
273
+	protected function _applyAnyPolicyMapping(Certificate $cert,
274
+		ValidatorState $state, $idp, array $sdps)
275
+	{
276
+		// (6.1.4. b.1.) ...but there is a node of depth i with
277
+		// a valid_policy of anyPolicy
278
+		foreach ($this->_nodesAtDepth($state->index()) as $node) {
279
+			if ($node->isAnyPolicy()) {
280
+				// then generate a child node of the node of depth i-1
281
+				// that has a valid_policy of anyPolicy as follows...
282
+				foreach ($this->_nodesAtDepth($state->index() - 1) as $node) {
283
+					if ($node->isAnyPolicy()) {
284
+						// try to fetch qualifiers of anyPolicy certificate policy
285
+						$qualifiers = array();
286
+						try {
287
+							$qualifiers = $cert->tbsCertificate()
288
+								->extensions()
289
+								->certificatePolicies()
290
+								->anyPolicy()
291
+								->qualifiers();
292
+						} catch (\LogicException $e) {
293
+							// if there's no policies or no qualifiers
294
+						}
295
+						$node->addChild(
296
+							new PolicyNode($idp, $qualifiers, $sdps));
297
+						// bail after first anyPolicy has been processed
298
+						break;
299
+					}
300
+				}
301
+				// bail after first anyPolicy has been processed
302
+				break;
303
+			}
304
+		}
305
+	}
306 306
     
307
-    /**
308
-     * Delete nodes as specified in 6.1.4 (b)(2).
309
-     *
310
-     * @param Certificate $cert
311
-     * @param ValidatorState $state
312
-     */
313
-    protected function _deleteMappings(Certificate $cert, ValidatorState $state)
314
-    {
315
-        $idps = $cert->tbsCertificate()
316
-            ->extensions()
317
-            ->policyMappings()
318
-            ->issuerDomainPolicies();
319
-        // delete each node of depth i in the valid_policy_tree
320
-        // where ID-P is the valid_policy
321
-        foreach ($this->_nodesAtDepth($state->index()) as $node) {
322
-            if (in_array($node->validPolicy(), $idps)) {
323
-                $node->remove();
324
-            }
325
-        }
326
-        $this->_pruneTree($state->index() - 1);
327
-    }
307
+	/**
308
+	 * Delete nodes as specified in 6.1.4 (b)(2).
309
+	 *
310
+	 * @param Certificate $cert
311
+	 * @param ValidatorState $state
312
+	 */
313
+	protected function _deleteMappings(Certificate $cert, ValidatorState $state)
314
+	{
315
+		$idps = $cert->tbsCertificate()
316
+			->extensions()
317
+			->policyMappings()
318
+			->issuerDomainPolicies();
319
+		// delete each node of depth i in the valid_policy_tree
320
+		// where ID-P is the valid_policy
321
+		foreach ($this->_nodesAtDepth($state->index()) as $node) {
322
+			if (in_array($node->validPolicy(), $idps)) {
323
+				$node->remove();
324
+			}
325
+		}
326
+		$this->_pruneTree($state->index() - 1);
327
+	}
328 328
     
329
-    /**
330
-     * Prune tree starting from given depth.
331
-     *
332
-     * @param int $depth
333
-     * @return int The number of nodes left in a tree
334
-     */
335
-    protected function _pruneTree(int $depth): int
336
-    {
337
-        for ($i = $depth; $i > 0; --$i) {
338
-            foreach ($this->_nodesAtDepth($i) as $node) {
339
-                if (!count($node)) {
340
-                    $node->remove();
341
-                }
342
-            }
343
-        }
344
-        // if root has no children left
345
-        if (!count($this->_root)) {
346
-            $this->_root = null;
347
-            return 0;
348
-        }
349
-        return $this->_root->nodeCount();
350
-    }
329
+	/**
330
+	 * Prune tree starting from given depth.
331
+	 *
332
+	 * @param int $depth
333
+	 * @return int The number of nodes left in a tree
334
+	 */
335
+	protected function _pruneTree(int $depth): int
336
+	{
337
+		for ($i = $depth; $i > 0; --$i) {
338
+			foreach ($this->_nodesAtDepth($i) as $node) {
339
+				if (!count($node)) {
340
+					$node->remove();
341
+				}
342
+			}
343
+		}
344
+		// if root has no children left
345
+		if (!count($this->_root)) {
346
+			$this->_root = null;
347
+			return 0;
348
+		}
349
+		return $this->_root->nodeCount();
350
+	}
351 351
     
352
-    /**
353
-     * Get all nodes at given depth.
354
-     *
355
-     * @param int $i
356
-     * @return PolicyNode[]
357
-     */
358
-    protected function _nodesAtDepth(int $i): array
359
-    {
360
-        if (!$this->_root) {
361
-            return array();
362
-        }
363
-        $depth = 0;
364
-        $nodes = array($this->_root);
365
-        while ($depth < $i) {
366
-            $nodes = self::_gatherChildren(...$nodes);
367
-            if (!count($nodes)) {
368
-                break;
369
-            }
370
-            ++$depth;
371
-        }
372
-        return $nodes;
373
-    }
352
+	/**
353
+	 * Get all nodes at given depth.
354
+	 *
355
+	 * @param int $i
356
+	 * @return PolicyNode[]
357
+	 */
358
+	protected function _nodesAtDepth(int $i): array
359
+	{
360
+		if (!$this->_root) {
361
+			return array();
362
+		}
363
+		$depth = 0;
364
+		$nodes = array($this->_root);
365
+		while ($depth < $i) {
366
+			$nodes = self::_gatherChildren(...$nodes);
367
+			if (!count($nodes)) {
368
+				break;
369
+			}
370
+			++$depth;
371
+		}
372
+		return $nodes;
373
+	}
374 374
     
375
-    /**
376
-     * Get the valid policy node set as specified in spec 6.1.5.(g)(iii)1.
377
-     *
378
-     * @return PolicyNode[]
379
-     */
380
-    protected function _validPolicyNodeSet(): array
381
-    {
382
-        // 1. Determine the set of policy nodes whose parent nodes have
383
-        // a valid_policy of anyPolicy. This is the valid_policy_node_set.
384
-        $set = array();
385
-        if (!$this->_root) {
386
-            return $set;
387
-        }
388
-        // for each node in a tree
389
-        $this->_root->walkNodes(
390
-            function (PolicyNode $node) use (&$set) {
391
-                $parents = $node->parents();
392
-                // node has parents
393
-                if (count($parents)) {
394
-                    // check that each ancestor is an anyPolicy node
395
-                    foreach ($parents as $ancestor) {
396
-                        if (!$ancestor->isAnyPolicy()) {
397
-                            return;
398
-                        }
399
-                    }
400
-                    $set[] = $node;
401
-                }
402
-            });
403
-        return $set;
404
-    }
375
+	/**
376
+	 * Get the valid policy node set as specified in spec 6.1.5.(g)(iii)1.
377
+	 *
378
+	 * @return PolicyNode[]
379
+	 */
380
+	protected function _validPolicyNodeSet(): array
381
+	{
382
+		// 1. Determine the set of policy nodes whose parent nodes have
383
+		// a valid_policy of anyPolicy. This is the valid_policy_node_set.
384
+		$set = array();
385
+		if (!$this->_root) {
386
+			return $set;
387
+		}
388
+		// for each node in a tree
389
+		$this->_root->walkNodes(
390
+			function (PolicyNode $node) use (&$set) {
391
+				$parents = $node->parents();
392
+				// node has parents
393
+				if (count($parents)) {
394
+					// check that each ancestor is an anyPolicy node
395
+					foreach ($parents as $ancestor) {
396
+						if (!$ancestor->isAnyPolicy()) {
397
+							return;
398
+						}
399
+					}
400
+					$set[] = $node;
401
+				}
402
+			});
403
+		return $set;
404
+	}
405 405
     
406
-    /**
407
-     * Gather all children of given nodes to a flattened array.
408
-     *
409
-     * @param PolicyNode ...$nodes
410
-     * @return PolicyNode[]
411
-     */
412
-    private static function _gatherChildren(PolicyNode ...$nodes): array
413
-    {
414
-        $children = array();
415
-        foreach ($nodes as $node) {
416
-            $children = array_merge($children, $node->children());
417
-        }
418
-        return $children;
419
-    }
406
+	/**
407
+	 * Gather all children of given nodes to a flattened array.
408
+	 *
409
+	 * @param PolicyNode ...$nodes
410
+	 * @return PolicyNode[]
411
+	 */
412
+	private static function _gatherChildren(PolicyNode ...$nodes): array
413
+	{
414
+		$children = array();
415
+		foreach ($nodes as $node) {
416
+			$children = array_merge($children, $node->children());
417
+		}
418
+		return $children;
419
+	}
420 420
 }
Please login to merge, or discard this patch.
lib/X509/CertificationPath/CertificationPath.php 1 patch
Indentation   +155 added lines, -155 removed lines patch added patch discarded remove patch
@@ -23,171 +23,171 @@
 block discarded – undo
23 23
  */
24 24
 class CertificationPath implements \Countable, \IteratorAggregate
25 25
 {
26
-    /**
27
-     * Certification path.
28
-     *
29
-     * @var Certificate[] $_certificates
30
-     */
31
-    protected $_certificates;
26
+	/**
27
+	 * Certification path.
28
+	 *
29
+	 * @var Certificate[] $_certificates
30
+	 */
31
+	protected $_certificates;
32 32
     
33
-    /**
34
-     * Constructor.
35
-     *
36
-     * @param Certificate ...$certificates Certificates from the trust anchor
37
-     *        to the target end-entity certificate
38
-     */
39
-    public function __construct(Certificate ...$certificates)
40
-    {
41
-        $this->_certificates = $certificates;
42
-    }
33
+	/**
34
+	 * Constructor.
35
+	 *
36
+	 * @param Certificate ...$certificates Certificates from the trust anchor
37
+	 *        to the target end-entity certificate
38
+	 */
39
+	public function __construct(Certificate ...$certificates)
40
+	{
41
+		$this->_certificates = $certificates;
42
+	}
43 43
     
44
-    /**
45
-     * Initialize from a certificate chain.
46
-     *
47
-     * @param CertificateChain $chain
48
-     * @return self
49
-     */
50
-    public static function fromCertificateChain(CertificateChain $chain): self
51
-    {
52
-        return new self(...array_reverse($chain->certificates(), false));
53
-    }
44
+	/**
45
+	 * Initialize from a certificate chain.
46
+	 *
47
+	 * @param CertificateChain $chain
48
+	 * @return self
49
+	 */
50
+	public static function fromCertificateChain(CertificateChain $chain): self
51
+	{
52
+		return new self(...array_reverse($chain->certificates(), false));
53
+	}
54 54
     
55
-    /**
56
-     * Build certification path to given target.
57
-     *
58
-     * @param Certificate $target Target end-entity certificate
59
-     * @param CertificateBundle $trust_anchors List of trust anchors
60
-     * @param CertificateBundle|null $intermediate Optional intermediate
61
-     *        certificates
62
-     * @return self
63
-     */
64
-    public static function toTarget(Certificate $target,
65
-        CertificateBundle $trust_anchors, CertificateBundle $intermediate = null): self
66
-    {
67
-        $builder = new CertificationPathBuilder($trust_anchors);
68
-        return $builder->shortestPathToTarget($target, $intermediate);
69
-    }
55
+	/**
56
+	 * Build certification path to given target.
57
+	 *
58
+	 * @param Certificate $target Target end-entity certificate
59
+	 * @param CertificateBundle $trust_anchors List of trust anchors
60
+	 * @param CertificateBundle|null $intermediate Optional intermediate
61
+	 *        certificates
62
+	 * @return self
63
+	 */
64
+	public static function toTarget(Certificate $target,
65
+		CertificateBundle $trust_anchors, CertificateBundle $intermediate = null): self
66
+	{
67
+		$builder = new CertificationPathBuilder($trust_anchors);
68
+		return $builder->shortestPathToTarget($target, $intermediate);
69
+	}
70 70
     
71
-    /**
72
-     * Build certification path from given trust anchor to target certificate,
73
-     * using intermediate certificates from given bundle.
74
-     *
75
-     * @param Certificate $trust_anchor Trust anchor certificate
76
-     * @param Certificate $target Target end-entity certificate
77
-     * @param CertificateBundle|null $intermediate Optional intermediate
78
-     *        certificates
79
-     * @return self
80
-     */
81
-    public static function fromTrustAnchorToTarget(Certificate $trust_anchor,
82
-        Certificate $target, CertificateBundle $intermediate = null): self
83
-    {
84
-        return self::toTarget($target, new CertificateBundle($trust_anchor),
85
-            $intermediate);
86
-    }
71
+	/**
72
+	 * Build certification path from given trust anchor to target certificate,
73
+	 * using intermediate certificates from given bundle.
74
+	 *
75
+	 * @param Certificate $trust_anchor Trust anchor certificate
76
+	 * @param Certificate $target Target end-entity certificate
77
+	 * @param CertificateBundle|null $intermediate Optional intermediate
78
+	 *        certificates
79
+	 * @return self
80
+	 */
81
+	public static function fromTrustAnchorToTarget(Certificate $trust_anchor,
82
+		Certificate $target, CertificateBundle $intermediate = null): self
83
+	{
84
+		return self::toTarget($target, new CertificateBundle($trust_anchor),
85
+			$intermediate);
86
+	}
87 87
     
88
-    /**
89
-     * Get certificates.
90
-     *
91
-     * @return Certificate[]
92
-     */
93
-    public function certificates(): array
94
-    {
95
-        return $this->_certificates;
96
-    }
88
+	/**
89
+	 * Get certificates.
90
+	 *
91
+	 * @return Certificate[]
92
+	 */
93
+	public function certificates(): array
94
+	{
95
+		return $this->_certificates;
96
+	}
97 97
     
98
-    /**
99
-     * Get the trust anchor certificate from the path.
100
-     *
101
-     * @throws \LogicException If path is empty
102
-     * @return Certificate
103
-     */
104
-    public function trustAnchorCertificate(): Certificate
105
-    {
106
-        if (!count($this->_certificates)) {
107
-            throw new \LogicException("No certificates.");
108
-        }
109
-        return $this->_certificates[0];
110
-    }
98
+	/**
99
+	 * Get the trust anchor certificate from the path.
100
+	 *
101
+	 * @throws \LogicException If path is empty
102
+	 * @return Certificate
103
+	 */
104
+	public function trustAnchorCertificate(): Certificate
105
+	{
106
+		if (!count($this->_certificates)) {
107
+			throw new \LogicException("No certificates.");
108
+		}
109
+		return $this->_certificates[0];
110
+	}
111 111
     
112
-    /**
113
-     * Get the end-entity certificate from the path.
114
-     *
115
-     * @throws \LogicException If path is empty
116
-     * @return Certificate
117
-     */
118
-    public function endEntityCertificate(): Certificate
119
-    {
120
-        if (!count($this->_certificates)) {
121
-            throw new \LogicException("No certificates.");
122
-        }
123
-        return $this->_certificates[count($this->_certificates) - 1];
124
-    }
112
+	/**
113
+	 * Get the end-entity certificate from the path.
114
+	 *
115
+	 * @throws \LogicException If path is empty
116
+	 * @return Certificate
117
+	 */
118
+	public function endEntityCertificate(): Certificate
119
+	{
120
+		if (!count($this->_certificates)) {
121
+			throw new \LogicException("No certificates.");
122
+		}
123
+		return $this->_certificates[count($this->_certificates) - 1];
124
+	}
125 125
     
126
-    /**
127
-     * Get certification path as a certificate chain.
128
-     *
129
-     * @return CertificateChain
130
-     */
131
-    public function certificateChain(): CertificateChain
132
-    {
133
-        return new CertificateChain(
134
-            ...array_reverse($this->_certificates, false));
135
-    }
126
+	/**
127
+	 * Get certification path as a certificate chain.
128
+	 *
129
+	 * @return CertificateChain
130
+	 */
131
+	public function certificateChain(): CertificateChain
132
+	{
133
+		return new CertificateChain(
134
+			...array_reverse($this->_certificates, false));
135
+	}
136 136
     
137
-    /**
138
-     * Check whether certification path starts with one ore more given
139
-     * certificates in parameter order.
140
-     *
141
-     * @param Certificate ...$certs Certificates
142
-     * @return true
143
-     */
144
-    public function startsWith(Certificate ...$certs): bool
145
-    {
146
-        $n = count($certs);
147
-        if ($n > count($this->_certificates)) {
148
-            return false;
149
-        }
150
-        for ($i = 0; $i < $n; ++$i) {
151
-            if (!$certs[$i]->equals($this->_certificates[$i])) {
152
-                return false;
153
-            }
154
-        }
155
-        return true;
156
-    }
137
+	/**
138
+	 * Check whether certification path starts with one ore more given
139
+	 * certificates in parameter order.
140
+	 *
141
+	 * @param Certificate ...$certs Certificates
142
+	 * @return true
143
+	 */
144
+	public function startsWith(Certificate ...$certs): bool
145
+	{
146
+		$n = count($certs);
147
+		if ($n > count($this->_certificates)) {
148
+			return false;
149
+		}
150
+		for ($i = 0; $i < $n; ++$i) {
151
+			if (!$certs[$i]->equals($this->_certificates[$i])) {
152
+				return false;
153
+			}
154
+		}
155
+		return true;
156
+	}
157 157
     
158
-    /**
159
-     * Validate certification path.
160
-     *
161
-     * @param PathValidationConfig $config
162
-     * @param Crypto|null $crypto Crypto engine, use default if not set
163
-     * @throws Exception\PathValidationException
164
-     * @return PathValidation\PathValidationResult
165
-     */
166
-    public function validate(PathValidationConfig $config, Crypto $crypto = null): PathValidation\PathValidationResult
167
-    {
168
-        $crypto = $crypto ?: Crypto::getDefault();
169
-        $validator = new PathValidator($crypto, $config, ...$this->_certificates);
170
-        return $validator->validate();
171
-    }
158
+	/**
159
+	 * Validate certification path.
160
+	 *
161
+	 * @param PathValidationConfig $config
162
+	 * @param Crypto|null $crypto Crypto engine, use default if not set
163
+	 * @throws Exception\PathValidationException
164
+	 * @return PathValidation\PathValidationResult
165
+	 */
166
+	public function validate(PathValidationConfig $config, Crypto $crypto = null): PathValidation\PathValidationResult
167
+	{
168
+		$crypto = $crypto ?: Crypto::getDefault();
169
+		$validator = new PathValidator($crypto, $config, ...$this->_certificates);
170
+		return $validator->validate();
171
+	}
172 172
     
173
-    /**
174
-     *
175
-     * @see \Countable::count()
176
-     * @return int
177
-     */
178
-    public function count(): int
179
-    {
180
-        return count($this->_certificates);
181
-    }
173
+	/**
174
+	 *
175
+	 * @see \Countable::count()
176
+	 * @return int
177
+	 */
178
+	public function count(): int
179
+	{
180
+		return count($this->_certificates);
181
+	}
182 182
     
183
-    /**
184
-     * Get iterator for certificates.
185
-     *
186
-     * @see \IteratorAggregate::getIterator()
187
-     * @return \ArrayIterator
188
-     */
189
-    public function getIterator(): \ArrayIterator
190
-    {
191
-        return new \ArrayIterator($this->_certificates);
192
-    }
183
+	/**
184
+	 * Get iterator for certificates.
185
+	 *
186
+	 * @see \IteratorAggregate::getIterator()
187
+	 * @return \ArrayIterator
188
+	 */
189
+	public function getIterator(): \ArrayIterator
190
+	{
191
+		return new \ArrayIterator($this->_certificates);
192
+	}
193 193
 }
Please login to merge, or discard this patch.
lib/X509/CertificationPath/PathValidation/PathValidationConfig.php 1 patch
Indentation   +245 added lines, -245 removed lines patch added patch discarded remove patch
@@ -14,274 +14,274 @@
 block discarded – undo
14 14
  */
15 15
 class PathValidationConfig
16 16
 {
17
-    /**
18
-     * Maximum allowed certification path length.
19
-     *
20
-     * @var int $_maxLength
21
-     */
22
-    protected $_maxLength;
17
+	/**
18
+	 * Maximum allowed certification path length.
19
+	 *
20
+	 * @var int $_maxLength
21
+	 */
22
+	protected $_maxLength;
23 23
     
24
-    /**
25
-     * Reference time.
26
-     *
27
-     * @var \DateTimeImmutable $_dateTime
28
-     */
29
-    protected $_dateTime;
24
+	/**
25
+	 * Reference time.
26
+	 *
27
+	 * @var \DateTimeImmutable $_dateTime
28
+	 */
29
+	protected $_dateTime;
30 30
     
31
-    /**
32
-     * List of acceptable policy identifiers.
33
-     *
34
-     * @var string[] $_policySet
35
-     */
36
-    protected $_policySet;
31
+	/**
32
+	 * List of acceptable policy identifiers.
33
+	 *
34
+	 * @var string[] $_policySet
35
+	 */
36
+	protected $_policySet;
37 37
     
38
-    /**
39
-     * Trust anchor certificate.
40
-     *
41
-     * If not set, path validation uses the first certificate of the path.
42
-     *
43
-     * @var Certificate|null $_trustAnchor
44
-     */
45
-    protected $_trustAnchor;
38
+	/**
39
+	 * Trust anchor certificate.
40
+	 *
41
+	 * If not set, path validation uses the first certificate of the path.
42
+	 *
43
+	 * @var Certificate|null $_trustAnchor
44
+	 */
45
+	protected $_trustAnchor;
46 46
     
47
-    /**
48
-     * Whether policy mapping in inhibited.
49
-     *
50
-     * Setting this to true disallows policy mapping.
51
-     *
52
-     * @var bool $_policyMappingInhibit
53
-     */
54
-    protected $_policyMappingInhibit;
47
+	/**
48
+	 * Whether policy mapping in inhibited.
49
+	 *
50
+	 * Setting this to true disallows policy mapping.
51
+	 *
52
+	 * @var bool $_policyMappingInhibit
53
+	 */
54
+	protected $_policyMappingInhibit;
55 55
     
56
-    /**
57
-     * Whether the path must be valid for at least one policy in the
58
-     * initial policy set.
59
-     *
60
-     * @var bool $_explicitPolicy
61
-     */
62
-    protected $_explicitPolicy;
56
+	/**
57
+	 * Whether the path must be valid for at least one policy in the
58
+	 * initial policy set.
59
+	 *
60
+	 * @var bool $_explicitPolicy
61
+	 */
62
+	protected $_explicitPolicy;
63 63
     
64
-    /**
65
-     * Whether anyPolicy OID processing should be inhibited.
66
-     *
67
-     * Setting this to true disallows the usage of anyPolicy.
68
-     *
69
-     * @var bool $_anyPolicyInhibit
70
-     */
71
-    protected $_anyPolicyInhibit;
64
+	/**
65
+	 * Whether anyPolicy OID processing should be inhibited.
66
+	 *
67
+	 * Setting this to true disallows the usage of anyPolicy.
68
+	 *
69
+	 * @var bool $_anyPolicyInhibit
70
+	 */
71
+	protected $_anyPolicyInhibit;
72 72
     
73
-    /**
74
-     *
75
-     * @todo Implement
76
-     * @var mixed $_permittedSubtrees
77
-     */
78
-    protected $_permittedSubtrees;
73
+	/**
74
+	 *
75
+	 * @todo Implement
76
+	 * @var mixed $_permittedSubtrees
77
+	 */
78
+	protected $_permittedSubtrees;
79 79
     
80
-    /**
81
-     *
82
-     * @todo Implement
83
-     * @var mixed $_excludedSubtrees
84
-     */
85
-    protected $_excludedSubtrees;
80
+	/**
81
+	 *
82
+	 * @todo Implement
83
+	 * @var mixed $_excludedSubtrees
84
+	 */
85
+	protected $_excludedSubtrees;
86 86
     
87
-    /**
88
-     * Constructor.
89
-     *
90
-     * @param \DateTimeImmutable $dt Reference date and time
91
-     * @param int $max_length Maximum certification path length
92
-     */
93
-    public function __construct(\DateTimeImmutable $dt, int $max_length)
94
-    {
95
-        $this->_dateTime = $dt;
96
-        $this->_maxLength = (int) $max_length;
97
-        $this->_policySet = array((string) PolicyInformation::OID_ANY_POLICY);
98
-        $this->_policyMappingInhibit = false;
99
-        $this->_explicitPolicy = false;
100
-        $this->_anyPolicyInhibit = false;
101
-    }
87
+	/**
88
+	 * Constructor.
89
+	 *
90
+	 * @param \DateTimeImmutable $dt Reference date and time
91
+	 * @param int $max_length Maximum certification path length
92
+	 */
93
+	public function __construct(\DateTimeImmutable $dt, int $max_length)
94
+	{
95
+		$this->_dateTime = $dt;
96
+		$this->_maxLength = (int) $max_length;
97
+		$this->_policySet = array((string) PolicyInformation::OID_ANY_POLICY);
98
+		$this->_policyMappingInhibit = false;
99
+		$this->_explicitPolicy = false;
100
+		$this->_anyPolicyInhibit = false;
101
+	}
102 102
     
103
-    /**
104
-     * Get default configuration.
105
-     *
106
-     * @return self
107
-     */
108
-    public static function defaultConfig(): self
109
-    {
110
-        return new self(new \DateTimeImmutable(), 3);
111
-    }
103
+	/**
104
+	 * Get default configuration.
105
+	 *
106
+	 * @return self
107
+	 */
108
+	public static function defaultConfig(): self
109
+	{
110
+		return new self(new \DateTimeImmutable(), 3);
111
+	}
112 112
     
113
-    /**
114
-     * Get self with maximum path length.
115
-     *
116
-     * @param int $length
117
-     * @return self
118
-     */
119
-    public function withMaxLength(int $length): self
120
-    {
121
-        $obj = clone $this;
122
-        $obj->_maxLength = $length;
123
-        return $obj;
124
-    }
113
+	/**
114
+	 * Get self with maximum path length.
115
+	 *
116
+	 * @param int $length
117
+	 * @return self
118
+	 */
119
+	public function withMaxLength(int $length): self
120
+	{
121
+		$obj = clone $this;
122
+		$obj->_maxLength = $length;
123
+		return $obj;
124
+	}
125 125
     
126
-    /**
127
-     * Get self with reference date and time.
128
-     *
129
-     * @param \DateTimeImmutable $dt
130
-     * @return self
131
-     */
132
-    public function withDateTime(\DateTimeImmutable $dt): self
133
-    {
134
-        $obj = clone $this;
135
-        $obj->_dateTime = $dt;
136
-        return $obj;
137
-    }
126
+	/**
127
+	 * Get self with reference date and time.
128
+	 *
129
+	 * @param \DateTimeImmutable $dt
130
+	 * @return self
131
+	 */
132
+	public function withDateTime(\DateTimeImmutable $dt): self
133
+	{
134
+		$obj = clone $this;
135
+		$obj->_dateTime = $dt;
136
+		return $obj;
137
+	}
138 138
     
139
-    /**
140
-     * Get self with trust anchor certificate.
141
-     *
142
-     * @param Certificate $ca
143
-     * @return self
144
-     */
145
-    public function withTrustAnchor(Certificate $ca): self
146
-    {
147
-        $obj = clone $this;
148
-        $obj->_trustAnchor = $ca;
149
-        return $obj;
150
-    }
139
+	/**
140
+	 * Get self with trust anchor certificate.
141
+	 *
142
+	 * @param Certificate $ca
143
+	 * @return self
144
+	 */
145
+	public function withTrustAnchor(Certificate $ca): self
146
+	{
147
+		$obj = clone $this;
148
+		$obj->_trustAnchor = $ca;
149
+		return $obj;
150
+	}
151 151
     
152
-    /**
153
-     * Get self with initial-policy-mapping-inhibit set.
154
-     *
155
-     * @param bool $flag
156
-     * @return self
157
-     */
158
-    public function withPolicyMappingInhibit(bool $flag): self
159
-    {
160
-        $obj = clone $this;
161
-        $obj->_policyMappingInhibit = $flag;
162
-        return $obj;
163
-    }
152
+	/**
153
+	 * Get self with initial-policy-mapping-inhibit set.
154
+	 *
155
+	 * @param bool $flag
156
+	 * @return self
157
+	 */
158
+	public function withPolicyMappingInhibit(bool $flag): self
159
+	{
160
+		$obj = clone $this;
161
+		$obj->_policyMappingInhibit = $flag;
162
+		return $obj;
163
+	}
164 164
     
165
-    /**
166
-     * Get self with initial-explicit-policy set.
167
-     *
168
-     * @param bool $flag
169
-     * @return self
170
-     */
171
-    public function withExplicitPolicy(bool $flag): self
172
-    {
173
-        $obj = clone $this;
174
-        $obj->_explicitPolicy = $flag;
175
-        return $obj;
176
-    }
165
+	/**
166
+	 * Get self with initial-explicit-policy set.
167
+	 *
168
+	 * @param bool $flag
169
+	 * @return self
170
+	 */
171
+	public function withExplicitPolicy(bool $flag): self
172
+	{
173
+		$obj = clone $this;
174
+		$obj->_explicitPolicy = $flag;
175
+		return $obj;
176
+	}
177 177
     
178
-    /**
179
-     * Get self with initial-any-policy-inhibit set.
180
-     *
181
-     * @param bool $flag
182
-     * @return self
183
-     */
184
-    public function withAnyPolicyInhibit(bool $flag): self
185
-    {
186
-        $obj = clone $this;
187
-        $obj->_anyPolicyInhibit = $flag;
188
-        return $obj;
189
-    }
178
+	/**
179
+	 * Get self with initial-any-policy-inhibit set.
180
+	 *
181
+	 * @param bool $flag
182
+	 * @return self
183
+	 */
184
+	public function withAnyPolicyInhibit(bool $flag): self
185
+	{
186
+		$obj = clone $this;
187
+		$obj->_anyPolicyInhibit = $flag;
188
+		return $obj;
189
+	}
190 190
     
191
-    /**
192
-     * Get self with user-initial-policy-set set to policy OIDs.
193
-     *
194
-     * @param string ...$policies List of policy OIDs
195
-     * @return self
196
-     */
197
-    public function withPolicySet(string ...$policies): self
198
-    {
199
-        $obj = clone $this;
200
-        $obj->_policySet = $policies;
201
-        return $obj;
202
-    }
191
+	/**
192
+	 * Get self with user-initial-policy-set set to policy OIDs.
193
+	 *
194
+	 * @param string ...$policies List of policy OIDs
195
+	 * @return self
196
+	 */
197
+	public function withPolicySet(string ...$policies): self
198
+	{
199
+		$obj = clone $this;
200
+		$obj->_policySet = $policies;
201
+		return $obj;
202
+	}
203 203
     
204
-    /**
205
-     * Get maximum certification path length.
206
-     *
207
-     * @return int
208
-     */
209
-    public function maxLength(): int
210
-    {
211
-        return $this->_maxLength;
212
-    }
204
+	/**
205
+	 * Get maximum certification path length.
206
+	 *
207
+	 * @return int
208
+	 */
209
+	public function maxLength(): int
210
+	{
211
+		return $this->_maxLength;
212
+	}
213 213
     
214
-    /**
215
-     * Get reference date and time.
216
-     *
217
-     * @return \DateTimeImmutable
218
-     */
219
-    public function dateTime(): \DateTimeImmutable
220
-    {
221
-        return $this->_dateTime;
222
-    }
214
+	/**
215
+	 * Get reference date and time.
216
+	 *
217
+	 * @return \DateTimeImmutable
218
+	 */
219
+	public function dateTime(): \DateTimeImmutable
220
+	{
221
+		return $this->_dateTime;
222
+	}
223 223
     
224
-    /**
225
-     * Get user-initial-policy-set.
226
-     *
227
-     * @return string[] Array of OID's
228
-     */
229
-    public function policySet(): array
230
-    {
231
-        return $this->_policySet;
232
-    }
224
+	/**
225
+	 * Get user-initial-policy-set.
226
+	 *
227
+	 * @return string[] Array of OID's
228
+	 */
229
+	public function policySet(): array
230
+	{
231
+		return $this->_policySet;
232
+	}
233 233
     
234
-    /**
235
-     * Check whether trust anchor certificate is set.
236
-     *
237
-     * @return bool
238
-     */
239
-    public function hasTrustAnchor(): bool
240
-    {
241
-        return isset($this->_trustAnchor);
242
-    }
234
+	/**
235
+	 * Check whether trust anchor certificate is set.
236
+	 *
237
+	 * @return bool
238
+	 */
239
+	public function hasTrustAnchor(): bool
240
+	{
241
+		return isset($this->_trustAnchor);
242
+	}
243 243
     
244
-    /**
245
-     * Get trust anchor certificate.
246
-     *
247
-     * @throws \LogicException
248
-     * @return Certificate
249
-     */
250
-    public function trustAnchor(): Certificate
251
-    {
252
-        if (!$this->hasTrustAnchor()) {
253
-            throw new \LogicException("No trust anchor.");
254
-        }
255
-        return $this->_trustAnchor;
256
-    }
244
+	/**
245
+	 * Get trust anchor certificate.
246
+	 *
247
+	 * @throws \LogicException
248
+	 * @return Certificate
249
+	 */
250
+	public function trustAnchor(): Certificate
251
+	{
252
+		if (!$this->hasTrustAnchor()) {
253
+			throw new \LogicException("No trust anchor.");
254
+		}
255
+		return $this->_trustAnchor;
256
+	}
257 257
     
258
-    /**
259
-     * Get initial-policy-mapping-inhibit.
260
-     *
261
-     * @return bool
262
-     */
263
-    public function policyMappingInhibit(): bool
264
-    {
265
-        return $this->_policyMappingInhibit;
266
-    }
258
+	/**
259
+	 * Get initial-policy-mapping-inhibit.
260
+	 *
261
+	 * @return bool
262
+	 */
263
+	public function policyMappingInhibit(): bool
264
+	{
265
+		return $this->_policyMappingInhibit;
266
+	}
267 267
     
268
-    /**
269
-     * Get initial-explicit-policy.
270
-     *
271
-     * @return bool
272
-     */
273
-    public function explicitPolicy(): bool
274
-    {
275
-        return $this->_explicitPolicy;
276
-    }
268
+	/**
269
+	 * Get initial-explicit-policy.
270
+	 *
271
+	 * @return bool
272
+	 */
273
+	public function explicitPolicy(): bool
274
+	{
275
+		return $this->_explicitPolicy;
276
+	}
277 277
     
278
-    /**
279
-     * Get initial-any-policy-inhibit.
280
-     *
281
-     * @return bool
282
-     */
283
-    public function anyPolicyInhibit(): bool
284
-    {
285
-        return $this->_anyPolicyInhibit;
286
-    }
278
+	/**
279
+	 * Get initial-any-policy-inhibit.
280
+	 *
281
+	 * @return bool
282
+	 */
283
+	public function anyPolicyInhibit(): bool
284
+	{
285
+		return $this->_anyPolicyInhibit;
286
+	}
287 287
 }
Please login to merge, or discard this patch.