mirror of
https://github.com/zoe-may/TDoG-Skin.git
synced 2024-11-24 22:02:22 +08:00
59 lines
1.5 KiB
PHP
59 lines
1.5 KiB
PHP
|
<?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
|
||
|
);
|
||
|
}
|
||
|
}
|