diff options
author | Mario <mario@mariovavti.com> | 2023-03-08 10:04:29 +0000 |
---|---|---|
committer | Mario <mario@mariovavti.com> | 2023-03-08 10:04:29 +0000 |
commit | 234bb6425021b72f0db71667191b2c36dc593791 (patch) | |
tree | 2966d68516cebae70d4a75aace9962a809532339 /vendor/chillerlan/php-qrcode/src/Data/Kanji.php | |
parent | d43a56614cd93982d19f4f82aae6e62f9ca533a9 (diff) | |
download | volse-hubzilla-234bb6425021b72f0db71667191b2c36dc593791.tar.gz volse-hubzilla-234bb6425021b72f0db71667191b2c36dc593791.tar.bz2 volse-hubzilla-234bb6425021b72f0db71667191b2c36dc593791.zip |
port totp mfa from streams with some adjustions
Diffstat (limited to 'vendor/chillerlan/php-qrcode/src/Data/Kanji.php')
-rw-r--r-- | vendor/chillerlan/php-qrcode/src/Data/Kanji.php | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/vendor/chillerlan/php-qrcode/src/Data/Kanji.php b/vendor/chillerlan/php-qrcode/src/Data/Kanji.php new file mode 100644 index 000000000..e106c50f1 --- /dev/null +++ b/vendor/chillerlan/php-qrcode/src/Data/Kanji.php @@ -0,0 +1,69 @@ +<?php +/** + * Class Kanji + * + * @filesource Kanji.php + * @created 25.11.2015 + * @package chillerlan\QRCode\Data + * @author Smiley <smiley@chillerlan.net> + * @copyright 2015 Smiley + * @license MIT + */ + +namespace chillerlan\QRCode\Data; + +use chillerlan\QRCode\QRCode; + +use function mb_strlen, ord, sprintf, strlen; + +/** + * Kanji mode: double-byte characters from the Shift JIS character set + * + * ISO/IEC 18004:2000 Section 8.3.5 + * ISO/IEC 18004:2000 Section 8.4.5 + */ +final class Kanji extends QRDataAbstract{ + + protected int $datamode = QRCode::DATA_KANJI; + + protected array $lengthBits = [8, 10, 12]; + + /** + * @inheritdoc + */ + protected function getLength(string $data):int{ + return mb_strlen($data, 'SJIS'); + } + + /** + * @inheritdoc + * + * @throws \chillerlan\QRCode\Data\QRCodeDataException on an illegal character occurence + */ + protected function write(string $data):void{ + $len = strlen($data); + + for($i = 0; $i + 1 < $len; $i += 2){ + $c = ((0xff & ord($data[$i])) << 8) | (0xff & ord($data[$i + 1])); + + if($c >= 0x8140 && $c <= 0x9FFC){ + $c -= 0x8140; + } + elseif($c >= 0xE040 && $c <= 0xEBBF){ + $c -= 0xC140; + } + else{ + throw new QRCodeDataException(sprintf('illegal char at %d [%d]', $i + 1, $c)); + } + + $this->bitBuffer->put(((($c >> 8) & 0xff) * 0xC0) + ($c & 0xff), 13); + + } + + if($i < $len){ + throw new QRCodeDataException(sprintf('illegal char at %d', $i + 1)); + } + + } + +} |