251 lines
6.3 KiB
Plaintext
251 lines
6.3 KiB
Plaintext
note
|
|
description: "Objects that ..."
|
|
author: "Colin LeMahieu"
|
|
date: "$Date$"
|
|
revision: "$Revision$"
|
|
quote: "The best government is the one that charges you the least blackmail for leaving you alone. - Thomas Rudmose-Brown (1996)"
|
|
|
|
class
|
|
AES_TEST
|
|
|
|
inherit
|
|
EQA_TEST_SET
|
|
|
|
feature
|
|
test_vector_256
|
|
local
|
|
key_data: SPECIAL [NATURAL_8]
|
|
key: AES_KEY
|
|
cipher_text: SPECIAL [NATURAL_8]
|
|
plain: SPECIAL [NATURAL_8]
|
|
vector: SPECIAL [NATURAL_8]
|
|
solution: SPECIAL [NATURAL_8]
|
|
correct: BOOLEAN
|
|
do
|
|
create key_data.make_filled (0, 32)
|
|
key_data [0] := 0x00
|
|
key_data [1] := 0x01
|
|
key_data [2] := 0x02
|
|
key_data [3] := 0x03
|
|
key_data [4] := 0x04
|
|
key_data [5] := 0x05
|
|
key_data [6] := 0x06
|
|
key_data [7] := 0x07
|
|
key_data [8] := 0x08
|
|
key_data [9] := 0x09
|
|
key_data [10] := 0x0a
|
|
key_data [11] := 0x0b
|
|
key_data [12] := 0x0c
|
|
key_data [13] := 0x0d
|
|
key_data [14] := 0x0e
|
|
key_data [15] := 0x0f
|
|
key_data [16] := 0x10
|
|
key_data [17] := 0x11
|
|
key_data [18] := 0x12
|
|
key_data [19] := 0x13
|
|
key_data [20] := 0x14
|
|
key_data [21] := 0x15
|
|
key_data [22] := 0x16
|
|
key_data [23] := 0x17
|
|
key_data [24] := 0x18
|
|
key_data [25] := 0x19
|
|
key_data [26] := 0x1a
|
|
key_data [27] := 0x1b
|
|
key_data [28] := 0x1c
|
|
key_data [29] := 0x1d
|
|
key_data [30] := 0x1e
|
|
key_data [31] := 0x1f
|
|
create key.make (key_data)
|
|
create solution.make_filled (0, 16)
|
|
solution [0] := 0x8e
|
|
solution [1] := 0xa2
|
|
solution [2] := 0xb7
|
|
solution [3] := 0xca
|
|
solution [4] := 0x51
|
|
solution [5] := 0x67
|
|
solution [6] := 0x45
|
|
solution [7] := 0xbf
|
|
solution [8] := 0xea
|
|
solution [9] := 0xfc
|
|
solution [10] := 0x49
|
|
solution [11] := 0x90
|
|
solution [12] := 0x4b
|
|
solution [13] := 0x49
|
|
solution [14] := 0x60
|
|
solution [15] := 0x89
|
|
create vector.make_filled (0, 16)
|
|
vector [0] := 0x00
|
|
vector [1] := 0x11
|
|
vector [2] := 0x22
|
|
vector [3] := 0x33
|
|
vector [4] := 0x44
|
|
vector [5] := 0x55
|
|
vector [6] := 0x66
|
|
vector [7] := 0x77
|
|
vector [8] := 0x88
|
|
vector [9] := 0x99
|
|
vector [10] := 0xaa
|
|
vector [11] := 0xbb
|
|
vector [12] := 0xcc
|
|
vector [13] := 0xdd
|
|
vector [14] := 0xee
|
|
vector [15] := 0xff
|
|
create cipher_text.make_filled (0, 16)
|
|
key.encrypt (vector, 0, cipher_text, 0)
|
|
correct := cipher_text.same_items (solution, 0, 0, 16)
|
|
assert ("test vector 256 1", correct)
|
|
create plain.make_filled (0, 16)
|
|
key.decrypt (cipher_text, 0, plain, 0)
|
|
correct := plain.same_items (vector, 0, 0, 16)
|
|
assert ("test vector 256 2", correct)
|
|
end
|
|
|
|
test_vector_192
|
|
local
|
|
key_data: SPECIAL [NATURAL_8]
|
|
key: AES_KEY
|
|
cipher_text: SPECIAL [NATURAL_8]
|
|
plain: SPECIAL [NATURAL_8]
|
|
vector: SPECIAL [NATURAL_8]
|
|
solution: SPECIAL [NATURAL_8]
|
|
correct: BOOLEAN
|
|
do
|
|
create key_data.make_filled (0, 24)
|
|
key_data [0] := 0x00
|
|
key_data [1] := 0x01
|
|
key_data [2] := 0x02
|
|
key_data [3] := 0x03
|
|
key_data [4] := 0x04
|
|
key_data [5] := 0x05
|
|
key_data [6] := 0x06
|
|
key_data [7] := 0x07
|
|
key_data [8] := 0x08
|
|
key_data [9] := 0x09
|
|
key_data [10] := 0x0a
|
|
key_data [11] := 0x0b
|
|
key_data [12] := 0x0c
|
|
key_data [13] := 0x0d
|
|
key_data [14] := 0x0e
|
|
key_data [15] := 0x0f
|
|
key_data [16] := 0x10
|
|
key_data [17] := 0x11
|
|
key_data [18] := 0x12
|
|
key_data [19] := 0x13
|
|
key_data [20] := 0x14
|
|
key_data [21] := 0x15
|
|
key_data [22] := 0x16
|
|
key_data [23] := 0x17
|
|
create key.make (key_data)
|
|
create solution.make_filled (0, 16)
|
|
solution [0] := 0xdd
|
|
solution [1] := 0xa9
|
|
solution [2] := 0x7c
|
|
solution [3] := 0xa4
|
|
solution [4] := 0x86
|
|
solution [5] := 0x4c
|
|
solution [6] := 0xdf
|
|
solution [7] := 0xe0
|
|
solution [8] := 0x6e
|
|
solution [9] := 0xaf
|
|
solution [10] := 0x70
|
|
solution [11] := 0xa0
|
|
solution [12] := 0xec
|
|
solution [13] := 0x0d
|
|
solution [14] := 0x71
|
|
solution [15] := 0x91
|
|
create vector.make_filled (0, 16)
|
|
vector [0] := 0x00
|
|
vector [1] := 0x11
|
|
vector [2] := 0x22
|
|
vector [3] := 0x33
|
|
vector [4] := 0x44
|
|
vector [5] := 0x55
|
|
vector [6] := 0x66
|
|
vector [7] := 0x77
|
|
vector [8] := 0x88
|
|
vector [9] := 0x99
|
|
vector [10] := 0xaa
|
|
vector [11] := 0xbb
|
|
vector [12] := 0xcc
|
|
vector [13] := 0xdd
|
|
vector [14] := 0xee
|
|
vector [15] := 0xff
|
|
create cipher_text.make_filled (0, 16)
|
|
key.encrypt (vector, 0, cipher_text, 0)
|
|
correct := cipher_text.same_items (solution, 0, 0, 16)
|
|
assert ("test vector 192 1", correct)
|
|
create plain.make_filled (0, 16)
|
|
key.decrypt (cipher_text, 0, plain, 0)
|
|
correct := vector.same_items (plain, 0, 0, 16)
|
|
assert ("test vector 192 2", correct)
|
|
end
|
|
|
|
test_vector_128
|
|
local
|
|
aes: AES_KEY
|
|
cipher_text: SPECIAL [NATURAL_8]
|
|
plain: SPECIAL [NATURAL_8]
|
|
vector_1: SPECIAL [NATURAL_8]
|
|
solution: SPECIAL [NATURAL_8]
|
|
correct: BOOLEAN
|
|
do
|
|
create aes.make_spec_128
|
|
create solution.make_filled (0, 16)
|
|
solution [0] := 0x39
|
|
solution [1] := 0x25
|
|
solution [2] := 0x84
|
|
solution [3] := 0x1d
|
|
solution [4] := 0x02
|
|
solution [5] := 0xdc
|
|
solution [6] := 0x09
|
|
solution [7] := 0xfb
|
|
solution [8] := 0xdc
|
|
solution [9] := 0x11
|
|
solution [10] := 0x85
|
|
solution [11] := 0x97
|
|
solution [12] := 0x19
|
|
solution [13] := 0x6a
|
|
solution [14] := 0x0b
|
|
solution [15] := 0x32
|
|
create vector_1.make_filled (0, 16)
|
|
vector_1 [0] := 0x32
|
|
vector_1 [1] := 0x43
|
|
vector_1 [2] := 0xf6
|
|
vector_1 [3] := 0xa8
|
|
vector_1 [4] := 0x88
|
|
vector_1 [5] := 0x5a
|
|
vector_1 [6] := 0x30
|
|
vector_1 [7] := 0x8d
|
|
vector_1 [8] := 0x31
|
|
vector_1 [9] := 0x31
|
|
vector_1 [10] := 0x98
|
|
vector_1 [11] := 0xa2
|
|
vector_1 [12] := 0xe0
|
|
vector_1 [13] := 0x37
|
|
vector_1 [14] := 0x07
|
|
vector_1 [15] := 0x34
|
|
create cipher_text.make_filled (0, 16)
|
|
aes.encrypt (vector_1, 0, cipher_text, 0)
|
|
correct := cipher_text.same_items (solution, 0, 0, 16)
|
|
assert ("test vector 128 1", correct)
|
|
create plain.make_filled (0, 16)
|
|
aes.decrypt (cipher_text, 0, plain, 0)
|
|
correct := vector_1.same_items (plain, 0, 0, 16)
|
|
assert ("test vector 128 2", correct)
|
|
end
|
|
|
|
test_keys
|
|
local
|
|
key1: AES_KEY
|
|
key2: AES_KEY
|
|
key3: AES_KEY
|
|
do
|
|
create key1.make_spec_128
|
|
assert ("test keys 1", key1.spec_128_bit_schedule)
|
|
create key2.make_spec_196
|
|
assert ("test keys 2", key2.spec_196_bit_schedule)
|
|
create key3.make_spec_256
|
|
assert ("test keys 3", key3.spec_256_bit_schedule)
|
|
end
|
|
end
|