Rev 1 | AutorÃa | Comparar con el anterior | Ultima modificación | Ver Log |
<?phpdeclare(strict_types=1);namespace ParagonIE\ConstantTime;use TypeError;/*** Copyright (c) 2016 - 2022 Paragon Initiative Enterprises.* Copyright (c) 2014 Steve "Sc00bz" Thomas (steve at tobtu dot com)** Permission is hereby granted, free of charge, to any person obtaining a copy* of this software and associated documentation files (the "Software"), to deal* in the Software without restriction, including without limitation the rights* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell* copies of the Software, and to permit persons to whom the Software is* furnished to do so, subject to the following conditions:** The above copyright notice and this permission notice shall be included in all* copies or substantial portions of the Software.** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE* SOFTWARE.*//*** Class Binary** Binary string operators that don't choke on* mbstring.func_overload** @package ParagonIE\ConstantTime*/abstract class Binary{/*** Safe string length** @ref mbstring.func_overload** @param string $str* @return int*/public static function safeStrlen(#[\SensitiveParameter]string $str): int {if (\function_exists('mb_strlen')) {// mb_strlen in PHP 7.x can return false./** @psalm-suppress RedundantCast */return (int) \mb_strlen($str, '8bit');} else {return \strlen($str);}}/*** Safe substring** @ref mbstring.func_overload** @staticvar boolean $exists* @param string $str* @param int $start* @param ?int $length* @return string** @throws TypeError*/public static function safeSubstr(#[\SensitiveParameter]string $str,int $start = 0,?int $length = null): string {if ($length === 0) {return '';}if (\function_exists('mb_substr')) {return \mb_substr($str, $start, $length, '8bit');}// Unlike mb_substr(), substr() doesn't accept NULL for lengthif ($length !== null) {return \substr($str, $start, $length);} else {return \substr($str, $start);}}}