blob: 10c51a34626bd271b697210c2655d2cd77301dc3 [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
Shaun Case0e7791f2021-12-20 21:14:10 -08004/* Maximum size of data used by test vectors
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +01005 * WARNING: to be adapted if and when adding larger test cases */
6#define ARIA_MAX_DATASIZE 160
7
8/* Maximum sizes of hexified things */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +01009#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 */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010020void aria_valid_param()
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050021{
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010022 TEST_VALID_PARAM(mbedtls_aria_free(NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050023}
24/* END_CASE */
25
26/* BEGIN_CASE depends_on:MBEDTLS_CHECK_PARAMS:!MBEDTLS_PARAM_FAILED_ALT */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010027void aria_invalid_param()
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050028{
29 mbedtls_aria_context ctx;
30 unsigned char key[128 / 8] = { 0 };
31 unsigned char input[MBEDTLS_ARIA_BLOCKSIZE] = { 0 };
32 unsigned char output[MBEDTLS_ARIA_BLOCKSIZE] = { 0 };
33 unsigned char iv[MBEDTLS_ARIA_BLOCKSIZE] = { 0 };
34 size_t iv_off = 0;
35
36 ((void) iv_off);
37 ((void) iv);
38
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010039 TEST_INVALID_PARAM(mbedtls_aria_init(NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050040
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010041 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
42 mbedtls_aria_setkey_enc(NULL, key,
43 sizeof(key)));
44 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
45 mbedtls_aria_setkey_enc(&ctx, NULL,
46 sizeof(key)));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050047
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010048 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
49 mbedtls_aria_setkey_dec(NULL, key,
50 sizeof(key)));
51 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
52 mbedtls_aria_setkey_dec(&ctx, NULL,
53 sizeof(key)));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050054
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010055 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
56 mbedtls_aria_crypt_ecb(NULL, input, output));
57 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
58 mbedtls_aria_crypt_ecb(&ctx, NULL, output));
59 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
60 mbedtls_aria_crypt_ecb(&ctx, input, NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050061
62#if defined(MBEDTLS_CIPHER_MODE_CBC)
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010063 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
64 mbedtls_aria_crypt_cbc(NULL,
65 MBEDTLS_ARIA_ENCRYPT,
66 sizeof(input),
67 iv,
68 input,
69 output));
70 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
71 mbedtls_aria_crypt_cbc(&ctx,
72 42 /* invalid mode */,
73 sizeof(input),
74 iv,
75 input,
76 output));
77 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
78 mbedtls_aria_crypt_cbc(&ctx,
79 MBEDTLS_ARIA_ENCRYPT,
80 sizeof(input),
81 NULL,
82 input,
83 output));
84 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
85 mbedtls_aria_crypt_cbc(&ctx,
86 MBEDTLS_ARIA_ENCRYPT,
87 sizeof(input),
88 iv,
89 NULL,
90 output));
91 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
92 mbedtls_aria_crypt_cbc(&ctx,
93 MBEDTLS_ARIA_ENCRYPT,
94 sizeof(input),
95 iv,
96 input,
97 NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050098#endif /* MBEDTLS_CIPHER_MODE_CBC */
99
100#if defined(MBEDTLS_CIPHER_MODE_CFB)
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100101 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
102 mbedtls_aria_crypt_cfb128(NULL,
103 MBEDTLS_ARIA_ENCRYPT,
104 sizeof(input),
105 &iv_off,
106 iv,
107 input,
108 output));
109 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
110 mbedtls_aria_crypt_cfb128(&ctx,
111 42, /* invalid mode */
112 sizeof(input),
113 &iv_off,
114 iv,
115 input,
116 output));
117 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
118 mbedtls_aria_crypt_cfb128(&ctx,
119 MBEDTLS_ARIA_ENCRYPT,
120 sizeof(input),
121 NULL,
122 iv,
123 input,
124 output));
125 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
126 mbedtls_aria_crypt_cfb128(&ctx,
127 MBEDTLS_ARIA_ENCRYPT,
128 sizeof(input),
129 &iv_off,
130 NULL,
131 input,
132 output));
133 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
134 mbedtls_aria_crypt_cfb128(&ctx,
135 MBEDTLS_ARIA_ENCRYPT,
136 sizeof(input),
137 &iv_off,
138 iv,
139 NULL,
140 output));
141 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
142 mbedtls_aria_crypt_cfb128(&ctx,
143 MBEDTLS_ARIA_ENCRYPT,
144 sizeof(input),
145 &iv_off,
146 iv,
147 input,
148 NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500149#endif /* MBEDTLS_CIPHER_MODE_CFB */
150
151#if defined(MBEDTLS_CIPHER_MODE_CTR)
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100152 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
153 mbedtls_aria_crypt_ctr(NULL,
154 sizeof(input),
155 &iv_off,
156 iv,
157 iv,
158 input,
159 output));
160 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
161 mbedtls_aria_crypt_ctr(&ctx,
162 sizeof(input),
163 NULL,
164 iv,
165 iv,
166 input,
167 output));
168 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
169 mbedtls_aria_crypt_ctr(&ctx,
170 sizeof(input),
171 &iv_off,
172 NULL,
173 iv,
174 input,
175 output));
176 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
177 mbedtls_aria_crypt_ctr(&ctx,
178 sizeof(input),
179 &iv_off,
180 iv,
181 NULL,
182 input,
183 output));
184 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
185 mbedtls_aria_crypt_ctr(&ctx,
186 sizeof(input),
187 &iv_off,
188 iv,
189 iv,
190 NULL,
191 output));
192 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
193 mbedtls_aria_crypt_ctr(&ctx,
194 sizeof(input),
195 &iv_off,
196 iv,
197 iv,
198 input,
199 NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500200#endif /* MBEDTLS_CIPHER_MODE_CTR */
201
202exit:
203 return;
204
205}
206/* END_CASE */
207
208/* BEGIN_CASE */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100209void aria_encrypt_ecb(data_t *key_str, data_t *src_str,
210 data_t *expected_output, int setkey_result)
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000211{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100212 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000213 mbedtls_aria_context ctx;
Ronald Cron9ed40732020-06-25 09:03:34 +0200214 size_t i;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000215
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100216 memset(output, 0x00, sizeof(output));
217 mbedtls_aria_init(&ctx);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000218
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100219 TEST_ASSERT(mbedtls_aria_setkey_enc(&ctx, key_str->x, key_str->len * 8)
220 == setkey_result);
221 if (setkey_result == 0) {
222 for (i = 0; i < src_str->len; i += MBEDTLS_ARIA_BLOCKSIZE) {
223 TEST_ASSERT(mbedtls_aria_crypt_ecb(&ctx, src_str->x + i,
224 output + i) == 0);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000225 }
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000226
Tom Cosgroveba3b14d2023-09-04 11:23:02 +0100227 TEST_MEMORY_COMPARE(output, expected_output->len,
Tom Cosgrovea240fe32023-09-04 11:29:39 +0100228 expected_output->x, expected_output->len);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000229 }
230
231exit:
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100232 mbedtls_aria_free(&ctx);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000233}
234/* END_CASE */
235
236/* BEGIN_CASE */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100237void aria_decrypt_ecb(data_t *key_str, data_t *src_str,
238 data_t *expected_output, int setkey_result)
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000239{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100240 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000241 mbedtls_aria_context ctx;
Ronald Cron9ed40732020-06-25 09:03:34 +0200242 size_t i;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000243
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100244 memset(output, 0x00, sizeof(output));
245 mbedtls_aria_init(&ctx);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000246
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100247 TEST_ASSERT(mbedtls_aria_setkey_dec(&ctx, key_str->x, key_str->len * 8)
248 == setkey_result);
249 if (setkey_result == 0) {
250 for (i = 0; i < src_str->len; i += MBEDTLS_ARIA_BLOCKSIZE) {
251 TEST_ASSERT(mbedtls_aria_crypt_ecb(&ctx, src_str->x + i,
252 output + i) == 0);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000253 }
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000254
Tom Cosgroveba3b14d2023-09-04 11:23:02 +0100255 TEST_MEMORY_COMPARE(output, expected_output->len,
Tom Cosgrovea240fe32023-09-04 11:29:39 +0100256 expected_output->x, expected_output->len);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000257 }
258
259exit:
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100260 mbedtls_aria_free(&ctx);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000261}
262/* END_CASE */
263
264/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100265void aria_encrypt_cbc(data_t *key_str, data_t *iv_str,
266 data_t *src_str, data_t *expected_output,
267 int cbc_result)
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000268{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100269 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000270 mbedtls_aria_context ctx;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000271
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100272 memset(output, 0x00, sizeof(output));
273 mbedtls_aria_init(&ctx);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000274
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100275 mbedtls_aria_setkey_enc(&ctx, key_str->x, key_str->len * 8);
276 TEST_ASSERT(mbedtls_aria_crypt_cbc(&ctx, MBEDTLS_ARIA_ENCRYPT,
277 src_str->len, iv_str->x, src_str->x,
278 output) == cbc_result);
279 if (cbc_result == 0) {
Tom Cosgroveba3b14d2023-09-04 11:23:02 +0100280 TEST_MEMORY_COMPARE(output, expected_output->len,
Tom Cosgrovea240fe32023-09-04 11:29:39 +0100281 expected_output->x, expected_output->len);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000282 }
283
284exit:
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100285 mbedtls_aria_free(&ctx);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000286}
287/* END_CASE */
288
289/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100290void aria_decrypt_cbc(data_t *key_str, data_t *iv_str,
291 data_t *src_str, data_t *expected_output,
292 int cbc_result)
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000293{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100294 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000295 mbedtls_aria_context ctx;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000296
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100297 memset(output, 0x00, sizeof(output));
298 mbedtls_aria_init(&ctx);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000299
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100300 mbedtls_aria_setkey_dec(&ctx, key_str->x, key_str->len * 8);
301 TEST_ASSERT(mbedtls_aria_crypt_cbc(&ctx, MBEDTLS_ARIA_DECRYPT,
302 src_str->len, iv_str->x, src_str->x,
303 output) == cbc_result);
304 if (cbc_result == 0) {
Tom Cosgroveba3b14d2023-09-04 11:23:02 +0100305 TEST_MEMORY_COMPARE(output, expected_output->len,
Tom Cosgrovea240fe32023-09-04 11:29:39 +0100306 expected_output->x, expected_output->len);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000307 }
308
309exit:
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100310 mbedtls_aria_free(&ctx);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000311}
312/* END_CASE */
313
314/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100315void aria_encrypt_cfb128(data_t *key_str, data_t *iv_str,
316 data_t *src_str, data_t *expected_output,
317 int result)
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000318{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100319 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000320 mbedtls_aria_context ctx;
321 size_t iv_offset = 0;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000322
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100323 memset(output, 0x00, sizeof(output));
324 mbedtls_aria_init(&ctx);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000325
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100326 mbedtls_aria_setkey_enc(&ctx, key_str->x, key_str->len * 8);
327 TEST_ASSERT(mbedtls_aria_crypt_cfb128(&ctx, MBEDTLS_ARIA_ENCRYPT,
328 src_str->len, &iv_offset,
329 iv_str->x, src_str->x, output)
330 == result);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000331
Tom Cosgroveba3b14d2023-09-04 11:23:02 +0100332 TEST_MEMORY_COMPARE(output, expected_output->len,
Tom Cosgrovea240fe32023-09-04 11:29:39 +0100333 expected_output->x, expected_output->len);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000334
335exit:
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100336 mbedtls_aria_free(&ctx);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000337}
338/* END_CASE */
339
340/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100341void aria_decrypt_cfb128(data_t *key_str, data_t *iv_str,
342 data_t *src_str, data_t *expected_output,
343 int result)
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000344{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100345 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000346 mbedtls_aria_context ctx;
347 size_t iv_offset = 0;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000348
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100349 memset(output, 0x00, sizeof(output));
350 mbedtls_aria_init(&ctx);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000351
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100352 mbedtls_aria_setkey_enc(&ctx, key_str->x, key_str->len * 8);
353 TEST_ASSERT(mbedtls_aria_crypt_cfb128(&ctx, MBEDTLS_ARIA_DECRYPT,
354 src_str->len, &iv_offset,
355 iv_str->x, src_str->x, output)
356 == result);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000357
Tom Cosgroveba3b14d2023-09-04 11:23:02 +0100358 TEST_MEMORY_COMPARE(output, expected_output->len,
Tom Cosgrovea240fe32023-09-04 11:29:39 +0100359 expected_output->x, expected_output->len);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000360
361exit:
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100362 mbedtls_aria_free(&ctx);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000363}
364/* END_CASE */
365
366/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100367void aria_encrypt_ctr(data_t *key_str, data_t *iv_str,
368 data_t *src_str, data_t *expected_output,
369 int result)
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000370{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100371 unsigned char output[ARIA_MAX_DATASIZE];
372 unsigned char blk[MBEDTLS_ARIA_BLOCKSIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000373 mbedtls_aria_context ctx;
374 size_t iv_offset = 0;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000375
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100376 memset(output, 0x00, sizeof(output));
377 mbedtls_aria_init(&ctx);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000378
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100379 mbedtls_aria_setkey_enc(&ctx, key_str->x, key_str->len * 8);
380 TEST_ASSERT(mbedtls_aria_crypt_ctr(&ctx, src_str->len, &iv_offset,
381 iv_str->x, blk, src_str->x, output)
382 == result);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000383
Tom Cosgroveba3b14d2023-09-04 11:23:02 +0100384 TEST_MEMORY_COMPARE(output, expected_output->len,
Tom Cosgrovea240fe32023-09-04 11:29:39 +0100385 expected_output->x, expected_output->len);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000386
387exit:
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100388 mbedtls_aria_free(&ctx);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000389}
390/* END_CASE */
391
392/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100393void aria_decrypt_ctr(data_t *key_str, data_t *iv_str,
394 data_t *src_str, data_t *expected_output,
395 int result)
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000396{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100397 unsigned char output[ARIA_MAX_DATASIZE];
398 unsigned char blk[MBEDTLS_ARIA_BLOCKSIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000399 mbedtls_aria_context ctx;
400 size_t iv_offset = 0;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000401
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100402 memset(output, 0x00, sizeof(output));
403 mbedtls_aria_init(&ctx);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000404
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100405 mbedtls_aria_setkey_enc(&ctx, key_str->x, key_str->len * 8);
406 TEST_ASSERT(mbedtls_aria_crypt_ctr(&ctx, src_str->len, &iv_offset,
407 iv_str->x, blk, src_str->x, output)
408 == result);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000409
Tom Cosgroveba3b14d2023-09-04 11:23:02 +0100410 TEST_MEMORY_COMPARE(output, expected_output->len,
Tom Cosgrovea240fe32023-09-04 11:29:39 +0100411 expected_output->x, expected_output->len);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000412
413exit:
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100414 mbedtls_aria_free(&ctx);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000415}
416/* END_CASE */
417
418/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */
419void aria_selftest()
420{
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100421 TEST_ASSERT(mbedtls_aria_self_test(1) == 0);
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000422}
423/* END_CASE */