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.
Passed
Push — master ( e19c33...8f1635 )
by Joni
03:53
created
lib/ASN1/Type/Tagged/ExplicitlyTaggedType.php 2 patches
Indentation   +46 added lines, -46 removed lines patch added patch discarded remove patch
@@ -16,53 +16,53 @@
 block discarded – undo
16 16
  */
17 17
 class ExplicitlyTaggedType extends TaggedTypeWrap implements ExplicitTagging
18 18
 {
19
-    /**
20
-     * Constructor.
21
-     *
22
-     * @param int $tag Tag number
23
-     * @param Element $element Wrapped element
24
-     * @param int $class Type class
25
-     */
26
-    public function __construct(int $tag, Element $element,
27
-        int $class = Identifier::CLASS_CONTEXT_SPECIFIC)
28
-    {
29
-        $this->_typeTag = $tag;
30
-        $this->_element = $element;
31
-        $this->_class = $class;
32
-    }
19
+	/**
20
+	 * Constructor.
21
+	 *
22
+	 * @param int $tag Tag number
23
+	 * @param Element $element Wrapped element
24
+	 * @param int $class Type class
25
+	 */
26
+	public function __construct(int $tag, Element $element,
27
+		int $class = Identifier::CLASS_CONTEXT_SPECIFIC)
28
+	{
29
+		$this->_typeTag = $tag;
30
+		$this->_element = $element;
31
+		$this->_class = $class;
32
+	}
33 33
     
34
-    /**
35
-     *
36
-     * @see \ASN1\Element::isConstructed()
37
-     * @return bool
38
-     */
39
-    public function isConstructed(): bool
40
-    {
41
-        return true;
42
-    }
34
+	/**
35
+	 *
36
+	 * @see \ASN1\Element::isConstructed()
37
+	 * @return bool
38
+	 */
39
+	public function isConstructed(): bool
40
+	{
41
+		return true;
42
+	}
43 43
     
44
-    /**
45
-     *
46
-     * @see \ASN1\Element::_encodedContentDER()
47
-     * @return string
48
-     */
49
-    protected function _encodedContentDER(): string
50
-    {
51
-        // get the full encoding of the wrapped element
52
-        return $this->_element->toDER();
53
-    }
44
+	/**
45
+	 *
46
+	 * @see \ASN1\Element::_encodedContentDER()
47
+	 * @return string
48
+	 */
49
+	protected function _encodedContentDER(): string
50
+	{
51
+		// get the full encoding of the wrapped element
52
+		return $this->_element->toDER();
53
+	}
54 54
     
55
-    /**
56
-     *
57
-     * {@inheritdoc}
58
-     * @see \ASN1\Type\Tagged\ExplicitTagging::explicit()
59
-     * @return UnspecifiedType
60
-     */
61
-    public function explicit($expectedTag = null): UnspecifiedType
62
-    {
63
-        if (isset($expectedTag)) {
64
-            $this->_element->expectType($expectedTag);
65
-        }
66
-        return $this->_element->asUnspecified();
67
-    }
55
+	/**
56
+	 *
57
+	 * {@inheritdoc}
58
+	 * @see \ASN1\Type\Tagged\ExplicitTagging::explicit()
59
+	 * @return UnspecifiedType
60
+	 */
61
+	public function explicit($expectedTag = null): UnspecifiedType
62
+	{
63
+		if (isset($expectedTag)) {
64
+			$this->_element->expectType($expectedTag);
65
+		}
66
+		return $this->_element->asUnspecified();
67
+	}
68 68
 }
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\Tagged;
6 6
 
Please login to merge, or discard this patch.
lib/ASN1/Type/Tagged/TaggedTypeWrap.php 2 patches
Indentation   +21 added lines, -21 removed lines patch added patch discarded remove patch
@@ -11,27 +11,27 @@
 block discarded – undo
11 11
  */
12 12
 abstract class TaggedTypeWrap extends TaggedType
13 13
 {
14
-    /**
15
-     * Wrapped element.
16
-     *
17
-     * @var \ASN1\Element $_element
18
-     */
19
-    protected $_element;
14
+	/**
15
+	 * Wrapped element.
16
+	 *
17
+	 * @var \ASN1\Element $_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
-     *
30
-     * @see \ASN1\Element::typeClass()
31
-     * @return int
32
-     */
33
-    public function typeClass(): int
34
-    {
35
-        return $this->_class;
36
-    }
28
+	/**
29
+	 *
30
+	 * @see \ASN1\Element::typeClass()
31
+	 * @return int
32
+	 */
33
+	public function typeClass(): int
34
+	{
35
+		return $this->_class;
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\Tagged;
6 6
 
Please login to merge, or discard this patch.
lib/ASN1/Type/Primitive/Real.php 3 patches
Doc Comments   +1 added lines, -1 removed lines patch added patch discarded remove patch
@@ -274,7 +274,7 @@
 block discarded – undo
274 274
     /**
275 275
      * Test that number is valid for this context.
276 276
      *
277
-     * @param mixed $num
277
+     * @param string $num
278 278
      * @return bool
279 279
      */
280 280
     private static function _validateNumber($num): bool
Please login to merge, or discard this patch.
Indentation   +250 added lines, -250 removed lines patch added patch discarded remove patch
@@ -17,271 +17,271 @@
 block discarded – undo
17 17
  */
18 18
 class Real extends Element
19 19
 {
20
-    use UniversalClass;
21
-    use PrimitiveType;
20
+	use UniversalClass;
21
+	use PrimitiveType;
22 22
     
23
-    /**
24
-     * Regex pattern to parse NR3 form number conforming to DER.
25
-     *
26
-     * @var string
27
-     */
28
-    const NR3_REGEX = '/^(-?)(\d+)?\.E([+\-]?\d+)$/';
23
+	/**
24
+	 * Regex pattern to parse NR3 form number conforming to DER.
25
+	 *
26
+	 * @var string
27
+	 */
28
+	const NR3_REGEX = '/^(-?)(\d+)?\.E([+\-]?\d+)$/';
29 29
     
30
-    /**
31
-     * Regex pattern to parse PHP exponent number format.
32
-     *
33
-     * @link http://php.net/manual/en/language.types.float.php
34
-     * @var string
35
-     */
36
-    const PHP_EXPONENT_DNUM = '/^'. /* @formatter:off */
37
-        '([+\-]?'. // sign
38
-        '(?:'.
39
-            '\d+'. // LNUM
40
-            '|'.
41
-            '(?:\d*\.\d+|\d+\.\d*)'. // DNUM
42
-        '))[eE]'.
43
-        '([+\-]?\d+)'. // exponent
44
-    '$/'; /* @formatter:on */
30
+	/**
31
+	 * Regex pattern to parse PHP exponent number format.
32
+	 *
33
+	 * @link http://php.net/manual/en/language.types.float.php
34
+	 * @var string
35
+	 */
36
+	const PHP_EXPONENT_DNUM = '/^'. /* @formatter:off */
37
+		'([+\-]?'. // sign
38
+		'(?:'.
39
+			'\d+'. // LNUM
40
+			'|'.
41
+			'(?:\d*\.\d+|\d+\.\d*)'. // DNUM
42
+		'))[eE]'.
43
+		'([+\-]?\d+)'. // exponent
44
+	'$/'; /* @formatter:on */
45 45
     
46
-    /**
47
-     * Number zero represented in NR3 form.
48
-     *
49
-     * @var string
50
-     */
51
-    const NR3_ZERO = ".E+0";
46
+	/**
47
+	 * Number zero represented in NR3 form.
48
+	 *
49
+	 * @var string
50
+	 */
51
+	const NR3_ZERO = ".E+0";
52 52
     
53
-    /**
54
-     * Number in NR3 form.
55
-     *
56
-     * @var string
57
-     */
58
-    private $_number;
53
+	/**
54
+	 * Number in NR3 form.
55
+	 *
56
+	 * @var string
57
+	 */
58
+	private $_number;
59 59
     
60
-    /**
61
-     * Constructor.
62
-     *
63
-     * @param string $number Number in NR3 form.
64
-     */
65
-    public function __construct(string $number)
66
-    {
67
-        $this->_typeTag = self::TYPE_REAL;
68
-        if (!self::_validateNumber($number)) {
69
-            throw new \InvalidArgumentException(
70
-                "'$number' is not a valid NR3 form real.");
71
-        }
72
-        $this->_number = $number;
73
-    }
60
+	/**
61
+	 * Constructor.
62
+	 *
63
+	 * @param string $number Number in NR3 form.
64
+	 */
65
+	public function __construct(string $number)
66
+	{
67
+		$this->_typeTag = self::TYPE_REAL;
68
+		if (!self::_validateNumber($number)) {
69
+			throw new \InvalidArgumentException(
70
+				"'$number' is not a valid NR3 form real.");
71
+		}
72
+		$this->_number = $number;
73
+	}
74 74
     
75
-    /**
76
-     * Initialize from float.
77
-     *
78
-     * @param float $number
79
-     * @return self
80
-     */
81
-    public static function fromFloat(float $number): self
82
-    {
83
-        return new self(self::_decimalToNR3(strval($number)));
84
-    }
75
+	/**
76
+	 * Initialize from float.
77
+	 *
78
+	 * @param float $number
79
+	 * @return self
80
+	 */
81
+	public static function fromFloat(float $number): self
82
+	{
83
+		return new self(self::_decimalToNR3(strval($number)));
84
+	}
85 85
     
86
-    /**
87
-     * Get number as a float.
88
-     *
89
-     * @return float
90
-     */
91
-    public function float(): float
92
-    {
93
-        return self::_nr3ToDecimal($this->_number);
94
-    }
86
+	/**
87
+	 * Get number as a float.
88
+	 *
89
+	 * @return float
90
+	 */
91
+	public function float(): float
92
+	{
93
+		return self::_nr3ToDecimal($this->_number);
94
+	}
95 95
     
96
-    /**
97
-     *
98
-     * {@inheritdoc}
99
-     */
100
-    protected function _encodedContentDER(): string
101
-    {
102
-        /* if the real value is the value zero, there shall be no contents
96
+	/**
97
+	 *
98
+	 * {@inheritdoc}
99
+	 */
100
+	protected function _encodedContentDER(): string
101
+	{
102
+		/* if the real value is the value zero, there shall be no contents
103 103
          octets in the encoding. (X.690 07-2002, section 8.5.2) */
104
-        if (self::NR3_ZERO == $this->_number) {
105
-            return "";
106
-        }
107
-        // encode in NR3 decimal encoding
108
-        $data = chr(0x03) . $this->_number;
109
-        return $data;
110
-    }
104
+		if (self::NR3_ZERO == $this->_number) {
105
+			return "";
106
+		}
107
+		// encode in NR3 decimal encoding
108
+		$data = chr(0x03) . $this->_number;
109
+		return $data;
110
+	}
111 111
     
112
-    /**
113
-     *
114
-     * {@inheritdoc}
115
-     * @return self
116
-     */
117
-    protected static function _decodeFromDER(Identifier $identifier, string $data,
118
-        int &$offset): ElementBase
119
-    {
120
-        $idx = $offset;
121
-        $length = Length::expectFromDER($data, $idx)->intLength();
122
-        // if length is zero, value is zero (spec 8.5.2)
123
-        if (!$length) {
124
-            $obj = new self(self::NR3_ZERO);
125
-        } else {
126
-            $bytes = substr($data, $idx, $length);
127
-            $byte = ord($bytes[0]);
128
-            if (0x80 & $byte) { // bit 8 = 1
129
-                $obj = self::_decodeBinaryEncoding($bytes);
130
-            } else if ($byte >> 6 == 0x00) { // bit 8 = 0, bit 7 = 0
131
-                $obj = self::_decodeDecimalEncoding($bytes);
132
-            } else { // bit 8 = 0, bit 7 = 1
133
-                $obj = self::_decodeSpecialRealValue($bytes);
134
-            }
135
-        }
136
-        $offset = $idx + $length;
137
-        return $obj;
138
-    }
112
+	/**
113
+	 *
114
+	 * {@inheritdoc}
115
+	 * @return self
116
+	 */
117
+	protected static function _decodeFromDER(Identifier $identifier, string $data,
118
+		int &$offset): ElementBase
119
+	{
120
+		$idx = $offset;
121
+		$length = Length::expectFromDER($data, $idx)->intLength();
122
+		// if length is zero, value is zero (spec 8.5.2)
123
+		if (!$length) {
124
+			$obj = new self(self::NR3_ZERO);
125
+		} else {
126
+			$bytes = substr($data, $idx, $length);
127
+			$byte = ord($bytes[0]);
128
+			if (0x80 & $byte) { // bit 8 = 1
129
+				$obj = self::_decodeBinaryEncoding($bytes);
130
+			} else if ($byte >> 6 == 0x00) { // bit 8 = 0, bit 7 = 0
131
+				$obj = self::_decodeDecimalEncoding($bytes);
132
+			} else { // bit 8 = 0, bit 7 = 1
133
+				$obj = self::_decodeSpecialRealValue($bytes);
134
+			}
135
+		}
136
+		$offset = $idx + $length;
137
+		return $obj;
138
+	}
139 139
     
140
-    /**
141
-     *
142
-     * @todo Implement
143
-     * @param string $data
144
-     */
145
-    protected static function _decodeBinaryEncoding(string $data)
146
-    {
147
-        throw new \RuntimeException(
148
-            "Binary encoding of REAL is not implemented.");
149
-    }
140
+	/**
141
+	 *
142
+	 * @todo Implement
143
+	 * @param string $data
144
+	 */
145
+	protected static function _decodeBinaryEncoding(string $data)
146
+	{
147
+		throw new \RuntimeException(
148
+			"Binary encoding of REAL is not implemented.");
149
+	}
150 150
     
151
-    /**
152
-     *
153
-     * @param string $data
154
-     * @throws \RuntimeException
155
-     * @return \ASN1\Type\Primitive\Real
156
-     */
157
-    protected static function _decodeDecimalEncoding(string $data): Real
158
-    {
159
-        $nr = ord($data[0]) & 0x03;
160
-        if ($nr != 0x03) {
161
-            throw new \RuntimeException("Only NR3 form supported.");
162
-        }
163
-        $str = substr($data, 1);
164
-        return new self($str);
165
-    }
151
+	/**
152
+	 *
153
+	 * @param string $data
154
+	 * @throws \RuntimeException
155
+	 * @return \ASN1\Type\Primitive\Real
156
+	 */
157
+	protected static function _decodeDecimalEncoding(string $data): Real
158
+	{
159
+		$nr = ord($data[0]) & 0x03;
160
+		if ($nr != 0x03) {
161
+			throw new \RuntimeException("Only NR3 form supported.");
162
+		}
163
+		$str = substr($data, 1);
164
+		return new self($str);
165
+	}
166 166
     
167
-    /**
168
-     *
169
-     * @todo Implement
170
-     * @param string $data
171
-     */
172
-    protected static function _decodeSpecialRealValue(string $data)
173
-    {
174
-        if (strlen($data) != 1) {
175
-            throw new DecodeException(
176
-                "SpecialRealValue must have one content octet.");
177
-        }
178
-        $byte = ord($data[0]);
179
-        if ($byte == 0x40) { // positive infinity
180
-            throw new \RuntimeException("PLUS-INFINITY not supported.");
181
-        } else if ($byte == 0x41) { // negative infinity
182
-            throw new \RuntimeException("MINUS-INFINITY not supported.");
183
-        } else {
184
-            throw new DecodeException("Invalid SpecialRealValue encoding.");
185
-        }
186
-    }
167
+	/**
168
+	 *
169
+	 * @todo Implement
170
+	 * @param string $data
171
+	 */
172
+	protected static function _decodeSpecialRealValue(string $data)
173
+	{
174
+		if (strlen($data) != 1) {
175
+			throw new DecodeException(
176
+				"SpecialRealValue must have one content octet.");
177
+		}
178
+		$byte = ord($data[0]);
179
+		if ($byte == 0x40) { // positive infinity
180
+			throw new \RuntimeException("PLUS-INFINITY not supported.");
181
+		} else if ($byte == 0x41) { // negative infinity
182
+			throw new \RuntimeException("MINUS-INFINITY not supported.");
183
+		} else {
184
+			throw new DecodeException("Invalid SpecialRealValue encoding.");
185
+		}
186
+	}
187 187
     
188
-    /**
189
-     * Convert decimal number string to NR3 form.
190
-     *
191
-     * @param string $str
192
-     * @return string
193
-     */
194
-    private static function _decimalToNR3(string $str): string
195
-    {
196
-        // if number is in exponent form
197
-        if (preg_match(self::PHP_EXPONENT_DNUM, $str, $match)) {
198
-            $parts = explode(".", $match[1]);
199
-            $m = ltrim($parts[0], "0");
200
-            $e = intval($match[2]);
201
-            // if mantissa had decimals
202
-            if (count($parts) == 2) {
203
-                $d = rtrim($parts[1], "0");
204
-                $e -= strlen($d);
205
-                $m .= $d;
206
-            }
207
-        } else {
208
-            // explode from decimal
209
-            $parts = explode(".", $str);
210
-            $m = ltrim($parts[0], "0");
211
-            // if number had decimals
212
-            if (count($parts) == 2) {
213
-                // exponent is negative number of the decimals
214
-                $e = -strlen($parts[1]);
215
-                // append decimals to the mantissa
216
-                $m .= $parts[1];
217
-            } else {
218
-                $e = 0;
219
-            }
220
-            // shift trailing zeroes from the mantissa to the exponent
221
-            while (substr($m, -1) === "0") {
222
-                $e++;
223
-                $m = substr($m, 0, -1);
224
-            }
225
-        }
226
-        /* if exponent is zero, it must be prefixed with a "+" sign
188
+	/**
189
+	 * Convert decimal number string to NR3 form.
190
+	 *
191
+	 * @param string $str
192
+	 * @return string
193
+	 */
194
+	private static function _decimalToNR3(string $str): string
195
+	{
196
+		// if number is in exponent form
197
+		if (preg_match(self::PHP_EXPONENT_DNUM, $str, $match)) {
198
+			$parts = explode(".", $match[1]);
199
+			$m = ltrim($parts[0], "0");
200
+			$e = intval($match[2]);
201
+			// if mantissa had decimals
202
+			if (count($parts) == 2) {
203
+				$d = rtrim($parts[1], "0");
204
+				$e -= strlen($d);
205
+				$m .= $d;
206
+			}
207
+		} else {
208
+			// explode from decimal
209
+			$parts = explode(".", $str);
210
+			$m = ltrim($parts[0], "0");
211
+			// if number had decimals
212
+			if (count($parts) == 2) {
213
+				// exponent is negative number of the decimals
214
+				$e = -strlen($parts[1]);
215
+				// append decimals to the mantissa
216
+				$m .= $parts[1];
217
+			} else {
218
+				$e = 0;
219
+			}
220
+			// shift trailing zeroes from the mantissa to the exponent
221
+			while (substr($m, -1) === "0") {
222
+				$e++;
223
+				$m = substr($m, 0, -1);
224
+			}
225
+		}
226
+		/* if exponent is zero, it must be prefixed with a "+" sign
227 227
          (X.690 07-2002, section 11.3.2.6) */
228
-        if (0 == $e) {
229
-            $es = "+";
230
-        } else {
231
-            $es = $e < 0 ? "-" : "";
232
-        }
233
-        return sprintf("%s.E%s%d", $m, $es, abs($e));
234
-    }
228
+		if (0 == $e) {
229
+			$es = "+";
230
+		} else {
231
+			$es = $e < 0 ? "-" : "";
232
+		}
233
+		return sprintf("%s.E%s%d", $m, $es, abs($e));
234
+	}
235 235
     
236
-    /**
237
-     * Convert NR3 form number to decimal.
238
-     *
239
-     * @param string $str
240
-     * @throws \UnexpectedValueException
241
-     * @return float
242
-     */
243
-    private static function _nr3ToDecimal(string $str): float
244
-    {
245
-        if (!preg_match(self::NR3_REGEX, $str, $match)) {
246
-            throw new \UnexpectedValueException(
247
-                "'$str' is not a valid NR3 form real.");
248
-        }
249
-        $m = $match[2];
250
-        // if number started with minus sign
251
-        $inv = $match[1] == "-";
252
-        $e = intval($match[3]);
253
-        // positive exponent
254
-        if ($e > 0) {
255
-            // pad with trailing zeroes
256
-            $num = $m . str_repeat("0", $e);
257
-        } else if ($e < 0) {
258
-            // pad with leading zeroes
259
-            if (strlen($m) < abs($e)) {
260
-                $m = str_repeat("0", abs($e) - strlen($m)) . $m;
261
-            }
262
-            // insert decimal point
263
-            $num = substr($m, 0, $e) . "." . substr($m, $e);
264
-        } else {
265
-            $num = empty($m) ? "0" : $m;
266
-        }
267
-        // if number is negative
268
-        if ($inv) {
269
-            $num = "-$num";
270
-        }
271
-        return floatval($num);
272
-    }
236
+	/**
237
+	 * Convert NR3 form number to decimal.
238
+	 *
239
+	 * @param string $str
240
+	 * @throws \UnexpectedValueException
241
+	 * @return float
242
+	 */
243
+	private static function _nr3ToDecimal(string $str): float
244
+	{
245
+		if (!preg_match(self::NR3_REGEX, $str, $match)) {
246
+			throw new \UnexpectedValueException(
247
+				"'$str' is not a valid NR3 form real.");
248
+		}
249
+		$m = $match[2];
250
+		// if number started with minus sign
251
+		$inv = $match[1] == "-";
252
+		$e = intval($match[3]);
253
+		// positive exponent
254
+		if ($e > 0) {
255
+			// pad with trailing zeroes
256
+			$num = $m . str_repeat("0", $e);
257
+		} else if ($e < 0) {
258
+			// pad with leading zeroes
259
+			if (strlen($m) < abs($e)) {
260
+				$m = str_repeat("0", abs($e) - strlen($m)) . $m;
261
+			}
262
+			// insert decimal point
263
+			$num = substr($m, 0, $e) . "." . substr($m, $e);
264
+		} else {
265
+			$num = empty($m) ? "0" : $m;
266
+		}
267
+		// if number is negative
268
+		if ($inv) {
269
+			$num = "-$num";
270
+		}
271
+		return floatval($num);
272
+	}
273 273
     
274
-    /**
275
-     * Test that number is valid for this context.
276
-     *
277
-     * @param mixed $num
278
-     * @return bool
279
-     */
280
-    private static function _validateNumber($num): bool
281
-    {
282
-        if (!preg_match(self::NR3_REGEX, $num)) {
283
-            return false;
284
-        }
285
-        return true;
286
-    }
274
+	/**
275
+	 * Test that number is valid for this context.
276
+	 *
277
+	 * @param mixed $num
278
+	 * @return bool
279
+	 */
280
+	private static function _validateNumber($num): bool
281
+	{
282
+		if (!preg_match(self::NR3_REGEX, $num)) {
283
+			return false;
284
+		}
285
+		return true;
286
+	}
287 287
 }
Please login to merge, or discard this patch.
Spacing   +9 added lines, -9 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
 
@@ -33,14 +33,14 @@  discard block
 block discarded – undo
33 33
      * @link http://php.net/manual/en/language.types.float.php
34 34
      * @var string
35 35
      */
36
-    const PHP_EXPONENT_DNUM = '/^'. /* @formatter:off */
37
-        '([+\-]?'. // sign
38
-        '(?:'.
39
-            '\d+'. // LNUM
40
-            '|'.
41
-            '(?:\d*\.\d+|\d+\.\d*)'. // DNUM
42
-        '))[eE]'.
43
-        '([+\-]?\d+)'. // exponent
36
+    const PHP_EXPONENT_DNUM = '/^' . /* @formatter:off */
37
+        '([+\-]?' . // sign
38
+        '(?:' .
39
+            '\d+' . // LNUM
40
+            '|' .
41
+            '(?:\d*\.\d+|\d+\.\d*)' . // DNUM
42
+        '))[eE]' .
43
+        '([+\-]?\d+)' . // exponent
44 44
     '$/'; /* @formatter:on */
45 45
     
46 46
     /**
Please login to merge, or discard this patch.
lib/ASN1/Type/Tagged/ApplicationType.php 2 patches
Indentation   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -13,17 +13,17 @@
 block discarded – undo
13 13
  */
14 14
 class ApplicationType extends DERTaggedType
15 15
 {
16
-    /**
17
-     *
18
-     * {@inheritdoc}
19
-     */
20
-    protected static function _decodeFromDER(Identifier $identifier, string $data,
21
-        int &$offset): ElementBase
22
-    {
23
-        $idx = $offset;
24
-        $type = new self($identifier, $data, $idx);
25
-        $length = Length::expectFromDER($data, $idx)->intLength();
26
-        $offset = $idx + $length;
27
-        return $type;
28
-    }
16
+	/**
17
+	 *
18
+	 * {@inheritdoc}
19
+	 */
20
+	protected static function _decodeFromDER(Identifier $identifier, string $data,
21
+		int &$offset): ElementBase
22
+	{
23
+		$idx = $offset;
24
+		$type = new self($identifier, $data, $idx);
25
+		$length = Length::expectFromDER($data, $idx)->intLength();
26
+		$offset = $idx + $length;
27
+		return $type;
28
+	}
29 29
 }
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\Tagged;
6 6
 
Please login to merge, or discard this patch.
lib/ASN1/Type/Tagged/ExplicitTagging.php 2 patches
Indentation   +11 added lines, -11 removed lines patch added patch discarded remove patch
@@ -12,15 +12,15 @@
 block discarded – undo
12 12
  */
13 13
 interface ExplicitTagging extends ElementBase
14 14
 {
15
-    /**
16
-     * Get explicitly tagged wrapped element.
17
-     *
18
-     * <strong>NOTE!</strong> Expectation checking is deprecated and shall be
19
-     * done with <code>UnspecifiedType</code>.
20
-     *
21
-     * @param int|null $expectedTag Expected tag of the underlying type
22
-     * @throws \UnexpectedValueException If expectation fails
23
-     * @return \ASN1\Type\UnspecifiedType
24
-     */
25
-    public function explicit($expectedTag = null): UnspecifiedType;
15
+	/**
16
+	 * Get explicitly tagged wrapped element.
17
+	 *
18
+	 * <strong>NOTE!</strong> Expectation checking is deprecated and shall be
19
+	 * done with <code>UnspecifiedType</code>.
20
+	 *
21
+	 * @param int|null $expectedTag Expected tag of the underlying type
22
+	 * @throws \UnexpectedValueException If expectation fails
23
+	 * @return \ASN1\Type\UnspecifiedType
24
+	 */
25
+	public function explicit($expectedTag = null): UnspecifiedType;
26 26
 }
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\Tagged;
6 6
 
Please login to merge, or discard this patch.
lib/ASN1/Type/Tagged/PrivateType.php 2 patches
Indentation   +13 added lines, -13 removed lines patch added patch discarded remove patch
@@ -13,17 +13,17 @@
 block discarded – undo
13 13
  */
14 14
 class PrivateType extends DERTaggedType
15 15
 {
16
-    /**
17
-     *
18
-     * {@inheritdoc}
19
-     */
20
-    protected static function _decodeFromDER(Identifier $identifier, string $data,
21
-        int &$offset): ElementBase
22
-    {
23
-        $idx = $offset;
24
-        $type = new self($identifier, $data, $idx);
25
-        $length = Length::expectFromDER($data, $idx)->intLength();
26
-        $offset = $idx + $length;
27
-        return $type;
28
-    }
16
+	/**
17
+	 *
18
+	 * {@inheritdoc}
19
+	 */
20
+	protected static function _decodeFromDER(Identifier $identifier, string $data,
21
+		int &$offset): ElementBase
22
+	{
23
+		$idx = $offset;
24
+		$type = new self($identifier, $data, $idx);
25
+		$length = Length::expectFromDER($data, $idx)->intLength();
26
+		$offset = $idx + $length;
27
+		return $type;
28
+	}
29 29
 }
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\Tagged;
6 6
 
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
@@ -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 $_unusedBits
27
-     */
28
-    protected $_unusedBits;
23
+	/**
24
+	 * Number of unused bits in the last octet.
25
+	 *
26
+	 * @var int $_unusedBits
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.
67
-     *        Most significant bit of the first octet is index 0.
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("Index refers to an unused bit.");
84
-            }
85
-        }
86
-        $byte = $this->_string[$oi];
87
-        // index 0 is the most significant bit in byte
88
-        $mask = 0x01 << (7 - $bi);
89
-        return (ord($byte) & $mask) > 0;
90
-    }
63
+	/**
64
+	 * Test whether bit is set.
65
+	 *
66
+	 * @param int $idx Bit index.
67
+	 *        Most significant bit of the first octet is index 0.
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("Index refers to an unused bit.");
84
+			}
85
+		}
86
+		$byte = $this->_string[$oi];
87
+		// index 0 is the most significant bit in byte
88
+		$mask = 0x01 << (7 - $bi);
89
+		return (ord($byte) & $mask) > 0;
90
+	}
91 91
     
92
-    /**
93
-     * Get range of bits.
94
-     *
95
-     * @param int $start Index of first bit
96
-     * @param int $length Number of bits in range
97
-     * @throws \OutOfBoundsException
98
-     * @return string Integer of $length bits
99
-     */
100
-    public function range(int $start, int $length): string
101
-    {
102
-        if (!$length) {
103
-            return "0";
104
-        }
105
-        if ($start + $length > $this->numBits()) {
106
-            throw new \OutOfBoundsException("Not enough bits.");
107
-        }
108
-        $bits = gmp_init(0);
109
-        $idx = $start;
110
-        $end = $start + $length;
111
-        while (true) {
112
-            $bit = $this->testBit($idx) ? 1 : 0;
113
-            $bits |= $bit;
114
-            if (++$idx >= $end) {
115
-                break;
116
-            }
117
-            $bits <<= 1;
118
-        }
119
-        return gmp_strval($bits, 10);
120
-    }
92
+	/**
93
+	 * Get range of bits.
94
+	 *
95
+	 * @param int $start Index of first bit
96
+	 * @param int $length Number of bits in range
97
+	 * @throws \OutOfBoundsException
98
+	 * @return string Integer of $length bits
99
+	 */
100
+	public function range(int $start, int $length): string
101
+	{
102
+		if (!$length) {
103
+			return "0";
104
+		}
105
+		if ($start + $length > $this->numBits()) {
106
+			throw new \OutOfBoundsException("Not enough bits.");
107
+		}
108
+		$bits = gmp_init(0);
109
+		$idx = $start;
110
+		$end = $start + $length;
111
+		while (true) {
112
+			$bit = $this->testBit($idx) ? 1 : 0;
113
+			$bits |= $bit;
114
+			if (++$idx >= $end) {
115
+				break;
116
+			}
117
+			$bits <<= 1;
118
+		}
119
+		return gmp_strval($bits, 10);
120
+	}
121 121
     
122
-    /**
123
-     * Get a copy of the bit string with trailing zeroes removed.
124
-     *
125
-     * @return self
126
-     */
127
-    public function withoutTrailingZeroes(): self
128
-    {
129
-        // if bit string was empty
130
-        if (!strlen($this->_string)) {
131
-            return new self("");
132
-        }
133
-        $bits = $this->_string;
134
-        // count number of empty trailing octets
135
-        $unused_octets = 0;
136
-        for ($idx = strlen($bits) - 1; $idx >= 0; --$idx, ++$unused_octets) {
137
-            if ($bits[$idx] != "\x0") {
138
-                break;
139
-            }
140
-        }
141
-        // strip trailing octets
142
-        if ($unused_octets) {
143
-            $bits = substr($bits, 0, -$unused_octets);
144
-        }
145
-        // if bit string was full of zeroes
146
-        if (!strlen($bits)) {
147
-            return new self("");
148
-        }
149
-        // count number of trailing zeroes in the last octet
150
-        $unused_bits = 0;
151
-        $byte = ord($bits[strlen($bits) - 1]);
152
-        while (!($byte & 0x01)) {
153
-            $unused_bits++;
154
-            $byte >>= 1;
155
-        }
156
-        return new self($bits, $unused_bits);
157
-    }
122
+	/**
123
+	 * Get a copy of the bit string with trailing zeroes removed.
124
+	 *
125
+	 * @return self
126
+	 */
127
+	public function withoutTrailingZeroes(): self
128
+	{
129
+		// if bit string was empty
130
+		if (!strlen($this->_string)) {
131
+			return new self("");
132
+		}
133
+		$bits = $this->_string;
134
+		// count number of empty trailing octets
135
+		$unused_octets = 0;
136
+		for ($idx = strlen($bits) - 1; $idx >= 0; --$idx, ++$unused_octets) {
137
+			if ($bits[$idx] != "\x0") {
138
+				break;
139
+			}
140
+		}
141
+		// strip trailing octets
142
+		if ($unused_octets) {
143
+			$bits = substr($bits, 0, -$unused_octets);
144
+		}
145
+		// if bit string was full of zeroes
146
+		if (!strlen($bits)) {
147
+			return new self("");
148
+		}
149
+		// count number of trailing zeroes in the last octet
150
+		$unused_bits = 0;
151
+		$byte = ord($bits[strlen($bits) - 1]);
152
+		while (!($byte & 0x01)) {
153
+			$unused_bits++;
154
+			$byte >>= 1;
155
+		}
156
+		return new self($bits, $unused_bits);
157
+	}
158 158
     
159
-    /**
160
-     *
161
-     * {@inheritdoc}
162
-     */
163
-    protected function _encodedContentDER(): string
164
-    {
165
-        $der = chr($this->_unusedBits);
166
-        $der .= $this->_string;
167
-        if ($this->_unusedBits) {
168
-            $octet = $der[strlen($der) - 1];
169
-            // set unused bits to zero
170
-            $octet &= chr(0xff & ~((1 << $this->_unusedBits) - 1));
171
-            $der[strlen($der) - 1] = $octet;
172
-        }
173
-        return $der;
174
-    }
159
+	/**
160
+	 *
161
+	 * {@inheritdoc}
162
+	 */
163
+	protected function _encodedContentDER(): string
164
+	{
165
+		$der = chr($this->_unusedBits);
166
+		$der .= $this->_string;
167
+		if ($this->_unusedBits) {
168
+			$octet = $der[strlen($der) - 1];
169
+			// set unused bits to zero
170
+			$octet &= chr(0xff & ~((1 << $this->_unusedBits) - 1));
171
+			$der[strlen($der) - 1] = $octet;
172
+		}
173
+		return $der;
174
+	}
175 175
     
176
-    /**
177
-     *
178
-     * {@inheritdoc}
179
-     * @return self
180
-     */
181
-    protected static function _decodeFromDER(Identifier $identifier, string $data,
182
-        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
-    }
176
+	/**
177
+	 *
178
+	 * {@inheritdoc}
179
+	 * @return self
180
+	 */
181
+	protected static function _decodeFromDER(Identifier $identifier, string $data,
182
+		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.
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.
lib/ASN1/Type/Primitive/IA5String.php 2 patches
Indentation   +19 added lines, -19 removed lines patch added patch discarded remove patch
@@ -12,25 +12,25 @@
 block discarded – undo
12 12
  */
13 13
 class IA5String 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_IA5_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_IA5_STRING;
25
+		parent::__construct($string);
26
+	}
27 27
     
28
-    /**
29
-     *
30
-     * {@inheritdoc}
31
-     */
32
-    protected function _validateString(string $string): bool
33
-    {
34
-        return preg_match('/[^\x01-\x7f]/', $string) == 0;
35
-    }
28
+	/**
29
+	 *
30
+	 * {@inheritdoc}
31
+	 */
32
+	protected function _validateString(string $string): bool
33
+	{
34
+		return preg_match('/[^\x01-\x7f]/', $string) == 0;
35
+	}
36 36
 }
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.
lib/ASN1/Type/Primitive/ObjectIdentifier.php 2 patches
Indentation   +147 added lines, -147 removed lines patch added patch discarded remove patch
@@ -17,160 +17,160 @@
 block discarded – undo
17 17
  */
18 18
 class ObjectIdentifier extends Element
19 19
 {
20
-    use UniversalClass;
21
-    use PrimitiveType;
20
+	use UniversalClass;
21
+	use PrimitiveType;
22 22
     
23
-    /**
24
-     * Object identifier in dotted format.
25
-     *
26
-     * @var string
27
-     */
28
-    protected $_oid;
23
+	/**
24
+	 * Object identifier in dotted format.
25
+	 *
26
+	 * @var string
27
+	 */
28
+	protected $_oid;
29 29
     
30
-    /**
31
-     * Constructor.
32
-     *
33
-     * @param string $oid OID in dotted format
34
-     */
35
-    public function __construct(string $oid)
36
-    {
37
-        $this->_oid = $oid;
38
-        $this->_typeTag = self::TYPE_OBJECT_IDENTIFIER;
39
-    }
30
+	/**
31
+	 * Constructor.
32
+	 *
33
+	 * @param string $oid OID in dotted format
34
+	 */
35
+	public function __construct(string $oid)
36
+	{
37
+		$this->_oid = $oid;
38
+		$this->_typeTag = self::TYPE_OBJECT_IDENTIFIER;
39
+	}
40 40
     
41
-    /**
42
-     * Get OID in dotted format.
43
-     *
44
-     * @return string
45
-     */
46
-    public function oid(): string
47
-    {
48
-        return $this->_oid;
49
-    }
41
+	/**
42
+	 * Get OID in dotted format.
43
+	 *
44
+	 * @return string
45
+	 */
46
+	public function oid(): string
47
+	{
48
+		return $this->_oid;
49
+	}
50 50
     
51
-    /**
52
-     *
53
-     * {@inheritdoc}
54
-     */
55
-    protected function _encodedContentDER(): string
56
-    {
57
-        $subids = self::_explodeDottedOID($this->_oid);
58
-        // encode first two subids to one according to spec section 8.19.4
59
-        if (count($subids) >= 2) {
60
-            $num = ($subids[0] * 40) + $subids[1];
61
-            array_splice($subids, 0, 2, array($num));
62
-        }
63
-        return self::_encodeSubIDs(...$subids);
64
-    }
51
+	/**
52
+	 *
53
+	 * {@inheritdoc}
54
+	 */
55
+	protected function _encodedContentDER(): string
56
+	{
57
+		$subids = self::_explodeDottedOID($this->_oid);
58
+		// encode first two subids to one according to spec section 8.19.4
59
+		if (count($subids) >= 2) {
60
+			$num = ($subids[0] * 40) + $subids[1];
61
+			array_splice($subids, 0, 2, array($num));
62
+		}
63
+		return self::_encodeSubIDs(...$subids);
64
+	}
65 65
     
66
-    /**
67
-     *
68
-     * {@inheritdoc}
69
-     * @return self
70
-     */
71
-    protected static function _decodeFromDER(Identifier $identifier, string $data,
72
-        int &$offset): ElementBase
73
-    {
74
-        $idx = $offset;
75
-        $len = Length::expectFromDER($data, $idx)->intLength();
76
-        $subids = self::_decodeSubIDs(substr($data, $idx, $len));
77
-        $idx += $len;
78
-        // decode first subidentifier according to spec section 8.19.4
79
-        if (isset($subids[0])) {
80
-            list($x, $y) = gmp_div_qr($subids[0], "40");
81
-            array_splice($subids, 0, 1, array($x, $y));
82
-        }
83
-        $offset = $idx;
84
-        return new self(self::_implodeSubIDs(...$subids));
85
-    }
66
+	/**
67
+	 *
68
+	 * {@inheritdoc}
69
+	 * @return self
70
+	 */
71
+	protected static function _decodeFromDER(Identifier $identifier, string $data,
72
+		int &$offset): ElementBase
73
+	{
74
+		$idx = $offset;
75
+		$len = Length::expectFromDER($data, $idx)->intLength();
76
+		$subids = self::_decodeSubIDs(substr($data, $idx, $len));
77
+		$idx += $len;
78
+		// decode first subidentifier according to spec section 8.19.4
79
+		if (isset($subids[0])) {
80
+			list($x, $y) = gmp_div_qr($subids[0], "40");
81
+			array_splice($subids, 0, 1, array($x, $y));
82
+		}
83
+		$offset = $idx;
84
+		return new self(self::_implodeSubIDs(...$subids));
85
+	}
86 86
     
87
-    /**
88
-     * Explode dotted OID to an array of sub ID's.
89
-     *
90
-     * @param string $oid OID in dotted format
91
-     * @return \GMP[] Array of GMP numbers
92
-     */
93
-    protected static function _explodeDottedOID(string $oid): array
94
-    {
95
-        $subids = [];
96
-        foreach (explode(".", $oid) as $subid) {
97
-            $subids[] = gmp_init($subid, 10);
98
-        }
99
-        return $subids;
100
-    }
87
+	/**
88
+	 * Explode dotted OID to an array of sub ID's.
89
+	 *
90
+	 * @param string $oid OID in dotted format
91
+	 * @return \GMP[] Array of GMP numbers
92
+	 */
93
+	protected static function _explodeDottedOID(string $oid): array
94
+	{
95
+		$subids = [];
96
+		foreach (explode(".", $oid) as $subid) {
97
+			$subids[] = gmp_init($subid, 10);
98
+		}
99
+		return $subids;
100
+	}
101 101
     
102
-    /**
103
-     * Implode an array of sub IDs to dotted OID format.
104
-     *
105
-     * @param \GMP ...$subids
106
-     * @return string
107
-     */
108
-    protected static function _implodeSubIDs(\GMP ...$subids): string
109
-    {
110
-        return implode(".",
111
-            array_map(
112
-                function ($num) {
113
-                    return gmp_strval($num, 10);
114
-                }, $subids));
115
-    }
102
+	/**
103
+	 * Implode an array of sub IDs to dotted OID format.
104
+	 *
105
+	 * @param \GMP ...$subids
106
+	 * @return string
107
+	 */
108
+	protected static function _implodeSubIDs(\GMP ...$subids): string
109
+	{
110
+		return implode(".",
111
+			array_map(
112
+				function ($num) {
113
+					return gmp_strval($num, 10);
114
+				}, $subids));
115
+	}
116 116
     
117
-    /**
118
-     * Encode sub ID's to DER.
119
-     *
120
-     * @param \GMP ...$subids
121
-     * @return string
122
-     */
123
-    protected static function _encodeSubIDs(\GMP ...$subids): string
124
-    {
125
-        $data = "";
126
-        foreach ($subids as $subid) {
127
-            // if number fits to one base 128 byte
128
-            if ($subid < 128) {
129
-                $data .= chr(intval($subid));
130
-            } else { // encode to multiple bytes
131
-                $bytes = [];
132
-                do {
133
-                    array_unshift($bytes, 0x7f & gmp_intval($subid));
134
-                    $subid >>= 7;
135
-                } while ($subid > 0);
136
-                // all bytes except last must have bit 8 set to one
137
-                foreach (array_splice($bytes, 0, -1) as $byte) {
138
-                    $data .= chr(0x80 | $byte);
139
-                }
140
-                $data .= chr(reset($bytes));
141
-            }
142
-        }
143
-        return $data;
144
-    }
117
+	/**
118
+	 * Encode sub ID's to DER.
119
+	 *
120
+	 * @param \GMP ...$subids
121
+	 * @return string
122
+	 */
123
+	protected static function _encodeSubIDs(\GMP ...$subids): string
124
+	{
125
+		$data = "";
126
+		foreach ($subids as $subid) {
127
+			// if number fits to one base 128 byte
128
+			if ($subid < 128) {
129
+				$data .= chr(intval($subid));
130
+			} else { // encode to multiple bytes
131
+				$bytes = [];
132
+				do {
133
+					array_unshift($bytes, 0x7f & gmp_intval($subid));
134
+					$subid >>= 7;
135
+				} while ($subid > 0);
136
+				// all bytes except last must have bit 8 set to one
137
+				foreach (array_splice($bytes, 0, -1) as $byte) {
138
+					$data .= chr(0x80 | $byte);
139
+				}
140
+				$data .= chr(reset($bytes));
141
+			}
142
+		}
143
+		return $data;
144
+	}
145 145
     
146
-    /**
147
-     * Decode sub ID's from DER data.
148
-     *
149
-     * @param string $data
150
-     * @throws DecodeException
151
-     * @return \GMP[] Array of GMP numbers
152
-     */
153
-    protected static function _decodeSubIDs(string $data): array
154
-    {
155
-        $subids = [];
156
-        $idx = 0;
157
-        $end = strlen($data);
158
-        while ($idx < $end) {
159
-            $num = gmp_init("0", 10);
160
-            while (true) {
161
-                if ($idx >= $end) {
162
-                    throw new DecodeException("Unexpected end of data.");
163
-                }
164
-                $byte = ord($data[$idx++]);
165
-                $num |= $byte & 0x7f;
166
-                // bit 8 of the last octet is zero
167
-                if (!($byte & 0x80)) {
168
-                    break;
169
-                }
170
-                $num <<= 7;
171
-            }
172
-            $subids[] = $num;
173
-        }
174
-        return $subids;
175
-    }
146
+	/**
147
+	 * Decode sub ID's from DER data.
148
+	 *
149
+	 * @param string $data
150
+	 * @throws DecodeException
151
+	 * @return \GMP[] Array of GMP numbers
152
+	 */
153
+	protected static function _decodeSubIDs(string $data): array
154
+	{
155
+		$subids = [];
156
+		$idx = 0;
157
+		$end = strlen($data);
158
+		while ($idx < $end) {
159
+			$num = gmp_init("0", 10);
160
+			while (true) {
161
+				if ($idx >= $end) {
162
+					throw new DecodeException("Unexpected end of data.");
163
+				}
164
+				$byte = ord($data[$idx++]);
165
+				$num |= $byte & 0x7f;
166
+				// bit 8 of the last octet is zero
167
+				if (!($byte & 0x80)) {
168
+					break;
169
+				}
170
+				$num <<= 7;
171
+			}
172
+			$subids[] = $num;
173
+		}
174
+		return $subids;
175
+	}
176 176
 }
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
 
@@ -109,7 +109,7 @@  discard block
 block discarded – undo
109 109
     {
110 110
         return implode(".",
111 111
             array_map(
112
-                function ($num) {
112
+                function($num) {
113 113
                     return gmp_strval($num, 10);
114 114
                 }, $subids));
115 115
     }
Please login to merge, or discard this patch.