PluginProbe
Defender Security – Malware Scanner, Login Security & Firewall / 6.2.2
Defender Security – Malware Scanner, Login Security & Firewall v6.2.2
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 / lib / packages / FG / ASN1 / AbstractString.php

AbstractString.php in Defender Security – Malware Scanner, Login Security & Firewall 6.2.2, at lib/packages/FG/ASN1/AbstractString.php

137 lines 3.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 * This file is part of the PHPASN1 library.
4 *
5 * Copyright © Friedrich Große <[email protected]>
6 *
7 * For the full copyright and license information, please view the LICENSE
8 * file that was distributed with this source code.
9 */
10
11 namespace WP_DEFENDER_VENDOR\FG\ASN1;
12
13 use Exception;
14
15 abstract class AbstractString extends ASNObject implements Parsable
16 {
17 /** @var string */
18 protected $value;
19 private $checkStringForIllegalChars = true;
20 private $allowedCharacters = [];
21
22 /**
23 * The abstract base class for ASN.1 classes which represent some string of character.
24 *
25 * @param string $string
26 */
27 public function __construct($string)
28 {
29 $this->value = $string;
30 }
31
32 public function getContent()
33 {
34 return $this->value;
35 }
36
37 protected function allowCharacter($character)
38 {
39 $this->allowedCharacters[] = $character;
40 }
41
42 protected function allowCharacters(...$characters)
43 {
44 foreach ($characters as $character) {
45 $this->allowedCharacters[] = $character;
46 }
47 }
48
49 protected function allowNumbers()
50 {
51 foreach (range('0', '9') as $char) {
52 $this->allowedCharacters[] = (string) $char;
53 }
54 }
55
56 protected function allowAllLetters()
57 {
58 $this->allowSmallLetters();
59 $this->allowCapitalLetters();
60 }
61
62 protected function allowSmallLetters()
63 {
64 foreach (range('a', 'z') as $char) {
65 $this->allowedCharacters[] = $char;
66 }
67 }
68
69 protected function allowCapitalLetters()
70 {
71 foreach (range('A', 'Z') as $char) {
72 $this->allowedCharacters[] = $char;
73 }
74 }
75
76 protected function allowSpaces()
77 {
78 $this->allowedCharacters[] = ' ';
79 }
80
81 protected function allowAll()
82 {
83 $this->checkStringForIllegalChars = false;
84 }
85
86 protected function calculateContentLength()
87 {
88 return strlen($this->value);
89 }
90
91 protected function getEncodedValue()
92 {
93 if ($this->checkStringForIllegalChars) {
94 $this->checkString();
95 }
96
97 return $this->value;
98 }
99
100 protected function checkString()
101 {
102 $stringLength = $this->getContentLength();
103 for ($i = 0; $i < $stringLength; $i++) {
104 if (in_array($this->value[$i], $this->allowedCharacters) == false) {
105 $typeName = Identifier::getName($this->getType());
106 throw new Exception("Could not create a {$typeName} from the character sequence '{$this->value}'.");
107 }
108 }
109 }
110
111 public static function fromBinary(&$binaryData, &$offsetIndex = 0)
112 {
113 $parsedObject = new static('');
114
115 self::parseIdentifier($binaryData[$offsetIndex], $parsedObject->getType(), $offsetIndex++);
116 $contentLength = self::parseContentLength($binaryData, $offsetIndex);
117 $string = substr($binaryData, $offsetIndex, $contentLength);
118 $offsetIndex += $contentLength;
119
120 $parsedObject->value = $string;
121 $parsedObject->setContentLength($contentLength);
122 return $parsedObject;
123 }
124
125 public static function isValid($string)
126 {
127 $testObject = new static($string);
128 try {
129 $testObject->checkString();
130
131 return true;
132 } catch (Exception $exception) {
133 return false;
134 }
135 }
136 }
137