1414use function ceil ;
1515use function chr ;
1616use function hash_equals ;
17- use function mb_strlen ;
18- use function mb_substr ;
1917use function ord ;
2018use function pack ;
2119use function random_bytes ;
2220use function str_pad ;
2321use function str_repeat ;
22+ use function strlen ;
2423use const STR_PAD_LEFT ;
2524
2625/**
@@ -31,7 +30,7 @@ abstract class PSSRSA implements Signature
3130 public function sign (string $ data , Key $ key ): string
3231 {
3332 $ key = $ this ->handleKey ($ key );
34- $ modulusLength = mb_strlen ($ key ->n (), ' 8bit ' );
33+ $ modulusLength = strlen ($ key ->n ());
3534
3635 $ em = $ this ->encodeEMSAPSS ($ data , 8 * $ modulusLength - 1 , $ this ->getHashAlgorithm ());
3736 $ message = BigInteger::createFromBinaryString ($ em );
@@ -43,8 +42,8 @@ public function sign(string $data, Key $key): string
4342 public function verify (string $ data , Key $ key , string $ signature ): bool
4443 {
4544 $ key = $ this ->handleKey ($ key );
46- $ modulusLength = mb_strlen ($ key ->n (), ' 8bit ' );
47- if (mb_strlen ($ signature, ' 8bit ' ) !== $ modulusLength ) {
45+ $ modulusLength = strlen ($ key ->n ());
46+ if (strlen ($ signature ) !== $ modulusLength ) {
4847 throw new InvalidArgumentException ('Invalid modulus length ' );
4948 }
5049 $ s2 = BigInteger::createFromBinaryString ($ signature );
@@ -99,7 +98,7 @@ private function handleKey(Key $key): RsaKey
9998 private function convertIntegerToOctetString (BigInteger $ x , int $ xLen ): string
10099 {
101100 $ xB = $ x ->toBytes ();
102- if (mb_strlen ($ xB, ' 8bit ' ) > $ xLen ) {
101+ if (strlen ($ xB ) > $ xLen ) {
103102 throw new RuntimeException ('Unable to convert the integer ' );
104103 }
105104
@@ -118,7 +117,7 @@ private function getMGF1(string $mgfSeed, int $maskLen, Hash $mgfHash): string
118117 $ t .= $ mgfHash ->hash ($ mgfSeed . $ c );
119118 }
120119
121- return mb_substr ($ t , 0 , $ maskLen, ' 8bit ' );
120+ return substr ($ t , 0 , $ maskLen );
122121 }
123122
124123 /**
@@ -155,11 +154,11 @@ private function verifyEMSAPSS(string $m, string $em, int $emBits, Hash $hash):
155154 if ($ emLen < $ hash ->getLength () + $ sLen + 2 ) {
156155 throw new InvalidArgumentException ();
157156 }
158- if ($ em [mb_strlen ($ em, ' 8bit ' ) - 1 ] !== chr (0xBC )) {
157+ if ($ em [strlen ($ em ) - 1 ] !== chr (0xBC )) {
159158 throw new InvalidArgumentException ();
160159 }
161- $ maskedDB = mb_substr ($ em , 0 , -$ hash ->getLength () - 1 , ' 8bit ' );
162- $ h = mb_substr ($ em , -$ hash ->getLength () - 1 , $ hash ->getLength (), ' 8bit ' );
160+ $ maskedDB = substr ($ em , 0 , -$ hash ->getLength () - 1 );
161+ $ h = substr ($ em , -$ hash ->getLength () - 1 , $ hash ->getLength ());
163162 $ temp = chr (0xFF << ($ emBits & 7 ));
164163 if ((~$ maskedDB [0 ] & $ temp ) !== $ temp ) {
165164 throw new InvalidArgumentException ();
@@ -168,13 +167,13 @@ private function verifyEMSAPSS(string $m, string $em, int $emBits, Hash $hash):
168167 $ db = $ maskedDB ^ $ dbMask ;
169168 $ db [0 ] = ~chr (0xFF << ($ emBits & 7 )) & $ db [0 ];
170169 $ temp = $ emLen - $ hash ->getLength () - $ sLen - 2 ;
171- if (mb_strpos ($ db , str_repeat (chr (0 ), $ temp ), 0 , ' 8bit ' ) !== 0 ) {
170+ if (! str_starts_with ($ db , str_repeat (chr (0 ), $ temp )) ) {
172171 throw new InvalidArgumentException ();
173172 }
174173 if (ord ($ db [$ temp ]) !== 1 ) {
175174 throw new InvalidArgumentException ();
176175 }
177- $ salt = mb_substr ($ db , $ temp + 1 , null , ' 8bit ' ); // should be $sLen long
176+ $ salt = substr ($ db , $ temp + 1 , null ); // should be $sLen long
178177 $ m2 = "\0\0\0\0\0\0\0\0" . $ mHash . $ salt ;
179178 $ h2 = $ hash ->hash ($ m2 );
180179
0 commit comments