blob: 6432df08112b96c3b126f024d1970878f295fa6f [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
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);
30
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050031#if defined(MBEDTLS_CIPHER_MODE_CBC)
Ronald Cron875b5fb2021-05-21 08:50:00 +020032 TEST_EQUAL( MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050033 mbedtls_aria_crypt_cbc( &ctx,
34 42 /* invalid mode */,
35 sizeof( input ),
36 iv,
37 input,
38 output ) );
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050039#endif /* MBEDTLS_CIPHER_MODE_CBC */
40
41#if defined(MBEDTLS_CIPHER_MODE_CFB)
Ronald Cron875b5fb2021-05-21 08:50:00 +020042 TEST_EQUAL( MBEDTLS_ERR_ARIA_BAD_INPUT_DATA,
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050043 mbedtls_aria_crypt_cfb128( &ctx,
44 42, /* invalid mode */
45 sizeof( input ),
46 &iv_off,
47 iv,
48 input,
49 output ) );
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050050#endif /* MBEDTLS_CIPHER_MODE_CFB */
51
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050052exit:
53 return;
54
55}
56/* END_CASE */
57
58/* BEGIN_CASE */
Ronald Cron9ed40732020-06-25 09:03:34 +020059void aria_encrypt_ecb( data_t *key_str, data_t *src_str,
Ronald Cron55d97f22020-06-26 17:00:30 +020060 data_t *expected_output, 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 output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000063 mbedtls_aria_context ctx;
Ronald Cron9ed40732020-06-25 09:03:34 +020064 size_t i;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000065
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +010066 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000067 mbedtls_aria_init( &ctx );
68
Ronald Cron9ed40732020-06-25 09:03:34 +020069 TEST_ASSERT( mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 )
Manuel Pégourié-Gonnard4231e7f2018-02-28 10:54:31 +010070 == setkey_result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000071 if( setkey_result == 0 )
72 {
Ronald Cron9ed40732020-06-25 09:03:34 +020073 for( i = 0; i < src_str->len; i += MBEDTLS_ARIA_BLOCKSIZE )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000074 {
Ronald Cron9ed40732020-06-25 09:03:34 +020075 TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, src_str->x + i,
76 output + i ) == 0 );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000077 }
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000078
Ronald Crond8902b62020-07-30 14:18:02 +020079 ASSERT_COMPARE( output, expected_output->len,
80 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000081 }
82
83exit:
84 mbedtls_aria_free( &ctx );
85}
86/* END_CASE */
87
88/* BEGIN_CASE */
Ronald Cron9ed40732020-06-25 09:03:34 +020089void aria_decrypt_ecb( data_t *key_str, data_t *src_str,
Ronald Cron55d97f22020-06-26 17:00:30 +020090 data_t *expected_output, int setkey_result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000091{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +010092 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000093 mbedtls_aria_context ctx;
Ronald Cron9ed40732020-06-25 09:03:34 +020094 size_t i;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000095
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +010096 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +000097 mbedtls_aria_init( &ctx );
98
Ronald Cron9ed40732020-06-25 09:03:34 +020099 TEST_ASSERT( mbedtls_aria_setkey_dec( &ctx, key_str->x, key_str->len * 8 )
Manuel Pégourié-Gonnard4231e7f2018-02-28 10:54:31 +0100100 == setkey_result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000101 if( setkey_result == 0 )
102 {
Ronald Cron9ed40732020-06-25 09:03:34 +0200103 for( i = 0; i < src_str->len; i += MBEDTLS_ARIA_BLOCKSIZE )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000104 {
Ronald Cron9ed40732020-06-25 09:03:34 +0200105 TEST_ASSERT( mbedtls_aria_crypt_ecb( &ctx, src_str->x + i,
106 output + i ) == 0 );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000107 }
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000108
Ronald Crond8902b62020-07-30 14:18:02 +0200109 ASSERT_COMPARE( output, expected_output->len,
110 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000111 }
112
113exit:
114 mbedtls_aria_free( &ctx );
115}
116/* END_CASE */
117
118/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */
Ronald Cron9ed40732020-06-25 09:03:34 +0200119void aria_encrypt_cbc( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200120 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100121 int cbc_result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000122{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100123 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000124 mbedtls_aria_context ctx;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000125
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100126 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000127 mbedtls_aria_init( &ctx );
128
Ronald Cron9ed40732020-06-25 09:03:34 +0200129 mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 );
130 TEST_ASSERT( mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_ENCRYPT,
131 src_str->len, iv_str->x, src_str->x,
132 output ) == cbc_result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000133 if( cbc_result == 0 )
134 {
Ronald Crond8902b62020-07-30 14:18:02 +0200135 ASSERT_COMPARE( output, expected_output->len,
136 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000137 }
138
139exit:
140 mbedtls_aria_free( &ctx );
141}
142/* END_CASE */
143
144/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CBC */
Ronald Cron9ed40732020-06-25 09:03:34 +0200145void aria_decrypt_cbc( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200146 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100147 int cbc_result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000148{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100149 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000150 mbedtls_aria_context ctx;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000151
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100152 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000153 mbedtls_aria_init( &ctx );
154
Ronald Cron9ed40732020-06-25 09:03:34 +0200155 mbedtls_aria_setkey_dec( &ctx, key_str->x, key_str->len * 8 );
156 TEST_ASSERT( mbedtls_aria_crypt_cbc( &ctx, MBEDTLS_ARIA_DECRYPT,
157 src_str->len, iv_str->x, src_str->x,
158 output ) == cbc_result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000159 if( cbc_result == 0 )
160 {
Ronald Crond8902b62020-07-30 14:18:02 +0200161 ASSERT_COMPARE( output, expected_output->len,
162 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000163 }
164
165exit:
166 mbedtls_aria_free( &ctx );
167}
168/* END_CASE */
169
170/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */
Ronald Cron9ed40732020-06-25 09:03:34 +0200171void aria_encrypt_cfb128( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200172 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100173 int result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000174{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100175 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000176 mbedtls_aria_context ctx;
177 size_t iv_offset = 0;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000178
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100179 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000180 mbedtls_aria_init( &ctx );
181
Ronald Cron9ed40732020-06-25 09:03:34 +0200182 mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000183 TEST_ASSERT( mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_ENCRYPT,
Ronald Cron9ed40732020-06-25 09:03:34 +0200184 src_str->len, &iv_offset,
185 iv_str->x, src_str->x, output )
Manuel Pégourié-Gonnard977dc362018-03-01 13:51:52 +0100186 == result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000187
Ronald Crond8902b62020-07-30 14:18:02 +0200188 ASSERT_COMPARE( output, expected_output->len,
189 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000190
191exit:
192 mbedtls_aria_free( &ctx );
193}
194/* END_CASE */
195
196/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CFB */
Ronald Cron9ed40732020-06-25 09:03:34 +0200197void aria_decrypt_cfb128( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200198 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100199 int result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000200{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100201 unsigned char output[ARIA_MAX_DATASIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000202 mbedtls_aria_context ctx;
203 size_t iv_offset = 0;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000204
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100205 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000206 mbedtls_aria_init( &ctx );
207
Ronald Cron9ed40732020-06-25 09:03:34 +0200208 mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000209 TEST_ASSERT( mbedtls_aria_crypt_cfb128( &ctx, MBEDTLS_ARIA_DECRYPT,
Ronald Cron9ed40732020-06-25 09:03:34 +0200210 src_str->len, &iv_offset,
211 iv_str->x, src_str->x, output )
Manuel Pégourié-Gonnard977dc362018-03-01 13:51:52 +0100212 == result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000213
Ronald Crond8902b62020-07-30 14:18:02 +0200214 ASSERT_COMPARE( output, expected_output->len,
215 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000216
217exit:
218 mbedtls_aria_free( &ctx );
219}
220/* END_CASE */
221
222/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */
Ronald Cron9ed40732020-06-25 09:03:34 +0200223void aria_encrypt_ctr( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200224 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100225 int result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000226{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100227 unsigned char output[ARIA_MAX_DATASIZE];
228 unsigned char blk[MBEDTLS_ARIA_BLOCKSIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000229 mbedtls_aria_context ctx;
230 size_t iv_offset = 0;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000231
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100232 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000233 mbedtls_aria_init( &ctx );
234
Ronald Cron9ed40732020-06-25 09:03:34 +0200235 mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 );
236 TEST_ASSERT( mbedtls_aria_crypt_ctr( &ctx, src_str->len, &iv_offset,
237 iv_str->x, blk, src_str->x, output )
Manuel Pégourié-Gonnard977dc362018-03-01 13:51:52 +0100238 == result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000239
Ronald Crond8902b62020-07-30 14:18:02 +0200240 ASSERT_COMPARE( output, expected_output->len,
241 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000242
243exit:
244 mbedtls_aria_free( &ctx );
245}
246/* END_CASE */
247
248/* BEGIN_CASE depends_on:MBEDTLS_CIPHER_MODE_CTR */
Ronald Cron9ed40732020-06-25 09:03:34 +0200249void aria_decrypt_ctr( data_t *key_str, data_t *iv_str,
Ronald Cron55d97f22020-06-26 17:00:30 +0200250 data_t *src_str, data_t *expected_output,
Manuel Pégourié-Gonnardd82d7912018-03-01 09:43:21 +0100251 int result )
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000252{
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100253 unsigned char output[ARIA_MAX_DATASIZE];
254 unsigned char blk[MBEDTLS_ARIA_BLOCKSIZE];
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000255 mbedtls_aria_context ctx;
256 size_t iv_offset = 0;
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000257
Manuel Pégourié-Gonnard8abc3492018-03-01 10:02:47 +0100258 memset( output, 0x00, sizeof( output ) );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000259 mbedtls_aria_init( &ctx );
260
Ronald Cron9ed40732020-06-25 09:03:34 +0200261 mbedtls_aria_setkey_enc( &ctx, key_str->x, key_str->len * 8 );
262 TEST_ASSERT( mbedtls_aria_crypt_ctr( &ctx, src_str->len, &iv_offset,
263 iv_str->x, blk, src_str->x, output )
Manuel Pégourié-Gonnard977dc362018-03-01 13:51:52 +0100264 == result );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000265
Ronald Crond8902b62020-07-30 14:18:02 +0200266 ASSERT_COMPARE( output, expected_output->len,
267 expected_output->x, expected_output->len );
Markku-Juhani O. Saarinen8df81e02017-12-01 14:26:40 +0000268
269exit:
270 mbedtls_aria_free( &ctx );
271}
272/* END_CASE */
273
274/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST */
275void aria_selftest()
276{
277 TEST_ASSERT( mbedtls_aria_self_test( 1 ) == 0 );
278}
279/* END_CASE */