blob: 408fb6c8bd88cda969d94b2b379e15d127339555 [file] [log] [blame]
Paul Bakkere896fea2009-07-06 06:40:23 +00001BEGIN_HEADER
2#include <polarssl/camellia.h>
3END_HEADER
4
5BEGIN_CASE
Paul Bakker2b222c82009-07-27 21:03:45 +00006camellia_encrypt_ecb:hex_key_string:hex_src_string:hex_dst_string:setkey_result
Paul Bakkere896fea2009-07-06 06:40:23 +00007{
8 unsigned char key_str[100];
9 unsigned char src_str[100];
10 unsigned char dst_str[100];
11 unsigned char output[100];
12 camellia_context ctx;
Paul Bakker69998dd2009-07-11 19:15:20 +000013 int key_len;
Paul Bakkere896fea2009-07-06 06:40:23 +000014
15 memset(key_str, 0x00, 100);
16 memset(src_str, 0x00, 100);
17 memset(dst_str, 0x00, 100);
18 memset(output, 0x00, 100);
19
Paul Bakker69998dd2009-07-11 19:15:20 +000020 key_len = unhexify( key_str, {hex_key_string} );
Paul Bakkere896fea2009-07-06 06:40:23 +000021 unhexify( src_str, {hex_src_string} );
22
Paul Bakker2b222c82009-07-27 21:03:45 +000023 TEST_ASSERT( camellia_setkey_enc( &ctx, key_str, key_len * 8 ) == {setkey_result} );
24 if( {setkey_result} == 0 )
25 {
26 camellia_crypt_ecb( &ctx, CAMELLIA_ENCRYPT, src_str, output );
27 hexify( dst_str, output, 16 );
Paul Bakkere896fea2009-07-06 06:40:23 +000028
Paul Bakker2b222c82009-07-27 21:03:45 +000029 TEST_ASSERT( strcasecmp( (char *) dst_str, {hex_dst_string} ) == 0 );
30 }
Paul Bakkere896fea2009-07-06 06:40:23 +000031}
32END_CASE
33
34BEGIN_CASE
Paul Bakker2b222c82009-07-27 21:03:45 +000035camellia_decrypt_ecb:hex_key_string:hex_src_string:hex_dst_string:setkey_result
Paul Bakkere896fea2009-07-06 06:40:23 +000036{
37 unsigned char key_str[100];
38 unsigned char src_str[100];
39 unsigned char dst_str[100];
40 unsigned char output[100];
41 camellia_context ctx;
Paul Bakker69998dd2009-07-11 19:15:20 +000042 int key_len;
Paul Bakkere896fea2009-07-06 06:40:23 +000043
44 memset(key_str, 0x00, 100);
45 memset(src_str, 0x00, 100);
46 memset(dst_str, 0x00, 100);
47 memset(output, 0x00, 100);
48
Paul Bakker69998dd2009-07-11 19:15:20 +000049 key_len = unhexify( key_str, {hex_key_string} );
Paul Bakkere896fea2009-07-06 06:40:23 +000050 unhexify( src_str, {hex_src_string} );
51
Paul Bakker2b222c82009-07-27 21:03:45 +000052 TEST_ASSERT( camellia_setkey_dec( &ctx, key_str, key_len * 8 ) == {setkey_result} );
53 if( {setkey_result} == 0 )
54 {
55 camellia_crypt_ecb( &ctx, CAMELLIA_DECRYPT, src_str, output );
56 hexify( dst_str, output, 16 );
Paul Bakkere896fea2009-07-06 06:40:23 +000057
Paul Bakker2b222c82009-07-27 21:03:45 +000058 TEST_ASSERT( strcasecmp( (char *) dst_str, {hex_dst_string} ) == 0 );
59 }
Paul Bakkere896fea2009-07-06 06:40:23 +000060}
61END_CASE
62
63BEGIN_CASE
64camellia_encrypt_cbc:hex_key_string:hex_iv_string:hex_src_string:hex_dst_string
65{
66 unsigned char key_str[100];
67 unsigned char iv_str[100];
68 unsigned char src_str[100];
69 unsigned char dst_str[100];
70 unsigned char output[100];
71 camellia_context ctx;
Paul Bakker69998dd2009-07-11 19:15:20 +000072 int key_len;
Paul Bakkere896fea2009-07-06 06:40:23 +000073
74 memset(key_str, 0x00, 100);
75 memset(iv_str, 0x00, 100);
76 memset(src_str, 0x00, 100);
77 memset(dst_str, 0x00, 100);
78 memset(output, 0x00, 100);
79
Paul Bakker69998dd2009-07-11 19:15:20 +000080 key_len = unhexify( key_str, {hex_key_string} );
Paul Bakkere896fea2009-07-06 06:40:23 +000081 unhexify( iv_str, {hex_iv_string} );
82 unhexify( src_str, {hex_src_string} );
83
84 camellia_setkey_enc( &ctx, key_str, key_len * 8 );
85 camellia_crypt_cbc( &ctx, CAMELLIA_ENCRYPT, 16, iv_str, src_str, output );
86 hexify( dst_str, output, 16 );
87
88 TEST_ASSERT( strcasecmp( (char *) dst_str, {hex_dst_string} ) == 0 );
89}
90END_CASE
91
92BEGIN_CASE
93camellia_decrypt_cbc:hex_key_string:hex_iv_string:hex_src_string:hex_dst_string
94{
95 unsigned char key_str[100];
96 unsigned char iv_str[100];
97 unsigned char src_str[100];
98 unsigned char dst_str[100];
99 unsigned char output[100];
100 camellia_context ctx;
Paul Bakker69998dd2009-07-11 19:15:20 +0000101 int key_len;
Paul Bakkere896fea2009-07-06 06:40:23 +0000102
103 memset(key_str, 0x00, 100);
104 memset(iv_str, 0x00, 100);
105 memset(src_str, 0x00, 100);
106 memset(dst_str, 0x00, 100);
107 memset(output, 0x00, 100);
108
Paul Bakker69998dd2009-07-11 19:15:20 +0000109 key_len = unhexify( key_str, {hex_key_string} );
Paul Bakkere896fea2009-07-06 06:40:23 +0000110 unhexify( iv_str, {hex_iv_string} );
111 unhexify( src_str, {hex_src_string} );
112
113 camellia_setkey_dec( &ctx, key_str, key_len * 8 );
114 camellia_crypt_cbc( &ctx, CAMELLIA_DECRYPT, 16, iv_str, src_str, output );
115 hexify( dst_str, output, 16 );
116
117 TEST_ASSERT( strcasecmp( (char *) dst_str, {hex_dst_string} ) == 0 );
118}
119END_CASE
120
121BEGIN_CASE
122camellia_encrypt_cfb128:hex_key_string:hex_iv_string:hex_src_string:hex_dst_string
123{
124 unsigned char key_str[100];
125 unsigned char iv_str[100];
126 unsigned char src_str[100];
127 unsigned char dst_str[100];
128 unsigned char output[100];
129 camellia_context ctx;
130 int iv_offset = 0;
Paul Bakker69998dd2009-07-11 19:15:20 +0000131 int key_len;
Paul Bakkere896fea2009-07-06 06:40:23 +0000132
133 memset(key_str, 0x00, 100);
134 memset(iv_str, 0x00, 100);
135 memset(src_str, 0x00, 100);
136 memset(dst_str, 0x00, 100);
137 memset(output, 0x00, 100);
138
Paul Bakker69998dd2009-07-11 19:15:20 +0000139 key_len = unhexify( key_str, {hex_key_string} );
Paul Bakkere896fea2009-07-06 06:40:23 +0000140 unhexify( iv_str, {hex_iv_string} );
141 unhexify( src_str, {hex_src_string} );
142
143 camellia_setkey_enc( &ctx, key_str, key_len * 8 );
144 camellia_crypt_cfb128( &ctx, CAMELLIA_ENCRYPT, 16, &iv_offset, iv_str, src_str, output );
145 hexify( dst_str, output, 16 );
146
147 TEST_ASSERT( strcasecmp( (char *) dst_str, {hex_dst_string} ) == 0 );
148}
149END_CASE
150
151BEGIN_CASE
152camellia_decrypt_cfb128:hex_key_string:hex_iv_string:hex_src_string:hex_dst_string
153{
154 unsigned char key_str[100];
155 unsigned char iv_str[100];
156 unsigned char src_str[100];
157 unsigned char dst_str[100];
158 unsigned char output[100];
159 camellia_context ctx;
160 int iv_offset = 0;
Paul Bakker69998dd2009-07-11 19:15:20 +0000161 int key_len;
Paul Bakkere896fea2009-07-06 06:40:23 +0000162
163 memset(key_str, 0x00, 100);
164 memset(iv_str, 0x00, 100);
165 memset(src_str, 0x00, 100);
166 memset(dst_str, 0x00, 100);
167 memset(output, 0x00, 100);
168
Paul Bakker69998dd2009-07-11 19:15:20 +0000169 key_len = unhexify( key_str, {hex_key_string} );
Paul Bakkere896fea2009-07-06 06:40:23 +0000170 unhexify( iv_str, {hex_iv_string} );
171 unhexify( src_str, {hex_src_string} );
172
173 camellia_setkey_enc( &ctx, key_str, key_len * 8 );
174 camellia_crypt_cfb128( &ctx, CAMELLIA_DECRYPT, 16, &iv_offset, iv_str, src_str, output );
175 hexify( dst_str, output, 16 );
176
177 TEST_ASSERT( strcasecmp( (char *) dst_str, {hex_dst_string} ) == 0 );
178}
179END_CASE
180
181BEGIN_CASE
182camellia_selftest:
183{
184 TEST_ASSERT( camellia_self_test( 0 ) == 0 );
185}
186END_CASE