blob: b24e4984ed379e64e6e77d857805c0aac6537650 [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 */
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050020void aria_valid_param( )
21{
22 TEST_VALID_PARAM( mbedtls_aria_free( NULL ) );
23}
24/* END_CASE */
25
26/* BEGIN_CASE depends_on:MBEDTLS_CHECK_PARAMS:!MBEDTLS_PARAM_FAILED_ALT */
27void aria_invalid_param( )
28{
29 mbedtls_aria_context ctx;
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050030 unsigned char input[MBEDTLS_ARIA_BLOCKSIZE] = { 0 };
31 unsigned char output[MBEDTLS_ARIA_BLOCKSIZE] = { 0 };
32 unsigned char iv[MBEDTLS_ARIA_BLOCKSIZE] = { 0 };
33 size_t iv_off = 0;
34
35 ((void) iv_off);
36 ((void) iv);
37
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050038#if defined(MBEDTLS_CIPHER_MODE_CBC)
Ronald Cron875b5fb2021-05-21 08:50:00 +020039 TEST_EQUAL( MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050040 mbedtls_aria_crypt_cbc( &ctx,
41 42 /* invalid mode */,
42 sizeof( input ),
43 iv,
44 input,
45 output ) );
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050046#endif /* MBEDTLS_CIPHER_MODE_CBC */
47
48#if defined(MBEDTLS_CIPHER_MODE_CFB)
Ronald Cron875b5fb2021-05-21 08:50:00 +020049 TEST_EQUAL( MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050050 mbedtls_aria_crypt_cfb128( &ctx,
51 42, /* invalid mode */
52 sizeof( input ),
53 &iv_off,
54 iv,
55 input,
56 output ) );
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050057#endif /* MBEDTLS_CIPHER_MODE_CFB */
58
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050059exit:
60 return;
61
62}
63/* END_CASE */
64
65/* BEGIN_CASE */
Ronald Cron9ed40732020-06-25 09:03:34 +020066void aria_encrypt_ecb( data_t *key_str, data_t *src_str,
Ronald Cron55d97f22020-06-26 17:00:30 +020067 data_t *expected_output, int setkey_result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000068{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +010069 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000070 mbedtls_aria_context ctx;
Ronald Cron9ed40732020-06-25 09:03:34 +020071 size_t i;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000072
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +010073 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000074 mbedtls_aria_init( &ctx );
75
Ronald Cron9ed40732020-06-25 09:03:34 +020076 TEST_ASSERT( mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 )
Manuel Pégourié-Gonnard4231e7f2018-02-28 10:54:31 +010077 == setkey_result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000078 if( setkey_result == 0 )
79 {
Ronald Cron9ed40732020-06-25 09:03:34 +020080 for( i = 0; i < src_str->len; i += MBEDTLS_ARIA_BLOCKSIZE )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000081 {
Ronald Cron9ed40732020-06-25 09:03:34 +020082 TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, src_str->x + i,
83 output + i ) == 0 );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000084 }
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000085
Ronald Crond8902b62020-07-30 14:18:02 +020086 ASSERT_COMPARE( output, expected_output->len,
87 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000088 }
89
90exit:
91 mbedtls_aria_free( &ctx );
92}
93/* END_CASE */
94
95/* BEGIN_CASE */
Ronald Cron9ed40732020-06-25 09:03:34 +020096void aria_decrypt_ecb( data_t *key_str, data_t *src_str,
Ronald Cron55d97f22020-06-26 17:00:30 +020097 data_t *expected_output, int setkey_result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000098{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +010099 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000100 mbedtls_aria_context ctx;
Ronald Cron9ed40732020-06-25 09:03:34 +0200101 size_t i;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000102
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100103 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000104 mbedtls_aria_init( &ctx );
105
Ronald Cron9ed40732020-06-25 09:03:34 +0200106 TEST_ASSERT( mbedtls_aria_setkey_dec( &ctx, key_str->x, key_str->len * 8 )
Manuel Pégourié-Gonnard4231e7f2018-02-28 10:54:31 +0100107 == setkey_result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000108 if( setkey_result == 0 )
109 {
Ronald Cron9ed40732020-06-25 09:03:34 +0200110 for( i = 0; i < src_str->len; i += MBEDTLS_ARIA_BLOCKSIZE )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000111 {
Ronald Cron9ed40732020-06-25 09:03:34 +0200112 TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, src_str->x + i,
113 output + i ) == 0 );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000114 }
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000115
Ronald Crond8902b62020-07-30 14:18:02 +0200116 ASSERT_COMPARE( output, expected_output->len,
117 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000118 }
119
120exit:
121 mbedtls_aria_free( &ctx );
122}
123/* END_CASE */
124
125/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */
Ronald Cron9ed40732020-06-25 09:03:34 +0200126void aria_encrypt_cbc( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200127 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100128 int cbc_result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000129{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100130 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000131 mbedtls_aria_context ctx;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000132
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100133 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000134 mbedtls_aria_init( &ctx );
135
Ronald Cron9ed40732020-06-25 09:03:34 +0200136 mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 );
137 TEST_ASSERT( mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_ENCRYPT,
138 src_str->len, iv_str->x, src_str->x,
139 output ) == cbc_result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000140 if( cbc_result == 0 )
141 {
Ronald Crond8902b62020-07-30 14:18:02 +0200142 ASSERT_COMPARE( output, expected_output->len,
143 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000144 }
145
146exit:
147 mbedtls_aria_free( &ctx );
148}
149/* END_CASE */
150
151/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */
Ronald Cron9ed40732020-06-25 09:03:34 +0200152void aria_decrypt_cbc( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200153 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100154 int cbc_result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000155{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100156 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000157 mbedtls_aria_context ctx;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000158
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100159 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000160 mbedtls_aria_init( &ctx );
161
Ronald Cron9ed40732020-06-25 09:03:34 +0200162 mbedtls_aria_setkey_dec( &ctx, key_str->x, key_str->len * 8 );
163 TEST_ASSERT( mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_DECRYPT,
164 src_str->len, iv_str->x, src_str->x,
165 output ) == cbc_result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000166 if( cbc_result == 0 )
167 {
Ronald Crond8902b62020-07-30 14:18:02 +0200168 ASSERT_COMPARE( output, expected_output->len,
169 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000170 }
171
172exit:
173 mbedtls_aria_free( &ctx );
174}
175/* END_CASE */
176
177/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */
Ronald Cron9ed40732020-06-25 09:03:34 +0200178void aria_encrypt_cfb128( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200179 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100180 int result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000181{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100182 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000183 mbedtls_aria_context ctx;
184 size_t iv_offset = 0;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000185
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100186 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000187 mbedtls_aria_init( &ctx );
188
Ronald Cron9ed40732020-06-25 09:03:34 +0200189 mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000190 TEST_ASSERT( mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_ENCRYPT,
Ronald Cron9ed40732020-06-25 09:03:34 +0200191 src_str->len, &iv_offset,
192 iv_str->x, src_str->x, output )
Manuel Pégourié-Gonnard977dc362018-03-01 13:51:52 +0100193 == result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000194
Ronald Crond8902b62020-07-30 14:18:02 +0200195 ASSERT_COMPARE( output, expected_output->len,
196 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000197
198exit:
199 mbedtls_aria_free( &ctx );
200}
201/* END_CASE */
202
203/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */
Ronald Cron9ed40732020-06-25 09:03:34 +0200204void aria_decrypt_cfb128( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200205 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100206 int result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000207{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100208 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000209 mbedtls_aria_context ctx;
210 size_t iv_offset = 0;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000211
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100212 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000213 mbedtls_aria_init( &ctx );
214
Ronald Cron9ed40732020-06-25 09:03:34 +0200215 mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000216 TEST_ASSERT( mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_DECRYPT,
Ronald Cron9ed40732020-06-25 09:03:34 +0200217 src_str->len, &iv_offset,
218 iv_str->x, src_str->x, output )
Manuel Pégourié-Gonnard977dc362018-03-01 13:51:52 +0100219 == result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000220
Ronald Crond8902b62020-07-30 14:18:02 +0200221 ASSERT_COMPARE( output, expected_output->len,
222 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000223
224exit:
225 mbedtls_aria_free( &ctx );
226}
227/* END_CASE */
228
229/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */
Ronald Cron9ed40732020-06-25 09:03:34 +0200230void aria_encrypt_ctr( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200231 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100232 int result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000233{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100234 unsigned char output[ARIA_MAX_DATASIZE];
235 unsigned char blk[MBEDTLS_ARIA_BLOCKSIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000236 mbedtls_aria_context ctx;
237 size_t iv_offset = 0;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000238
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100239 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000240 mbedtls_aria_init( &ctx );
241
Ronald Cron9ed40732020-06-25 09:03:34 +0200242 mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 );
243 TEST_ASSERT( mbedtls_aria_crypt_ctr( &ctx, src_str->len, &iv_offset,
244 iv_str->x, blk, src_str->x, output )
Manuel Pégourié-Gonnard977dc362018-03-01 13:51:52 +0100245 == result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000246
Ronald Crond8902b62020-07-30 14:18:02 +0200247 ASSERT_COMPARE( output, expected_output->len,
248 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000249
250exit:
251 mbedtls_aria_free( &ctx );
252}
253/* END_CASE */
254
255/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */
Ronald Cron9ed40732020-06-25 09:03:34 +0200256void aria_decrypt_ctr( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200257 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100258 int result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000259{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100260 unsigned char output[ARIA_MAX_DATASIZE];
261 unsigned char blk[MBEDTLS_ARIA_BLOCKSIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000262 mbedtls_aria_context ctx;
263 size_t iv_offset = 0;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000264
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100265 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000266 mbedtls_aria_init( &ctx );
267
Ronald Cron9ed40732020-06-25 09:03:34 +0200268 mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 );
269 TEST_ASSERT( mbedtls_aria_crypt_ctr( &ctx, src_str->len, &iv_offset,
270 iv_str->x, blk, src_str->x, output )
Manuel Pégourié-Gonnard977dc362018-03-01 13:51:52 +0100271 == result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000272
Ronald Crond8902b62020-07-30 14:18:02 +0200273 ASSERT_COMPARE( output, expected_output->len,
274 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000275
276exit:
277 mbedtls_aria_free( &ctx );
278}
279/* END_CASE */
280
281/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */
282void aria_selftest()
283{
284 TEST_ASSERT( mbedtls_aria_self_test( 1 ) == 0 );
285}
286/* END_CASE */