diff options
author | Andrew Dolgov <[email protected]> | 2021-02-26 19:16:17 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2021-02-26 19:16:17 +0300 |
commit | 3fd785654372d493c031d9b541ab33a881023a32 (patch) | |
tree | 0a76cb410217074378de3d7012b95754cd3c7e6f /vendor/paragonie/constant_time_encoding/tests | |
parent | bc4475b6698f5a74e475674aa7af43253c459892 (diff) |
* switch to composer for qrcode and otp dependencies
* move most OTP-related stuff into userhelper
* remove old phpqrcode and otphp libraries
Diffstat (limited to 'vendor/paragonie/constant_time_encoding/tests')
9 files changed, 734 insertions, 0 deletions
diff --git a/vendor/paragonie/constant_time_encoding/tests/Base32HexTest.php b/vendor/paragonie/constant_time_encoding/tests/Base32HexTest.php new file mode 100644 index 000000000..ed19f336f --- /dev/null +++ b/vendor/paragonie/constant_time_encoding/tests/Base32HexTest.php @@ -0,0 +1,49 @@ +<?php +use \ParagonIE\ConstantTime\Base32Hex; + +class Base32HexTest extends PHPUnit\Framework\TestCase +{ + /** + * @covers Base32Hex::encode() + * @covers Base32Hex::decode() + * @covers Base32Hex::encodeUpper() + * @covers Base32Hex::decodeUpper() + */ + public function testRandom() + { + for ($i = 1; $i < 32; ++$i) { + for ($j = 0; $j < 50; ++$j) { + $random = \random_bytes($i); + + $enc = Base32Hex::encode($random); + $this->assertSame( + $random, + Base32Hex::decode($enc) + ); + $unpadded = \rtrim($enc, '='); + $this->assertSame( + $unpadded, + Base32Hex::encodeUnpadded($random) + ); + $this->assertSame( + $random, + Base32Hex::decode($unpadded) + ); + + $enc = Base32Hex::encodeUpper($random); + $this->assertSame( + $random, + Base32Hex::decodeUpper($enc) + ); $unpadded = \rtrim($enc, '='); + $this->assertSame( + $unpadded, + Base32Hex::encodeUpperUnpadded($random) + ); + $this->assertSame( + $random, + Base32Hex::decodeUpper($unpadded) + ); + } + } + } +} diff --git a/vendor/paragonie/constant_time_encoding/tests/Base32Test.php b/vendor/paragonie/constant_time_encoding/tests/Base32Test.php new file mode 100644 index 000000000..65e8e7c56 --- /dev/null +++ b/vendor/paragonie/constant_time_encoding/tests/Base32Test.php @@ -0,0 +1,50 @@ +<?php +use \ParagonIE\ConstantTime\Base32; + +class Base32Test extends PHPUnit\Framework\TestCase +{ + /** + * @covers Base32::encode() + * @covers Base32::decode() + * @covers Base32::encodeUpper() + * @covers Base32::decodeUpper() + */ + public function testRandom() + { + for ($i = 1; $i < 32; ++$i) { + for ($j = 0; $j < 50; ++$j) { + $random = \random_bytes($i); + + $enc = Base32::encode($random); + $this->assertSame( + $random, + Base32::decode($enc) + ); + $unpadded = \rtrim($enc, '='); + $this->assertSame( + $unpadded, + Base32::encodeUnpadded($random) + ); + $this->assertSame( + $random, + Base32::decode($unpadded) + ); + + $enc = Base32::encodeUpper($random); + $this->assertSame( + $random, + Base32::decodeUpper($enc) + ); + $unpadded = \rtrim($enc, '='); + $this->assertSame( + $unpadded, + Base32::encodeUpperUnpadded($random) + ); + $this->assertSame( + $random, + Base32::decodeUpper($unpadded) + ); + } + } + } +} diff --git a/vendor/paragonie/constant_time_encoding/tests/Base64DotSlashOrderedTest.php b/vendor/paragonie/constant_time_encoding/tests/Base64DotSlashOrderedTest.php new file mode 100644 index 000000000..f7dc828b1 --- /dev/null +++ b/vendor/paragonie/constant_time_encoding/tests/Base64DotSlashOrderedTest.php @@ -0,0 +1,34 @@ +<?php +use \ParagonIE\ConstantTime\Base64DotSlashOrdered; + +class Base64DotSlashOrderedTest extends PHPUnit\Framework\TestCase +{ + /** + * @covers Base64DotSlashOrdered::encode() + * @covers Base64DotSlashOrdered::decode() + */ + public function testRandom() + { + for ($i = 1; $i < 32; ++$i) { + for ($j = 0; $j < 50; ++$j) { + $random = \random_bytes($i); + + $enc = Base64DotSlashOrdered::encode($random); + $this->assertSame( + $random, + Base64DotSlashOrdered::decode($enc) + ); + + $unpadded = \rtrim($enc, '='); + $this->assertSame( + $random, + Base64DotSlashOrdered::decode($unpadded) + ); + $this->assertSame( + $random, + Base64DotSlashOrdered::decode($unpadded) + ); + } + } + } +} diff --git a/vendor/paragonie/constant_time_encoding/tests/Base64DotSlashTest.php b/vendor/paragonie/constant_time_encoding/tests/Base64DotSlashTest.php new file mode 100644 index 000000000..257a3d549 --- /dev/null +++ b/vendor/paragonie/constant_time_encoding/tests/Base64DotSlashTest.php @@ -0,0 +1,34 @@ +<?php +use \ParagonIE\ConstantTime\Base64DotSlash; + +class Base64DotSlashTest extends PHPUnit\Framework\TestCase +{ + /** + * @covers Base64DotSlash::encode() + * @covers Base64DotSlash::decode() + */ + public function testRandom() + { + for ($i = 1; $i < 32; ++$i) { + for ($j = 0; $j < 50; ++$j) { + $random = \random_bytes($i); + + $enc = Base64DotSlash::encode($random); + $this->assertSame( + $random, + Base64DotSlash::decode($enc) + ); + + $unpadded = \rtrim($enc, '='); + $this->assertSame( + $random, + Base64DotSlash::decode($unpadded) + ); + $this->assertSame( + $random, + Base64DotSlash::decode($unpadded) + ); + } + } + } +} diff --git a/vendor/paragonie/constant_time_encoding/tests/Base64Test.php b/vendor/paragonie/constant_time_encoding/tests/Base64Test.php new file mode 100644 index 000000000..16ab47da0 --- /dev/null +++ b/vendor/paragonie/constant_time_encoding/tests/Base64Test.php @@ -0,0 +1,79 @@ +<?php +use \ParagonIE\ConstantTime\Base64; + +class Base64Test extends PHPUnit\Framework\TestCase +{ + /** + * @covers Base64::encode() + * @covers Base64::decode() + */ + public function testRandom() + { + for ($i = 1; $i < 32; ++$i) { + for ($j = 0; $j < 50; ++$j) { + $random = \random_bytes($i); + + $enc = Base64::encode($random); + $this->assertSame( + $random, + Base64::decode($enc) + ); + $this->assertSame( + \base64_encode($random), + $enc + ); + + $unpadded = \rtrim($enc, '='); + $this->assertSame( + $random, + Base64::decode($unpadded) + ); + $this->assertSame( + $random, + Base64::decode($unpadded) + ); + } + } + $str = 'MIIFzzCCBLegAwIBAgIDAfdlMA0GCSqGSIb3DQEBBQUAMHMxCzAJBgNVBAYTAlBM' . + 'MSgwJgYDVQQKDB9LcmFqb3dhIEl6YmEgUm96bGljemVuaW93YSBTLkEuMSQwIgYDVQQ' . + 'DDBtDT1BFIFNaQUZJUiAtIEt3YWxpZmlrb3dhbnkxFDASBgNVBAUTC05yIHdwaXN1Oi' . + 'A2MB4XDTExMTEwOTA2MDAwMFoXDTEzMTEwOTA2MDAwMFowgdkxCzAJBgNVBAYTAlBMM' . + 'RwwGgYDVQQKDBNVcnrEhWQgTWlhc3RhIEdkeW5pMRswGQYDVQQFExJQRVNFTDogNjEw' . + 'NjA2MDMxMTgxGTAXBgNVBAMMEEplcnp5IFByemV3b3Jza2kxTzBNBgNVBBAwRgwiQWw' . + 'uIE1hcnN6YcWCa2EgUGnFgnN1ZHNraWVnbyA1Mi81NAwNODEtMzgyIEdkeW5pYQwGUG' . + '9sc2thDAlwb21vcnNraWUxDjAMBgNVBCoMBUplcnp5MRMwEQYDVQQEDApQcnpld29yc' . + '2tpMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCMm5vjGqHPthJCMqKpqssSISRo' . + 's0PYDTcEQzyyurfX67EJWKtZj6HNwuDMEGJ02iBNZfjUl7r8dIi28bSKhNlsfycXZKY' . + 'RcIjp0+r5RqtR2auo9GQ6veKb61DEAGIqaR+uLLcJVTHCu0w9oXLGbRlGth5eNoj03C' . + 'xXVAH2IfhbNwIDAQABo4IChzCCAoMwDAYDVR0TAQH/BAIwADCCAUgGA1UdIAEB/wSCA' . + 'TwwggE4MIIBNAYJKoRoAYb3IwEBMIIBJTCB3QYIKwYBBQUHAgIwgdAMgc1EZWtsYXJh' . + 'Y2phIHRhIGplc3Qgb8Wbd2lhZGN6ZW5pZW0gd3lkYXdjeSwgxbxlIHRlbiBjZXJ0eWZ' . + 'pa2F0IHpvc3RhxYIgd3lkYW55IGpha28gY2VydHlmaWthdCBrd2FsaWZpa293YW55IH' . + 'pnb2RuaWUgeiB3eW1hZ2FuaWFtaSB1c3Rhd3kgbyBwb2RwaXNpZSBlbGVrdHJvbmlje' . + 'm55bSBvcmF6IHRvd2FyenlzesSFY3ltaSBqZWogcm96cG9yesSFZHplbmlhbWkuMEMG' . + 'CCsGAQUFBwIBFjdodHRwOi8vd3d3Lmtpci5jb20ucGwvY2VydHlmaWthY2phX2tsdWN' . + '6eS9wb2xpdHlrYS5odG1sMAkGA1UdCQQCMAAwIQYDVR0RBBowGIEWai5wcnpld29yc2' . + 'tpQGdkeW5pYS5wbDAOBgNVHQ8BAf8EBAMCBkAwgZ4GA1UdIwSBljCBk4AU3TGldJXip' . + 'N4oGS3ZYmnBDMFs8gKhd6R1MHMxCzAJBgNVBAYTAlBMMSgwJgYDVQQKDB9LcmFqb3dh' . + 'IEl6YmEgUm96bGljemVuaW93YSBTLkEuMSQwIgYDVQQDDBtDT1BFIFNaQUZJUiAtIEt' . + '3YWxpZmlrb3dhbnkxFDASBgNVBAUTC05yIHdwaXN1OiA2ggJb9jBIBgNVHR8EQTA/MD' . + '2gO6A5hjdodHRwOi8vd3d3Lmtpci5jb20ucGwvY2VydHlmaWthY2phX2tsdWN6eS9DU' . + 'kxfT1pLMzIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQBYPIqnAreyeql7/opJjcar/qWZ' . + 'y9ruhB2q0lZFsJOhwgMnbQXzp/4vv93YJqcHGAXdHP6EO8FQX47mjo2ZKQmi+cIHJHL' . + 'ONdX/3Im+M17V0iNAh7Z1lOSfTRT+iiwe/F8phcEaD5q2RmvYusR7zXZq/cLL0If0hX' . + 'oPZ/EHQxjN8pxzxiUx6bJAgturnIMEfRNesxwghdr1dkUjOhGLf3kHVzgM6j3VAM7oF' . + 'mMUb5y5s96Bzl10DodWitjOEH0vvnIcsppSxH1C1dCAi0o9f/1y2XuLNhBNHMAyTqpY' . + 'PX8Yvav1c+Z50OMaSXHAnTa20zv8UtiHbaAhwlifCelUMj93S'; + + try { + Base64::decode($str, true); + $this->fail('Strict padding not enforced'); + } catch (\Exception $ex) { + + $this->assertSame( + Base64::decode($str), + \base64_decode($str) + ); + } + } +} diff --git a/vendor/paragonie/constant_time_encoding/tests/Base64UrlSafeTest.php b/vendor/paragonie/constant_time_encoding/tests/Base64UrlSafeTest.php new file mode 100644 index 000000000..136ed611c --- /dev/null +++ b/vendor/paragonie/constant_time_encoding/tests/Base64UrlSafeTest.php @@ -0,0 +1,58 @@ +<?php + +use ParagonIE\ConstantTime\Base64UrlSafe; +use ParagonIE\ConstantTime\Binary; + +/** + * Class Base64UrlSafeTest + */ +class Base64UrlSafeTest extends PHPUnit\Framework\TestCase +{ + /** + * @covers Base64UrlSafe::encode() + * @covers Base64UrlSafe::decode() + * + * @throws Exception + * @throws TypeError + */ + public function testRandom() + { + for ($i = 1; $i < 32; ++$i) { + for ($j = 0; $j < 50; ++$j) { + $random = \random_bytes($i); + + $enc = Base64UrlSafe::encode($random); + $this->assertSame( + $random, + Base64UrlSafe::decode($enc) + ); + $this->assertSame( + \strtr(\base64_encode($random), '+/', '-_'), + $enc + ); + + $unpadded = \rtrim($enc, '='); + $this->assertSame( + $unpadded, + Base64UrlSafe::encodeUnpadded($random) + ); + $this->assertSame( + $random, + Base64UrlSafe::decode($unpadded) + ); + } + } + + $random = \random_bytes(1 << 20); + $enc = Base64UrlSafe::encode($random); + $this->assertTrue(Binary::safeStrlen($enc) > 65536); + $this->assertSame( + $random, + Base64UrlSafe::decode($enc) + ); + $this->assertSame( + \strtr(\base64_encode($random), '+/', '-_'), + $enc + ); + } +} diff --git a/vendor/paragonie/constant_time_encoding/tests/EncodingTest.php b/vendor/paragonie/constant_time_encoding/tests/EncodingTest.php new file mode 100644 index 000000000..6f774d8c0 --- /dev/null +++ b/vendor/paragonie/constant_time_encoding/tests/EncodingTest.php @@ -0,0 +1,307 @@ +<?php +use \ParagonIE\ConstantTime\Base32; +use \ParagonIE\ConstantTime\Base32Hex; +use \ParagonIE\ConstantTime\Base64; +use \ParagonIE\ConstantTime\Base64DotSlash; +use \ParagonIE\ConstantTime\Base64DotSlashOrdered; +use \ParagonIE\ConstantTime\Base64UrlSafe; +use \ParagonIE\ConstantTime\Encoding; +use \ParagonIE\ConstantTime\Hex; + +class EncodingTest extends PHPUnit\Framework\TestCase +{ + public function testBase32Encode() + { + $this->assertSame( + Encoding::base32Encode("\x00"), + 'aa======' + ); + $this->assertSame( + Encoding::base32Encode("\x00\x00"), + 'aaaa====' + ); + $this->assertSame( + Encoding::base32Encode("\x00\x00\x00"), + 'aaaaa===' + ); + $this->assertSame( + Encoding::base32Encode("\x00\x00\x00\x00"), + 'aaaaaaa=' + ); + $this->assertSame( + Encoding::base32Encode("\x00\x00\x00\x00\x00"), + 'aaaaaaaa' + ); + $this->assertSame( + Encoding::base32Encode("\x00\x00\x0F\xFF\xFF"), + 'aaaa7777' + ); + $this->assertSame( + Encoding::base32Encode("\xFF\xFF\xF0\x00\x00"), + '7777aaaa' + ); + + $this->assertSame( + Encoding::base32Encode("\xce\x73\x9c\xe7\x39"), + 'zzzzzzzz' + ); + $this->assertSame( + Encoding::base32Encode("\xd6\xb5\xad\x6b\x5a"), + '22222222' + ); + $this->assertSame( + Base32::encodeUpper("\x00"), + 'AA======' + ); + $this->assertSame( + Base32::encodeUpper("\x00\x00"), + 'AAAA====' + ); + $this->assertSame( + Base32::encodeUpper("\x00\x00\x00"), + 'AAAAA===' + ); + $this->assertSame( + Base32::encodeUpper("\x00\x00\x00\x00"), + 'AAAAAAA=' + ); + $this->assertSame( + Base32::encodeUpper("\x00\x00\x00\x00\x00"), + 'AAAAAAAA' + ); + $this->assertSame( + Base32::encodeUpper("\x00\x00\x0F\xFF\xFF"), + 'AAAA7777' + ); + $this->assertSame( + Base32::encodeUpper("\xFF\xFF\xF0\x00\x00"), + '7777AAAA' + ); + + $this->assertSame( + Base32::encodeUpper("\xce\x73\x9c\xe7\x39"), + 'ZZZZZZZZ' + ); + $this->assertSame( + Base32::encodeUpper("\xd6\xb5\xad\x6b\x5a"), + '22222222' + ); + } + + public function testBase32Hex() + { + $this->assertSame( + Base32Hex::encode("\x00"), + '00======' + ); + $this->assertSame( + Base32Hex::encode("\x00\x00"), + '0000====' + ); + $this->assertSame( + Base32Hex::encode("\x00\x00\x00"), + '00000===' + ); + $this->assertSame( + Base32Hex::encode("\x00\x00\x00\x00"), + '0000000=' + ); + $this->assertSame( + Base32Hex::encode("\x00\x00\x00\x00\x00"), + '00000000' + ); + $this->assertSame( + Base32Hex::encode("\x00\x00\x0F\xFF\xFF"), + '0000vvvv' + ); + $this->assertSame( + Base32Hex::encode("\xFF\xFF\xF0\x00\x00"), + 'vvvv0000' + ); + + + } + + /** + * Based on test vectors from RFC 4648 + */ + public function testBase32Decode() + { + $this->assertSame( + "\x00\x00\x00\x00\x00\x00", + Encoding::base32Decode('aaaaaaaaaa======') + ); + $this->assertSame( + "\x00\x00\x00\x00\x00\x00\x00", + Encoding::base32Decode('aaaaaaaaaaaa====') + ); + $this->assertSame( + "\x00\x00\x00\x00\x00\x00\x00\x00", + Encoding::base32Decode('aaaaaaaaaaaaa===') + ); + $this->assertSame( + "\x00\x00\x00\x00\x00\x00\x00\x00\x00", + Encoding::base32Decode('aaaaaaaaaaaaaaa=') + ); + $this->assertSame( + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", + Encoding::base32Decode('aaaaaaaaaaaaaaaa') + ); + $this->assertSame( + "\x00", + Encoding::base32Decode('aa======') + ); + $this->assertSame( + "\x00\x00", + Encoding::base32Decode('aaaa====') + ); + $this->assertSame( + "\x00\x00\x00", + Encoding::base32Decode('aaaaa===') + ); + $this->assertSame( + "\x00\x00\x00\x00", + Encoding::base32Decode('aaaaaaa=') + ); + $this->assertSame( + "\x00\x00\x00\x00\x00", + Encoding::base32Decode('aaaaaaaa') + ); + $this->assertSame( + "\x00\x00\x0F\xFF\xFF", + Encoding::base32Decode('aaaa7777') + ); + $this->assertSame( + "\xFF\xFF\xF0\x00\x00", + Encoding::base32Decode('7777aaaa') + ); + $this->assertSame( + "\xce\x73\x9c\xe7\x39", + Encoding::base32Decode('zzzzzzzz') + ); + $this->assertSame( + "\xd6\xb5\xad\x6b\x5a", + Encoding::base32Decode('22222222') + ); + $this->assertSame( + 'foobar', + Encoding::base32Decode('mzxw6ytboi======') + ); + + $rand = random_bytes(9); + $enc = Encoding::base32Encode($rand); + + $this->assertSame( + Encoding::base32Encode($rand), + Encoding::base32Encode(Encoding::base32Decode($enc)) + ); + $this->assertSame( + $rand, + Encoding::base32Decode($enc) + ); + } + + /** + * @covers Encoding::hexDecode() + * @covers Encoding::hexEncode() + * @covers Encoding::base32Decode() + * @covers Encoding::base32Encode() + * @covers Encoding::base64Decode() + * @covers Encoding::base64Encode() + * @covers Encoding::base64DotSlashDecode() + * @covers Encoding::base64DotSlashEncode() + * @covers Encoding::base64DotSlashOrderedDecode() + * @covers Encoding::base64DotSlashOrderedEncode() + */ + public function testBasicEncoding() + { + // Re-run the test at least 3 times for each length + for ($j = 0; $j < 3; ++$j) { + for ($i = 1; $i < 84; ++$i) { + $rand = random_bytes($i); + $enc = Encoding::hexEncode($rand); + $this->assertSame( + \bin2hex($rand), + $enc, + "Hex Encoding - Length: " . $i + ); + $this->assertSame( + $rand, + Encoding::hexDecode($enc), + "Hex Encoding - Length: " . $i + ); + + // Uppercase variant: + $enc = Hex::encodeUpper($rand); + $this->assertSame( + \strtoupper(\bin2hex($rand)), + $enc, + "Hex Encoding - Length: " . $i + ); + $this->assertSame( + $rand, + Hex::decode($enc), + "HexUpper Encoding - Length: " . $i + ); + + $enc = Encoding::base32Encode($rand); + $this->assertSame( + $rand, + Encoding::base32Decode($enc), + "Base32 Encoding - Length: " . $i + ); + + $enc = Encoding::base32EncodeUpper($rand); + $this->assertSame( + $rand, + Encoding::base32DecodeUpper($enc), + "Base32Upper Encoding - Length: " . $i + ); + + $enc = Encoding::base32HexEncode($rand); + $this->assertSame( + bin2hex($rand), + bin2hex(Encoding::base32HexDecode($enc)), + "Base32Hex Encoding - Length: " . $i + ); + + $enc = Encoding::base32HexEncodeUpper($rand); + $this->assertSame( + bin2hex($rand), + bin2hex(Encoding::base32HexDecodeUpper($enc)), + "Base32HexUpper Encoding - Length: " . $i + ); + + $enc = Encoding::base64Encode($rand); + $this->assertSame( + $rand, + Encoding::base64Decode($enc), + "Base64 Encoding - Length: " . $i + ); + + $enc = Encoding::base64EncodeDotSlash($rand); + $this->assertSame( + $rand, + Encoding::base64DecodeDotSlash($enc), + "Base64 DotSlash Encoding - Length: " . $i + ); + $enc = Encoding::base64EncodeDotSlashOrdered($rand); + $this->assertSame( + $rand, + Encoding::base64DecodeDotSlashOrdered($enc), + "Base64 Ordered DotSlash Encoding - Length: " . $i + ); + + $enc = Base64UrlSafe::encode($rand); + $this->assertSame( + \strtr(\base64_encode($rand), '+/', '-_'), + $enc + ); + $this->assertSame( + $rand, + Base64UrlSafe::decode($enc) + ); + } + } + } +}
\ No newline at end of file diff --git a/vendor/paragonie/constant_time_encoding/tests/HexTest.php b/vendor/paragonie/constant_time_encoding/tests/HexTest.php new file mode 100644 index 000000000..5c31f6d15 --- /dev/null +++ b/vendor/paragonie/constant_time_encoding/tests/HexTest.php @@ -0,0 +1,39 @@ +<?php +use \ParagonIE\ConstantTime\Hex; + +class HexTest extends PHPUnit\Framework\TestCase +{ + /** + * @covers Hex::encode() + * @covers Hex::decode() + * @covers Hex::encodeUpper() + */ + public function testRandom() + { + for ($i = 1; $i < 32; ++$i) { + for ($j = 0; $j < 50; ++$j) { + $random = \random_bytes($i); + + $enc = Hex::encode($random); + $this->assertSame( + $random, + Hex::decode($enc) + ); + $this->assertSame( + \bin2hex($random), + $enc + ); + + $enc = Hex::encodeUpper($random); + $this->assertSame( + $random, + Hex::decode($enc) + ); + $this->assertSame( + \strtoupper(\bin2hex($random)), + $enc + ); + } + } + } +} diff --git a/vendor/paragonie/constant_time_encoding/tests/RFC4648Test.php b/vendor/paragonie/constant_time_encoding/tests/RFC4648Test.php new file mode 100644 index 000000000..a6653de88 --- /dev/null +++ b/vendor/paragonie/constant_time_encoding/tests/RFC4648Test.php @@ -0,0 +1,84 @@ +<?php +use \ParagonIE\ConstantTime\Base32; +use \ParagonIE\ConstantTime\Base32Hex; +use \ParagonIE\ConstantTime\Base64; +use \ParagonIE\ConstantTime\Base64DotSlash; +use \ParagonIE\ConstantTime\Base64DotSlashOrdered; +use \ParagonIE\ConstantTime\Encoding; +use \ParagonIE\ConstantTime\Hex; + +/** + * Class RFC4648Test + * + * @ref https://tools.ietf.org/html/rfc4648#section-10 + */ +class RFC4648Test extends PHPUnit\Framework\TestCase +{ + public function testVectorBase64() + { + $this->assertSame(Base64::encode(''), ''); + $this->assertSame(Base64::encode('f'), 'Zg=='); + $this->assertSame(Base64::encode('fo'), 'Zm8='); + $this->assertSame(Base64::encode('foo'), 'Zm9v'); + $this->assertSame(Base64::encode('foob'), 'Zm9vYg=='); + $this->assertSame(Base64::encode('fooba'), 'Zm9vYmE='); + $this->assertSame(Base64::encode('foobar'), 'Zm9vYmFy'); + } + + public function testVectorBase32() + { + $this->assertSame(Base32::encode(''), ''); + $this->assertSame(Base32::encode('f'), 'my======'); + $this->assertSame(Base32::encode('fo'), 'mzxq===='); + $this->assertSame(Base32::encode('foo'), 'mzxw6==='); + $this->assertSame(Base32::encode('foob'), 'mzxw6yq='); + $this->assertSame(Base32::encode('fooba'), 'mzxw6ytb'); + $this->assertSame(Base32::encode('foobar'), 'mzxw6ytboi======'); + + $this->assertSame(Base32::encodeUpper(''), ''); + $this->assertSame(Base32::encodeUpper('f'), 'MY======'); + $this->assertSame(Base32::encodeUpper('fo'), 'MZXQ===='); + $this->assertSame(Base32::encodeUpper('foo'), 'MZXW6==='); + $this->assertSame(Base32::encodeUpper('foob'), 'MZXW6YQ='); + $this->assertSame(Base32::encodeUpper('fooba'), 'MZXW6YTB'); + $this->assertSame(Base32::encodeUpper('foobar'), 'MZXW6YTBOI======'); + } + + public function testVectorBase32Hex() + { + $this->assertSame(Base32Hex::encode(''), ''); + $this->assertSame(Base32Hex::encode('f'), 'co======'); + $this->assertSame(Base32Hex::encode('fo'), 'cpng===='); + $this->assertSame(Base32Hex::encode('foo'), 'cpnmu==='); + $this->assertSame(Base32Hex::encode('foob'), 'cpnmuog='); + $this->assertSame(Base32Hex::encode('fooba'), 'cpnmuoj1'); + $this->assertSame(Base32Hex::encode('foobar'), 'cpnmuoj1e8======'); + + $this->assertSame(Base32Hex::encodeUpper(''), ''); + $this->assertSame(Base32Hex::encodeUpper('f'), 'CO======'); + $this->assertSame(Base32Hex::encodeUpper('fo'), 'CPNG===='); + $this->assertSame(Base32Hex::encodeUpper('foo'), 'CPNMU==='); + $this->assertSame(Base32Hex::encodeUpper('foob'), 'CPNMUOG='); + $this->assertSame(Base32Hex::encodeUpper('fooba'), 'CPNMUOJ1'); + $this->assertSame(Base32Hex::encodeUpper('foobar'), 'CPNMUOJ1E8======'); + } + + public function testVectorBase16() + { + $this->assertSame(Hex::encode(''), ''); + $this->assertSame(Hex::encode('f'), '66'); + $this->assertSame(Hex::encode('fo'), '666f'); + $this->assertSame(Hex::encode('foo'), '666f6f'); + $this->assertSame(Hex::encode('foob'), '666f6f62'); + $this->assertSame(Hex::encode('fooba'), '666f6f6261'); + $this->assertSame(Hex::encode('foobar'), '666f6f626172'); + + $this->assertSame(Hex::encodeUpper(''), ''); + $this->assertSame(Hex::encodeUpper('f'), '66'); + $this->assertSame(Hex::encodeUpper('fo'), '666F'); + $this->assertSame(Hex::encodeUpper('foo'), '666F6F'); + $this->assertSame(Hex::encodeUpper('foob'), '666F6F62'); + $this->assertSame(Hex::encodeUpper('fooba'), '666F6F6261'); + $this->assertSame(Hex::encodeUpper('foobar'), '666F6F626172'); + } +} |