RFC3394Test   A
last analyzed

Complexity

Total Complexity 6

Size/Duplication

Total Lines 86
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 4

Importance

Changes 0
Metric Value
wmc 6
lcom 1
cbo 4
dl 0
loc 86
rs 10
c 0
b 0
f 0

6 Methods

Rating   Name   Duplication   Size   Complexity  
A wrap128BitsKeyDataWith128BitKEK() 0 10 1
A wrap128BitsKeyDataWith192BitKEK() 0 10 1
A wrap128BitsKeyDataWith256BitKEK() 0 10 1
A wrap192BitsKeyDataWith192BitKEK() 0 10 1
A wrap192BitsKeyDataWith256BitKEK() 0 10 1
A wrap256BitsKeyDataWith256BitKEK() 0 10 1
1
<?php
2
3
declare(strict_types=1);
4
5
/*
6
 * The MIT License (MIT)
7
 *
8
 * Copyright (c) 2014-2020 Spomky-Labs
9
 *
10
 * This software may be modified and distributed under the terms
11
 * of the MIT license.  See the LICENSE file for details.
12
 */
13
14
namespace AESKW\Tests;
15
16
use AESKW\A128KW;
17
use AESKW\A192KW;
18
use AESKW\A256KW;
19
use PHPUnit\Framework\TestCase;
20
21
/**
22
 * These tests come from the RFC3394.
23
 *
24
 * @see https://www.ietf.org/rfc/rfc3394.txt#4
25
 *
26
 * @internal
27
 */
28
final class RFC3394Test extends TestCase
29
{
30
    /**
31
     * @test
32
     */
33
    public function wrap128BitsKeyDataWith128BitKEK(): void
34
    {
35
        $kek = hex2bin('000102030405060708090A0B0C0D0E0F');
36
        $data = hex2bin('00112233445566778899AABBCCDDEEFF');
37
38
        $wrapped = A128KW::wrap($kek, $data);
39
        static::assertEquals(hex2bin('1FA68B0A8112B447AEF34BD8FB5A7B829D3E862371D2CFE5'), $wrapped);
40
        $unwrapped = A128KW::unwrap($kek, $wrapped);
41
        static::assertEquals($data, $unwrapped);
42
    }
43
44
    /**
45
     * @test
46
     */
47
    public function wrap128BitsKeyDataWith192BitKEK(): void
48
    {
49
        $kek = hex2bin('000102030405060708090A0B0C0D0E0F1011121314151617');
50
        $data = hex2bin('00112233445566778899AABBCCDDEEFF');
51
52
        $wrapped = A192KW::wrap($kek, $data);
53
        static::assertEquals(hex2bin('96778B25AE6CA435F92B5B97C050AED2468AB8A17AD84E5D'), $wrapped);
54
        $unwrapped = A192KW::unwrap($kek, $wrapped);
55
        static::assertEquals($data, $unwrapped);
56
    }
57
58
    /**
59
     * @test
60
     */
61
    public function wrap128BitsKeyDataWith256BitKEK(): void
62
    {
63
        $kek = hex2bin('000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F');
64
        $data = hex2bin('00112233445566778899AABBCCDDEEFF');
65
66
        $wrapped = A256KW::wrap($kek, $data);
67
        static::assertEquals(hex2bin('64E8C3F9CE0F5BA263E9777905818A2A93C8191E7D6E8AE7'), $wrapped);
68
        $unwrapped = A256KW::unwrap($kek, $wrapped);
69
        static::assertEquals($data, $unwrapped);
70
    }
71
72
    /**
73
     * @test
74
     */
75
    public function wrap192BitsKeyDataWith192BitKEK(): void
76
    {
77
        $kek = hex2bin('000102030405060708090A0B0C0D0E0F1011121314151617');
78
        $data = hex2bin('00112233445566778899AABBCCDDEEFF0001020304050607');
79
80
        $wrapped = A192KW::wrap($kek, $data);
81
        static::assertEquals(hex2bin('031D33264E15D33268F24EC260743EDCE1C6C7DDEE725A936BA814915C6762D2'), $wrapped);
82
        $unwrapped = A192KW::unwrap($kek, $wrapped);
83
        static::assertEquals($data, $unwrapped);
84
    }
85
86
    /**
87
     * @test
88
     */
89
    public function wrap192BitsKeyDataWith256BitKEK(): void
90
    {
91
        $kek = hex2bin('000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F');
92
        $data = hex2bin('00112233445566778899AABBCCDDEEFF0001020304050607');
93
94
        $wrapped = A256KW::wrap($kek, $data);
95
        static::assertEquals(hex2bin('A8F9BC1612C68B3FF6E6F4FBE30E71E4769C8B80A32CB8958CD5D17D6B254DA1'), $wrapped);
96
        $unwrapped = A256KW::unwrap($kek, $wrapped);
97
        static::assertEquals($data, $unwrapped);
98
    }
99
100
    /**
101
     * @test
102
     */
103
    public function wrap256BitsKeyDataWith256BitKEK(): void
104
    {
105
        $kek = hex2bin('000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F');
106
        $data = hex2bin('00112233445566778899AABBCCDDEEFF000102030405060708090A0B0C0D0E0F');
107
108
        $wrapped = A256KW::wrap($kek, $data);
109
        static::assertEquals(hex2bin('28C9F404C4B810F4CBCCB35CFB87F8263F5786E2D80ED326CBC7F0E71A99F43BFB988B9B7A02DD21'), $wrapped);
110
        $unwrapped = A256KW::unwrap($kek, $wrapped);
111
        static::assertEquals($data, $unwrapped);
112
    }
113
}
114