Skip to content

Commit b902abf

Browse files
sleptorMinishlink
authored andcommitted
Base64 tests
1 parent e0f7c17 commit b902abf

File tree

1 file changed

+39
-13
lines changed

1 file changed

+39
-13
lines changed

tests/EncryptionTest.php

+39-13
Original file line numberDiff line numberDiff line change
@@ -19,34 +19,50 @@
1919
*/
2020
final class EncryptionTest extends PHPUnit\Framework\TestCase
2121
{
22+
public function testBase64Encode(): void
23+
{
24+
$plaintext = 'When I grow up, I want to be a watermelon';
25+
$this->assertEquals('V2hlbiBJIGdyb3cgdXAsIEkgd2FudCB0byBiZSBhIHdhdGVybWVsb24', $this->base64Encode($plaintext));
26+
}
27+
28+
public function testBase64Decode(): void
29+
{
30+
// Base64 URL-safe, no padding
31+
$this->assertEquals('When I grow up, I want to be a watermelon', $this->base64Decode('V2hlbiBJIGdyb3cgdXAsIEkgd2FudCB0byBiZSBhIHdhdGVybWVsb24'));
32+
$this->assertEquals('<<???>>', $this->base64Decode('PDwPz8-Pg'));
33+
34+
// Standard Base64
35+
$this->assertEquals('When I grow up, I want to be a watermelon', $this->base64Decode('V2hlbiBJIGdyb3cgdXAsIEkgd2FudCB0byBiZSBhIHdhdGVybWVsb24='));
36+
$this->assertEquals('<<???>>', $this->base64Decode('PDw/Pz8+Pg=='));
37+
}
38+
2239
public function testDeterministicEncrypt(): void
2340
{
24-
$contentEncoding = "aes128gcm";
41+
$contentEncoding = 'aes128gcm';
2542
$plaintext = 'When I grow up, I want to be a watermelon';
26-
$this->assertEquals('V2hlbiBJIGdyb3cgdXAsIEkgd2FudCB0byBiZSBhIHdhdGVybWVsb24', Base64Url::encode($plaintext));
2743

2844
$payload = Encryption::padPayload($plaintext, 0, $contentEncoding);
29-
$this->assertEquals('V2hlbiBJIGdyb3cgdXAsIEkgd2FudCB0byBiZSBhIHdhdGVybWVsb24C', Base64Url::encode($payload));
45+
$this->assertEquals('V2hlbiBJIGdyb3cgdXAsIEkgd2FudCB0byBiZSBhIHdhdGVybWVsb24C', $this->base64Encode($payload));
3046

3147
$userPublicKey = 'BCVxsr7N_eNgVRqvHtD0zTZsEc6-VV-JvLexhqUzORcxaOzi6-AYWXvTBHm4bjyPjs7Vd8pZGH6SRpkNtoIAiw4';
3248
$userAuthToken = 'BTBZMqHH6r4Tts7J_aSIgg';
3349

34-
$localPublicKey = Base64Url::decode('BP4z9KsN6nGRTbVYI_c7VJSPQTBtkgcy27mlmlMoZIIgDll6e3vCYLocInmYWAmS6TlzAC8wEqKK6PBru3jl7A8');
35-
$salt = Base64Url::decode('DGv6ra1nlYgDCS1FRnbzlw');
50+
$localPublicKey = $this->base64Decode('BP4z9KsN6nGRTbVYI_c7VJSPQTBtkgcy27mlmlMoZIIgDll6e3vCYLocInmYWAmS6TlzAC8wEqKK6PBru3jl7A8');
51+
$salt = $this->base64Decode('DGv6ra1nlYgDCS1FRnbzlw');
3652

3753
[$localPublicKeyObjectX, $localPublicKeyObjectY] = Utils::unserializePublicKey($localPublicKey);
3854
$localJwk = new JWK([
3955
'kty' => 'EC',
4056
'crv' => 'P-256',
4157
'd' => 'yfWPiYE-n46HLnH0KqZOF1fJJU3MYrct3AELtAQ-oRw',
42-
'x' => Base64Url::encode($localPublicKeyObjectX),
43-
'y' => Base64Url::encode($localPublicKeyObjectY),
58+
'x' => $this->base64Encode($localPublicKeyObjectX),
59+
'y' => $this->base64Encode($localPublicKeyObjectY),
4460
]);
4561

4662
$expected = [
4763
'localPublicKey' => $localPublicKey,
4864
'salt' => $salt,
49-
'cipherText' => Base64Url::decode('8pfeW0KbunFT06SuDKoJH9Ql87S1QUrd irN6GcG7sFz1y1sqLgVi1VhjVkHsUoEsbI_0LpXMuGvnzQ'),
65+
'cipherText' => $this->base64Decode('8pfeW0KbunFT06SuDKoJH9Ql87S1QUrdirN6GcG7sFz1y1sqLgVi1VhjVkHsUoEsbI_0LpXMuGvnzQ'),
5066
];
5167

5268
$result = Encryption::deterministicEncrypt(
@@ -59,17 +75,17 @@ public function testDeterministicEncrypt(): void
5975
);
6076

6177
$this->assertEquals(Utils::safeStrlen($expected['cipherText']), Utils::safeStrlen($result['cipherText']));
62-
$this->assertEquals(Base64Url::encode($expected['cipherText']), Base64Url::encode($result['cipherText']));
78+
$this->assertEquals($this->base64Encode($expected['cipherText']), $this->base64Encode($result['cipherText']));
6379
$this->assertEquals($expected, $result);
6480
}
6581

6682
public function testGetContentCodingHeader(): void
6783
{
68-
$localPublicKey = Base64Url::decode('BP4z9KsN6nGRTbVYI_c7VJSPQTBtkgcy27mlmlMoZIIgDll6e3vCYLocInmYWAmS6TlzAC8wEqKK6PBru3jl7A8');
69-
$salt = Base64Url::decode('DGv6ra1nlYgDCS1FRnbzlw');
84+
$localPublicKey = $this->base64Decode('BP4z9KsN6nGRTbVYI_c7VJSPQTBtkgcy27mlmlMoZIIgDll6e3vCYLocInmYWAmS6TlzAC8wEqKK6PBru3jl7A8');
85+
$salt = $this->base64Decode('DGv6ra1nlYgDCS1FRnbzlw');
7086

7187
$result = Encryption::getContentCodingHeader($salt, $localPublicKey, "aes128gcm");
72-
$expected = Base64Url::decode('DGv6ra1nlYgDCS1FRnbzlwAAEABBBP4z9KsN6nGRTbVYI_c7VJSPQTBtkgcy27mlmlMoZIIgDll6e3vCYLocInmYWAmS6TlzAC8wEqKK6PBru3jl7A8');
88+
$expected = $this->base64Decode('DGv6ra1nlYgDCS1FRnbzlwAAEABBBP4z9KsN6nGRTbVYI_c7VJSPQTBtkgcy27mlmlMoZIIgDll6e3vCYLocInmYWAmS6TlzAC8wEqKK6PBru3jl7A8');
7389

7490
$this->assertEquals(Utils::safeStrlen($expected), Utils::safeStrlen($result));
7591
$this->assertEquals($expected, $result);
@@ -81,7 +97,7 @@ public function testGetContentCodingHeader(): void
8197
#[dataProvider('payloadProvider')]
8298
public function testPadPayload(string $payload, int $maxLengthToPad, int $expectedResLength): void
8399
{
84-
$res = Encryption::padPayload($payload, $maxLengthToPad, "aesgcm");
100+
$res = Encryption::padPayload($payload, $maxLengthToPad, 'aesgcm');
85101

86102
$this->assertStringContainsString('test', $res);
87103
$this->assertEquals($expectedResLength, Utils::safeStrlen($res));
@@ -99,4 +115,14 @@ public static function payloadProvider(): array
99115
[str_repeat('test', 1019).'te', Encryption::MAX_PAYLOAD_LENGTH, Encryption::MAX_PAYLOAD_LENGTH + 2],
100116
];
101117
}
118+
119+
protected function base64Decode(string $value): string
120+
{
121+
return Base64Url::decode($value);
122+
}
123+
124+
protected function base64Encode(string $value): string
125+
{
126+
return Base64Url::encode($value);
127+
}
102128
}

0 commit comments

Comments
 (0)