blob: b363406063a2ad24894d2803ecfe5cca74ead79e [file] [log] [blame]
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +00001/* BEGIN_HEADER */
2#include "mbedtls/aria.h"
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +01003
4/* Maxium size of data used by test vectors
5 * WARNING: to be adapted if and when adding larger test cases */
6#define ARIA_MAX_DATASIZE 160
7
8/* Maximum sizes of hexified things */
9#define ARIA_MAX_KEY_STR ( 2 * MBEDTLS_ARIA_MAX_KEYSIZE + 1 )
10#define ARIA_BLOCK_STR ( 2 * MBEDTLS_ARIA_BLOCKSIZE + 1 )
11#define ARIA_MAX_DATA_STR ( 2 * ARIA_MAX_DATASIZE + 1 )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000012/* END_HEADER */
13
14/* BEGIN_DEPENDENCIES
15 * depends_on:MBEDTLS_ARIA_C
16 * END_DEPENDENCIES
17 */
18
19/* BEGIN_CASE */
20void aria_encrypt_ecb( char *hex_key_string, char *hex_src_string,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +010021 char *hex_dst_string, int setkey_result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000022{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +010023 unsigned char key_str[ARIA_MAX_KEY_STR];
24 unsigned char src_str[ARIA_MAX_DATA_STR];
25 unsigned char dst_str[ARIA_MAX_DATA_STR];
26 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000027 mbedtls_aria_context ctx;
28 int key_len, data_len, i;
29
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +010030 memset( key_str, 0x00, sizeof( key_str ) );
31 memset( src_str, 0x00, sizeof( src_str ) );
32 memset( dst_str, 0x00, sizeof( dst_str ) );
33 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000034 mbedtls_aria_init( &ctx );
35
36 key_len = unhexify( key_str, hex_key_string );
37 data_len = unhexify( src_str, hex_src_string );
38
Manuel Pégourié-Gonnard4231e7f2018-02-28 10:54:31 +010039 TEST_ASSERT( mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 )
40 == setkey_result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000041 if( setkey_result == 0 )
42 {
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +010043 for( i = 0; i < data_len; i += MBEDTLS_ARIA_BLOCKSIZE )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000044 {
Manuel Pégourié-Gonnard4231e7f2018-02-28 10:54:31 +010045 TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_ENCRYPT,
46 src_str + i, output + i ) == 0 );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000047 }
48 hexify( dst_str, output, data_len );
49
50 TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 );
51 }
52
53exit:
54 mbedtls_aria_free( &ctx );
55}
56/* END_CASE */
57
58/* BEGIN_CASE */
59void aria_decrypt_ecb( char *hex_key_string, char *hex_src_string,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +010060 char *hex_dst_string, int setkey_result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000061{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +010062 unsigned char key_str[ARIA_MAX_KEY_STR];
63 unsigned char src_str[ARIA_MAX_DATA_STR];
64 unsigned char dst_str[ARIA_MAX_DATA_STR];
65 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000066 mbedtls_aria_context ctx;
67 int key_len, data_len, i;
68
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +010069 memset( key_str, 0x00, sizeof( key_str ) );
70 memset( src_str, 0x00, sizeof( src_str ) );
71 memset( dst_str, 0x00, sizeof( dst_str ) );
72 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000073 mbedtls_aria_init( &ctx );
74
75 key_len = unhexify( key_str, hex_key_string );
76 data_len = unhexify( src_str, hex_src_string );
77
Manuel Pégourié-Gonnard4231e7f2018-02-28 10:54:31 +010078 TEST_ASSERT( mbedtls_aria_setkey_dec( &ctx, key_str, key_len * 8 )
79 == setkey_result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000080 if( setkey_result == 0 )
81 {
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +010082 for( i = 0; i < data_len; i += MBEDTLS_ARIA_BLOCKSIZE )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000083 {
84 TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, MBEDTLS_ARIA_DECRYPT,
85 src_str + i, output + i ) == 0 );
86 }
87 hexify( dst_str, output, data_len );
88
89 TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 );
90 }
91
92exit:
93 mbedtls_aria_free( &ctx );
94}
95/* END_CASE */
96
97/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */
98void aria_encrypt_cbc( char *hex_key_string, char *hex_iv_string,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +010099 char *hex_src_string, char *hex_dst_string,
100 int cbc_result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000101{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100102 unsigned char key_str[ARIA_MAX_KEY_STR];
103 unsigned char iv_str[ARIA_BLOCK_STR];
104 unsigned char src_str[ARIA_MAX_DATA_STR];
105 unsigned char dst_str[ARIA_MAX_DATA_STR];
106 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000107 mbedtls_aria_context ctx;
108 int key_len, data_len;
109
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100110 memset( key_str, 0x00, sizeof( key_str ) );
111 memset( iv_str, 0x00, sizeof( iv_str ) );
112 memset( src_str, 0x00, sizeof( src_str ) );
113 memset( dst_str, 0x00, sizeof( dst_str ) );
114 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000115 mbedtls_aria_init( &ctx );
116
117 key_len = unhexify( key_str, hex_key_string );
118 unhexify( iv_str, hex_iv_string );
119 data_len = unhexify( src_str, hex_src_string );
120
121 mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 );
Manuel Pégourié-Gonnard4231e7f2018-02-28 10:54:31 +0100122 TEST_ASSERT( mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_ENCRYPT, data_len,
123 iv_str, src_str, output )
124 == cbc_result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000125 if( cbc_result == 0 )
126 {
127 hexify( dst_str, output, data_len );
128
129 TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 );
130 }
131
132exit:
133 mbedtls_aria_free( &ctx );
134}
135/* END_CASE */
136
137/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */
138void aria_decrypt_cbc( char *hex_key_string, char *hex_iv_string,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100139 char *hex_src_string, char *hex_dst_string,
140 int cbc_result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000141{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100142 unsigned char key_str[ARIA_MAX_KEY_STR];
143 unsigned char iv_str[ARIA_BLOCK_STR];
144 unsigned char src_str[ARIA_MAX_DATA_STR];
145 unsigned char dst_str[ARIA_MAX_DATA_STR];
146 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000147 mbedtls_aria_context ctx;
148 int key_len, data_len;
149
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100150 memset( key_str, 0x00, sizeof( key_str ) );
151 memset( iv_str, 0x00, sizeof( iv_str ) );
152 memset( src_str, 0x00, sizeof( src_str ) );
153 memset( dst_str, 0x00, sizeof( dst_str ) );
154 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000155 mbedtls_aria_init( &ctx );
156
157 key_len = unhexify( key_str, hex_key_string );
158 unhexify( iv_str, hex_iv_string );
159 data_len = unhexify( src_str, hex_src_string );
160
161 mbedtls_aria_setkey_dec( &ctx, key_str, key_len * 8 );
Manuel Pégourié-Gonnard4231e7f2018-02-28 10:54:31 +0100162 TEST_ASSERT( mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_DECRYPT, data_len,
163 iv_str, src_str, output )
164 == cbc_result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000165 if( cbc_result == 0 )
166 {
167 hexify( dst_str, output, data_len );
168
169 TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 );
170 }
171
172exit:
173 mbedtls_aria_free( &ctx );
174}
175/* END_CASE */
176
177/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */
178void aria_encrypt_cfb128( char *hex_key_string, char *hex_iv_string,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100179 char *hex_src_string, char *hex_dst_string,
180 int result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000181{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100182 unsigned char key_str[ARIA_MAX_KEY_STR];
183 unsigned char iv_str[ARIA_BLOCK_STR];
184 unsigned char src_str[ARIA_MAX_DATA_STR];
185 unsigned char dst_str[ARIA_MAX_DATA_STR];
186 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000187 mbedtls_aria_context ctx;
188 size_t iv_offset = 0;
189 int key_len, data_len;
190
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100191 memset( key_str, 0x00, sizeof( key_str ) );
192 memset( iv_str, 0x00, sizeof( iv_str ) );
193 memset( src_str, 0x00, sizeof( src_str ) );
194 memset( dst_str, 0x00, sizeof( dst_str ) );
195 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000196 mbedtls_aria_init( &ctx );
197
198 key_len = unhexify( key_str, hex_key_string );
199 unhexify( iv_str, hex_iv_string );
200 data_len = unhexify( src_str, hex_src_string );
201
202 mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 );
203 TEST_ASSERT( mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_ENCRYPT,
Manuel Pégourié-Gonnard4231e7f2018-02-28 10:54:31 +0100204 data_len, &iv_offset, iv_str,
205 src_str, output ) == result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000206 hexify( dst_str, output, data_len );
207
208 TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 );
209
210exit:
211 mbedtls_aria_free( &ctx );
212}
213/* END_CASE */
214
215/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */
216void aria_decrypt_cfb128( char *hex_key_string, char *hex_iv_string,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100217 char *hex_src_string, char *hex_dst_string,
218 int result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000219{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100220 unsigned char key_str[ARIA_MAX_KEY_STR];
221 unsigned char iv_str[ARIA_BLOCK_STR];
222 unsigned char src_str[ARIA_MAX_DATA_STR];
223 unsigned char dst_str[ARIA_MAX_DATA_STR];
224 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000225 mbedtls_aria_context ctx;
226 size_t iv_offset = 0;
227 int key_len, data_len;
228
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100229 memset( key_str, 0x00, sizeof( key_str ) );
230 memset( iv_str, 0x00, sizeof( iv_str ) );
231 memset( src_str, 0x00, sizeof( src_str ) );
232 memset( dst_str, 0x00, sizeof( dst_str ) );
233 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000234 mbedtls_aria_init( &ctx );
235
236 key_len = unhexify( key_str, hex_key_string );
237 unhexify( iv_str, hex_iv_string );
238 data_len = unhexify( src_str, hex_src_string );
239
240 mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 );
241 TEST_ASSERT( mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_DECRYPT,
Manuel Pégourié-Gonnard4231e7f2018-02-28 10:54:31 +0100242 data_len, &iv_offset, iv_str,
243 src_str, output ) == result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000244 hexify( dst_str, output, data_len );
245
246 TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 );
247
248exit:
249 mbedtls_aria_free( &ctx );
250}
251/* END_CASE */
252
253/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */
254void aria_encrypt_ctr( char *hex_key_string, char *hex_iv_string,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100255 char *hex_src_string, char *hex_dst_string,
256 int result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000257{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100258 unsigned char key_str[ARIA_MAX_KEY_STR];
259 unsigned char iv_str[ARIA_BLOCK_STR];
260 unsigned char src_str[ARIA_MAX_DATA_STR];
261 unsigned char dst_str[ARIA_MAX_DATA_STR];
262 unsigned char output[ARIA_MAX_DATASIZE];
263 unsigned char blk[MBEDTLS_ARIA_BLOCKSIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000264 mbedtls_aria_context ctx;
265 size_t iv_offset = 0;
266 int key_len, data_len;
267
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100268 memset( key_str, 0x00, sizeof( key_str ) );
269 memset( iv_str, 0x00, sizeof( iv_str ) );
270 memset( src_str, 0x00, sizeof( src_str ) );
271 memset( dst_str, 0x00, sizeof( dst_str ) );
272 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000273 mbedtls_aria_init( &ctx );
274
275 key_len = unhexify( key_str, hex_key_string );
276 unhexify( iv_str, hex_iv_string );
277 data_len = unhexify( src_str, hex_src_string );
278
279 mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 );
Manuel Pégourié-Gonnard4231e7f2018-02-28 10:54:31 +0100280 TEST_ASSERT( mbedtls_aria_crypt_ctr( &ctx, data_len, &iv_offset, iv_str,
281 blk, src_str, output ) == result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000282 hexify( dst_str, output, data_len );
283
284 TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 );
285
286exit:
287 mbedtls_aria_free( &ctx );
288}
289/* END_CASE */
290
291/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */
292void aria_decrypt_ctr( char *hex_key_string, char *hex_iv_string,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100293 char *hex_src_string, char *hex_dst_string,
294 int result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000295{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100296 unsigned char key_str[ARIA_MAX_KEY_STR];
297 unsigned char iv_str[ARIA_BLOCK_STR];
298 unsigned char src_str[ARIA_MAX_DATA_STR];
299 unsigned char dst_str[ARIA_MAX_DATA_STR];
300 unsigned char output[ARIA_MAX_DATASIZE];
301 unsigned char blk[MBEDTLS_ARIA_BLOCKSIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000302 mbedtls_aria_context ctx;
303 size_t iv_offset = 0;
304 int key_len, data_len;
305
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100306 memset( key_str, 0x00, sizeof( key_str ) );
307 memset( iv_str, 0x00, sizeof( iv_str ) );
308 memset( src_str, 0x00, sizeof( src_str ) );
309 memset( dst_str, 0x00, sizeof( dst_str ) );
310 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000311 mbedtls_aria_init( &ctx );
312
313 key_len = unhexify( key_str, hex_key_string );
314 unhexify( iv_str, hex_iv_string );
315 data_len = unhexify( src_str, hex_src_string );
316
317 mbedtls_aria_setkey_enc( &ctx, key_str, key_len * 8 );
Manuel Pégourié-Gonnard4231e7f2018-02-28 10:54:31 +0100318 TEST_ASSERT( mbedtls_aria_crypt_ctr( &ctx, data_len, &iv_offset, iv_str,
319 blk, src_str, output ) == result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000320 hexify( dst_str, output, data_len );
321
322 TEST_ASSERT( strcasecmp( (char *) dst_str, hex_dst_string ) == 0 );
323
324exit:
325 mbedtls_aria_free( &ctx );
326}
327/* END_CASE */
328
329/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */
330void aria_selftest()
331{
332 TEST_ASSERT( mbedtls_aria_self_test( 1 ) == 0 );
333}
334/* END_CASE */