summaryrefslogtreecommitdiff
path: root/vendor/paragonie/constant_time_encoding/tests/RFC4648Test.php
blob: a6653de885dfc69f1c66357a3a66be70c9fac797 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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');
    }
}