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 — php72 ( 61c5d1...df0e96 )
by Joni
02:25
created
lib/ASN1/Type/Tagged/ExplicitTagging.php 2 patches
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 Sop\ASN1\Type\Tagged;
6 6
 
Please login to merge, or discard this patch.
Indentation   +6 added lines, -6 removed lines patch added patch discarded remove patch
@@ -12,10 +12,10 @@
 block discarded – undo
12 12
  */
13 13
 interface ExplicitTagging extends ElementBase
14 14
 {
15
-    /**
16
-     * Get explicitly tagged wrapped element.
17
-     *
18
-     * @return UnspecifiedType
19
-     */
20
-    public function explicit(): UnspecifiedType;
15
+	/**
16
+	 * Get explicitly tagged wrapped element.
17
+	 *
18
+	 * @return UnspecifiedType
19
+	 */
20
+	public function explicit(): UnspecifiedType;
21 21
 }
Please login to merge, or discard this patch.
lib/ASN1/Type/Tagged/TaggedTypeWrap.php 2 patches
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 Sop\ASN1\Type\Tagged;
6 6
 
Please login to merge, or discard this patch.
Indentation   +19 added lines, -19 removed lines patch added patch discarded remove patch
@@ -11,25 +11,25 @@
 block discarded – undo
11 11
  */
12 12
 abstract class TaggedTypeWrap extends TaggedType
13 13
 {
14
-    /**
15
-     * Wrapped element.
16
-     *
17
-     * @var \Sop\ASN1\Element
18
-     */
19
-    protected $_element;
14
+	/**
15
+	 * Wrapped element.
16
+	 *
17
+	 * @var \Sop\ASN1\Element
18
+	 */
19
+	protected $_element;
20 20
 
21
-    /**
22
-     * Type class.
23
-     *
24
-     * @var int
25
-     */
26
-    protected $_class;
21
+	/**
22
+	 * Type class.
23
+	 *
24
+	 * @var int
25
+	 */
26
+	protected $_class;
27 27
 
28
-    /**
29
-     * {@inheritdoc}
30
-     */
31
-    public function typeClass(): int
32
-    {
33
-        return $this->_class;
34
-    }
28
+	/**
29
+	 * {@inheritdoc}
30
+	 */
31
+	public function typeClass(): int
32
+	{
33
+		return $this->_class;
34
+	}
35 35
 }
Please login to merge, or discard this patch.
lib/ASN1/Type/UnspecifiedType.php 2 patches
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 Sop\ASN1\Type;
6 6
 
Please login to merge, or discard this patch.
Indentation   +671 added lines, -671 removed lines patch added patch discarded remove patch
@@ -17,675 +17,675 @@
 block discarded – undo
17 17
  */
18 18
 class UnspecifiedType implements ElementBase
19 19
 {
20
-    /**
21
-     * The wrapped element.
22
-     *
23
-     * @var Element
24
-     */
25
-    private $_element;
26
-
27
-    /**
28
-     * Constructor.
29
-     *
30
-     * @param Element $el
31
-     */
32
-    public function __construct(Element $el)
33
-    {
34
-        $this->_element = $el;
35
-    }
36
-
37
-    /**
38
-     * Initialize from DER data.
39
-     *
40
-     * @param string $data DER encoded data
41
-     *
42
-     * @return self
43
-     */
44
-    public static function fromDER(string $data): self
45
-    {
46
-        return Element::fromDER($data)->asUnspecified();
47
-    }
48
-
49
-    /**
50
-     * Initialize from ElementBase interface.
51
-     *
52
-     * @param ElementBase $el
53
-     *
54
-     * @return self
55
-     */
56
-    public static function fromElementBase(ElementBase $el): self
57
-    {
58
-        // if element is already wrapped
59
-        if ($el instanceof self) {
60
-            return $el;
61
-        }
62
-        return new self($el->asElement());
63
-    }
64
-
65
-    /**
66
-     * Get the wrapped element as a context specific tagged type.
67
-     *
68
-     * @throws \UnexpectedValueException If the element is not tagged
69
-     *
70
-     * @return TaggedType
71
-     */
72
-    public function asTagged(): TaggedType
73
-    {
74
-        if (!$this->_element instanceof TaggedType) {
75
-            throw new \UnexpectedValueException(
76
-                'Tagged element expected, got ' . $this->_typeDescriptorString());
77
-        }
78
-        return $this->_element;
79
-    }
80
-
81
-    /**
82
-     * Get the wrapped element as an application specific type.
83
-     *
84
-     * @throws \UnexpectedValueException If element is not application specific
85
-     *
86
-     * @return \Sop\ASN1\Type\Tagged\ApplicationType
87
-     */
88
-    public function asApplication(): Tagged\ApplicationType
89
-    {
90
-        if (!$this->_element instanceof Tagged\ApplicationType) {
91
-            throw new \UnexpectedValueException(
92
-                'Application type expected, got ' . $this->_typeDescriptorString());
93
-        }
94
-        return $this->_element;
95
-    }
96
-
97
-    /**
98
-     * Get the wrapped element as a private tagged type.
99
-     *
100
-     * @throws \UnexpectedValueException If element is not using private tagging
101
-     *
102
-     * @return \Sop\ASN1\Type\Tagged\PrivateType
103
-     */
104
-    public function asPrivate(): Tagged\PrivateType
105
-    {
106
-        if (!$this->_element instanceof Tagged\PrivateType) {
107
-            throw new \UnexpectedValueException(
108
-                'Private type expected, got ' . $this->_typeDescriptorString());
109
-        }
110
-        return $this->_element;
111
-    }
112
-
113
-    /**
114
-     * Get the wrapped element as a boolean type.
115
-     *
116
-     * @throws \UnexpectedValueException If the element is not a boolean
117
-     *
118
-     * @return \Sop\ASN1\Type\Primitive\Boolean
119
-     */
120
-    public function asBoolean(): Primitive\Boolean
121
-    {
122
-        if (!$this->_element instanceof Primitive\Boolean) {
123
-            throw new \UnexpectedValueException(
124
-                $this->_generateExceptionMessage(Element::TYPE_BOOLEAN));
125
-        }
126
-        return $this->_element;
127
-    }
128
-
129
-    /**
130
-     * Get the wrapped element as an integer type.
131
-     *
132
-     * @throws \UnexpectedValueException If the element is not an integer
133
-     *
134
-     * @return \Sop\ASN1\Type\Primitive\Integer
135
-     */
136
-    public function asInteger(): Primitive\Integer
137
-    {
138
-        if (!$this->_element instanceof Primitive\Integer) {
139
-            throw new \UnexpectedValueException(
140
-                $this->_generateExceptionMessage(Element::TYPE_INTEGER));
141
-        }
142
-        return $this->_element;
143
-    }
144
-
145
-    /**
146
-     * Get the wrapped element as a bit string type.
147
-     *
148
-     * @throws \UnexpectedValueException If the element is not a bit string
149
-     *
150
-     * @return \Sop\ASN1\Type\Primitive\BitString
151
-     */
152
-    public function asBitString(): Primitive\BitString
153
-    {
154
-        if (!$this->_element instanceof Primitive\BitString) {
155
-            throw new \UnexpectedValueException(
156
-                $this->_generateExceptionMessage(Element::TYPE_BIT_STRING));
157
-        }
158
-        return $this->_element;
159
-    }
160
-
161
-    /**
162
-     * Get the wrapped element as an octet string type.
163
-     *
164
-     * @throws \UnexpectedValueException If the element is not an octet string
165
-     *
166
-     * @return \Sop\ASN1\Type\Primitive\OctetString
167
-     */
168
-    public function asOctetString(): Primitive\OctetString
169
-    {
170
-        if (!$this->_element instanceof Primitive\OctetString) {
171
-            throw new \UnexpectedValueException(
172
-                $this->_generateExceptionMessage(Element::TYPE_OCTET_STRING));
173
-        }
174
-        return $this->_element;
175
-    }
176
-
177
-    /**
178
-     * Get the wrapped element as a null type.
179
-     *
180
-     * @throws \UnexpectedValueException If the element is not a null
181
-     *
182
-     * @return \Sop\ASN1\Type\Primitive\NullType
183
-     */
184
-    public function asNull(): Primitive\NullType
185
-    {
186
-        if (!$this->_element instanceof Primitive\NullType) {
187
-            throw new \UnexpectedValueException(
188
-                $this->_generateExceptionMessage(Element::TYPE_NULL));
189
-        }
190
-        return $this->_element;
191
-    }
192
-
193
-    /**
194
-     * Get the wrapped element as an object identifier type.
195
-     *
196
-     * @throws \UnexpectedValueException If the element is not an object identifier
197
-     *
198
-     * @return \Sop\ASN1\Type\Primitive\ObjectIdentifier
199
-     */
200
-    public function asObjectIdentifier(): Primitive\ObjectIdentifier
201
-    {
202
-        if (!$this->_element instanceof Primitive\ObjectIdentifier) {
203
-            throw new \UnexpectedValueException(
204
-                $this->_generateExceptionMessage(Element::TYPE_OBJECT_IDENTIFIER));
205
-        }
206
-        return $this->_element;
207
-    }
208
-
209
-    /**
210
-     * Get the wrapped element as an object descriptor type.
211
-     *
212
-     * @throws \UnexpectedValueException If the element is not an object descriptor
213
-     *
214
-     * @return \Sop\ASN1\Type\Primitive\ObjectDescriptor
215
-     */
216
-    public function asObjectDescriptor(): Primitive\ObjectDescriptor
217
-    {
218
-        if (!$this->_element instanceof Primitive\ObjectDescriptor) {
219
-            throw new \UnexpectedValueException(
220
-                $this->_generateExceptionMessage(Element::TYPE_OBJECT_DESCRIPTOR));
221
-        }
222
-        return $this->_element;
223
-    }
224
-
225
-    /**
226
-     * Get the wrapped element as a real type.
227
-     *
228
-     * @throws \UnexpectedValueException If the element is not a real
229
-     *
230
-     * @return \Sop\ASN1\Type\Primitive\Real
231
-     */
232
-    public function asReal(): Primitive\Real
233
-    {
234
-        if (!$this->_element instanceof Primitive\Real) {
235
-            throw new \UnexpectedValueException(
236
-                $this->_generateExceptionMessage(Element::TYPE_REAL));
237
-        }
238
-        return $this->_element;
239
-    }
240
-
241
-    /**
242
-     * Get the wrapped element as an enumerated type.
243
-     *
244
-     * @throws \UnexpectedValueException If the element is not an enumerated
245
-     *
246
-     * @return \Sop\ASN1\Type\Primitive\Enumerated
247
-     */
248
-    public function asEnumerated(): Primitive\Enumerated
249
-    {
250
-        if (!$this->_element instanceof Primitive\Enumerated) {
251
-            throw new \UnexpectedValueException(
252
-                $this->_generateExceptionMessage(Element::TYPE_ENUMERATED));
253
-        }
254
-        return $this->_element;
255
-    }
256
-
257
-    /**
258
-     * Get the wrapped element as a UTF8 string type.
259
-     *
260
-     * @throws \UnexpectedValueException If the element is not a UTF8 string
261
-     *
262
-     * @return \Sop\ASN1\Type\Primitive\UTF8String
263
-     */
264
-    public function asUTF8String(): Primitive\UTF8String
265
-    {
266
-        if (!$this->_element instanceof Primitive\UTF8String) {
267
-            throw new \UnexpectedValueException(
268
-                $this->_generateExceptionMessage(Element::TYPE_UTF8_STRING));
269
-        }
270
-        return $this->_element;
271
-    }
272
-
273
-    /**
274
-     * Get the wrapped element as a relative OID type.
275
-     *
276
-     * @throws \UnexpectedValueException If the element is not a relative OID
277
-     *
278
-     * @return \Sop\ASN1\Type\Primitive\RelativeOID
279
-     */
280
-    public function asRelativeOID(): Primitive\RelativeOID
281
-    {
282
-        if (!$this->_element instanceof Primitive\RelativeOID) {
283
-            throw new \UnexpectedValueException(
284
-                $this->_generateExceptionMessage(Element::TYPE_RELATIVE_OID));
285
-        }
286
-        return $this->_element;
287
-    }
288
-
289
-    /**
290
-     * Get the wrapped element as a sequence type.
291
-     *
292
-     * @throws \UnexpectedValueException If the element is not a sequence
293
-     *
294
-     * @return \Sop\ASN1\Type\Constructed\Sequence
295
-     */
296
-    public function asSequence(): Constructed\Sequence
297
-    {
298
-        if (!$this->_element instanceof Constructed\Sequence) {
299
-            throw new \UnexpectedValueException(
300
-                $this->_generateExceptionMessage(Element::TYPE_SEQUENCE));
301
-        }
302
-        return $this->_element;
303
-    }
304
-
305
-    /**
306
-     * Get the wrapped element as a set type.
307
-     *
308
-     * @throws \UnexpectedValueException If the element is not a set
309
-     *
310
-     * @return \Sop\ASN1\Type\Constructed\Set
311
-     */
312
-    public function asSet(): Constructed\Set
313
-    {
314
-        if (!$this->_element instanceof Constructed\Set) {
315
-            throw new \UnexpectedValueException(
316
-                $this->_generateExceptionMessage(Element::TYPE_SET));
317
-        }
318
-        return $this->_element;
319
-    }
320
-
321
-    /**
322
-     * Get the wrapped element as a numeric string type.
323
-     *
324
-     * @throws \UnexpectedValueException If the element is not a numeric string
325
-     *
326
-     * @return \Sop\ASN1\Type\Primitive\NumericString
327
-     */
328
-    public function asNumericString(): Primitive\NumericString
329
-    {
330
-        if (!$this->_element instanceof Primitive\NumericString) {
331
-            throw new \UnexpectedValueException(
332
-                $this->_generateExceptionMessage(Element::TYPE_NUMERIC_STRING));
333
-        }
334
-        return $this->_element;
335
-    }
336
-
337
-    /**
338
-     * Get the wrapped element as a printable string type.
339
-     *
340
-     * @throws \UnexpectedValueException If the element is not a printable
341
-     *                                   string
342
-     *
343
-     * @return \Sop\ASN1\Type\Primitive\PrintableString
344
-     */
345
-    public function asPrintableString(): Primitive\PrintableString
346
-    {
347
-        if (!$this->_element instanceof Primitive\PrintableString) {
348
-            throw new \UnexpectedValueException(
349
-                $this->_generateExceptionMessage(Element::TYPE_PRINTABLE_STRING));
350
-        }
351
-        return $this->_element;
352
-    }
353
-
354
-    /**
355
-     * Get the wrapped element as a T61 string type.
356
-     *
357
-     * @throws \UnexpectedValueException If the element is not a T61 string
358
-     *
359
-     * @return \Sop\ASN1\Type\Primitive\T61String
360
-     */
361
-    public function asT61String(): Primitive\T61String
362
-    {
363
-        if (!$this->_element instanceof Primitive\T61String) {
364
-            throw new \UnexpectedValueException(
365
-                $this->_generateExceptionMessage(Element::TYPE_T61_STRING));
366
-        }
367
-        return $this->_element;
368
-    }
369
-
370
-    /**
371
-     * Get the wrapped element as a videotex string type.
372
-     *
373
-     * @throws \UnexpectedValueException If the element is not a videotex string
374
-     *
375
-     * @return \Sop\ASN1\Type\Primitive\VideotexString
376
-     */
377
-    public function asVideotexString(): Primitive\VideotexString
378
-    {
379
-        if (!$this->_element instanceof Primitive\VideotexString) {
380
-            throw new \UnexpectedValueException(
381
-                $this->_generateExceptionMessage(Element::TYPE_VIDEOTEX_STRING));
382
-        }
383
-        return $this->_element;
384
-    }
385
-
386
-    /**
387
-     * Get the wrapped element as a IA5 string type.
388
-     *
389
-     * @throws \UnexpectedValueException If the element is not a IA5 string
390
-     *
391
-     * @return \Sop\ASN1\Type\Primitive\IA5String
392
-     */
393
-    public function asIA5String(): Primitive\IA5String
394
-    {
395
-        if (!$this->_element instanceof Primitive\IA5String) {
396
-            throw new \UnexpectedValueException(
397
-                $this->_generateExceptionMessage(Element::TYPE_IA5_STRING));
398
-        }
399
-        return $this->_element;
400
-    }
401
-
402
-    /**
403
-     * Get the wrapped element as an UTC time type.
404
-     *
405
-     * @throws \UnexpectedValueException If the element is not a UTC time
406
-     *
407
-     * @return \Sop\ASN1\Type\Primitive\UTCTime
408
-     */
409
-    public function asUTCTime(): Primitive\UTCTime
410
-    {
411
-        if (!$this->_element instanceof Primitive\UTCTime) {
412
-            throw new \UnexpectedValueException(
413
-                $this->_generateExceptionMessage(Element::TYPE_UTC_TIME));
414
-        }
415
-        return $this->_element;
416
-    }
417
-
418
-    /**
419
-     * Get the wrapped element as a generalized time type.
420
-     *
421
-     * @throws \UnexpectedValueException If the element is not a generalized time
422
-     *
423
-     * @return \Sop\ASN1\Type\Primitive\GeneralizedTime
424
-     */
425
-    public function asGeneralizedTime(): Primitive\GeneralizedTime
426
-    {
427
-        if (!$this->_element instanceof Primitive\GeneralizedTime) {
428
-            throw new \UnexpectedValueException(
429
-                $this->_generateExceptionMessage(Element::TYPE_GENERALIZED_TIME));
430
-        }
431
-        return $this->_element;
432
-    }
433
-
434
-    /**
435
-     * Get the wrapped element as a graphic string type.
436
-     *
437
-     * @throws \UnexpectedValueException If the element is not a graphic string
438
-     *
439
-     * @return \Sop\ASN1\Type\Primitive\GraphicString
440
-     */
441
-    public function asGraphicString(): Primitive\GraphicString
442
-    {
443
-        if (!$this->_element instanceof Primitive\GraphicString) {
444
-            throw new \UnexpectedValueException(
445
-                $this->_generateExceptionMessage(Element::TYPE_GRAPHIC_STRING));
446
-        }
447
-        return $this->_element;
448
-    }
449
-
450
-    /**
451
-     * Get the wrapped element as a visible string type.
452
-     *
453
-     * @throws \UnexpectedValueException If the element is not a visible string
454
-     *
455
-     * @return \Sop\ASN1\Type\Primitive\VisibleString
456
-     */
457
-    public function asVisibleString(): Primitive\VisibleString
458
-    {
459
-        if (!$this->_element instanceof Primitive\VisibleString) {
460
-            throw new \UnexpectedValueException(
461
-                $this->_generateExceptionMessage(Element::TYPE_VISIBLE_STRING));
462
-        }
463
-        return $this->_element;
464
-    }
465
-
466
-    /**
467
-     * Get the wrapped element as a general string type.
468
-     *
469
-     * @throws \UnexpectedValueException If the element is not general string
470
-     *
471
-     * @return \Sop\ASN1\Type\Primitive\GeneralString
472
-     */
473
-    public function asGeneralString(): Primitive\GeneralString
474
-    {
475
-        if (!$this->_element instanceof Primitive\GeneralString) {
476
-            throw new \UnexpectedValueException(
477
-                $this->_generateExceptionMessage(Element::TYPE_GENERAL_STRING));
478
-        }
479
-        return $this->_element;
480
-    }
481
-
482
-    /**
483
-     * Get the wrapped element as a universal string type.
484
-     *
485
-     * @throws \UnexpectedValueException If the element is not a universal string
486
-     *
487
-     * @return \Sop\ASN1\Type\Primitive\UniversalString
488
-     */
489
-    public function asUniversalString(): Primitive\UniversalString
490
-    {
491
-        if (!$this->_element instanceof Primitive\UniversalString) {
492
-            throw new \UnexpectedValueException(
493
-                $this->_generateExceptionMessage(Element::TYPE_UNIVERSAL_STRING));
494
-        }
495
-        return $this->_element;
496
-    }
497
-
498
-    /**
499
-     * Get the wrapped element as a character string type.
500
-     *
501
-     * @throws \UnexpectedValueException If the element is not a character string
502
-     *
503
-     * @return \Sop\ASN1\Type\Primitive\CharacterString
504
-     */
505
-    public function asCharacterString(): Primitive\CharacterString
506
-    {
507
-        if (!$this->_element instanceof Primitive\CharacterString) {
508
-            throw new \UnexpectedValueException(
509
-                $this->_generateExceptionMessage(Element::TYPE_CHARACTER_STRING));
510
-        }
511
-        return $this->_element;
512
-    }
513
-
514
-    /**
515
-     * Get the wrapped element as a BMP string type.
516
-     *
517
-     * @throws \UnexpectedValueException If the element is not a bmp string
518
-     *
519
-     * @return \Sop\ASN1\Type\Primitive\BMPString
520
-     */
521
-    public function asBMPString(): Primitive\BMPString
522
-    {
523
-        if (!$this->_element instanceof Primitive\BMPString) {
524
-            throw new \UnexpectedValueException(
525
-                $this->_generateExceptionMessage(Element::TYPE_BMP_STRING));
526
-        }
527
-        return $this->_element;
528
-    }
529
-
530
-    /**
531
-     * Get the wrapped element as a constructed string type.
532
-     *
533
-     * @throws \UnexpectedValueException If the element is not a constructed string
534
-     *
535
-     * @return \Sop\ASN1\Type\Constructed\ConstructedString
536
-     */
537
-    public function asConstructedString(): Constructed\ConstructedString
538
-    {
539
-        if (!$this->_element instanceof Constructed\ConstructedString) {
540
-            throw new \UnexpectedValueException(
541
-                $this->_generateExceptionMessage(Element::TYPE_CONSTRUCTED_STRING));
542
-        }
543
-        return $this->_element;
544
-    }
545
-
546
-    /**
547
-     * Get the wrapped element as any string type.
548
-     *
549
-     * @throws \UnexpectedValueException If the element is not a string
550
-     *
551
-     * @return StringType
552
-     */
553
-    public function asString(): StringType
554
-    {
555
-        if (!$this->_element instanceof StringType) {
556
-            throw new \UnexpectedValueException(
557
-                $this->_generateExceptionMessage(Element::TYPE_STRING));
558
-        }
559
-        return $this->_element;
560
-    }
561
-
562
-    /**
563
-     * Get the wrapped element as any time type.
564
-     *
565
-     * @throws \UnexpectedValueException If the element is not a time
566
-     *
567
-     * @return TimeType
568
-     */
569
-    public function asTime(): TimeType
570
-    {
571
-        if (!$this->_element instanceof TimeType) {
572
-            throw new \UnexpectedValueException(
573
-                $this->_generateExceptionMessage(Element::TYPE_TIME));
574
-        }
575
-        return $this->_element;
576
-    }
577
-
578
-    /**
579
-     * {@inheritdoc}
580
-     */
581
-    public function toDER(): string
582
-    {
583
-        return $this->_element->toDER();
584
-    }
585
-
586
-    /**
587
-     * {@inheritdoc}
588
-     */
589
-    public function typeClass(): int
590
-    {
591
-        return $this->_element->typeClass();
592
-    }
593
-
594
-    /**
595
-     * {@inheritdoc}
596
-     */
597
-    public function isConstructed(): bool
598
-    {
599
-        return $this->_element->isConstructed();
600
-    }
601
-
602
-    /**
603
-     * {@inheritdoc}
604
-     */
605
-    public function tag(): int
606
-    {
607
-        return $this->_element->tag();
608
-    }
609
-
610
-    /**
611
-     * {@inheritdoc}
612
-     */
613
-    public function isType(int $tag): bool
614
-    {
615
-        return $this->_element->isType($tag);
616
-    }
617
-
618
-    /**
619
-     * {@inheritdoc}
620
-     *
621
-     * Consider using any of the <code>as*</code> accessor methods instead.
622
-     */
623
-    public function expectType(int $tag): ElementBase
624
-    {
625
-        return $this->_element->expectType($tag);
626
-    }
627
-
628
-    /**
629
-     * {@inheritdoc}
630
-     */
631
-    public function isTagged(): bool
632
-    {
633
-        return $this->_element->isTagged();
634
-    }
635
-
636
-    /**
637
-     * {@inheritdoc}
638
-     *
639
-     * Consider using <code>asTagged()</code> method instead and chaining
640
-     * with <code>TaggedType::asExplicit()</code> or
641
-     * <code>TaggedType::asImplicit()</code>.
642
-     */
643
-    public function expectTagged(?int $tag = null): TaggedType
644
-    {
645
-        return $this->_element->expectTagged($tag);
646
-    }
647
-
648
-    /**
649
-     * {@inheritdoc}
650
-     */
651
-    public function asElement(): Element
652
-    {
653
-        return $this->_element;
654
-    }
655
-
656
-    /**
657
-     * {@inheritdoc}
658
-     */
659
-    public function asUnspecified(): UnspecifiedType
660
-    {
661
-        return $this;
662
-    }
663
-
664
-    /**
665
-     * Generate message for exceptions thrown by <code>as*</code> methods.
666
-     *
667
-     * @param int $tag Type tag of the expected element
668
-     *
669
-     * @return string
670
-     */
671
-    private function _generateExceptionMessage(int $tag): string
672
-    {
673
-        return sprintf('%s expected, got %s.', Element::tagToName($tag),
674
-            $this->_typeDescriptorString());
675
-    }
676
-
677
-    /**
678
-     * Get textual description of the wrapped element for debugging purposes.
679
-     *
680
-     * @return string
681
-     */
682
-    private function _typeDescriptorString(): string
683
-    {
684
-        $type_cls = $this->_element->typeClass();
685
-        $tag = $this->_element->tag();
686
-        if (Identifier::CLASS_UNIVERSAL === $type_cls) {
687
-            return Element::tagToName($tag);
688
-        }
689
-        return Identifier::classToName($type_cls) . " TAG {$tag}";
690
-    }
20
+	/**
21
+	 * The wrapped element.
22
+	 *
23
+	 * @var Element
24
+	 */
25
+	private $_element;
26
+
27
+	/**
28
+	 * Constructor.
29
+	 *
30
+	 * @param Element $el
31
+	 */
32
+	public function __construct(Element $el)
33
+	{
34
+		$this->_element = $el;
35
+	}
36
+
37
+	/**
38
+	 * Initialize from DER data.
39
+	 *
40
+	 * @param string $data DER encoded data
41
+	 *
42
+	 * @return self
43
+	 */
44
+	public static function fromDER(string $data): self
45
+	{
46
+		return Element::fromDER($data)->asUnspecified();
47
+	}
48
+
49
+	/**
50
+	 * Initialize from ElementBase interface.
51
+	 *
52
+	 * @param ElementBase $el
53
+	 *
54
+	 * @return self
55
+	 */
56
+	public static function fromElementBase(ElementBase $el): self
57
+	{
58
+		// if element is already wrapped
59
+		if ($el instanceof self) {
60
+			return $el;
61
+		}
62
+		return new self($el->asElement());
63
+	}
64
+
65
+	/**
66
+	 * Get the wrapped element as a context specific tagged type.
67
+	 *
68
+	 * @throws \UnexpectedValueException If the element is not tagged
69
+	 *
70
+	 * @return TaggedType
71
+	 */
72
+	public function asTagged(): TaggedType
73
+	{
74
+		if (!$this->_element instanceof TaggedType) {
75
+			throw new \UnexpectedValueException(
76
+				'Tagged element expected, got ' . $this->_typeDescriptorString());
77
+		}
78
+		return $this->_element;
79
+	}
80
+
81
+	/**
82
+	 * Get the wrapped element as an application specific type.
83
+	 *
84
+	 * @throws \UnexpectedValueException If element is not application specific
85
+	 *
86
+	 * @return \Sop\ASN1\Type\Tagged\ApplicationType
87
+	 */
88
+	public function asApplication(): Tagged\ApplicationType
89
+	{
90
+		if (!$this->_element instanceof Tagged\ApplicationType) {
91
+			throw new \UnexpectedValueException(
92
+				'Application type expected, got ' . $this->_typeDescriptorString());
93
+		}
94
+		return $this->_element;
95
+	}
96
+
97
+	/**
98
+	 * Get the wrapped element as a private tagged type.
99
+	 *
100
+	 * @throws \UnexpectedValueException If element is not using private tagging
101
+	 *
102
+	 * @return \Sop\ASN1\Type\Tagged\PrivateType
103
+	 */
104
+	public function asPrivate(): Tagged\PrivateType
105
+	{
106
+		if (!$this->_element instanceof Tagged\PrivateType) {
107
+			throw new \UnexpectedValueException(
108
+				'Private type expected, got ' . $this->_typeDescriptorString());
109
+		}
110
+		return $this->_element;
111
+	}
112
+
113
+	/**
114
+	 * Get the wrapped element as a boolean type.
115
+	 *
116
+	 * @throws \UnexpectedValueException If the element is not a boolean
117
+	 *
118
+	 * @return \Sop\ASN1\Type\Primitive\Boolean
119
+	 */
120
+	public function asBoolean(): Primitive\Boolean
121
+	{
122
+		if (!$this->_element instanceof Primitive\Boolean) {
123
+			throw new \UnexpectedValueException(
124
+				$this->_generateExceptionMessage(Element::TYPE_BOOLEAN));
125
+		}
126
+		return $this->_element;
127
+	}
128
+
129
+	/**
130
+	 * Get the wrapped element as an integer type.
131
+	 *
132
+	 * @throws \UnexpectedValueException If the element is not an integer
133
+	 *
134
+	 * @return \Sop\ASN1\Type\Primitive\Integer
135
+	 */
136
+	public function asInteger(): Primitive\Integer
137
+	{
138
+		if (!$this->_element instanceof Primitive\Integer) {
139
+			throw new \UnexpectedValueException(
140
+				$this->_generateExceptionMessage(Element::TYPE_INTEGER));
141
+		}
142
+		return $this->_element;
143
+	}
144
+
145
+	/**
146
+	 * Get the wrapped element as a bit string type.
147
+	 *
148
+	 * @throws \UnexpectedValueException If the element is not a bit string
149
+	 *
150
+	 * @return \Sop\ASN1\Type\Primitive\BitString
151
+	 */
152
+	public function asBitString(): Primitive\BitString
153
+	{
154
+		if (!$this->_element instanceof Primitive\BitString) {
155
+			throw new \UnexpectedValueException(
156
+				$this->_generateExceptionMessage(Element::TYPE_BIT_STRING));
157
+		}
158
+		return $this->_element;
159
+	}
160
+
161
+	/**
162
+	 * Get the wrapped element as an octet string type.
163
+	 *
164
+	 * @throws \UnexpectedValueException If the element is not an octet string
165
+	 *
166
+	 * @return \Sop\ASN1\Type\Primitive\OctetString
167
+	 */
168
+	public function asOctetString(): Primitive\OctetString
169
+	{
170
+		if (!$this->_element instanceof Primitive\OctetString) {
171
+			throw new \UnexpectedValueException(
172
+				$this->_generateExceptionMessage(Element::TYPE_OCTET_STRING));
173
+		}
174
+		return $this->_element;
175
+	}
176
+
177
+	/**
178
+	 * Get the wrapped element as a null type.
179
+	 *
180
+	 * @throws \UnexpectedValueException If the element is not a null
181
+	 *
182
+	 * @return \Sop\ASN1\Type\Primitive\NullType
183
+	 */
184
+	public function asNull(): Primitive\NullType
185
+	{
186
+		if (!$this->_element instanceof Primitive\NullType) {
187
+			throw new \UnexpectedValueException(
188
+				$this->_generateExceptionMessage(Element::TYPE_NULL));
189
+		}
190
+		return $this->_element;
191
+	}
192
+
193
+	/**
194
+	 * Get the wrapped element as an object identifier type.
195
+	 *
196
+	 * @throws \UnexpectedValueException If the element is not an object identifier
197
+	 *
198
+	 * @return \Sop\ASN1\Type\Primitive\ObjectIdentifier
199
+	 */
200
+	public function asObjectIdentifier(): Primitive\ObjectIdentifier
201
+	{
202
+		if (!$this->_element instanceof Primitive\ObjectIdentifier) {
203
+			throw new \UnexpectedValueException(
204
+				$this->_generateExceptionMessage(Element::TYPE_OBJECT_IDENTIFIER));
205
+		}
206
+		return $this->_element;
207
+	}
208
+
209
+	/**
210
+	 * Get the wrapped element as an object descriptor type.
211
+	 *
212
+	 * @throws \UnexpectedValueException If the element is not an object descriptor
213
+	 *
214
+	 * @return \Sop\ASN1\Type\Primitive\ObjectDescriptor
215
+	 */
216
+	public function asObjectDescriptor(): Primitive\ObjectDescriptor
217
+	{
218
+		if (!$this->_element instanceof Primitive\ObjectDescriptor) {
219
+			throw new \UnexpectedValueException(
220
+				$this->_generateExceptionMessage(Element::TYPE_OBJECT_DESCRIPTOR));
221
+		}
222
+		return $this->_element;
223
+	}
224
+
225
+	/**
226
+	 * Get the wrapped element as a real type.
227
+	 *
228
+	 * @throws \UnexpectedValueException If the element is not a real
229
+	 *
230
+	 * @return \Sop\ASN1\Type\Primitive\Real
231
+	 */
232
+	public function asReal(): Primitive\Real
233
+	{
234
+		if (!$this->_element instanceof Primitive\Real) {
235
+			throw new \UnexpectedValueException(
236
+				$this->_generateExceptionMessage(Element::TYPE_REAL));
237
+		}
238
+		return $this->_element;
239
+	}
240
+
241
+	/**
242
+	 * Get the wrapped element as an enumerated type.
243
+	 *
244
+	 * @throws \UnexpectedValueException If the element is not an enumerated
245
+	 *
246
+	 * @return \Sop\ASN1\Type\Primitive\Enumerated
247
+	 */
248
+	public function asEnumerated(): Primitive\Enumerated
249
+	{
250
+		if (!$this->_element instanceof Primitive\Enumerated) {
251
+			throw new \UnexpectedValueException(
252
+				$this->_generateExceptionMessage(Element::TYPE_ENUMERATED));
253
+		}
254
+		return $this->_element;
255
+	}
256
+
257
+	/**
258
+	 * Get the wrapped element as a UTF8 string type.
259
+	 *
260
+	 * @throws \UnexpectedValueException If the element is not a UTF8 string
261
+	 *
262
+	 * @return \Sop\ASN1\Type\Primitive\UTF8String
263
+	 */
264
+	public function asUTF8String(): Primitive\UTF8String
265
+	{
266
+		if (!$this->_element instanceof Primitive\UTF8String) {
267
+			throw new \UnexpectedValueException(
268
+				$this->_generateExceptionMessage(Element::TYPE_UTF8_STRING));
269
+		}
270
+		return $this->_element;
271
+	}
272
+
273
+	/**
274
+	 * Get the wrapped element as a relative OID type.
275
+	 *
276
+	 * @throws \UnexpectedValueException If the element is not a relative OID
277
+	 *
278
+	 * @return \Sop\ASN1\Type\Primitive\RelativeOID
279
+	 */
280
+	public function asRelativeOID(): Primitive\RelativeOID
281
+	{
282
+		if (!$this->_element instanceof Primitive\RelativeOID) {
283
+			throw new \UnexpectedValueException(
284
+				$this->_generateExceptionMessage(Element::TYPE_RELATIVE_OID));
285
+		}
286
+		return $this->_element;
287
+	}
288
+
289
+	/**
290
+	 * Get the wrapped element as a sequence type.
291
+	 *
292
+	 * @throws \UnexpectedValueException If the element is not a sequence
293
+	 *
294
+	 * @return \Sop\ASN1\Type\Constructed\Sequence
295
+	 */
296
+	public function asSequence(): Constructed\Sequence
297
+	{
298
+		if (!$this->_element instanceof Constructed\Sequence) {
299
+			throw new \UnexpectedValueException(
300
+				$this->_generateExceptionMessage(Element::TYPE_SEQUENCE));
301
+		}
302
+		return $this->_element;
303
+	}
304
+
305
+	/**
306
+	 * Get the wrapped element as a set type.
307
+	 *
308
+	 * @throws \UnexpectedValueException If the element is not a set
309
+	 *
310
+	 * @return \Sop\ASN1\Type\Constructed\Set
311
+	 */
312
+	public function asSet(): Constructed\Set
313
+	{
314
+		if (!$this->_element instanceof Constructed\Set) {
315
+			throw new \UnexpectedValueException(
316
+				$this->_generateExceptionMessage(Element::TYPE_SET));
317
+		}
318
+		return $this->_element;
319
+	}
320
+
321
+	/**
322
+	 * Get the wrapped element as a numeric string type.
323
+	 *
324
+	 * @throws \UnexpectedValueException If the element is not a numeric string
325
+	 *
326
+	 * @return \Sop\ASN1\Type\Primitive\NumericString
327
+	 */
328
+	public function asNumericString(): Primitive\NumericString
329
+	{
330
+		if (!$this->_element instanceof Primitive\NumericString) {
331
+			throw new \UnexpectedValueException(
332
+				$this->_generateExceptionMessage(Element::TYPE_NUMERIC_STRING));
333
+		}
334
+		return $this->_element;
335
+	}
336
+
337
+	/**
338
+	 * Get the wrapped element as a printable string type.
339
+	 *
340
+	 * @throws \UnexpectedValueException If the element is not a printable
341
+	 *                                   string
342
+	 *
343
+	 * @return \Sop\ASN1\Type\Primitive\PrintableString
344
+	 */
345
+	public function asPrintableString(): Primitive\PrintableString
346
+	{
347
+		if (!$this->_element instanceof Primitive\PrintableString) {
348
+			throw new \UnexpectedValueException(
349
+				$this->_generateExceptionMessage(Element::TYPE_PRINTABLE_STRING));
350
+		}
351
+		return $this->_element;
352
+	}
353
+
354
+	/**
355
+	 * Get the wrapped element as a T61 string type.
356
+	 *
357
+	 * @throws \UnexpectedValueException If the element is not a T61 string
358
+	 *
359
+	 * @return \Sop\ASN1\Type\Primitive\T61String
360
+	 */
361
+	public function asT61String(): Primitive\T61String
362
+	{
363
+		if (!$this->_element instanceof Primitive\T61String) {
364
+			throw new \UnexpectedValueException(
365
+				$this->_generateExceptionMessage(Element::TYPE_T61_STRING));
366
+		}
367
+		return $this->_element;
368
+	}
369
+
370
+	/**
371
+	 * Get the wrapped element as a videotex string type.
372
+	 *
373
+	 * @throws \UnexpectedValueException If the element is not a videotex string
374
+	 *
375
+	 * @return \Sop\ASN1\Type\Primitive\VideotexString
376
+	 */
377
+	public function asVideotexString(): Primitive\VideotexString
378
+	{
379
+		if (!$this->_element instanceof Primitive\VideotexString) {
380
+			throw new \UnexpectedValueException(
381
+				$this->_generateExceptionMessage(Element::TYPE_VIDEOTEX_STRING));
382
+		}
383
+		return $this->_element;
384
+	}
385
+
386
+	/**
387
+	 * Get the wrapped element as a IA5 string type.
388
+	 *
389
+	 * @throws \UnexpectedValueException If the element is not a IA5 string
390
+	 *
391
+	 * @return \Sop\ASN1\Type\Primitive\IA5String
392
+	 */
393
+	public function asIA5String(): Primitive\IA5String
394
+	{
395
+		if (!$this->_element instanceof Primitive\IA5String) {
396
+			throw new \UnexpectedValueException(
397
+				$this->_generateExceptionMessage(Element::TYPE_IA5_STRING));
398
+		}
399
+		return $this->_element;
400
+	}
401
+
402
+	/**
403
+	 * Get the wrapped element as an UTC time type.
404
+	 *
405
+	 * @throws \UnexpectedValueException If the element is not a UTC time
406
+	 *
407
+	 * @return \Sop\ASN1\Type\Primitive\UTCTime
408
+	 */
409
+	public function asUTCTime(): Primitive\UTCTime
410
+	{
411
+		if (!$this->_element instanceof Primitive\UTCTime) {
412
+			throw new \UnexpectedValueException(
413
+				$this->_generateExceptionMessage(Element::TYPE_UTC_TIME));
414
+		}
415
+		return $this->_element;
416
+	}
417
+
418
+	/**
419
+	 * Get the wrapped element as a generalized time type.
420
+	 *
421
+	 * @throws \UnexpectedValueException If the element is not a generalized time
422
+	 *
423
+	 * @return \Sop\ASN1\Type\Primitive\GeneralizedTime
424
+	 */
425
+	public function asGeneralizedTime(): Primitive\GeneralizedTime
426
+	{
427
+		if (!$this->_element instanceof Primitive\GeneralizedTime) {
428
+			throw new \UnexpectedValueException(
429
+				$this->_generateExceptionMessage(Element::TYPE_GENERALIZED_TIME));
430
+		}
431
+		return $this->_element;
432
+	}
433
+
434
+	/**
435
+	 * Get the wrapped element as a graphic string type.
436
+	 *
437
+	 * @throws \UnexpectedValueException If the element is not a graphic string
438
+	 *
439
+	 * @return \Sop\ASN1\Type\Primitive\GraphicString
440
+	 */
441
+	public function asGraphicString(): Primitive\GraphicString
442
+	{
443
+		if (!$this->_element instanceof Primitive\GraphicString) {
444
+			throw new \UnexpectedValueException(
445
+				$this->_generateExceptionMessage(Element::TYPE_GRAPHIC_STRING));
446
+		}
447
+		return $this->_element;
448
+	}
449
+
450
+	/**
451
+	 * Get the wrapped element as a visible string type.
452
+	 *
453
+	 * @throws \UnexpectedValueException If the element is not a visible string
454
+	 *
455
+	 * @return \Sop\ASN1\Type\Primitive\VisibleString
456
+	 */
457
+	public function asVisibleString(): Primitive\VisibleString
458
+	{
459
+		if (!$this->_element instanceof Primitive\VisibleString) {
460
+			throw new \UnexpectedValueException(
461
+				$this->_generateExceptionMessage(Element::TYPE_VISIBLE_STRING));
462
+		}
463
+		return $this->_element;
464
+	}
465
+
466
+	/**
467
+	 * Get the wrapped element as a general string type.
468
+	 *
469
+	 * @throws \UnexpectedValueException If the element is not general string
470
+	 *
471
+	 * @return \Sop\ASN1\Type\Primitive\GeneralString
472
+	 */
473
+	public function asGeneralString(): Primitive\GeneralString
474
+	{
475
+		if (!$this->_element instanceof Primitive\GeneralString) {
476
+			throw new \UnexpectedValueException(
477
+				$this->_generateExceptionMessage(Element::TYPE_GENERAL_STRING));
478
+		}
479
+		return $this->_element;
480
+	}
481
+
482
+	/**
483
+	 * Get the wrapped element as a universal string type.
484
+	 *
485
+	 * @throws \UnexpectedValueException If the element is not a universal string
486
+	 *
487
+	 * @return \Sop\ASN1\Type\Primitive\UniversalString
488
+	 */
489
+	public function asUniversalString(): Primitive\UniversalString
490
+	{
491
+		if (!$this->_element instanceof Primitive\UniversalString) {
492
+			throw new \UnexpectedValueException(
493
+				$this->_generateExceptionMessage(Element::TYPE_UNIVERSAL_STRING));
494
+		}
495
+		return $this->_element;
496
+	}
497
+
498
+	/**
499
+	 * Get the wrapped element as a character string type.
500
+	 *
501
+	 * @throws \UnexpectedValueException If the element is not a character string
502
+	 *
503
+	 * @return \Sop\ASN1\Type\Primitive\CharacterString
504
+	 */
505
+	public function asCharacterString(): Primitive\CharacterString
506
+	{
507
+		if (!$this->_element instanceof Primitive\CharacterString) {
508
+			throw new \UnexpectedValueException(
509
+				$this->_generateExceptionMessage(Element::TYPE_CHARACTER_STRING));
510
+		}
511
+		return $this->_element;
512
+	}
513
+
514
+	/**
515
+	 * Get the wrapped element as a BMP string type.
516
+	 *
517
+	 * @throws \UnexpectedValueException If the element is not a bmp string
518
+	 *
519
+	 * @return \Sop\ASN1\Type\Primitive\BMPString
520
+	 */
521
+	public function asBMPString(): Primitive\BMPString
522
+	{
523
+		if (!$this->_element instanceof Primitive\BMPString) {
524
+			throw new \UnexpectedValueException(
525
+				$this->_generateExceptionMessage(Element::TYPE_BMP_STRING));
526
+		}
527
+		return $this->_element;
528
+	}
529
+
530
+	/**
531
+	 * Get the wrapped element as a constructed string type.
532
+	 *
533
+	 * @throws \UnexpectedValueException If the element is not a constructed string
534
+	 *
535
+	 * @return \Sop\ASN1\Type\Constructed\ConstructedString
536
+	 */
537
+	public function asConstructedString(): Constructed\ConstructedString
538
+	{
539
+		if (!$this->_element instanceof Constructed\ConstructedString) {
540
+			throw new \UnexpectedValueException(
541
+				$this->_generateExceptionMessage(Element::TYPE_CONSTRUCTED_STRING));
542
+		}
543
+		return $this->_element;
544
+	}
545
+
546
+	/**
547
+	 * Get the wrapped element as any string type.
548
+	 *
549
+	 * @throws \UnexpectedValueException If the element is not a string
550
+	 *
551
+	 * @return StringType
552
+	 */
553
+	public function asString(): StringType
554
+	{
555
+		if (!$this->_element instanceof StringType) {
556
+			throw new \UnexpectedValueException(
557
+				$this->_generateExceptionMessage(Element::TYPE_STRING));
558
+		}
559
+		return $this->_element;
560
+	}
561
+
562
+	/**
563
+	 * Get the wrapped element as any time type.
564
+	 *
565
+	 * @throws \UnexpectedValueException If the element is not a time
566
+	 *
567
+	 * @return TimeType
568
+	 */
569
+	public function asTime(): TimeType
570
+	{
571
+		if (!$this->_element instanceof TimeType) {
572
+			throw new \UnexpectedValueException(
573
+				$this->_generateExceptionMessage(Element::TYPE_TIME));
574
+		}
575
+		return $this->_element;
576
+	}
577
+
578
+	/**
579
+	 * {@inheritdoc}
580
+	 */
581
+	public function toDER(): string
582
+	{
583
+		return $this->_element->toDER();
584
+	}
585
+
586
+	/**
587
+	 * {@inheritdoc}
588
+	 */
589
+	public function typeClass(): int
590
+	{
591
+		return $this->_element->typeClass();
592
+	}
593
+
594
+	/**
595
+	 * {@inheritdoc}
596
+	 */
597
+	public function isConstructed(): bool
598
+	{
599
+		return $this->_element->isConstructed();
600
+	}
601
+
602
+	/**
603
+	 * {@inheritdoc}
604
+	 */
605
+	public function tag(): int
606
+	{
607
+		return $this->_element->tag();
608
+	}
609
+
610
+	/**
611
+	 * {@inheritdoc}
612
+	 */
613
+	public function isType(int $tag): bool
614
+	{
615
+		return $this->_element->isType($tag);
616
+	}
617
+
618
+	/**
619
+	 * {@inheritdoc}
620
+	 *
621
+	 * Consider using any of the <code>as*</code> accessor methods instead.
622
+	 */
623
+	public function expectType(int $tag): ElementBase
624
+	{
625
+		return $this->_element->expectType($tag);
626
+	}
627
+
628
+	/**
629
+	 * {@inheritdoc}
630
+	 */
631
+	public function isTagged(): bool
632
+	{
633
+		return $this->_element->isTagged();
634
+	}
635
+
636
+	/**
637
+	 * {@inheritdoc}
638
+	 *
639
+	 * Consider using <code>asTagged()</code> method instead and chaining
640
+	 * with <code>TaggedType::asExplicit()</code> or
641
+	 * <code>TaggedType::asImplicit()</code>.
642
+	 */
643
+	public function expectTagged(?int $tag = null): TaggedType
644
+	{
645
+		return $this->_element->expectTagged($tag);
646
+	}
647
+
648
+	/**
649
+	 * {@inheritdoc}
650
+	 */
651
+	public function asElement(): Element
652
+	{
653
+		return $this->_element;
654
+	}
655
+
656
+	/**
657
+	 * {@inheritdoc}
658
+	 */
659
+	public function asUnspecified(): UnspecifiedType
660
+	{
661
+		return $this;
662
+	}
663
+
664
+	/**
665
+	 * Generate message for exceptions thrown by <code>as*</code> methods.
666
+	 *
667
+	 * @param int $tag Type tag of the expected element
668
+	 *
669
+	 * @return string
670
+	 */
671
+	private function _generateExceptionMessage(int $tag): string
672
+	{
673
+		return sprintf('%s expected, got %s.', Element::tagToName($tag),
674
+			$this->_typeDescriptorString());
675
+	}
676
+
677
+	/**
678
+	 * Get textual description of the wrapped element for debugging purposes.
679
+	 *
680
+	 * @return string
681
+	 */
682
+	private function _typeDescriptorString(): string
683
+	{
684
+		$type_cls = $this->_element->typeClass();
685
+		$tag = $this->_element->tag();
686
+		if (Identifier::CLASS_UNIVERSAL === $type_cls) {
687
+			return Element::tagToName($tag);
688
+		}
689
+		return Identifier::classToName($type_cls) . " TAG {$tag}";
690
+	}
691 691
 }
Please login to merge, or discard this patch.
lib/ASN1/Type/Primitive/Boolean.php 2 patches
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 Sop\ASN1\Type\Primitive;
6 6
 
Please login to merge, or discard this patch.
Indentation   +52 added lines, -52 removed lines patch added patch discarded remove patch
@@ -17,61 +17,61 @@
 block discarded – undo
17 17
  */
18 18
 class Boolean extends Element
19 19
 {
20
-    use UniversalClass;
21
-    use PrimitiveType;
20
+	use UniversalClass;
21
+	use PrimitiveType;
22 22
 
23
-    /**
24
-     * Value.
25
-     *
26
-     * @var bool
27
-     */
28
-    private $_bool;
23
+	/**
24
+	 * Value.
25
+	 *
26
+	 * @var bool
27
+	 */
28
+	private $_bool;
29 29
 
30
-    /**
31
-     * Constructor.
32
-     *
33
-     * @param bool $bool
34
-     */
35
-    public function __construct(bool $bool)
36
-    {
37
-        $this->_typeTag = self::TYPE_BOOLEAN;
38
-        $this->_bool = $bool;
39
-    }
30
+	/**
31
+	 * Constructor.
32
+	 *
33
+	 * @param bool $bool
34
+	 */
35
+	public function __construct(bool $bool)
36
+	{
37
+		$this->_typeTag = self::TYPE_BOOLEAN;
38
+		$this->_bool = $bool;
39
+	}
40 40
 
41
-    /**
42
-     * Get the value.
43
-     *
44
-     * @return bool
45
-     */
46
-    public function value(): bool
47
-    {
48
-        return $this->_bool;
49
-    }
41
+	/**
42
+	 * Get the value.
43
+	 *
44
+	 * @return bool
45
+	 */
46
+	public function value(): bool
47
+	{
48
+		return $this->_bool;
49
+	}
50 50
 
51
-    /**
52
-     * {@inheritdoc}
53
-     */
54
-    protected function _encodedContentDER(): string
55
-    {
56
-        return $this->_bool ? chr(0xff) : chr(0);
57
-    }
51
+	/**
52
+	 * {@inheritdoc}
53
+	 */
54
+	protected function _encodedContentDER(): string
55
+	{
56
+		return $this->_bool ? chr(0xff) : chr(0);
57
+	}
58 58
 
59
-    /**
60
-     * {@inheritdoc}
61
-     */
62
-    protected static function _decodeFromDER(Identifier $identifier,
63
-        string $data, int &$offset): ElementBase
64
-    {
65
-        $idx = $offset;
66
-        Length::expectFromDER($data, $idx, 1);
67
-        $byte = ord($data[$idx++]);
68
-        if (0 !== $byte) {
69
-            if (0xff !== $byte) {
70
-                throw new DecodeException(
71
-                    'DER encoded boolean true must have all bits set to 1.');
72
-            }
73
-        }
74
-        $offset = $idx;
75
-        return new self(0 !== $byte);
76
-    }
59
+	/**
60
+	 * {@inheritdoc}
61
+	 */
62
+	protected static function _decodeFromDER(Identifier $identifier,
63
+		string $data, int &$offset): ElementBase
64
+	{
65
+		$idx = $offset;
66
+		Length::expectFromDER($data, $idx, 1);
67
+		$byte = ord($data[$idx++]);
68
+		if (0 !== $byte) {
69
+			if (0xff !== $byte) {
70
+				throw new DecodeException(
71
+					'DER encoded boolean true must have all bits set to 1.');
72
+			}
73
+		}
74
+		$offset = $idx;
75
+		return new self(0 !== $byte);
76
+	}
77 77
 }
Please login to merge, or discard this patch.
lib/ASN1/Type/Primitive/GeneralizedTime.php 2 patches
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 Sop\ASN1\Type\Primitive;
6 6
 
Please login to merge, or discard this patch.
Indentation   +100 added lines, -100 removed lines patch added patch discarded remove patch
@@ -17,110 +17,110 @@
 block discarded – undo
17 17
  */
18 18
 class GeneralizedTime extends TimeType
19 19
 {
20
-    use UniversalClass;
21
-    use PrimitiveType;
20
+	use UniversalClass;
21
+	use PrimitiveType;
22 22
 
23
-    /**
24
-     * Regular expression to parse date.
25
-     *
26
-     * DER restricts format to UTC timezone (Z suffix).
27
-     *
28
-     * @var string
29
-     */
30
-    const REGEX = '#^' .
31
-        '(\d\d\d\d)' . // YYYY
32
-        '(\d\d)' . // MM
33
-        '(\d\d)' . // DD
34
-        '(\d\d)' . // hh
35
-        '(\d\d)' . // mm
36
-        '(\d\d)' . // ss
37
-        '(?:\.(\d+))?' . // frac
38
-        'Z' . // TZ
39
-        '$#';
23
+	/**
24
+	 * Regular expression to parse date.
25
+	 *
26
+	 * DER restricts format to UTC timezone (Z suffix).
27
+	 *
28
+	 * @var string
29
+	 */
30
+	const REGEX = '#^' .
31
+		'(\d\d\d\d)' . // YYYY
32
+		'(\d\d)' . // MM
33
+		'(\d\d)' . // DD
34
+		'(\d\d)' . // hh
35
+		'(\d\d)' . // mm
36
+		'(\d\d)' . // ss
37
+		'(?:\.(\d+))?' . // frac
38
+		'Z' . // TZ
39
+		'$#';
40 40
 
41
-    /**
42
-     * Cached formatted date.
43
-     *
44
-     * @var null|string
45
-     */
46
-    private $_formatted;
41
+	/**
42
+	 * Cached formatted date.
43
+	 *
44
+	 * @var null|string
45
+	 */
46
+	private $_formatted;
47 47
 
48
-    /**
49
-     * Constructor.
50
-     *
51
-     * @param \DateTimeImmutable $dt
52
-     */
53
-    public function __construct(\DateTimeImmutable $dt)
54
-    {
55
-        $this->_typeTag = self::TYPE_GENERALIZED_TIME;
56
-        parent::__construct($dt);
57
-    }
48
+	/**
49
+	 * Constructor.
50
+	 *
51
+	 * @param \DateTimeImmutable $dt
52
+	 */
53
+	public function __construct(\DateTimeImmutable $dt)
54
+	{
55
+		$this->_typeTag = self::TYPE_GENERALIZED_TIME;
56
+		parent::__construct($dt);
57
+	}
58 58
 
59
-    /**
60
-     * Clear cached variables on clone.
61
-     */
62
-    public function __clone()
63
-    {
64
-        $this->_formatted = null;
65
-    }
59
+	/**
60
+	 * Clear cached variables on clone.
61
+	 */
62
+	public function __clone()
63
+	{
64
+		$this->_formatted = null;
65
+	}
66 66
 
67
-    /**
68
-     * {@inheritdoc}
69
-     */
70
-    protected function _encodedContentDER(): string
71
-    {
72
-        if (!isset($this->_formatted)) {
73
-            $dt = $this->_dateTime->setTimezone(
74
-                self::_createTimeZone(self::TZ_UTC));
75
-            $this->_formatted = $dt->format('YmdHis');
76
-            // if fractions were used
77
-            $frac = $dt->format('u');
78
-            if (0 !== intval($frac)) {
79
-                $frac = rtrim($frac, '0');
80
-                $this->_formatted .= ".{$frac}";
81
-            }
82
-            // timezone
83
-            $this->_formatted .= 'Z';
84
-        }
85
-        return $this->_formatted;
86
-    }
67
+	/**
68
+	 * {@inheritdoc}
69
+	 */
70
+	protected function _encodedContentDER(): string
71
+	{
72
+		if (!isset($this->_formatted)) {
73
+			$dt = $this->_dateTime->setTimezone(
74
+				self::_createTimeZone(self::TZ_UTC));
75
+			$this->_formatted = $dt->format('YmdHis');
76
+			// if fractions were used
77
+			$frac = $dt->format('u');
78
+			if (0 !== intval($frac)) {
79
+				$frac = rtrim($frac, '0');
80
+				$this->_formatted .= ".{$frac}";
81
+			}
82
+			// timezone
83
+			$this->_formatted .= 'Z';
84
+		}
85
+		return $this->_formatted;
86
+	}
87 87
 
88
-    /**
89
-     * {@inheritdoc}
90
-     */
91
-    protected static function _decodeFromDER(Identifier $identifier,
92
-        string $data, int &$offset): ElementBase
93
-    {
94
-        $idx = $offset;
95
-        $length = Length::expectFromDER($data, $idx)->intLength();
96
-        $str = substr($data, $idx, $length);
97
-        $idx += $length;
98
-        /** @var string[] $match */
99
-        if (!preg_match(self::REGEX, $str, $match)) {
100
-            throw new DecodeException('Invalid GeneralizedTime format.');
101
-        }
102
-        [, $year, $month, $day, $hour, $minute, $second] = $match;
103
-        if (isset($match[7])) {
104
-            $frac = $match[7];
105
-            // DER restricts trailing zeroes in fractional seconds component
106
-            if ('0' === $frac[strlen($frac) - 1]) {
107
-                throw new DecodeException(
108
-                    'Fractional seconds must omit trailing zeroes.');
109
-            }
110
-            $frac = (int) $frac;
111
-        } else {
112
-            $frac = 0;
113
-        }
114
-        $time = $year . $month . $day . $hour . $minute . $second . '.' . $frac .
115
-            self::TZ_UTC;
116
-        $dt = \DateTimeImmutable::createFromFormat('!YmdHis.uT', $time,
117
-            self::_createTimeZone(self::TZ_UTC));
118
-        if (!$dt) {
119
-            throw new DecodeException(
120
-                'Failed to decode GeneralizedTime: ' .
121
-                self::_getLastDateTimeImmutableErrorsStr());
122
-        }
123
-        $offset = $idx;
124
-        return new self($dt);
125
-    }
88
+	/**
89
+	 * {@inheritdoc}
90
+	 */
91
+	protected static function _decodeFromDER(Identifier $identifier,
92
+		string $data, int &$offset): ElementBase
93
+	{
94
+		$idx = $offset;
95
+		$length = Length::expectFromDER($data, $idx)->intLength();
96
+		$str = substr($data, $idx, $length);
97
+		$idx += $length;
98
+		/** @var string[] $match */
99
+		if (!preg_match(self::REGEX, $str, $match)) {
100
+			throw new DecodeException('Invalid GeneralizedTime format.');
101
+		}
102
+		[, $year, $month, $day, $hour, $minute, $second] = $match;
103
+		if (isset($match[7])) {
104
+			$frac = $match[7];
105
+			// DER restricts trailing zeroes in fractional seconds component
106
+			if ('0' === $frac[strlen($frac) - 1]) {
107
+				throw new DecodeException(
108
+					'Fractional seconds must omit trailing zeroes.');
109
+			}
110
+			$frac = (int) $frac;
111
+		} else {
112
+			$frac = 0;
113
+		}
114
+		$time = $year . $month . $day . $hour . $minute . $second . '.' . $frac .
115
+			self::TZ_UTC;
116
+		$dt = \DateTimeImmutable::createFromFormat('!YmdHis.uT', $time,
117
+			self::_createTimeZone(self::TZ_UTC));
118
+		if (!$dt) {
119
+			throw new DecodeException(
120
+				'Failed to decode GeneralizedTime: ' .
121
+				self::_getLastDateTimeImmutableErrorsStr());
122
+		}
123
+		$offset = $idx;
124
+		return new self($dt);
125
+	}
126 126
 }
Please login to merge, or discard this patch.
lib/ASN1/Type/Primitive/UniversalString.php 2 patches
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 Sop\ASN1\Type\Primitive;
6 6
 
Please login to merge, or discard this patch.
Indentation   +22 added lines, -22 removed lines patch added patch discarded remove patch
@@ -14,28 +14,28 @@
 block discarded – undo
14 14
  */
15 15
 class UniversalString extends PrimitiveString
16 16
 {
17
-    use UniversalClass;
17
+	use UniversalClass;
18 18
 
19
-    /**
20
-     * Constructor.
21
-     *
22
-     * @param string $string
23
-     */
24
-    public function __construct(string $string)
25
-    {
26
-        $this->_typeTag = self::TYPE_UNIVERSAL_STRING;
27
-        parent::__construct($string);
28
-    }
19
+	/**
20
+	 * Constructor.
21
+	 *
22
+	 * @param string $string
23
+	 */
24
+	public function __construct(string $string)
25
+	{
26
+		$this->_typeTag = self::TYPE_UNIVERSAL_STRING;
27
+		parent::__construct($string);
28
+	}
29 29
 
30
-    /**
31
-     * {@inheritdoc}
32
-     */
33
-    protected function _validateString(string $string): bool
34
-    {
35
-        // UCS-4 has fixed with of 4 octets (32 bits)
36
-        if (0 !== strlen($string) % 4) {
37
-            return false;
38
-        }
39
-        return true;
40
-    }
30
+	/**
31
+	 * {@inheritdoc}
32
+	 */
33
+	protected function _validateString(string $string): bool
34
+	{
35
+		// UCS-4 has fixed with of 4 octets (32 bits)
36
+		if (0 !== strlen($string) % 4) {
37
+			return false;
38
+		}
39
+		return true;
40
+	}
41 41
 }
Please login to merge, or discard this patch.
lib/ASN1/Type/Primitive/BitString.php 2 patches
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 Sop\ASN1\Type\Primitive;
6 6
 
Please login to merge, or discard this patch.
Indentation   +181 added lines, -181 removed lines patch added patch discarded remove patch
@@ -17,194 +17,194 @@
 block discarded – undo
17 17
  */
18 18
 class BitString extends StringType
19 19
 {
20
-    use UniversalClass;
21
-    use PrimitiveType;
20
+	use UniversalClass;
21
+	use PrimitiveType;
22 22
 
23
-    /**
24
-     * Number of unused bits in the last octet.
25
-     *
26
-     * @var int
27
-     */
28
-    protected $_unusedBits;
23
+	/**
24
+	 * Number of unused bits in the last octet.
25
+	 *
26
+	 * @var int
27
+	 */
28
+	protected $_unusedBits;
29 29
 
30
-    /**
31
-     * Constructor.
32
-     *
33
-     * @param string $string      Content octets
34
-     * @param int    $unused_bits Number of unused bits in the last octet
35
-     */
36
-    public function __construct(string $string, int $unused_bits = 0)
37
-    {
38
-        $this->_typeTag = self::TYPE_BIT_STRING;
39
-        parent::__construct($string);
40
-        $this->_unusedBits = $unused_bits;
41
-    }
30
+	/**
31
+	 * Constructor.
32
+	 *
33
+	 * @param string $string      Content octets
34
+	 * @param int    $unused_bits Number of unused bits in the last octet
35
+	 */
36
+	public function __construct(string $string, int $unused_bits = 0)
37
+	{
38
+		$this->_typeTag = self::TYPE_BIT_STRING;
39
+		parent::__construct($string);
40
+		$this->_unusedBits = $unused_bits;
41
+	}
42 42
 
43
-    /**
44
-     * Get the number of bits in the string.
45
-     *
46
-     * @return int
47
-     */
48
-    public function numBits(): int
49
-    {
50
-        return strlen($this->_string) * 8 - $this->_unusedBits;
51
-    }
43
+	/**
44
+	 * Get the number of bits in the string.
45
+	 *
46
+	 * @return int
47
+	 */
48
+	public function numBits(): int
49
+	{
50
+		return strlen($this->_string) * 8 - $this->_unusedBits;
51
+	}
52 52
 
53
-    /**
54
-     * Get the number of unused bits in the last octet of the string.
55
-     *
56
-     * @return int
57
-     */
58
-    public function unusedBits(): int
59
-    {
60
-        return $this->_unusedBits;
61
-    }
53
+	/**
54
+	 * Get the number of unused bits in the last octet of the string.
55
+	 *
56
+	 * @return int
57
+	 */
58
+	public function unusedBits(): int
59
+	{
60
+		return $this->_unusedBits;
61
+	}
62 62
 
63
-    /**
64
-     * Test whether bit is set.
65
-     *
66
-     * @param int $idx Bit index. Most significant bit of the first octet is index 0.
67
-     *
68
-     * @return bool
69
-     */
70
-    public function testBit(int $idx): bool
71
-    {
72
-        // octet index
73
-        $oi = (int) floor($idx / 8);
74
-        // if octet is outside range
75
-        if ($oi < 0 || $oi >= strlen($this->_string)) {
76
-            throw new \OutOfBoundsException('Index is out of bounds.');
77
-        }
78
-        // bit index
79
-        $bi = $idx % 8;
80
-        // if tested bit is last octet's unused bit
81
-        if ($oi === strlen($this->_string) - 1) {
82
-            if ($bi >= 8 - $this->_unusedBits) {
83
-                throw new \OutOfBoundsException(
84
-                    'Index refers to an unused bit.');
85
-            }
86
-        }
87
-        $byte = $this->_string[$oi];
88
-        // index 0 is the most significant bit in byte
89
-        $mask = 0x01 << (7 - $bi);
90
-        return (ord($byte) & $mask) > 0;
91
-    }
63
+	/**
64
+	 * Test whether bit is set.
65
+	 *
66
+	 * @param int $idx Bit index. Most significant bit of the first octet is index 0.
67
+	 *
68
+	 * @return bool
69
+	 */
70
+	public function testBit(int $idx): bool
71
+	{
72
+		// octet index
73
+		$oi = (int) floor($idx / 8);
74
+		// if octet is outside range
75
+		if ($oi < 0 || $oi >= strlen($this->_string)) {
76
+			throw new \OutOfBoundsException('Index is out of bounds.');
77
+		}
78
+		// bit index
79
+		$bi = $idx % 8;
80
+		// if tested bit is last octet's unused bit
81
+		if ($oi === strlen($this->_string) - 1) {
82
+			if ($bi >= 8 - $this->_unusedBits) {
83
+				throw new \OutOfBoundsException(
84
+					'Index refers to an unused bit.');
85
+			}
86
+		}
87
+		$byte = $this->_string[$oi];
88
+		// index 0 is the most significant bit in byte
89
+		$mask = 0x01 << (7 - $bi);
90
+		return (ord($byte) & $mask) > 0;
91
+	}
92 92
 
93
-    /**
94
-     * Get range of bits.
95
-     *
96
-     * @param int $start  Index of first bit
97
-     * @param int $length Number of bits in range
98
-     *
99
-     * @throws \OutOfBoundsException
100
-     *
101
-     * @return string Integer of $length bits
102
-     */
103
-    public function range(int $start, int $length): string
104
-    {
105
-        if (!$length) {
106
-            return '0';
107
-        }
108
-        if ($start + $length > $this->numBits()) {
109
-            throw new \OutOfBoundsException('Not enough bits.');
110
-        }
111
-        $bits = gmp_init(0);
112
-        $idx = $start;
113
-        $end = $start + $length;
114
-        while (true) {
115
-            $bit = $this->testBit($idx) ? 1 : 0;
116
-            $bits |= $bit;
117
-            if (++$idx >= $end) {
118
-                break;
119
-            }
120
-            $bits <<= 1;
121
-        }
122
-        return gmp_strval($bits, 10);
123
-    }
93
+	/**
94
+	 * Get range of bits.
95
+	 *
96
+	 * @param int $start  Index of first bit
97
+	 * @param int $length Number of bits in range
98
+	 *
99
+	 * @throws \OutOfBoundsException
100
+	 *
101
+	 * @return string Integer of $length bits
102
+	 */
103
+	public function range(int $start, int $length): string
104
+	{
105
+		if (!$length) {
106
+			return '0';
107
+		}
108
+		if ($start + $length > $this->numBits()) {
109
+			throw new \OutOfBoundsException('Not enough bits.');
110
+		}
111
+		$bits = gmp_init(0);
112
+		$idx = $start;
113
+		$end = $start + $length;
114
+		while (true) {
115
+			$bit = $this->testBit($idx) ? 1 : 0;
116
+			$bits |= $bit;
117
+			if (++$idx >= $end) {
118
+				break;
119
+			}
120
+			$bits <<= 1;
121
+		}
122
+		return gmp_strval($bits, 10);
123
+	}
124 124
 
125
-    /**
126
-     * Get a copy of the bit string with trailing zeroes removed.
127
-     *
128
-     * @return self
129
-     */
130
-    public function withoutTrailingZeroes(): self
131
-    {
132
-        // if bit string was empty
133
-        if (!strlen($this->_string)) {
134
-            return new self('');
135
-        }
136
-        $bits = $this->_string;
137
-        // count number of empty trailing octets
138
-        $unused_octets = 0;
139
-        for ($idx = strlen($bits) - 1; $idx >= 0; --$idx, ++$unused_octets) {
140
-            if ("\x0" !== $bits[$idx]) {
141
-                break;
142
-            }
143
-        }
144
-        // strip trailing octets
145
-        if ($unused_octets) {
146
-            $bits = substr($bits, 0, -$unused_octets);
147
-        }
148
-        // if bit string was full of zeroes
149
-        if (!strlen($bits)) {
150
-            return new self('');
151
-        }
152
-        // count number of trailing zeroes in the last octet
153
-        $unused_bits = 0;
154
-        $byte = ord($bits[strlen($bits) - 1]);
155
-        while (!($byte & 0x01)) {
156
-            ++$unused_bits;
157
-            $byte >>= 1;
158
-        }
159
-        return new self($bits, $unused_bits);
160
-    }
125
+	/**
126
+	 * Get a copy of the bit string with trailing zeroes removed.
127
+	 *
128
+	 * @return self
129
+	 */
130
+	public function withoutTrailingZeroes(): self
131
+	{
132
+		// if bit string was empty
133
+		if (!strlen($this->_string)) {
134
+			return new self('');
135
+		}
136
+		$bits = $this->_string;
137
+		// count number of empty trailing octets
138
+		$unused_octets = 0;
139
+		for ($idx = strlen($bits) - 1; $idx >= 0; --$idx, ++$unused_octets) {
140
+			if ("\x0" !== $bits[$idx]) {
141
+				break;
142
+			}
143
+		}
144
+		// strip trailing octets
145
+		if ($unused_octets) {
146
+			$bits = substr($bits, 0, -$unused_octets);
147
+		}
148
+		// if bit string was full of zeroes
149
+		if (!strlen($bits)) {
150
+			return new self('');
151
+		}
152
+		// count number of trailing zeroes in the last octet
153
+		$unused_bits = 0;
154
+		$byte = ord($bits[strlen($bits) - 1]);
155
+		while (!($byte & 0x01)) {
156
+			++$unused_bits;
157
+			$byte >>= 1;
158
+		}
159
+		return new self($bits, $unused_bits);
160
+	}
161 161
 
162
-    /**
163
-     * {@inheritdoc}
164
-     */
165
-    protected function _encodedContentDER(): string
166
-    {
167
-        $der = chr($this->_unusedBits);
168
-        $der .= $this->_string;
169
-        if ($this->_unusedBits) {
170
-            $octet = $der[strlen($der) - 1];
171
-            // set unused bits to zero
172
-            $octet &= chr(0xff & ~((1 << $this->_unusedBits) - 1));
173
-            $der[strlen($der) - 1] = $octet;
174
-        }
175
-        return $der;
176
-    }
162
+	/**
163
+	 * {@inheritdoc}
164
+	 */
165
+	protected function _encodedContentDER(): string
166
+	{
167
+		$der = chr($this->_unusedBits);
168
+		$der .= $this->_string;
169
+		if ($this->_unusedBits) {
170
+			$octet = $der[strlen($der) - 1];
171
+			// set unused bits to zero
172
+			$octet &= chr(0xff & ~((1 << $this->_unusedBits) - 1));
173
+			$der[strlen($der) - 1] = $octet;
174
+		}
175
+		return $der;
176
+	}
177 177
 
178
-    /**
179
-     * {@inheritdoc}
180
-     */
181
-    protected static function _decodeFromDER(Identifier $identifier,
182
-        string $data, int &$offset): ElementBase
183
-    {
184
-        $idx = $offset;
185
-        $length = Length::expectFromDER($data, $idx);
186
-        if ($length->intLength() < 1) {
187
-            throw new DecodeException('Bit string length must be at least 1.');
188
-        }
189
-        $unused_bits = ord($data[$idx++]);
190
-        if ($unused_bits > 7) {
191
-            throw new DecodeException(
192
-                'Unused bits in a bit string must be less than 8.');
193
-        }
194
-        $str_len = $length->intLength() - 1;
195
-        if ($str_len) {
196
-            $str = substr($data, $idx, $str_len);
197
-            if ($unused_bits) {
198
-                $mask = (1 << $unused_bits) - 1;
199
-                if (ord($str[strlen($str) - 1]) & $mask) {
200
-                    throw new DecodeException(
201
-                        'DER encoded bit string must have zero padding.');
202
-                }
203
-            }
204
-        } else {
205
-            $str = '';
206
-        }
207
-        $offset = $idx + $str_len;
208
-        return new self($str, $unused_bits);
209
-    }
178
+	/**
179
+	 * {@inheritdoc}
180
+	 */
181
+	protected static function _decodeFromDER(Identifier $identifier,
182
+		string $data, int &$offset): ElementBase
183
+	{
184
+		$idx = $offset;
185
+		$length = Length::expectFromDER($data, $idx);
186
+		if ($length->intLength() < 1) {
187
+			throw new DecodeException('Bit string length must be at least 1.');
188
+		}
189
+		$unused_bits = ord($data[$idx++]);
190
+		if ($unused_bits > 7) {
191
+			throw new DecodeException(
192
+				'Unused bits in a bit string must be less than 8.');
193
+		}
194
+		$str_len = $length->intLength() - 1;
195
+		if ($str_len) {
196
+			$str = substr($data, $idx, $str_len);
197
+			if ($unused_bits) {
198
+				$mask = (1 << $unused_bits) - 1;
199
+				if (ord($str[strlen($str) - 1]) & $mask) {
200
+					throw new DecodeException(
201
+						'DER encoded bit string must have zero padding.');
202
+				}
203
+			}
204
+		} else {
205
+			$str = '';
206
+		}
207
+		$offset = $idx + $str_len;
208
+		return new self($str, $unused_bits);
209
+	}
210 210
 }
Please login to merge, or discard this patch.
lib/ASN1/Type/StringType.php 2 patches
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 Sop\ASN1\Type;
6 6
 
Please login to merge, or discard this patch.
Indentation   +52 added lines, -52 removed lines patch added patch discarded remove patch
@@ -12,60 +12,60 @@
 block discarded – undo
12 12
  */
13 13
 abstract class StringType extends Element implements Stringable
14 14
 {
15
-    /**
16
-     * String value.
17
-     *
18
-     * @var string
19
-     */
20
-    protected $_string;
15
+	/**
16
+	 * String value.
17
+	 *
18
+	 * @var string
19
+	 */
20
+	protected $_string;
21 21
 
22
-    /**
23
-     * Constructor.
24
-     *
25
-     * @param string $string
26
-     *
27
-     * @throws \InvalidArgumentException
28
-     */
29
-    public function __construct(string $string)
30
-    {
31
-        if (!$this->_validateString($string)) {
32
-            throw new \InvalidArgumentException(
33
-                sprintf('Not a valid %s string.',
34
-                    self::tagToName($this->_typeTag)));
35
-        }
36
-        $this->_string = $string;
37
-    }
22
+	/**
23
+	 * Constructor.
24
+	 *
25
+	 * @param string $string
26
+	 *
27
+	 * @throws \InvalidArgumentException
28
+	 */
29
+	public function __construct(string $string)
30
+	{
31
+		if (!$this->_validateString($string)) {
32
+			throw new \InvalidArgumentException(
33
+				sprintf('Not a valid %s string.',
34
+					self::tagToName($this->_typeTag)));
35
+		}
36
+		$this->_string = $string;
37
+	}
38 38
 
39
-    /**
40
-     * {@inheritdoc}
41
-     *
42
-     * @return string
43
-     */
44
-    public function __toString(): string
45
-    {
46
-        return $this->string();
47
-    }
39
+	/**
40
+	 * {@inheritdoc}
41
+	 *
42
+	 * @return string
43
+	 */
44
+	public function __toString(): string
45
+	{
46
+		return $this->string();
47
+	}
48 48
 
49
-    /**
50
-     * Get the string value.
51
-     *
52
-     * @return string
53
-     */
54
-    public function string(): string
55
-    {
56
-        return $this->_string;
57
-    }
49
+	/**
50
+	 * Get the string value.
51
+	 *
52
+	 * @return string
53
+	 */
54
+	public function string(): string
55
+	{
56
+		return $this->_string;
57
+	}
58 58
 
59
-    /**
60
-     * Check whether string is valid for the concrete type.
61
-     *
62
-     * @param string $string
63
-     *
64
-     * @return bool
65
-     */
66
-    protected function _validateString(string $string): bool
67
-    {
68
-        // Override in derived classes
69
-        return true;
70
-    }
59
+	/**
60
+	 * Check whether string is valid for the concrete type.
61
+	 *
62
+	 * @param string $string
63
+	 *
64
+	 * @return bool
65
+	 */
66
+	protected function _validateString(string $string): bool
67
+	{
68
+		// Override in derived classes
69
+		return true;
70
+	}
71 71
 }
Please login to merge, or discard this patch.
lib/ASN1/DERData.php 2 patches
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 Sop\ASN1;
6 6
 
Please login to merge, or discard this patch.
Indentation   +65 added lines, -65 removed lines patch added patch discarded remove patch
@@ -14,76 +14,76 @@
 block discarded – undo
14 14
  */
15 15
 class DERData extends Element
16 16
 {
17
-    /**
18
-     * DER encoded data.
19
-     *
20
-     * @var string
21
-     */
22
-    protected $_der;
17
+	/**
18
+	 * DER encoded data.
19
+	 *
20
+	 * @var string
21
+	 */
22
+	protected $_der;
23 23
 
24
-    /**
25
-     * Identifier of the underlying type.
26
-     *
27
-     * @var Identifier
28
-     */
29
-    protected $_identifier;
24
+	/**
25
+	 * Identifier of the underlying type.
26
+	 *
27
+	 * @var Identifier
28
+	 */
29
+	protected $_identifier;
30 30
 
31
-    /**
32
-     * Offset to the content in DER data.
33
-     *
34
-     * @var int
35
-     */
36
-    protected $_contentOffset = 0;
31
+	/**
32
+	 * Offset to the content in DER data.
33
+	 *
34
+	 * @var int
35
+	 */
36
+	protected $_contentOffset = 0;
37 37
 
38
-    /**
39
-     * Constructor.
40
-     *
41
-     * @param string $data DER encoded data
42
-     *
43
-     * @throws \Sop\ASN1\Exception\DecodeException If data does not adhere to DER
44
-     */
45
-    public function __construct(string $data)
46
-    {
47
-        $this->_identifier = Identifier::fromDER($data, $this->_contentOffset);
48
-        // check that length encoding is valid
49
-        Length::expectFromDER($data, $this->_contentOffset);
50
-        $this->_der = $data;
51
-        $this->_typeTag = $this->_identifier->intTag();
52
-    }
38
+	/**
39
+	 * Constructor.
40
+	 *
41
+	 * @param string $data DER encoded data
42
+	 *
43
+	 * @throws \Sop\ASN1\Exception\DecodeException If data does not adhere to DER
44
+	 */
45
+	public function __construct(string $data)
46
+	{
47
+		$this->_identifier = Identifier::fromDER($data, $this->_contentOffset);
48
+		// check that length encoding is valid
49
+		Length::expectFromDER($data, $this->_contentOffset);
50
+		$this->_der = $data;
51
+		$this->_typeTag = $this->_identifier->intTag();
52
+	}
53 53
 
54
-    /**
55
-     * {@inheritdoc}
56
-     */
57
-    public function typeClass(): int
58
-    {
59
-        return $this->_identifier->typeClass();
60
-    }
54
+	/**
55
+	 * {@inheritdoc}
56
+	 */
57
+	public function typeClass(): int
58
+	{
59
+		return $this->_identifier->typeClass();
60
+	}
61 61
 
62
-    /**
63
-     * {@inheritdoc}
64
-     */
65
-    public function isConstructed(): bool
66
-    {
67
-        return $this->_identifier->isConstructed();
68
-    }
62
+	/**
63
+	 * {@inheritdoc}
64
+	 */
65
+	public function isConstructed(): bool
66
+	{
67
+		return $this->_identifier->isConstructed();
68
+	}
69 69
 
70
-    /**
71
-     * {@inheritdoc}
72
-     */
73
-    public function toDER(): string
74
-    {
75
-        return $this->_der;
76
-    }
70
+	/**
71
+	 * {@inheritdoc}
72
+	 */
73
+	public function toDER(): string
74
+	{
75
+		return $this->_der;
76
+	}
77 77
 
78
-    /**
79
-     * {@inheritdoc}
80
-     */
81
-    protected function _encodedContentDER(): string
82
-    {
83
-        // if there's no content payload
84
-        if (strlen($this->_der) === $this->_contentOffset) {
85
-            return '';
86
-        }
87
-        return substr($this->_der, $this->_contentOffset);
88
-    }
78
+	/**
79
+	 * {@inheritdoc}
80
+	 */
81
+	protected function _encodedContentDER(): string
82
+	{
83
+		// if there's no content payload
84
+		if (strlen($this->_der) === $this->_contentOffset) {
85
+			return '';
86
+		}
87
+		return substr($this->_der, $this->_contentOffset);
88
+	}
89 89
 }
Please login to merge, or discard this patch.