blob: ad7c773dcabd1bbe81c3ed9f6ebb6e0c9602b06c [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 Case8b0ecbc2021-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 */
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
TRodziewicz062f3532021-05-25 15:15:57 +020019/* BEGIN_CASE depends_on:NOT_DEFINED */
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050020void aria_invalid_param( )
21{
22 mbedtls_aria_context ctx;
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050023 unsigned char input[MBEDTLS_ARIA_BLOCKSIZE] = { 0 };
24 unsigned char output[MBEDTLS_ARIA_BLOCKSIZE] = { 0 };
25 unsigned char iv[MBEDTLS_ARIA_BLOCKSIZE] = { 0 };
26 size_t iv_off = 0;
27
28 ((void) iv_off);
29 ((void) iv);
TRodziewiczbcd2b4b2021-05-28 12:56:57 +020030 ((void) ctx);
31 ((void) input);
32 ((void) output);
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050033
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050034#if defined(MBEDTLS_CIPHER_MODE_CBC)
Ronald Cron875b5fb2021-05-21 08:50:00 +020035 TEST_EQUAL( MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050036 mbedtls_aria_crypt_cbc( &ctx,
37 42 /* invalid mode */,
38 sizeof( input ),
39 iv,
40 input,
41 output ) );
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050042#endif /* MBEDTLS_CIPHER_MODE_CBC */
43
44#if defined(MBEDTLS_CIPHER_MODE_CFB)
Ronald Cron875b5fb2021-05-21 08:50:00 +020045 TEST_EQUAL( MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050046 mbedtls_aria_crypt_cfb128( &ctx,
47 42, /* invalid mode */
48 sizeof( input ),
49 &iv_off,
50 iv,
51 input,
52 output ) );
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050053#endif /* MBEDTLS_CIPHER_MODE_CFB */
54
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050055exit:
56 return;
57
58}
59/* END_CASE */
60
61/* BEGIN_CASE */
Ronald Cron9ed40732020-06-25 09:03:34 +020062void aria_encrypt_ecb( data_t *key_str, data_t *src_str,
Ronald Cron55d97f22020-06-26 17:00:30 +020063 data_t *expected_output, int setkey_result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000064{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +010065 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000066 mbedtls_aria_context ctx;
Ronald Cron9ed40732020-06-25 09:03:34 +020067 size_t i;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000068
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +010069 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000070 mbedtls_aria_init( &ctx );
71
Ronald Cron9ed40732020-06-25 09:03:34 +020072 TEST_ASSERT( mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 )
Manuel Pégourié-Gonnard4231e7f2018-02-28 10:54:31 +010073 == setkey_result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000074 if( setkey_result == 0 )
75 {
Ronald Cron9ed40732020-06-25 09:03:34 +020076 for( i = 0; i < src_str->len; i += MBEDTLS_ARIA_BLOCKSIZE )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000077 {
Ronald Cron9ed40732020-06-25 09:03:34 +020078 TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, src_str->x + i,
79 output + i ) == 0 );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000080 }
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000081
Ronald Crond8902b62020-07-30 14:18:02 +020082 ASSERT_COMPARE( output, expected_output->len,
83 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000084 }
85
86exit:
87 mbedtls_aria_free( &ctx );
88}
89/* END_CASE */
90
91/* BEGIN_CASE */
Ronald Cron9ed40732020-06-25 09:03:34 +020092void aria_decrypt_ecb( data_t *key_str, data_t *src_str,
Ronald Cron55d97f22020-06-26 17:00:30 +020093 data_t *expected_output, int setkey_result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000094{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +010095 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000096 mbedtls_aria_context ctx;
Ronald Cron9ed40732020-06-25 09:03:34 +020097 size_t i;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000098
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +010099 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000100 mbedtls_aria_init( &ctx );
101
Ronald Cron9ed40732020-06-25 09:03:34 +0200102 TEST_ASSERT( mbedtls_aria_setkey_dec( &ctx, key_str->x, key_str->len * 8 )
Manuel Pégourié-Gonnard4231e7f2018-02-28 10:54:31 +0100103 == setkey_result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000104 if( setkey_result == 0 )
105 {
Ronald Cron9ed40732020-06-25 09:03:34 +0200106 for( i = 0; i < src_str->len; i += MBEDTLS_ARIA_BLOCKSIZE )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000107 {
Ronald Cron9ed40732020-06-25 09:03:34 +0200108 TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, src_str->x + i,
109 output + i ) == 0 );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000110 }
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000111
Ronald Crond8902b62020-07-30 14:18:02 +0200112 ASSERT_COMPARE( output, expected_output->len,
113 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000114 }
115
116exit:
117 mbedtls_aria_free( &ctx );
118}
119/* END_CASE */
120
121/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */
Ronald Cron9ed40732020-06-25 09:03:34 +0200122void aria_encrypt_cbc( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200123 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100124 int cbc_result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000125{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100126 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000127 mbedtls_aria_context ctx;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000128
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100129 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000130 mbedtls_aria_init( &ctx );
131
Ronald Cron9ed40732020-06-25 09:03:34 +0200132 mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 );
133 TEST_ASSERT( mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_ENCRYPT,
134 src_str->len, iv_str->x, src_str->x,
135 output ) == cbc_result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000136 if( cbc_result == 0 )
137 {
Ronald Crond8902b62020-07-30 14:18:02 +0200138 ASSERT_COMPARE( output, expected_output->len,
139 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000140 }
141
142exit:
143 mbedtls_aria_free( &ctx );
144}
145/* END_CASE */
146
147/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */
Ronald Cron9ed40732020-06-25 09:03:34 +0200148void aria_decrypt_cbc( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200149 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100150 int cbc_result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000151{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100152 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000153 mbedtls_aria_context ctx;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000154
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100155 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000156 mbedtls_aria_init( &ctx );
157
Ronald Cron9ed40732020-06-25 09:03:34 +0200158 mbedtls_aria_setkey_dec( &ctx, key_str->x, key_str->len * 8 );
159 TEST_ASSERT( mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_DECRYPT,
160 src_str->len, iv_str->x, src_str->x,
161 output ) == cbc_result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000162 if( cbc_result == 0 )
163 {
Ronald Crond8902b62020-07-30 14:18:02 +0200164 ASSERT_COMPARE( output, expected_output->len,
165 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000166 }
167
168exit:
169 mbedtls_aria_free( &ctx );
170}
171/* END_CASE */
172
173/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */
Ronald Cron9ed40732020-06-25 09:03:34 +0200174void aria_encrypt_cfb128( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200175 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100176 int result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000177{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100178 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000179 mbedtls_aria_context ctx;
180 size_t iv_offset = 0;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000181
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100182 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000183 mbedtls_aria_init( &ctx );
184
Ronald Cron9ed40732020-06-25 09:03:34 +0200185 mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000186 TEST_ASSERT( mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_ENCRYPT,
Ronald Cron9ed40732020-06-25 09:03:34 +0200187 src_str->len, &iv_offset,
188 iv_str->x, src_str->x, output )
Manuel Pégourié-Gonnard977dc362018-03-01 13:51:52 +0100189 == result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000190
Ronald Crond8902b62020-07-30 14:18:02 +0200191 ASSERT_COMPARE( output, expected_output->len,
192 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000193
194exit:
195 mbedtls_aria_free( &ctx );
196}
197/* END_CASE */
198
199/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */
Ronald Cron9ed40732020-06-25 09:03:34 +0200200void aria_decrypt_cfb128( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200201 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100202 int result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000203{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100204 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000205 mbedtls_aria_context ctx;
206 size_t iv_offset = 0;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000207
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100208 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000209 mbedtls_aria_init( &ctx );
210
Ronald Cron9ed40732020-06-25 09:03:34 +0200211 mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000212 TEST_ASSERT( mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_DECRYPT,
Ronald Cron9ed40732020-06-25 09:03:34 +0200213 src_str->len, &iv_offset,
214 iv_str->x, src_str->x, output )
Manuel Pégourié-Gonnard977dc362018-03-01 13:51:52 +0100215 == result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000216
Ronald Crond8902b62020-07-30 14:18:02 +0200217 ASSERT_COMPARE( output, expected_output->len,
218 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000219
220exit:
221 mbedtls_aria_free( &ctx );
222}
223/* END_CASE */
224
225/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */
Ronald Cron9ed40732020-06-25 09:03:34 +0200226void aria_encrypt_ctr( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200227 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100228 int result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000229{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100230 unsigned char output[ARIA_MAX_DATASIZE];
231 unsigned char blk[MBEDTLS_ARIA_BLOCKSIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000232 mbedtls_aria_context ctx;
233 size_t iv_offset = 0;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000234
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100235 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000236 mbedtls_aria_init( &ctx );
237
Ronald Cron9ed40732020-06-25 09:03:34 +0200238 mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 );
239 TEST_ASSERT( mbedtls_aria_crypt_ctr( &ctx, src_str->len, &iv_offset,
240 iv_str->x, blk, src_str->x, output )
Manuel Pégourié-Gonnard977dc362018-03-01 13:51:52 +0100241 == result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000242
Ronald Crond8902b62020-07-30 14:18:02 +0200243 ASSERT_COMPARE( output, expected_output->len,
244 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000245
246exit:
247 mbedtls_aria_free( &ctx );
248}
249/* END_CASE */
250
251/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */
Ronald Cron9ed40732020-06-25 09:03:34 +0200252void aria_decrypt_ctr( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200253 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100254 int result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000255{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100256 unsigned char output[ARIA_MAX_DATASIZE];
257 unsigned char blk[MBEDTLS_ARIA_BLOCKSIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000258 mbedtls_aria_context ctx;
259 size_t iv_offset = 0;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000260
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100261 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000262 mbedtls_aria_init( &ctx );
263
Ronald Cron9ed40732020-06-25 09:03:34 +0200264 mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 );
265 TEST_ASSERT( mbedtls_aria_crypt_ctr( &ctx, src_str->len, &iv_offset,
266 iv_str->x, blk, src_str->x, output )
Manuel Pégourié-Gonnard977dc362018-03-01 13:51:52 +0100267 == result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000268
Ronald Crond8902b62020-07-30 14:18:02 +0200269 ASSERT_COMPARE( output, expected_output->len,
270 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000271
272exit:
273 mbedtls_aria_free( &ctx );
274}
275/* END_CASE */
276
277/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */
278void aria_selftest()
279{
280 TEST_ASSERT( mbedtls_aria_self_test( 1 ) == 0 );
281}
282/* END_CASE */