Passed
Pull Request — master (#14)
by Florent
06:01 queued 02:47
created

RFC3394Test::wrap192BitsKeyDataWith256BitKEK()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 10
rs 9.9332
c 0
b 0
f 0
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace AESKW\Tests;
6
7
use AESKW\A128KW;
8
use AESKW\A192KW;
9
use AESKW\A256KW;
10
use PHPUnit\Framework\TestCase;
11
12
/**
13
 * These tests come from the RFC3394.
14
 *
15
 * @see https://www.ietf.org/rfc/rfc3394.txt#4
16
 *
17
 * @internal
18
 */
19
final class RFC3394Test extends TestCase
20
{
21
    /**
22
     * @test
23
     */
24
    public function wrap128BitsKeyDataWith128BitKEK(): void
25
    {
26
        $kek = hex2bin('000102030405060708090A0B0C0D0E0F');
27
        $data = hex2bin('00112233445566778899AABBCCDDEEFF');
28
29
        $wrapped = A128KW::wrap($kek, $data);
30
        static::assertSame(hex2bin('1FA68B0A8112B447AEF34BD8FB5A7B829D3E862371D2CFE5'), $wrapped);
31
        $unwrapped = A128KW::unwrap($kek, $wrapped);
32
        static::assertSame($data, $unwrapped);
33
    }
34
35
    /**
36
     * @test
37
     */
38
    public function wrap128BitsKeyDataWith192BitKEK(): void
39
    {
40
        $kek = hex2bin('000102030405060708090A0B0C0D0E0F1011121314151617');
41
        $data = hex2bin('00112233445566778899AABBCCDDEEFF');
42
43
        $wrapped = A192KW::wrap($kek, $data);
44
        static::assertSame(hex2bin('96778B25AE6CA435F92B5B97C050AED2468AB8A17AD84E5D'), $wrapped);
45
        $unwrapped = A192KW::unwrap($kek, $wrapped);
46
        static::assertSame($data, $unwrapped);
47
    }
48
49
    /**
50
     * @test
51
     */
52
    public function wrap128BitsKeyDataWith256BitKEK(): void
53
    {
54
        $kek = hex2bin('000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F');
55
        $data = hex2bin('00112233445566778899AABBCCDDEEFF');
56
57
        $wrapped = A256KW::wrap($kek, $data);
58
        static::assertSame(hex2bin('64E8C3F9CE0F5BA263E9777905818A2A93C8191E7D6E8AE7'), $wrapped);
59
        $unwrapped = A256KW::unwrap($kek, $wrapped);
60
        static::assertSame($data, $unwrapped);
61
    }
62
63
    /**
64
     * @test
65
     */
66
    public function wrap192BitsKeyDataWith192BitKEK(): void
67
    {
68
        $kek = hex2bin('000102030405060708090A0B0C0D0E0F1011121314151617');
69
        $data = hex2bin('00112233445566778899AABBCCDDEEFF0001020304050607');
70
71
        $wrapped = A192KW::wrap($kek, $data);
72
        static::assertSame(hex2bin('031D33264E15D33268F24EC260743EDCE1C6C7DDEE725A936BA814915C6762D2'), $wrapped);
73
        $unwrapped = A192KW::unwrap($kek, $wrapped);
74
        static::assertSame($data, $unwrapped);
75
    }
76
77
    /**
78
     * @test
79
     */
80
    public function wrap192BitsKeyDataWith256BitKEK(): void
81
    {
82
        $kek = hex2bin('000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F');
83
        $data = hex2bin('00112233445566778899AABBCCDDEEFF0001020304050607');
84
85
        $wrapped = A256KW::wrap($kek, $data);
86
        static::assertSame(hex2bin('A8F9BC1612C68B3FF6E6F4FBE30E71E4769C8B80A32CB8958CD5D17D6B254DA1'), $wrapped);
87
        $unwrapped = A256KW::unwrap($kek, $wrapped);
88
        static::assertSame($data, $unwrapped);
89
    }
90
91
    /**
92
     * @test
93
     */
94
    public function wrap256BitsKeyDataWith256BitKEK(): void
95
    {
96
        $kek = hex2bin('000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F');
97
        $data = hex2bin('00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F');
98
99
        $wrapped = A256KW::wrap($kek, $data);
100
        static::assertSame(
101
            hex2bin('28C9F404C4B810F4CBCCB35CFB87F8263F5786E2D80ED326CBC7F0E71A99F43BFB988B9B7A02DD21'),
102
            $wrapped
103
        );
104
        $unwrapped = A256KW::unwrap($kek, $wrapped);
105
        static::assertSame($data, $unwrapped);
106
    }
107
}
108