PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 5.6.0
Defender Security – Malware Scanner, Login Security & Firewall v5.6.0
6.3.0 6.2.3 6.2.4 6.2.0 6.2.1 6.2.2 6.1.0 5.3.1 5.4.0 5.4.1 5.5.0 5.5.1 5.6.0 5.6.1 5.6.2 5.7.0 5.7.1 5.7.2 5.8.0 5.8.1 5.9.0 6.0.0 6.0.1 3.0.1 3.1.0 All 141 releases
defender-security / vendor / spomky-labs / cbor-php / src / OtherObject / SimpleObject.php

SimpleObject.php in Defender Security – Malware Scanner, Login Security & Firewall 5.6.0, at vendor/spomky-labs/cbor-php/src/OtherObject/SimpleObject.php

80 lines 2.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 declare(strict_types=1);
4
5 /*
6 * The MIT License (MIT)
7 *
8 * Copyright (c) 2018-2020 Spomky-Labs
9 *
10 * This software may be modified and distributed under the terms
11 * of the MIT license. See the LICENSE file for details.
12 */
13
14 namespace CBOR\OtherObject;
15
16 use CBOR\Normalizable;
17 use CBOR\OtherObject as Base;
18 use CBOR\Utils;
19 use function chr;
20 use InvalidArgumentException;
21 use function ord;
22
23 final class SimpleObject extends Base implements Normalizable
24 {
25 public static function supportedAdditionalInformation(): array
26 {
27 return array_merge(range(0, 19), [24]);
28 }
29
30 public static function createFromLoadedData(int $additionalInformation, ?string $data): Base
31 {
32 if ($additionalInformation === 24) {
33 if ($data === null) {
34 throw new InvalidArgumentException('Invalid simple value. Content data is missing.');
35 }
36 if (mb_strlen($data, '8bit') !== 1) {
37 throw new InvalidArgumentException('Invalid simple value. Content data is too long.');
38 }
39 if (ord($data) < 32) {
40 throw new InvalidArgumentException('Invalid simple value. Content data must be between 32 and 255.');
41 }
42 } elseif ($additionalInformation < 20) {
43 if ($data !== null) {
44 throw new InvalidArgumentException('Invalid simple value. Content data should not be present.');
45 }
46 }
47
48 return new self($additionalInformation, $data);
49 }
50
51 public function normalize(): int
52 {
53 if ($this->data === null) {
54 return $this->getAdditionalInformation();
55 }
56
57 return Utils::binToInt($this->data);
58 }
59
60 /**
61 * @deprecated The method will be removed on v3.0. Please rely on the CBOR\Normalizable interface
62 */
63 public function getNormalizedData(bool $ignoreTags = false): int
64 {
65 return $this->normalize();
66 }
67
68 public static function create(int $value): self
69 {
70 switch (true) {
71 case $value < 32:
72 return new self($value, null);
73 case $value < 256:
74 return new self(24, chr($value));
75 default:
76 throw new InvalidArgumentException('The value is not a valid simple value.');
77 }
78 }
79 }
80