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.
Test Setup Failed
Pull Request — master (#4)
by thomas
01:54
created
lib/ASN1/Type/Structure.php 2 patches
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types=1);
3
+declare(strict_types = 1);
4 4
 
5 5
 namespace ASN1\Type;
6 6
 
@@ -89,7 +89,7 @@  discard block
 block discarded – undo
89 89
      * @return self
90 90
      */
91 91
     protected static function _decodeFromDER(Identifier $identifier, string $data,
92
-        int &$offset)
92
+        int & $offset)
93 93
     {
94 94
         $idx = $offset;
95 95
         if (!$identifier->isConstructed()) {
@@ -234,7 +234,7 @@  discard block
 block discarded – undo
234 234
     {
235 235
         if (!isset($this->_unspecifiedTypes)) {
236 236
             $this->_unspecifiedTypes = array_map(
237
-                function (Element $el) {
237
+                function(Element $el) {
238 238
                     return new UnspecifiedType($el);
239 239
                 }, $this->_elements);
240 240
         }
Please login to merge, or discard this patch.
Indentation   +310 added lines, -310 removed lines patch added patch discarded remove patch
@@ -13,336 +13,336 @@
 block discarded – undo
13 13
  * Base class for the constructed types.
14 14
  */
15 15
 abstract class Structure extends Element implements 
16
-    \Countable,
17
-    \IteratorAggregate
16
+	\Countable,
17
+	\IteratorAggregate
18 18
 {
19
-    use UniversalClass;
19
+	use UniversalClass;
20 20
     
21
-    /**
22
-     * Array of elements in the structure.
23
-     *
24
-     * @var Element[] $_elements
25
-     */
26
-    protected $_elements;
21
+	/**
22
+	 * Array of elements in the structure.
23
+	 *
24
+	 * @var Element[] $_elements
25
+	 */
26
+	protected $_elements;
27 27
     
28
-    /**
29
-     * Lookup table for the tagged elements.
30
-     *
31
-     * @var TaggedType[]|null $_taggedMap
32
-     */
33
-    private $_taggedMap;
28
+	/**
29
+	 * Lookup table for the tagged elements.
30
+	 *
31
+	 * @var TaggedType[]|null $_taggedMap
32
+	 */
33
+	private $_taggedMap;
34 34
     
35
-    /**
36
-     * Cache variable of elements wrapped into UnspecifiedType objects.
37
-     *
38
-     * @var UnspecifiedType[]|null $_unspecifiedTypes
39
-     */
40
-    private $_unspecifiedTypes;
35
+	/**
36
+	 * Cache variable of elements wrapped into UnspecifiedType objects.
37
+	 *
38
+	 * @var UnspecifiedType[]|null $_unspecifiedTypes
39
+	 */
40
+	private $_unspecifiedTypes;
41 41
     
42
-    /**
43
-     * Constructor.
44
-     *
45
-     * @param Element[] $elements Any number of elements
46
-     */
47
-    public function __construct(Element ...$elements)
48
-    {
49
-        $this->_elements = $elements;
50
-    }
42
+	/**
43
+	 * Constructor.
44
+	 *
45
+	 * @param Element[] $elements Any number of elements
46
+	 */
47
+	public function __construct(Element ...$elements)
48
+	{
49
+		$this->_elements = $elements;
50
+	}
51 51
     
52
-    /**
53
-     * Clone magic method.
54
-     */
55
-    public function __clone()
56
-    {
57
-        // clear cache-variables
58
-        $this->_taggedMap = null;
59
-        $this->_unspecifiedTypes = null;
60
-    }
52
+	/**
53
+	 * Clone magic method.
54
+	 */
55
+	public function __clone()
56
+	{
57
+		// clear cache-variables
58
+		$this->_taggedMap = null;
59
+		$this->_unspecifiedTypes = null;
60
+	}
61 61
     
62
-    /**
63
-     *
64
-     * @see \ASN1\Element::isConstructed()
65
-     * @return bool
66
-     */
67
-    public function isConstructed(): bool
68
-    {
69
-        return true;
70
-    }
62
+	/**
63
+	 *
64
+	 * @see \ASN1\Element::isConstructed()
65
+	 * @return bool
66
+	 */
67
+	public function isConstructed(): bool
68
+	{
69
+		return true;
70
+	}
71 71
     
72
-    /**
73
-     *
74
-     * @see \ASN1\Element::_encodedContentDER()
75
-     * @return string
76
-     */
77
-    protected function _encodedContentDER(): string
78
-    {
79
-        $data = "";
80
-        foreach ($this->_elements as $element) {
81
-            $data .= $element->toDER();
82
-        }
83
-        return $data;
84
-    }
72
+	/**
73
+	 *
74
+	 * @see \ASN1\Element::_encodedContentDER()
75
+	 * @return string
76
+	 */
77
+	protected function _encodedContentDER(): string
78
+	{
79
+		$data = "";
80
+		foreach ($this->_elements as $element) {
81
+			$data .= $element->toDER();
82
+		}
83
+		return $data;
84
+	}
85 85
     
86
-    /**
87
-     *
88
-     * {@inheritdoc}
89
-     * @see \ASN1\Element::_decodeFromDER()
90
-     * @return self
91
-     */
92
-    protected static function _decodeFromDER(Identifier $identifier, string $data,
93
-        int &$offset)
94
-    {
95
-        $idx = $offset;
96
-        if (!$identifier->isConstructed()) {
97
-            throw new DecodeException(
98
-                "Structured element must have constructed bit set.");
99
-        }
100
-        $length = Length::expectFromDER($data, $idx);
101
-        $end = $idx + $length->length();
102
-        $elements = [];
103
-        while ($idx < $end) {
104
-            $elements[] = Element::fromDER($data, $idx);
105
-            // check that element didn't overflow length
106
-            if ($idx > $end) {
107
-                throw new DecodeException(
108
-                    "Structure's content overflows length.");
109
-            }
110
-        }
111
-        $offset = $idx;
112
-        // return instance by static late binding
113
-        return new static(...$elements);
114
-    }
86
+	/**
87
+	 *
88
+	 * {@inheritdoc}
89
+	 * @see \ASN1\Element::_decodeFromDER()
90
+	 * @return self
91
+	 */
92
+	protected static function _decodeFromDER(Identifier $identifier, string $data,
93
+		int &$offset)
94
+	{
95
+		$idx = $offset;
96
+		if (!$identifier->isConstructed()) {
97
+			throw new DecodeException(
98
+				"Structured element must have constructed bit set.");
99
+		}
100
+		$length = Length::expectFromDER($data, $idx);
101
+		$end = $idx + $length->length();
102
+		$elements = [];
103
+		while ($idx < $end) {
104
+			$elements[] = Element::fromDER($data, $idx);
105
+			// check that element didn't overflow length
106
+			if ($idx > $end) {
107
+				throw new DecodeException(
108
+					"Structure's content overflows length.");
109
+			}
110
+		}
111
+		$offset = $idx;
112
+		// return instance by static late binding
113
+		return new static(...$elements);
114
+	}
115 115
     
116
-    /**
117
-     * Explode DER structure to DER encoded components that it contains.
118
-     *
119
-     * @param string $data
120
-     * @throws DecodeException
121
-     * @return string[]
122
-     */
123
-    public static function explodeDER(string $data): array
124
-    {
125
-        $offset = 0;
126
-        $identifier = Identifier::fromDER($data, $offset);
127
-        if (!$identifier->isConstructed()) {
128
-            throw new DecodeException("Element is not constructed.");
129
-        }
130
-        $length = Length::expectFromDER($data, $offset);
131
-        $end = $offset + $length->length();
132
-        $parts = [];
133
-        while ($offset < $end) {
134
-            // start of the element
135
-            $idx = $offset;
136
-            // skip identifier
137
-            Identifier::fromDER($data, $offset);
138
-            // decode element length
139
-            $length = Length::expectFromDER($data, $offset);
140
-            // extract der encoding of the element
141
-            $parts[] = substr($data, $idx, $offset - $idx + $length->length());
142
-            // update offset over content
143
-            $offset += $length->length();
144
-        }
145
-        return $parts;
146
-    }
116
+	/**
117
+	 * Explode DER structure to DER encoded components that it contains.
118
+	 *
119
+	 * @param string $data
120
+	 * @throws DecodeException
121
+	 * @return string[]
122
+	 */
123
+	public static function explodeDER(string $data): array
124
+	{
125
+		$offset = 0;
126
+		$identifier = Identifier::fromDER($data, $offset);
127
+		if (!$identifier->isConstructed()) {
128
+			throw new DecodeException("Element is not constructed.");
129
+		}
130
+		$length = Length::expectFromDER($data, $offset);
131
+		$end = $offset + $length->length();
132
+		$parts = [];
133
+		while ($offset < $end) {
134
+			// start of the element
135
+			$idx = $offset;
136
+			// skip identifier
137
+			Identifier::fromDER($data, $offset);
138
+			// decode element length
139
+			$length = Length::expectFromDER($data, $offset);
140
+			// extract der encoding of the element
141
+			$parts[] = substr($data, $idx, $offset - $idx + $length->length());
142
+			// update offset over content
143
+			$offset += $length->length();
144
+		}
145
+		return $parts;
146
+	}
147 147
     
148
-    /**
149
-     * Get self with an element at the given index replaced by another.
150
-     *
151
-     * @param int $idx Element index
152
-     * @param Element $el New element to insert into the structure
153
-     * @throws \OutOfBoundsException
154
-     * @return self
155
-     */
156
-    public function withReplaced(int $idx, Element $el)
157
-    {
158
-        if (!isset($this->_elements[$idx])) {
159
-            throw new \OutOfBoundsException(
160
-                "Structure doesn't have element at index $idx.");
161
-        }
162
-        $obj = clone $this;
163
-        $obj->_elements[$idx] = $el;
164
-        return $obj;
165
-    }
148
+	/**
149
+	 * Get self with an element at the given index replaced by another.
150
+	 *
151
+	 * @param int $idx Element index
152
+	 * @param Element $el New element to insert into the structure
153
+	 * @throws \OutOfBoundsException
154
+	 * @return self
155
+	 */
156
+	public function withReplaced(int $idx, Element $el)
157
+	{
158
+		if (!isset($this->_elements[$idx])) {
159
+			throw new \OutOfBoundsException(
160
+				"Structure doesn't have element at index $idx.");
161
+		}
162
+		$obj = clone $this;
163
+		$obj->_elements[$idx] = $el;
164
+		return $obj;
165
+	}
166 166
     
167
-    /**
168
-     * Get self with an element inserted before the given index.
169
-     *
170
-     * @param int $idx Element index
171
-     * @param Element $el New element to insert into the structure
172
-     * @throws \OutOfBoundsException
173
-     * @return self
174
-     */
175
-    public function withInserted(int $idx, Element $el)
176
-    {
177
-        if (count($this->_elements) < $idx || $idx < 0) {
178
-            throw new \OutOfBoundsException("Index $idx is out of bounds.");
179
-        }
180
-        $obj = clone $this;
181
-        array_splice($obj->_elements, $idx, 0, [$el]);
182
-        return $obj;
183
-    }
167
+	/**
168
+	 * Get self with an element inserted before the given index.
169
+	 *
170
+	 * @param int $idx Element index
171
+	 * @param Element $el New element to insert into the structure
172
+	 * @throws \OutOfBoundsException
173
+	 * @return self
174
+	 */
175
+	public function withInserted(int $idx, Element $el)
176
+	{
177
+		if (count($this->_elements) < $idx || $idx < 0) {
178
+			throw new \OutOfBoundsException("Index $idx is out of bounds.");
179
+		}
180
+		$obj = clone $this;
181
+		array_splice($obj->_elements, $idx, 0, [$el]);
182
+		return $obj;
183
+	}
184 184
     
185
-    /**
186
-     * Get self with an element appended to the end.
187
-     *
188
-     * @param Element $el Element to insert into the structure
189
-     * @return self
190
-     */
191
-    public function withAppended(Element $el)
192
-    {
193
-        $obj = clone $this;
194
-        array_push($obj->_elements, $el);
195
-        return $obj;
196
-    }
185
+	/**
186
+	 * Get self with an element appended to the end.
187
+	 *
188
+	 * @param Element $el Element to insert into the structure
189
+	 * @return self
190
+	 */
191
+	public function withAppended(Element $el)
192
+	{
193
+		$obj = clone $this;
194
+		array_push($obj->_elements, $el);
195
+		return $obj;
196
+	}
197 197
     
198
-    /**
199
-     * Get self with an element prepended in the beginning.
200
-     *
201
-     * @param Element $el Element to insert into the structure
202
-     * @return self
203
-     */
204
-    public function withPrepended(Element $el)
205
-    {
206
-        $obj = clone $this;
207
-        array_unshift($obj->_elements, $el);
208
-        return $obj;
209
-    }
198
+	/**
199
+	 * Get self with an element prepended in the beginning.
200
+	 *
201
+	 * @param Element $el Element to insert into the structure
202
+	 * @return self
203
+	 */
204
+	public function withPrepended(Element $el)
205
+	{
206
+		$obj = clone $this;
207
+		array_unshift($obj->_elements, $el);
208
+		return $obj;
209
+	}
210 210
     
211
-    /**
212
-     * Get self with an element at the given index removed.
213
-     *
214
-     * @param int $idx Element index
215
-     * @throws \OutOfBoundsException
216
-     * @return self
217
-     */
218
-    public function withoutElement($idx)
219
-    {
220
-        if (!isset($this->_elements[$idx])) {
221
-            throw new \OutOfBoundsException(
222
-                "Structure doesn't have element at index $idx.");
223
-        }
224
-        $obj = clone $this;
225
-        array_splice($obj->_elements, $idx, 1);
226
-        return $obj;
227
-    }
211
+	/**
212
+	 * Get self with an element at the given index removed.
213
+	 *
214
+	 * @param int $idx Element index
215
+	 * @throws \OutOfBoundsException
216
+	 * @return self
217
+	 */
218
+	public function withoutElement($idx)
219
+	{
220
+		if (!isset($this->_elements[$idx])) {
221
+			throw new \OutOfBoundsException(
222
+				"Structure doesn't have element at index $idx.");
223
+		}
224
+		$obj = clone $this;
225
+		array_splice($obj->_elements, $idx, 1);
226
+		return $obj;
227
+	}
228 228
     
229
-    /**
230
-     * Get elements in the structure.
231
-     *
232
-     * @return UnspecifiedType[]
233
-     */
234
-    public function elements(): array
235
-    {
236
-        if (!isset($this->_unspecifiedTypes)) {
237
-            $this->_unspecifiedTypes = array_map(
238
-                function (Element $el) {
239
-                    return new UnspecifiedType($el);
240
-                }, $this->_elements);
241
-        }
242
-        return $this->_unspecifiedTypes;
243
-    }
229
+	/**
230
+	 * Get elements in the structure.
231
+	 *
232
+	 * @return UnspecifiedType[]
233
+	 */
234
+	public function elements(): array
235
+	{
236
+		if (!isset($this->_unspecifiedTypes)) {
237
+			$this->_unspecifiedTypes = array_map(
238
+				function (Element $el) {
239
+					return new UnspecifiedType($el);
240
+				}, $this->_elements);
241
+		}
242
+		return $this->_unspecifiedTypes;
243
+	}
244 244
     
245
-    /**
246
-     * Check whether the structure has an element at the given index, optionally
247
-     * satisfying given tag expectation.
248
-     *
249
-     * @param int $idx Index 0..n
250
-     * @param int|null $expectedTag Optional type tag expectation
251
-     * @return bool
252
-     */
253
-    public function has(int $idx, $expectedTag = null): bool
254
-    {
255
-        if (!isset($this->_elements[$idx])) {
256
-            return false;
257
-        }
258
-        if (isset($expectedTag)) {
259
-            if (!$this->_elements[$idx]->isType($expectedTag)) {
260
-                return false;
261
-            }
262
-        }
263
-        return true;
264
-    }
245
+	/**
246
+	 * Check whether the structure has an element at the given index, optionally
247
+	 * satisfying given tag expectation.
248
+	 *
249
+	 * @param int $idx Index 0..n
250
+	 * @param int|null $expectedTag Optional type tag expectation
251
+	 * @return bool
252
+	 */
253
+	public function has(int $idx, $expectedTag = null): bool
254
+	{
255
+		if (!isset($this->_elements[$idx])) {
256
+			return false;
257
+		}
258
+		if (isset($expectedTag)) {
259
+			if (!$this->_elements[$idx]->isType($expectedTag)) {
260
+				return false;
261
+			}
262
+		}
263
+		return true;
264
+	}
265 265
     
266
-    /**
267
-     * Get the element at the given index, optionally checking that the element
268
-     * has a given tag.
269
-     *
270
-     * NOTE! Expectation checking is deprecated and should be done
271
-     * with UnspecifiedType.
272
-     *
273
-     * @param int $idx Index 0..n
274
-     * @param int|null $expectedTag Optional type tag expectation
275
-     * @throws \OutOfBoundsException If element doesn't exists
276
-     * @throws \UnexpectedValueException If expectation fails
277
-     * @return UnspecifiedType
278
-     */
279
-    public function at(int $idx, $expectedTag = null): UnspecifiedType
280
-    {
281
-        if (!isset($this->_elements[$idx])) {
282
-            throw new \OutOfBoundsException(
283
-                "Structure doesn't have an element at index $idx.");
284
-        }
285
-        $element = $this->_elements[$idx];
286
-        if (isset($expectedTag)) {
287
-            $element->expectType($expectedTag);
288
-        }
289
-        return new UnspecifiedType($element);
290
-    }
266
+	/**
267
+	 * Get the element at the given index, optionally checking that the element
268
+	 * has a given tag.
269
+	 *
270
+	 * NOTE! Expectation checking is deprecated and should be done
271
+	 * with UnspecifiedType.
272
+	 *
273
+	 * @param int $idx Index 0..n
274
+	 * @param int|null $expectedTag Optional type tag expectation
275
+	 * @throws \OutOfBoundsException If element doesn't exists
276
+	 * @throws \UnexpectedValueException If expectation fails
277
+	 * @return UnspecifiedType
278
+	 */
279
+	public function at(int $idx, $expectedTag = null): UnspecifiedType
280
+	{
281
+		if (!isset($this->_elements[$idx])) {
282
+			throw new \OutOfBoundsException(
283
+				"Structure doesn't have an element at index $idx.");
284
+		}
285
+		$element = $this->_elements[$idx];
286
+		if (isset($expectedTag)) {
287
+			$element->expectType($expectedTag);
288
+		}
289
+		return new UnspecifiedType($element);
290
+	}
291 291
     
292
-    /**
293
-     * Check whether the structure contains a context specific element with a
294
-     * given tag.
295
-     *
296
-     * @param int $tag Tag number
297
-     * @return boolean
298
-     */
299
-    public function hasTagged($tag): bool
300
-    {
301
-        // lazily build lookup map
302
-        if (!isset($this->_taggedMap)) {
303
-            $this->_taggedMap = [];
304
-            foreach ($this->_elements as $element) {
305
-                if ($element->isTagged()) {
306
-                    $this->_taggedMap[$element->tag()] = $element;
307
-                }
308
-            }
309
-        }
310
-        return isset($this->_taggedMap[$tag]);
311
-    }
292
+	/**
293
+	 * Check whether the structure contains a context specific element with a
294
+	 * given tag.
295
+	 *
296
+	 * @param int $tag Tag number
297
+	 * @return boolean
298
+	 */
299
+	public function hasTagged($tag): bool
300
+	{
301
+		// lazily build lookup map
302
+		if (!isset($this->_taggedMap)) {
303
+			$this->_taggedMap = [];
304
+			foreach ($this->_elements as $element) {
305
+				if ($element->isTagged()) {
306
+					$this->_taggedMap[$element->tag()] = $element;
307
+				}
308
+			}
309
+		}
310
+		return isset($this->_taggedMap[$tag]);
311
+	}
312 312
     
313
-    /**
314
-     * Get a context specific element tagged with a given tag.
315
-     *
316
-     * @param int $tag
317
-     * @throws \LogicException If tag doesn't exists
318
-     * @return TaggedType
319
-     */
320
-    public function getTagged($tag): TaggedType
321
-    {
322
-        if (!$this->hasTagged($tag)) {
323
-            throw new \LogicException("No tagged element for tag $tag.");
324
-        }
325
-        return $this->_taggedMap[$tag];
326
-    }
313
+	/**
314
+	 * Get a context specific element tagged with a given tag.
315
+	 *
316
+	 * @param int $tag
317
+	 * @throws \LogicException If tag doesn't exists
318
+	 * @return TaggedType
319
+	 */
320
+	public function getTagged($tag): TaggedType
321
+	{
322
+		if (!$this->hasTagged($tag)) {
323
+			throw new \LogicException("No tagged element for tag $tag.");
324
+		}
325
+		return $this->_taggedMap[$tag];
326
+	}
327 327
     
328
-    /**
329
-     *
330
-     * @see \Countable::count()
331
-     * @return int
332
-     */
333
-    public function count(): int
334
-    {
335
-        return count($this->_elements);
336
-    }
328
+	/**
329
+	 *
330
+	 * @see \Countable::count()
331
+	 * @return int
332
+	 */
333
+	public function count(): int
334
+	{
335
+		return count($this->_elements);
336
+	}
337 337
     
338
-    /**
339
-     * Get an iterator for the UnspecifiedElement objects.
340
-     *
341
-     * @see \IteratorAggregate::getIterator()
342
-     * @return \ArrayIterator
343
-     */
344
-    public function getIterator(): \ArrayIterator
345
-    {
346
-        return new \ArrayIterator($this->elements());
347
-    }
338
+	/**
339
+	 * Get an iterator for the UnspecifiedElement objects.
340
+	 *
341
+	 * @see \IteratorAggregate::getIterator()
342
+	 * @return \ArrayIterator
343
+	 */
344
+	public function getIterator(): \ArrayIterator
345
+	{
346
+		return new \ArrayIterator($this->elements());
347
+	}
348 348
 }
Please login to merge, or discard this patch.
lib/ASN1/Type/TimeType.php 2 patches
Indentation   +77 added lines, -77 removed lines patch added patch discarded remove patch
@@ -11,87 +11,87 @@
 block discarded – undo
11 11
  */
12 12
 abstract class TimeType extends Element
13 13
 {
14
-    /**
15
-     * UTC timezone.
16
-     *
17
-     * @var string
18
-     */
19
-    const TZ_UTC = "UTC";
14
+	/**
15
+	 * UTC timezone.
16
+	 *
17
+	 * @var string
18
+	 */
19
+	const TZ_UTC = "UTC";
20 20
 
21
-    /**
22
-     * Date and time.
23
-     *
24
-     * @var \DateTimeImmutable $_dateTime
25
-     */
26
-    protected $_dateTime;
21
+	/**
22
+	 * Date and time.
23
+	 *
24
+	 * @var \DateTimeImmutable $_dateTime
25
+	 */
26
+	protected $_dateTime;
27 27
 
28
-    /**
29
-     * Constructor.
30
-     *
31
-     * @param \DateTimeImmutable $dt
32
-     */
33
-    public function __construct(\DateTimeImmutable $dt)
34
-    {
35
-        $this->_dateTime = $dt;
36
-    }
28
+	/**
29
+	 * Constructor.
30
+	 *
31
+	 * @param \DateTimeImmutable $dt
32
+	 */
33
+	public function __construct(\DateTimeImmutable $dt)
34
+	{
35
+		$this->_dateTime = $dt;
36
+	}
37 37
 
38
-    /**
39
-     * Initialize from datetime string.
40
-     *
41
-     * @param string $time Time string
42
-     * @param string|null $tz Timezone, if null use default.
43
-     * @throws \RuntimeException
44
-     * @return self
45
-     */
46
-    public static function fromString(string $time, string $tz = null)
47
-    {
48
-        try {
49
-            if (!isset($tz)) {
50
-                $tz = date_default_timezone_get();
51
-            }
52
-            return new static(
53
-                new \DateTimeImmutable($time, self::_createTimeZone($tz)));
54
-        } catch (\Exception $e) {
55
-            throw new \RuntimeException(
56
-                "Failed to create DateTime: " .
57
-                     self::_getLastDateTimeImmutableErrorsStr(), 0, $e);
58
-        }
59
-    }
38
+	/**
39
+	 * Initialize from datetime string.
40
+	 *
41
+	 * @param string $time Time string
42
+	 * @param string|null $tz Timezone, if null use default.
43
+	 * @throws \RuntimeException
44
+	 * @return self
45
+	 */
46
+	public static function fromString(string $time, string $tz = null)
47
+	{
48
+		try {
49
+			if (!isset($tz)) {
50
+				$tz = date_default_timezone_get();
51
+			}
52
+			return new static(
53
+				new \DateTimeImmutable($time, self::_createTimeZone($tz)));
54
+		} catch (\Exception $e) {
55
+			throw new \RuntimeException(
56
+				"Failed to create DateTime: " .
57
+					 self::_getLastDateTimeImmutableErrorsStr(), 0, $e);
58
+		}
59
+	}
60 60
 
61
-    /**
62
-     * Get the date and time.
63
-     *
64
-     * @return \DateTimeImmutable
65
-     */
66
-    public function dateTime(): \DateTimeImmutable
67
-    {
68
-        return $this->_dateTime;
69
-    }
61
+	/**
62
+	 * Get the date and time.
63
+	 *
64
+	 * @return \DateTimeImmutable
65
+	 */
66
+	public function dateTime(): \DateTimeImmutable
67
+	{
68
+		return $this->_dateTime;
69
+	}
70 70
 
71
-    /**
72
-     * Create DateTimeZone object from string.
73
-     *
74
-     * @param string $tz
75
-     * @throws \UnexpectedValueException If timezone is invalid
76
-     * @return \DateTimeZone
77
-     */
78
-    protected static function _createTimeZone($tz): \DateTimeZone
79
-    {
80
-        try {
81
-            return new \DateTimeZone($tz);
82
-        } catch (\Exception $e) {
83
-            throw new \UnexpectedValueException("Invalid timezone.", 0, $e);
84
-        }
85
-    }
71
+	/**
72
+	 * Create DateTimeZone object from string.
73
+	 *
74
+	 * @param string $tz
75
+	 * @throws \UnexpectedValueException If timezone is invalid
76
+	 * @return \DateTimeZone
77
+	 */
78
+	protected static function _createTimeZone($tz): \DateTimeZone
79
+	{
80
+		try {
81
+			return new \DateTimeZone($tz);
82
+		} catch (\Exception $e) {
83
+			throw new \UnexpectedValueException("Invalid timezone.", 0, $e);
84
+		}
85
+	}
86 86
 
87
-    /**
88
-     * Get last error caused by DateTimeImmutable.
89
-     *
90
-     * @return string
91
-     */
92
-    protected static function _getLastDateTimeImmutableErrorsStr(): string
93
-    {
94
-        $errors = \DateTimeImmutable::getLastErrors()["errors"];
95
-        return implode(", ", $errors);
96
-    }
87
+	/**
88
+	 * Get last error caused by DateTimeImmutable.
89
+	 *
90
+	 * @return string
91
+	 */
92
+	protected static function _getLastDateTimeImmutableErrorsStr(): string
93
+	{
94
+		$errors = \DateTimeImmutable::getLastErrors()["errors"];
95
+		return implode(", ", $errors);
96
+	}
97 97
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types=1);
3
+declare(strict_types = 1);
4 4
 
5 5
 namespace ASN1\Type;
6 6
 
Please login to merge, or discard this patch.
lib/ASN1/Type/UniversalClass.php 2 patches
Indentation   +9 added lines, -9 removed lines patch added patch discarded remove patch
@@ -11,13 +11,13 @@
 block discarded – undo
11 11
  */
12 12
 trait UniversalClass
13 13
 {
14
-    /**
15
-     *
16
-     * @see \ASN1\Element::typeClass()
17
-     * @return int
18
-     */
19
-    public function typeClass(): int
20
-    {
21
-        return Identifier::CLASS_UNIVERSAL;
22
-    }
14
+	/**
15
+	 *
16
+	 * @see \ASN1\Element::typeClass()
17
+	 * @return int
18
+	 */
19
+	public function typeClass(): int
20
+	{
21
+		return Identifier::CLASS_UNIVERSAL;
22
+	}
23 23
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types=1);
3
+declare(strict_types = 1);
4 4
 
5 5
 namespace ASN1\Type;
6 6
 
Please login to merge, or discard this patch.
lib/ASN1/Type/Constructed/Set.php 2 patches
Indentation   +48 added lines, -48 removed lines patch added patch discarded remove patch
@@ -12,54 +12,54 @@
 block discarded – undo
12 12
  */
13 13
 class Set extends Structure
14 14
 {
15
-    /**
16
-     * Constructor
17
-     *
18
-     * @param Element[] $elements Any number of elements
19
-     */
20
-    public function __construct(Element ...$elements)
21
-    {
22
-        $this->_typeTag = self::TYPE_SET;
23
-        parent::__construct(...$elements);
24
-    }
15
+	/**
16
+	 * Constructor
17
+	 *
18
+	 * @param Element[] $elements Any number of elements
19
+	 */
20
+	public function __construct(Element ...$elements)
21
+	{
22
+		$this->_typeTag = self::TYPE_SET;
23
+		parent::__construct(...$elements);
24
+	}
25 25
     
26
-    /**
27
-     * Sort by canonical ascending order.
28
-     * Used for DER encoding of SET type.
29
-     *
30
-     * @return self
31
-     */
32
-    public function sortedSet()
33
-    {
34
-        $obj = clone $this;
35
-        usort($obj->_elements,
36
-            function (Element $a, Element $b) {
37
-                if ($a->typeClass() != $b->typeClass()) {
38
-                    return $a->typeClass() < $b->typeClass() ? -1 : 1;
39
-                }
40
-                if ($a->tag() == $b->tag()) {
41
-                    return 0;
42
-                }
43
-                return $a->tag() < $b->tag() ? -1 : 1;
44
-            });
45
-        return $obj;
46
-    }
26
+	/**
27
+	 * Sort by canonical ascending order.
28
+	 * Used for DER encoding of SET type.
29
+	 *
30
+	 * @return self
31
+	 */
32
+	public function sortedSet()
33
+	{
34
+		$obj = clone $this;
35
+		usort($obj->_elements,
36
+			function (Element $a, Element $b) {
37
+				if ($a->typeClass() != $b->typeClass()) {
38
+					return $a->typeClass() < $b->typeClass() ? -1 : 1;
39
+				}
40
+				if ($a->tag() == $b->tag()) {
41
+					return 0;
42
+				}
43
+				return $a->tag() < $b->tag() ? -1 : 1;
44
+			});
45
+		return $obj;
46
+	}
47 47
     
48
-    /**
49
-     * Sort by encoding ascending order.
50
-     * Used for DER encoding of SET OF type.
51
-     *
52
-     * @return self
53
-     */
54
-    public function sortedSetOf()
55
-    {
56
-        $obj = clone $this;
57
-        usort($obj->_elements,
58
-            function (Element $a, Element $b) {
59
-                $a_der = $a->toDER();
60
-                $b_der = $b->toDER();
61
-                return strcmp($a_der, $b_der);
62
-            });
63
-        return $obj;
64
-    }
48
+	/**
49
+	 * Sort by encoding ascending order.
50
+	 * Used for DER encoding of SET OF type.
51
+	 *
52
+	 * @return self
53
+	 */
54
+	public function sortedSetOf()
55
+	{
56
+		$obj = clone $this;
57
+		usort($obj->_elements,
58
+			function (Element $a, Element $b) {
59
+				$a_der = $a->toDER();
60
+				$b_der = $b->toDER();
61
+				return strcmp($a_der, $b_der);
62
+			});
63
+		return $obj;
64
+	}
65 65
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types=1);
3
+declare(strict_types = 1);
4 4
 
5 5
 namespace ASN1\Type\Constructed;
6 6
 
@@ -33,7 +33,7 @@  discard block
 block discarded – undo
33 33
     {
34 34
         $obj = clone $this;
35 35
         usort($obj->_elements,
36
-            function (Element $a, Element $b) {
36
+            function(Element $a, Element $b) {
37 37
                 if ($a->typeClass() != $b->typeClass()) {
38 38
                     return $a->typeClass() < $b->typeClass() ? -1 : 1;
39 39
                 }
@@ -55,7 +55,7 @@  discard block
 block discarded – undo
55 55
     {
56 56
         $obj = clone $this;
57 57
         usort($obj->_elements,
58
-            function (Element $a, Element $b) {
58
+            function(Element $a, Element $b) {
59 59
                 $a_der = $a->toDER();
60 60
                 $b_der = $b->toDER();
61 61
                 return strcmp($a_der, $b_der);
Please login to merge, or discard this patch.
lib/ASN1/Type/Constructed/Sequence.php 2 patches
Indentation   +10 added lines, -10 removed lines patch added patch discarded remove patch
@@ -12,14 +12,14 @@
 block discarded – undo
12 12
  */
13 13
 class Sequence extends Structure
14 14
 {
15
-    /**
16
-     * Constructor
17
-     *
18
-     * @param Element[] $elements Any number of elements
19
-     */
20
-    public function __construct(Element ...$elements)
21
-    {
22
-        $this->_typeTag = self::TYPE_SEQUENCE;
23
-        parent::__construct(...$elements);
24
-    }
15
+	/**
16
+	 * Constructor
17
+	 *
18
+	 * @param Element[] $elements Any number of elements
19
+	 */
20
+	public function __construct(Element ...$elements)
21
+	{
22
+		$this->_typeTag = self::TYPE_SEQUENCE;
23
+		parent::__construct(...$elements);
24
+	}
25 25
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types=1);
3
+declare(strict_types = 1);
4 4
 
5 5
 namespace ASN1\Type\Constructed;
6 6
 
Please login to merge, or discard this patch.
lib/ASN1/Type/Primitive/ObjectIdentifier.php 2 patches
Indentation   +147 added lines, -147 removed lines patch added patch discarded remove patch
@@ -16,160 +16,160 @@
 block discarded – undo
16 16
  */
17 17
 class ObjectIdentifier extends Element
18 18
 {
19
-    use UniversalClass;
20
-    use PrimitiveType;
19
+	use UniversalClass;
20
+	use PrimitiveType;
21 21
     
22
-    /**
23
-     * Object identifier in dotted format.
24
-     *
25
-     * @var string
26
-     */
27
-    protected $_oid;
22
+	/**
23
+	 * Object identifier in dotted format.
24
+	 *
25
+	 * @var string
26
+	 */
27
+	protected $_oid;
28 28
     
29
-    /**
30
-     * Constructor.
31
-     *
32
-     * @param string $oid OID in dotted format
33
-     */
34
-    public function __construct(string $oid)
35
-    {
36
-        $this->_oid = $oid;
37
-        $this->_typeTag = self::TYPE_OBJECT_IDENTIFIER;
38
-    }
29
+	/**
30
+	 * Constructor.
31
+	 *
32
+	 * @param string $oid OID in dotted format
33
+	 */
34
+	public function __construct(string $oid)
35
+	{
36
+		$this->_oid = $oid;
37
+		$this->_typeTag = self::TYPE_OBJECT_IDENTIFIER;
38
+	}
39 39
     
40
-    /**
41
-     * Get OID in dotted format.
42
-     *
43
-     * @return string
44
-     */
45
-    public function oid(): string
46
-    {
47
-        return $this->_oid;
48
-    }
40
+	/**
41
+	 * Get OID in dotted format.
42
+	 *
43
+	 * @return string
44
+	 */
45
+	public function oid(): string
46
+	{
47
+		return $this->_oid;
48
+	}
49 49
     
50
-    /**
51
-     *
52
-     * {@inheritdoc}
53
-     */
54
-    protected function _encodedContentDER(): string
55
-    {
56
-        $subids = self::_explodeDottedOID($this->_oid);
57
-        // encode first two subids to one according to spec section 8.19.4
58
-        if (count($subids) >= 2) {
59
-            $num = ($subids[0] * 40) + $subids[1];
60
-            array_splice($subids, 0, 2, array($num));
61
-        }
62
-        return self::_encodeSubIDs(...$subids);
63
-    }
50
+	/**
51
+	 *
52
+	 * {@inheritdoc}
53
+	 */
54
+	protected function _encodedContentDER(): string
55
+	{
56
+		$subids = self::_explodeDottedOID($this->_oid);
57
+		// encode first two subids to one according to spec section 8.19.4
58
+		if (count($subids) >= 2) {
59
+			$num = ($subids[0] * 40) + $subids[1];
60
+			array_splice($subids, 0, 2, array($num));
61
+		}
62
+		return self::_encodeSubIDs(...$subids);
63
+	}
64 64
     
65
-    /**
66
-     *
67
-     * {@inheritdoc}
68
-     * @return self
69
-     */
70
-    protected static function _decodeFromDER(Identifier $identifier, string $data,
71
-        int &$offset)
72
-    {
73
-        $idx = $offset;
74
-        $len = Length::expectFromDER($data, $idx)->length();
75
-        $subids = self::_decodeSubIDs(substr($data, $idx, $len));
76
-        $idx += $len;
77
-        // decode first subidentifier according to spec section 8.19.4
78
-        if (isset($subids[0])) {
79
-            list($x, $y) = gmp_div_qr($subids[0], "40");
80
-            array_splice($subids, 0, 1, array($x, $y));
81
-        }
82
-        $offset = $idx;
83
-        return new self(self::_implodeSubIDs(...$subids));
84
-    }
65
+	/**
66
+	 *
67
+	 * {@inheritdoc}
68
+	 * @return self
69
+	 */
70
+	protected static function _decodeFromDER(Identifier $identifier, string $data,
71
+		int &$offset)
72
+	{
73
+		$idx = $offset;
74
+		$len = Length::expectFromDER($data, $idx)->length();
75
+		$subids = self::_decodeSubIDs(substr($data, $idx, $len));
76
+		$idx += $len;
77
+		// decode first subidentifier according to spec section 8.19.4
78
+		if (isset($subids[0])) {
79
+			list($x, $y) = gmp_div_qr($subids[0], "40");
80
+			array_splice($subids, 0, 1, array($x, $y));
81
+		}
82
+		$offset = $idx;
83
+		return new self(self::_implodeSubIDs(...$subids));
84
+	}
85 85
     
86
-    /**
87
-     * Explode dotted OID to an array of sub ID's.
88
-     *
89
-     * @param string $oid OID in dotted format
90
-     * @return \GMP[] Array of GMP numbers
91
-     */
92
-    protected static function _explodeDottedOID($oid): array
93
-    {
94
-        $subids = [];
95
-        foreach (explode(".", $oid) as $subid) {
96
-            $subids[] = gmp_init($subid, 10);
97
-        }
98
-        return $subids;
99
-    }
86
+	/**
87
+	 * Explode dotted OID to an array of sub ID's.
88
+	 *
89
+	 * @param string $oid OID in dotted format
90
+	 * @return \GMP[] Array of GMP numbers
91
+	 */
92
+	protected static function _explodeDottedOID($oid): array
93
+	{
94
+		$subids = [];
95
+		foreach (explode(".", $oid) as $subid) {
96
+			$subids[] = gmp_init($subid, 10);
97
+		}
98
+		return $subids;
99
+	}
100 100
     
101
-    /**
102
-     * Implode an array of sub IDs to dotted OID format.
103
-     *
104
-     * @param \GMP[] $subids
105
-     * @return string
106
-     */
107
-    protected static function _implodeSubIDs(\GMP ...$subids): string
108
-    {
109
-        return implode(".",
110
-            array_map(
111
-                function ($num) {
112
-                    return gmp_strval($num, 10);
113
-                }, $subids));
114
-    }
101
+	/**
102
+	 * Implode an array of sub IDs to dotted OID format.
103
+	 *
104
+	 * @param \GMP[] $subids
105
+	 * @return string
106
+	 */
107
+	protected static function _implodeSubIDs(\GMP ...$subids): string
108
+	{
109
+		return implode(".",
110
+			array_map(
111
+				function ($num) {
112
+					return gmp_strval($num, 10);
113
+				}, $subids));
114
+	}
115 115
     
116
-    /**
117
-     * Encode sub ID's to DER.
118
-     *
119
-     * @param \GMP[] $subids
120
-     * @return string
121
-     */
122
-    protected static function _encodeSubIDs(\GMP ...$subids): string
123
-    {
124
-        $data = "";
125
-        foreach ($subids as $subid) {
126
-            // if number fits to one base 128 byte
127
-            if ($subid < 128) {
128
-                $data .= chr(intval($subid));
129
-            } else { // encode to multiple bytes
130
-                $bytes = [];
131
-                do {
132
-                    array_unshift($bytes, 0x7f & gmp_intval($subid));
133
-                    $subid >>= 7;
134
-                } while ($subid > 0);
135
-                // all bytes except last must have bit 8 set to one
136
-                foreach (array_splice($bytes, 0, -1) as $byte) {
137
-                    $data .= chr(0x80 | $byte);
138
-                }
139
-                $data .= chr(reset($bytes));
140
-            }
141
-        }
142
-        return $data;
143
-    }
116
+	/**
117
+	 * Encode sub ID's to DER.
118
+	 *
119
+	 * @param \GMP[] $subids
120
+	 * @return string
121
+	 */
122
+	protected static function _encodeSubIDs(\GMP ...$subids): string
123
+	{
124
+		$data = "";
125
+		foreach ($subids as $subid) {
126
+			// if number fits to one base 128 byte
127
+			if ($subid < 128) {
128
+				$data .= chr(intval($subid));
129
+			} else { // encode to multiple bytes
130
+				$bytes = [];
131
+				do {
132
+					array_unshift($bytes, 0x7f & gmp_intval($subid));
133
+					$subid >>= 7;
134
+				} while ($subid > 0);
135
+				// all bytes except last must have bit 8 set to one
136
+				foreach (array_splice($bytes, 0, -1) as $byte) {
137
+					$data .= chr(0x80 | $byte);
138
+				}
139
+				$data .= chr(reset($bytes));
140
+			}
141
+		}
142
+		return $data;
143
+	}
144 144
     
145
-    /**
146
-     * Decode sub ID's from DER data.
147
-     *
148
-     * @param string $data
149
-     * @throws DecodeException
150
-     * @return \GMP[] Array of GMP numbers
151
-     */
152
-    protected static function _decodeSubIDs($data): array
153
-    {
154
-        $subids = [];
155
-        $idx = 0;
156
-        $end = strlen($data);
157
-        while ($idx < $end) {
158
-            $num = gmp_init("0", 10);
159
-            while (true) {
160
-                if ($idx >= $end) {
161
-                    throw new DecodeException("Unexpected end of data.");
162
-                }
163
-                $byte = ord($data[$idx++]);
164
-                $num |= $byte & 0x7f;
165
-                // bit 8 of the last octet is zero
166
-                if (!($byte & 0x80)) {
167
-                    break;
168
-                }
169
-                $num <<= 7;
170
-            }
171
-            $subids[] = $num;
172
-        }
173
-        return $subids;
174
-    }
145
+	/**
146
+	 * Decode sub ID's from DER data.
147
+	 *
148
+	 * @param string $data
149
+	 * @throws DecodeException
150
+	 * @return \GMP[] Array of GMP numbers
151
+	 */
152
+	protected static function _decodeSubIDs($data): array
153
+	{
154
+		$subids = [];
155
+		$idx = 0;
156
+		$end = strlen($data);
157
+		while ($idx < $end) {
158
+			$num = gmp_init("0", 10);
159
+			while (true) {
160
+				if ($idx >= $end) {
161
+					throw new DecodeException("Unexpected end of data.");
162
+				}
163
+				$byte = ord($data[$idx++]);
164
+				$num |= $byte & 0x7f;
165
+				// bit 8 of the last octet is zero
166
+				if (!($byte & 0x80)) {
167
+					break;
168
+				}
169
+				$num <<= 7;
170
+			}
171
+			$subids[] = $num;
172
+		}
173
+		return $subids;
174
+	}
175 175
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types=1);
3
+declare(strict_types = 1);
4 4
 
5 5
 namespace ASN1\Type\Primitive;
6 6
 
@@ -68,7 +68,7 @@  discard block
 block discarded – undo
68 68
      * @return self
69 69
      */
70 70
     protected static function _decodeFromDER(Identifier $identifier, string $data,
71
-        int &$offset)
71
+        int & $offset)
72 72
     {
73 73
         $idx = $offset;
74 74
         $len = Length::expectFromDER($data, $idx)->length();
@@ -108,7 +108,7 @@  discard block
 block discarded – undo
108 108
     {
109 109
         return implode(".",
110 110
             array_map(
111
-                function ($num) {
111
+                function($num) {
112 112
                     return gmp_strval($num, 10);
113 113
                 }, $subids));
114 114
     }
Please login to merge, or discard this patch.
lib/ASN1/Type/Primitive/Integer.php 2 patches
Indentation   +142 added lines, -142 removed lines patch added patch discarded remove patch
@@ -15,155 +15,155 @@
 block discarded – undo
15 15
  */
16 16
 class Integer extends Element
17 17
 {
18
-    use UniversalClass;
19
-    use PrimitiveType;
18
+	use UniversalClass;
19
+	use PrimitiveType;
20 20
     
21
-    /**
22
-     * Number as a base 10.
23
-     *
24
-     * @var int|string
25
-     */
26
-    private $_number;
21
+	/**
22
+	 * Number as a base 10.
23
+	 *
24
+	 * @var int|string
25
+	 */
26
+	private $_number;
27 27
     
28
-    /**
29
-     * Constructor.
30
-     *
31
-     * @param int|string $number Base 10 integer
32
-     */
33
-    public function __construct($number)
34
-    {
35
-        $this->_typeTag = self::TYPE_INTEGER;
36
-        if (!self::_validateNumber($number)) {
37
-            $var = is_scalar($number) ? strval($number) : gettype($number);
38
-            throw new \InvalidArgumentException("'$var' is not a valid number.");
39
-        }
40
-        $this->_number = $number;
41
-    }
28
+	/**
29
+	 * Constructor.
30
+	 *
31
+	 * @param int|string $number Base 10 integer
32
+	 */
33
+	public function __construct($number)
34
+	{
35
+		$this->_typeTag = self::TYPE_INTEGER;
36
+		if (!self::_validateNumber($number)) {
37
+			$var = is_scalar($number) ? strval($number) : gettype($number);
38
+			throw new \InvalidArgumentException("'$var' is not a valid number.");
39
+		}
40
+		$this->_number = $number;
41
+	}
42 42
     
43
-    /**
44
-     * Get the number as a base 10.
45
-     *
46
-     * @return int|string
47
-     */
48
-    public function number()
49
-    {
50
-        return $this->_number;
51
-    }
43
+	/**
44
+	 * Get the number as a base 10.
45
+	 *
46
+	 * @return int|string
47
+	 */
48
+	public function number()
49
+	{
50
+		return $this->_number;
51
+	}
52 52
     
53
-    /**
54
-     *
55
-     * {@inheritdoc}
56
-     */
57
-    protected function _encodedContentDER(): string
58
-    {
59
-        $num = gmp_init($this->_number, 10);
60
-        switch (gmp_sign($num)) {
61
-            // positive
62
-            case 1:
63
-                return self::_encodePositiveInteger($num);
64
-            // negative
65
-            case -1:
66
-                return self::_encodeNegativeInteger($num);
67
-        }
68
-        // zero
69
-        return "\0";
70
-    }
53
+	/**
54
+	 *
55
+	 * {@inheritdoc}
56
+	 */
57
+	protected function _encodedContentDER(): string
58
+	{
59
+		$num = gmp_init($this->_number, 10);
60
+		switch (gmp_sign($num)) {
61
+			// positive
62
+			case 1:
63
+				return self::_encodePositiveInteger($num);
64
+			// negative
65
+			case -1:
66
+				return self::_encodeNegativeInteger($num);
67
+		}
68
+		// zero
69
+		return "\0";
70
+	}
71 71
     
72
-    /**
73
-     * Encode positive integer to DER content.
74
-     *
75
-     * @param \GMP|resource $num
76
-     * @return string
77
-     */
78
-    private static function _encodePositiveInteger(\GMP $num): string
79
-    {
80
-        $bin = gmp_export($num, 1, GMP_MSW_FIRST | GMP_BIG_ENDIAN);
81
-        // if first bit is 1, prepend full zero byte
82
-        // to represent positive two's complement
83
-        if (ord($bin[0]) & 0x80) {
84
-            $bin = chr(0x00) . $bin;
85
-        }
86
-        return $bin;
87
-    }
72
+	/**
73
+	 * Encode positive integer to DER content.
74
+	 *
75
+	 * @param \GMP|resource $num
76
+	 * @return string
77
+	 */
78
+	private static function _encodePositiveInteger(\GMP $num): string
79
+	{
80
+		$bin = gmp_export($num, 1, GMP_MSW_FIRST | GMP_BIG_ENDIAN);
81
+		// if first bit is 1, prepend full zero byte
82
+		// to represent positive two's complement
83
+		if (ord($bin[0]) & 0x80) {
84
+			$bin = chr(0x00) . $bin;
85
+		}
86
+		return $bin;
87
+	}
88 88
     
89
-    /**
90
-     * Encode negative integer to DER content.
91
-     *
92
-     * @param \GMP|resource $num
93
-     * @return string
94
-     */
95
-    private static function _encodeNegativeInteger(\GMP $num): string
96
-    {
97
-        $num = gmp_abs($num);
98
-        // compute number of bytes required
99
-        $width = 1;
100
-        if ($num > 128) {
101
-            $tmp = $num;
102
-            do {
103
-                $width++;
104
-                $tmp >>= 8;
105
-            } while ($tmp > 128);
106
-        }
107
-        // compute two's complement 2^n - x
108
-        $num = gmp_pow("2", 8 * $width) - $num;
109
-        $bin = gmp_export($num, 1, GMP_MSW_FIRST | GMP_BIG_ENDIAN);
110
-        // if first bit is 0, prepend full inverted byte
111
-        // to represent negative two's complement
112
-        if (!(ord($bin[0]) & 0x80)) {
113
-            $bin = chr(0xff) . $bin;
114
-        }
115
-        return $bin;
116
-    }
89
+	/**
90
+	 * Encode negative integer to DER content.
91
+	 *
92
+	 * @param \GMP|resource $num
93
+	 * @return string
94
+	 */
95
+	private static function _encodeNegativeInteger(\GMP $num): string
96
+	{
97
+		$num = gmp_abs($num);
98
+		// compute number of bytes required
99
+		$width = 1;
100
+		if ($num > 128) {
101
+			$tmp = $num;
102
+			do {
103
+				$width++;
104
+				$tmp >>= 8;
105
+			} while ($tmp > 128);
106
+		}
107
+		// compute two's complement 2^n - x
108
+		$num = gmp_pow("2", 8 * $width) - $num;
109
+		$bin = gmp_export($num, 1, GMP_MSW_FIRST | GMP_BIG_ENDIAN);
110
+		// if first bit is 0, prepend full inverted byte
111
+		// to represent negative two's complement
112
+		if (!(ord($bin[0]) & 0x80)) {
113
+			$bin = chr(0xff) . $bin;
114
+		}
115
+		return $bin;
116
+	}
117 117
     
118
-    /**
119
-     *
120
-     * {@inheritdoc}
121
-     * @return self
122
-     */
123
-    protected static function _decodeFromDER(Identifier $identifier, string $data,
124
-        int &$offset)
125
-    {
126
-        $idx = $offset;
127
-        $length = Length::expectFromDER($data, $idx);
128
-        if (gmp_cmp(gmp_init($length->length(),10), gmp_init(PHP_INT_MAX, 10)) >= 0) {
129
-            throw new \RuntimeException("Integer length too large");
130
-        }
118
+	/**
119
+	 *
120
+	 * {@inheritdoc}
121
+	 * @return self
122
+	 */
123
+	protected static function _decodeFromDER(Identifier $identifier, string $data,
124
+		int &$offset)
125
+	{
126
+		$idx = $offset;
127
+		$length = Length::expectFromDER($data, $idx);
128
+		if (gmp_cmp(gmp_init($length->length(),10), gmp_init(PHP_INT_MAX, 10)) >= 0) {
129
+			throw new \RuntimeException("Integer length too large");
130
+		}
131 131
 
132
-        $bytes = substr($data, $idx, (int) $length->length());
133
-        $idx += $length->length();
134
-        $neg = ord($bytes[0]) & 0x80;
135
-        // negative, apply inversion of two's complement
136
-        if ($neg) {
137
-            $len = strlen($bytes);
138
-            for ($i = 0; $i < $len; $i++) {
139
-                $bytes[$i] = ~$bytes[$i];
140
-            }
141
-        }
142
-        $num = gmp_init(bin2hex($bytes), 16);
143
-        // negative, apply addition of two's complement
144
-        // and produce negative result
145
-        if ($neg) {
146
-            $num = gmp_neg($num + 1);
147
-        }
148
-        $offset = $idx;
149
-        // late static binding since enumerated extends integer type
150
-        return new static(gmp_strval($num, 10));
151
-    }
132
+		$bytes = substr($data, $idx, (int) $length->length());
133
+		$idx += $length->length();
134
+		$neg = ord($bytes[0]) & 0x80;
135
+		// negative, apply inversion of two's complement
136
+		if ($neg) {
137
+			$len = strlen($bytes);
138
+			for ($i = 0; $i < $len; $i++) {
139
+				$bytes[$i] = ~$bytes[$i];
140
+			}
141
+		}
142
+		$num = gmp_init(bin2hex($bytes), 16);
143
+		// negative, apply addition of two's complement
144
+		// and produce negative result
145
+		if ($neg) {
146
+			$num = gmp_neg($num + 1);
147
+		}
148
+		$offset = $idx;
149
+		// late static binding since enumerated extends integer type
150
+		return new static(gmp_strval($num, 10));
151
+	}
152 152
     
153
-    /**
154
-     * Test that number is valid for this context.
155
-     *
156
-     * @param mixed $num
157
-     * @return boolean
158
-     */
159
-    private static function _validateNumber($num): bool
160
-    {
161
-        if (is_int($num)) {
162
-            return true;
163
-        }
164
-        if (is_string($num) && preg_match('/-?\d+/', $num)) {
165
-            return true;
166
-        }
167
-        return false;
168
-    }
153
+	/**
154
+	 * Test that number is valid for this context.
155
+	 *
156
+	 * @param mixed $num
157
+	 * @return boolean
158
+	 */
159
+	private static function _validateNumber($num): bool
160
+	{
161
+		if (is_int($num)) {
162
+			return true;
163
+		}
164
+		if (is_string($num) && preg_match('/-?\d+/', $num)) {
165
+			return true;
166
+		}
167
+		return false;
168
+	}
169 169
 }
Please login to merge, or discard this patch.
Spacing   +3 added lines, -3 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types=1);
3
+declare(strict_types = 1);
4 4
 
5 5
 namespace ASN1\Type\Primitive;
6 6
 
@@ -121,11 +121,11 @@  discard block
 block discarded – undo
121 121
      * @return self
122 122
      */
123 123
     protected static function _decodeFromDER(Identifier $identifier, string $data,
124
-        int &$offset)
124
+        int & $offset)
125 125
     {
126 126
         $idx = $offset;
127 127
         $length = Length::expectFromDER($data, $idx);
128
-        if (gmp_cmp(gmp_init($length->length(),10), gmp_init(PHP_INT_MAX, 10)) >= 0) {
128
+        if (gmp_cmp(gmp_init($length->length(), 10), gmp_init(PHP_INT_MAX, 10)) >= 0) {
129 129
             throw new \RuntimeException("Integer length too large");
130 130
         }
131 131
 
Please login to merge, or discard this patch.
lib/ASN1/Type/Primitive/BitString.php 2 patches
Indentation   +181 added lines, -181 removed lines patch added patch discarded remove patch
@@ -16,194 +16,194 @@
 block discarded – undo
16 16
  */
17 17
 class BitString extends StringType
18 18
 {
19
-    use UniversalClass;
20
-    use PrimitiveType;
19
+	use UniversalClass;
20
+	use PrimitiveType;
21 21
     
22
-    /**
23
-     * Number of unused bits in the last octet.
24
-     *
25
-     * @var int $_unusedBits
26
-     */
27
-    protected $_unusedBits;
22
+	/**
23
+	 * Number of unused bits in the last octet.
24
+	 *
25
+	 * @var int $_unusedBits
26
+	 */
27
+	protected $_unusedBits;
28 28
     
29
-    /**
30
-     * Constructor.
31
-     *
32
-     * @param string $string Content octets
33
-     * @param int $unused_bits Number of unused bits in the last octet
34
-     */
35
-    public function __construct(string $string, int $unused_bits = 0)
36
-    {
37
-        $this->_typeTag = self::TYPE_BIT_STRING;
38
-        parent::__construct($string);
39
-        $this->_unusedBits = $unused_bits;
40
-    }
29
+	/**
30
+	 * Constructor.
31
+	 *
32
+	 * @param string $string Content octets
33
+	 * @param int $unused_bits Number of unused bits in the last octet
34
+	 */
35
+	public function __construct(string $string, int $unused_bits = 0)
36
+	{
37
+		$this->_typeTag = self::TYPE_BIT_STRING;
38
+		parent::__construct($string);
39
+		$this->_unusedBits = $unused_bits;
40
+	}
41 41
     
42
-    /**
43
-     * Get the number of bits in the string.
44
-     *
45
-     * @return int
46
-     */
47
-    public function numBits(): int
48
-    {
49
-        return strlen($this->_string) * 8 - $this->_unusedBits;
50
-    }
42
+	/**
43
+	 * Get the number of bits in the string.
44
+	 *
45
+	 * @return int
46
+	 */
47
+	public function numBits(): int
48
+	{
49
+		return strlen($this->_string) * 8 - $this->_unusedBits;
50
+	}
51 51
     
52
-    /**
53
-     * Get the number of unused bits in the last octet of the string.
54
-     *
55
-     * @return int
56
-     */
57
-    public function unusedBits(): int
58
-    {
59
-        return $this->_unusedBits;
60
-    }
52
+	/**
53
+	 * Get the number of unused bits in the last octet of the string.
54
+	 *
55
+	 * @return int
56
+	 */
57
+	public function unusedBits(): int
58
+	{
59
+		return $this->_unusedBits;
60
+	}
61 61
     
62
-    /**
63
-     * Test whether bit is set.
64
-     *
65
-     * @param int $idx Bit index.
66
-     *        Most significant bit of the first octet is index 0.
67
-     * @return boolean
68
-     */
69
-    public function testBit($idx): bool
70
-    {
71
-        // octet index
72
-        $oi = (int) floor($idx / 8);
73
-        // if octet is outside range
74
-        if ($oi < 0 || $oi >= strlen($this->_string)) {
75
-            throw new \OutOfBoundsException("Index is out of bounds.");
76
-        }
77
-        // bit index
78
-        $bi = $idx % 8;
79
-        // if tested bit is last octet's unused bit
80
-        if ($oi == strlen($this->_string) - 1) {
81
-            if ($bi >= 8 - $this->_unusedBits) {
82
-                throw new \OutOfBoundsException("Index refers to an unused bit.");
83
-            }
84
-        }
85
-        $byte = $this->_string[$oi];
86
-        // index 0 is the most significant bit in byte
87
-        $mask = 0x01 << (7 - $bi);
88
-        return (ord($byte) & $mask) > 0;
89
-    }
62
+	/**
63
+	 * Test whether bit is set.
64
+	 *
65
+	 * @param int $idx Bit index.
66
+	 *        Most significant bit of the first octet is index 0.
67
+	 * @return boolean
68
+	 */
69
+	public function testBit($idx): bool
70
+	{
71
+		// octet index
72
+		$oi = (int) floor($idx / 8);
73
+		// if octet is outside range
74
+		if ($oi < 0 || $oi >= strlen($this->_string)) {
75
+			throw new \OutOfBoundsException("Index is out of bounds.");
76
+		}
77
+		// bit index
78
+		$bi = $idx % 8;
79
+		// if tested bit is last octet's unused bit
80
+		if ($oi == strlen($this->_string) - 1) {
81
+			if ($bi >= 8 - $this->_unusedBits) {
82
+				throw new \OutOfBoundsException("Index refers to an unused bit.");
83
+			}
84
+		}
85
+		$byte = $this->_string[$oi];
86
+		// index 0 is the most significant bit in byte
87
+		$mask = 0x01 << (7 - $bi);
88
+		return (ord($byte) & $mask) > 0;
89
+	}
90 90
     
91
-    /**
92
-     * Get range of bits.
93
-     *
94
-     * @param int $start Index of first bit
95
-     * @param int $length Number of bits in range
96
-     * @throws \OutOfBoundsException
97
-     * @return number Integer of $length bits
98
-     */
99
-    public function range(int $start, int $length)
100
-    {
101
-        if (!$length) {
102
-            return 0;
103
-        }
104
-        if ($start + $length > $this->numBits()) {
105
-            throw new \OutOfBoundsException("Not enough bits.");
106
-        }
107
-        $bits = gmp_init(0);
108
-        $idx = $start;
109
-        $end = $start + $length;
110
-        while (true) {
111
-            $bit = $this->testBit($idx) ? 1 : 0;
112
-            $bits |= $bit;
113
-            if (++$idx >= $end) {
114
-                break;
115
-            }
116
-            $bits <<= 1;
117
-        }
118
-        return gmp_strval($bits, 10);
119
-    }
91
+	/**
92
+	 * Get range of bits.
93
+	 *
94
+	 * @param int $start Index of first bit
95
+	 * @param int $length Number of bits in range
96
+	 * @throws \OutOfBoundsException
97
+	 * @return number Integer of $length bits
98
+	 */
99
+	public function range(int $start, int $length)
100
+	{
101
+		if (!$length) {
102
+			return 0;
103
+		}
104
+		if ($start + $length > $this->numBits()) {
105
+			throw new \OutOfBoundsException("Not enough bits.");
106
+		}
107
+		$bits = gmp_init(0);
108
+		$idx = $start;
109
+		$end = $start + $length;
110
+		while (true) {
111
+			$bit = $this->testBit($idx) ? 1 : 0;
112
+			$bits |= $bit;
113
+			if (++$idx >= $end) {
114
+				break;
115
+			}
116
+			$bits <<= 1;
117
+		}
118
+		return gmp_strval($bits, 10);
119
+	}
120 120
     
121
-    /**
122
-     * Get a copy of the bit string with trailing zeroes removed.
123
-     *
124
-     * @return self
125
-     */
126
-    public function withoutTrailingZeroes()
127
-    {
128
-        // if bit string was empty
129
-        if (!strlen($this->_string)) {
130
-            return new self("");
131
-        }
132
-        $bits = $this->_string;
133
-        // count number of empty trailing octets
134
-        $unused_octets = 0;
135
-        for ($idx = strlen($bits) - 1; $idx >= 0; --$idx, ++$unused_octets) {
136
-            if ($bits[$idx] != "\x0") {
137
-                break;
138
-            }
139
-        }
140
-        // strip trailing octets
141
-        if ($unused_octets) {
142
-            $bits = substr($bits, 0, -$unused_octets);
143
-        }
144
-        // if bit string was full of zeroes
145
-        if (!strlen($bits)) {
146
-            return new self("");
147
-        }
148
-        // count number of trailing zeroes in the last octet
149
-        $unused_bits = 0;
150
-        $byte = ord($bits[strlen($bits) - 1]);
151
-        while (!($byte & 0x01)) {
152
-            $unused_bits++;
153
-            $byte >>= 1;
154
-        }
155
-        return new self($bits, $unused_bits);
156
-    }
121
+	/**
122
+	 * Get a copy of the bit string with trailing zeroes removed.
123
+	 *
124
+	 * @return self
125
+	 */
126
+	public function withoutTrailingZeroes()
127
+	{
128
+		// if bit string was empty
129
+		if (!strlen($this->_string)) {
130
+			return new self("");
131
+		}
132
+		$bits = $this->_string;
133
+		// count number of empty trailing octets
134
+		$unused_octets = 0;
135
+		for ($idx = strlen($bits) - 1; $idx >= 0; --$idx, ++$unused_octets) {
136
+			if ($bits[$idx] != "\x0") {
137
+				break;
138
+			}
139
+		}
140
+		// strip trailing octets
141
+		if ($unused_octets) {
142
+			$bits = substr($bits, 0, -$unused_octets);
143
+		}
144
+		// if bit string was full of zeroes
145
+		if (!strlen($bits)) {
146
+			return new self("");
147
+		}
148
+		// count number of trailing zeroes in the last octet
149
+		$unused_bits = 0;
150
+		$byte = ord($bits[strlen($bits) - 1]);
151
+		while (!($byte & 0x01)) {
152
+			$unused_bits++;
153
+			$byte >>= 1;
154
+		}
155
+		return new self($bits, $unused_bits);
156
+	}
157 157
     
158
-    /**
159
-     *
160
-     * {@inheritdoc}
161
-     */
162
-    protected function _encodedContentDER(): string
163
-    {
164
-        $der = chr($this->_unusedBits);
165
-        $der .= $this->_string;
166
-        if ($this->_unusedBits) {
167
-            $octet = $der[strlen($der) - 1];
168
-            // set unused bits to zero
169
-            $octet &= chr(0xff & ~((1 << $this->_unusedBits) - 1));
170
-            $der[strlen($der) - 1] = $octet;
171
-        }
172
-        return $der;
173
-    }
158
+	/**
159
+	 *
160
+	 * {@inheritdoc}
161
+	 */
162
+	protected function _encodedContentDER(): string
163
+	{
164
+		$der = chr($this->_unusedBits);
165
+		$der .= $this->_string;
166
+		if ($this->_unusedBits) {
167
+			$octet = $der[strlen($der) - 1];
168
+			// set unused bits to zero
169
+			$octet &= chr(0xff & ~((1 << $this->_unusedBits) - 1));
170
+			$der[strlen($der) - 1] = $octet;
171
+		}
172
+		return $der;
173
+	}
174 174
     
175
-    /**
176
-     *
177
-     * {@inheritdoc}
178
-     * @return self
179
-     */
180
-    protected static function _decodeFromDER(Identifier $identifier, string $data,
181
-        int &$offset)
182
-    {
183
-        $idx = $offset;
184
-        $length = Length::expectFromDER($data, $idx);
185
-        if ($length->length() < 1) {
186
-            throw new DecodeException("Bit string length must be at least 1.");
187
-        }
188
-        $unused_bits = ord($data[$idx++]);
189
-        if ($unused_bits > 7) {
190
-            throw new DecodeException(
191
-                "Unused bits in a bit string must be less than 8.");
192
-        }
193
-        $str_len = $length->length() - 1;
194
-        if ($str_len) {
195
-            $str = substr($data, $idx, $str_len);
196
-            if ($unused_bits) {
197
-                $mask = (1 << $unused_bits) - 1;
198
-                if (ord($str[strlen($str) - 1]) & $mask) {
199
-                    throw new DecodeException(
200
-                        "DER encoded bit string must have zero padding.");
201
-                }
202
-            }
203
-        } else {
204
-            $str = "";
205
-        }
206
-        $offset = $idx + $str_len;
207
-        return new self($str, $unused_bits);
208
-    }
175
+	/**
176
+	 *
177
+	 * {@inheritdoc}
178
+	 * @return self
179
+	 */
180
+	protected static function _decodeFromDER(Identifier $identifier, string $data,
181
+		int &$offset)
182
+	{
183
+		$idx = $offset;
184
+		$length = Length::expectFromDER($data, $idx);
185
+		if ($length->length() < 1) {
186
+			throw new DecodeException("Bit string length must be at least 1.");
187
+		}
188
+		$unused_bits = ord($data[$idx++]);
189
+		if ($unused_bits > 7) {
190
+			throw new DecodeException(
191
+				"Unused bits in a bit string must be less than 8.");
192
+		}
193
+		$str_len = $length->length() - 1;
194
+		if ($str_len) {
195
+			$str = substr($data, $idx, $str_len);
196
+			if ($unused_bits) {
197
+				$mask = (1 << $unused_bits) - 1;
198
+				if (ord($str[strlen($str) - 1]) & $mask) {
199
+					throw new DecodeException(
200
+						"DER encoded bit string must have zero padding.");
201
+				}
202
+			}
203
+		} else {
204
+			$str = "";
205
+		}
206
+		$offset = $idx + $str_len;
207
+		return new self($str, $unused_bits);
208
+	}
209 209
 }
Please login to merge, or discard this patch.
Spacing   +2 added lines, -2 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@  discard block
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types=1);
3
+declare(strict_types = 1);
4 4
 
5 5
 namespace ASN1\Type\Primitive;
6 6
 
@@ -178,7 +178,7 @@  discard block
 block discarded – undo
178 178
      * @return self
179 179
      */
180 180
     protected static function _decodeFromDER(Identifier $identifier, string $data,
181
-        int &$offset)
181
+        int & $offset)
182 182
     {
183 183
         $idx = $offset;
184 184
         $length = Length::expectFromDER($data, $idx);
Please login to merge, or discard this patch.
lib/ASN1/Type/Primitive/GeneralString.php 2 patches
Indentation   +20 added lines, -20 removed lines patch added patch discarded remove patch
@@ -12,26 +12,26 @@
 block discarded – undo
12 12
  */
13 13
 class GeneralString extends PrimitiveString
14 14
 {
15
-    use UniversalClass;
15
+	use UniversalClass;
16 16
     
17
-    /**
18
-     * Constructor.
19
-     *
20
-     * @param string $string
21
-     */
22
-    public function __construct(string $string)
23
-    {
24
-        $this->_typeTag = self::TYPE_GENERAL_STRING;
25
-        parent::__construct($string);
26
-    }
17
+	/**
18
+	 * Constructor.
19
+	 *
20
+	 * @param string $string
21
+	 */
22
+	public function __construct(string $string)
23
+	{
24
+		$this->_typeTag = self::TYPE_GENERAL_STRING;
25
+		parent::__construct($string);
26
+	}
27 27
     
28
-    /**
29
-     *
30
-     * {@inheritdoc}
31
-     */
32
-    protected function _validateString(string $string): bool
33
-    {
34
-        // allow everything
35
-        return true;
36
-    }
28
+	/**
29
+	 *
30
+	 * {@inheritdoc}
31
+	 */
32
+	protected function _validateString(string $string): bool
33
+	{
34
+		// allow everything
35
+		return true;
36
+	}
37 37
 }
Please login to merge, or discard this patch.
Spacing   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -1,6 +1,6 @@
 block discarded – undo
1 1
 <?php
2 2
 
3
-declare(strict_types=1);
3
+declare(strict_types = 1);
4 4
 
5 5
 namespace ASN1\Type\Primitive;
6 6
 
Please login to merge, or discard this patch.