blob: c61288aa792521a972cddb79752891be3c16a0ab [file] [log] [blame]
Manuel Pégourié-Gonnarda6916fa2014-05-02 15:17:29 +02001/* BEGIN_HEADER */
Manuel Pégourié-Gonnard7f809972015-03-09 17:05:11 +00002#include "mbedtls/ccm.h"
Manuel Pégourié-Gonnarda6916fa2014-05-02 15:17:29 +02003/* END_HEADER */
4
5/* BEGIN_DEPENDENCIES
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02006 * depends_on:MBEDTLS_CCM_C
Manuel Pégourié-Gonnarda6916fa2014-05-02 15:17:29 +02007 * END_DEPENDENCIES
8 */
9
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020010/* BEGIN_CASE depends_on:MBEDTLS_SELF_TEST:MBEDTLS_AES_C */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020011void mbedtls_ccm_self_test()
Manuel Pégourié-Gonnarda6916fa2014-05-02 15:17:29 +020012{
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020013 TEST_ASSERT(mbedtls_ccm_self_test(1) == 0);
Manuel Pégourié-Gonnarda6916fa2014-05-02 15:17:29 +020014}
15/* END_CASE */
Manuel Pégourié-Gonnard9fe0d132014-05-06 12:12:45 +020016
17/* BEGIN_CASE */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020018void mbedtls_ccm_setkey(int cipher_id, int key_size, int result)
Manuel Pégourié-Gonnard9fe0d132014-05-06 12:12:45 +020019{
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020020 mbedtls_ccm_context ctx;
Manuel Pégourié-Gonnard9fe0d132014-05-06 12:12:45 +020021 unsigned char key[32];
22 int ret;
23
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020024 mbedtls_ccm_init(&ctx);
Manuel Pégourié-Gonnard6963ff02015-04-28 18:02:54 +020025
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020026 memset(key, 0x2A, sizeof(key));
27 TEST_ASSERT((unsigned)key_size <= 8 * sizeof(key));
Manuel Pégourié-Gonnard9fe0d132014-05-06 12:12:45 +020028
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020029 ret = mbedtls_ccm_setkey(&ctx, cipher_id, key, key_size);
30 TEST_ASSERT(ret == result);
Manuel Pégourié-Gonnard9fe0d132014-05-06 12:12:45 +020031
Paul Bakkerbd51b262014-07-10 15:26:12 +020032exit:
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020033 mbedtls_ccm_free(&ctx);
Manuel Pégourié-Gonnard9fe0d132014-05-06 12:12:45 +020034}
35/* END_CASE */
Manuel Pégourié-Gonnard637eb3d2014-05-06 12:13:09 +020036
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020037/* BEGIN_CASE depends_on:MBEDTLS_AES_C */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020038void ccm_lengths(int msg_len, int iv_len, int add_len, int tag_len, int res)
Manuel Pégourié-Gonnard87df5ba2014-05-06 18:07:24 +020039{
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020040 mbedtls_ccm_context ctx;
Manuel Pégourié-Gonnard87df5ba2014-05-06 18:07:24 +020041 unsigned char key[16];
42 unsigned char msg[10];
43 unsigned char iv[14];
Dave Rodgman2e680342020-10-15 14:00:40 +010044 unsigned char *add = NULL;
Manuel Pégourié-Gonnard87df5ba2014-05-06 18:07:24 +020045 unsigned char out[10];
46 unsigned char tag[18];
47 int decrypt_ret;
48
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020049 mbedtls_ccm_init(&ctx);
Manuel Pégourié-Gonnard6963ff02015-04-28 18:02:54 +020050
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020051 ASSERT_ALLOC_WEAK(add, add_len);
52 memset(key, 0, sizeof(key));
53 memset(msg, 0, sizeof(msg));
54 memset(iv, 0, sizeof(iv));
55 memset(out, 0, sizeof(out));
56 memset(tag, 0, sizeof(tag));
Manuel Pégourié-Gonnard87df5ba2014-05-06 18:07:24 +020057
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020058 TEST_ASSERT(mbedtls_ccm_setkey(&ctx, MBEDTLS_CIPHER_ID_AES, key,
59 8 * sizeof(key)) == 0);
Manuel Pégourié-Gonnard87df5ba2014-05-06 18:07:24 +020060
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020061 TEST_ASSERT(mbedtls_ccm_encrypt_and_tag(&ctx, msg_len, iv, iv_len, add,
62 add_len, msg, out, tag,
63 tag_len) == res);
Manuel Pégourié-Gonnard87df5ba2014-05-06 18:07:24 +020064
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020065 decrypt_ret = mbedtls_ccm_auth_decrypt(&ctx, msg_len, iv, iv_len, add,
66 add_len, msg, out, tag, tag_len);
Manuel Pégourié-Gonnard87df5ba2014-05-06 18:07:24 +020067
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020068 if (res == 0)
69 TEST_ASSERT(decrypt_ret == MBEDTLS_ERR_CCM_AUTH_FAILED);
Manuel Pégourié-Gonnard87df5ba2014-05-06 18:07:24 +020070 else
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020071 TEST_ASSERT(decrypt_ret == res);
Manuel Pégourié-Gonnard87df5ba2014-05-06 18:07:24 +020072
Paul Bakkerbd51b262014-07-10 15:26:12 +020073exit:
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020074 mbedtls_free(add);
75 mbedtls_ccm_free(&ctx);
Manuel Pégourié-Gonnard87df5ba2014-05-06 18:07:24 +020076}
77/* END_CASE */
78
Janos Follath95ab93d2018-05-14 14:32:41 +010079/* BEGIN_CASE depends_on:MBEDTLS_AES_C */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020080void ccm_star_lengths(int msg_len, int iv_len, int add_len, int tag_len, int res)
Janos Follath95ab93d2018-05-14 14:32:41 +010081{
82 mbedtls_ccm_context ctx;
83 unsigned char key[16];
84 unsigned char msg[10];
85 unsigned char iv[14];
86 unsigned char add[10];
87 unsigned char out[10];
88 unsigned char tag[18];
89 int decrypt_ret;
90
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020091 mbedtls_ccm_init(&ctx);
Janos Follath95ab93d2018-05-14 14:32:41 +010092
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +020093 memset(key, 0, sizeof(key));
94 memset(msg, 0, sizeof(msg));
95 memset(iv, 0, sizeof(iv));
96 memset(add, 0, sizeof(add));
97 memset(out, 0, sizeof(out));
98 memset(tag, 0, sizeof(tag));
Janos Follath95ab93d2018-05-14 14:32:41 +010099
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200100 TEST_ASSERT(mbedtls_ccm_setkey(&ctx, MBEDTLS_CIPHER_ID_AES, key,
101 8 * sizeof(key)) == 0);
Janos Follath95ab93d2018-05-14 14:32:41 +0100102
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200103 TEST_ASSERT(mbedtls_ccm_star_encrypt_and_tag(&ctx, msg_len, iv, iv_len, add,
104 add_len, msg, out, tag,
105 tag_len) == res);
Janos Follath95ab93d2018-05-14 14:32:41 +0100106
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200107 decrypt_ret = mbedtls_ccm_star_auth_decrypt(
108 &ctx, msg_len, iv, iv_len, add, add_len, msg, out, tag, tag_len);
Janos Follath95ab93d2018-05-14 14:32:41 +0100109
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200110 if (res == 0 && tag_len != 0)
111 TEST_ASSERT(decrypt_ret == MBEDTLS_ERR_CCM_AUTH_FAILED);
Janos Follath95ab93d2018-05-14 14:32:41 +0100112 else
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200113 TEST_ASSERT(decrypt_ret == res);
Janos Follath95ab93d2018-05-14 14:32:41 +0100114
115exit:
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200116 mbedtls_ccm_free(&ctx);
Janos Follath95ab93d2018-05-14 14:32:41 +0100117}
118/* END_CASE */
119
Manuel Pégourié-Gonnard637eb3d2014-05-06 12:13:09 +0200120/* BEGIN_CASE */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200121void mbedtls_ccm_encrypt_and_tag(int cipher_id,
122 data_t *key,
123 data_t *msg,
124 data_t *iv,
125 data_t *add,
126 data_t *result)
Manuel Pégourié-Gonnard637eb3d2014-05-06 12:13:09 +0200127{
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200128 mbedtls_ccm_context ctx;
Azim Khanf1aaec92017-05-30 14:23:15 +0100129 size_t tag_len;
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200130 uint8_t *msg_n_tag = (uint8_t *)malloc(result->len + 2);
Manuel Pégourié-Gonnard637eb3d2014-05-06 12:13:09 +0200131
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200132 mbedtls_ccm_init(&ctx);
Manuel Pégourié-Gonnard6963ff02015-04-28 18:02:54 +0200133
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200134 memset(msg_n_tag, 0, result->len + 2);
135 memcpy(msg_n_tag, msg->x, msg->len);
Manuel Pégourié-Gonnard637eb3d2014-05-06 12:13:09 +0200136
Azim Khand30ca132017-06-09 04:32:58 +0100137 tag_len = result->len - msg->len;
Manuel Pégourié-Gonnard637eb3d2014-05-06 12:13:09 +0200138
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200139 TEST_ASSERT(mbedtls_ccm_setkey(&ctx, cipher_id, key->x, key->len * 8) == 0);
Manuel Pégourié-Gonnard637eb3d2014-05-06 12:13:09 +0200140
Manuel Pégourié-Gonnard0f6b66d2014-05-07 14:43:46 +0200141 /* Test with input == output */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200142 TEST_ASSERT(mbedtls_ccm_encrypt_and_tag(
143 &ctx, msg->len, iv->x, iv->len, add->x, add->len, msg_n_tag,
144 msg_n_tag, msg_n_tag + msg->len, tag_len) == 0);
Manuel Pégourié-Gonnard637eb3d2014-05-06 12:13:09 +0200145
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200146 TEST_ASSERT(memcmp(msg_n_tag, result->x, result->len) == 0);
Manuel Pégourié-Gonnard637eb3d2014-05-06 12:13:09 +0200147
148 /* Check we didn't write past the end */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200149 TEST_ASSERT(msg_n_tag[result->len] == 0 && msg_n_tag[result->len + 1] == 0);
Manuel Pégourié-Gonnard637eb3d2014-05-06 12:13:09 +0200150
Paul Bakkerbd51b262014-07-10 15:26:12 +0200151exit:
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200152 mbedtls_ccm_free(&ctx);
153 free(msg_n_tag);
Manuel Pégourié-Gonnard637eb3d2014-05-06 12:13:09 +0200154}
155/* END_CASE */
Manuel Pégourié-Gonnardce77d552014-05-06 18:06:52 +0200156
157/* BEGIN_CASE */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200158void mbedtls_ccm_auth_decrypt(int cipher_id,
159 data_t *key,
160 data_t *msg,
161 data_t *iv,
162 data_t *add,
163 int tag_len,
164 int result,
165 data_t *expected_msg)
Manuel Pégourié-Gonnardce77d552014-05-06 18:06:52 +0200166{
Manuel Pégourié-Gonnard0f6b66d2014-05-07 14:43:46 +0200167 unsigned char tag[16];
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200168 mbedtls_ccm_context ctx;
Manuel Pégourié-Gonnardce77d552014-05-06 18:06:52 +0200169
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200170 mbedtls_ccm_init(&ctx);
Manuel Pégourié-Gonnard6963ff02015-04-28 18:02:54 +0200171
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200172 memset(tag, 0x00, sizeof(tag));
Manuel Pégourié-Gonnardce77d552014-05-06 18:06:52 +0200173
Azim Khand30ca132017-06-09 04:32:58 +0100174 msg->len -= tag_len;
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200175 memcpy(tag, msg->x + msg->len, tag_len);
Manuel Pégourié-Gonnardce77d552014-05-06 18:06:52 +0200176
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200177 TEST_ASSERT(mbedtls_ccm_setkey(&ctx, cipher_id, key->x, key->len * 8) == 0);
Manuel Pégourié-Gonnardce77d552014-05-06 18:06:52 +0200178
Manuel Pégourié-Gonnard0f6b66d2014-05-07 14:43:46 +0200179 /* Test with input == output */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200180 TEST_ASSERT(mbedtls_ccm_auth_decrypt(&ctx, msg->len, iv->x, iv->len, add->x,
181 add->len, msg->x, msg->x,
182 msg->x + msg->len, tag_len) == result);
Manuel Pégourié-Gonnardce77d552014-05-06 18:06:52 +0200183
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200184 if (result == 0) {
185 TEST_ASSERT(memcmp(msg->x, expected_msg->x, expected_msg->len) == 0);
186 } else {
Manuel Pégourié-Gonnardce77d552014-05-06 18:06:52 +0200187 size_t i;
188
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200189 for (i = 0; i < msg->len; i++)
190 TEST_ASSERT(msg->x[i] == 0);
Manuel Pégourié-Gonnardce77d552014-05-06 18:06:52 +0200191 }
192
Manuel Pégourié-Gonnard0f6b66d2014-05-07 14:43:46 +0200193 /* Check we didn't write past the end (where the original tag is) */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200194 TEST_ASSERT(memcmp(msg->x + msg->len, tag, tag_len) == 0);
Manuel Pégourié-Gonnardce77d552014-05-06 18:06:52 +0200195
Paul Bakkerbd51b262014-07-10 15:26:12 +0200196exit:
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200197 mbedtls_ccm_free(&ctx);
Manuel Pégourié-Gonnardce77d552014-05-06 18:06:52 +0200198}
199/* END_CASE */
Darryl Green0daf4ca2018-05-29 14:12:26 +0100200
201/* BEGIN_CASE */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200202void mbedtls_ccm_star_encrypt_and_tag(int cipher_id,
203 data_t *key,
204 data_t *msg,
205 data_t *source_address,
206 data_t *frame_counter,
207 int sec_level,
208 data_t *add,
209 data_t *expected_result,
210 int output_ret)
Darryl Green0daf4ca2018-05-29 14:12:26 +0100211{
Darryl Green0daf4ca2018-05-29 14:12:26 +0100212 unsigned char iv[13];
Darryl Green0daf4ca2018-05-29 14:12:26 +0100213 unsigned char result[50];
Darryl Green0daf4ca2018-05-29 14:12:26 +0100214 mbedtls_ccm_context ctx;
Gilles Peskineb168c0d2021-02-09 12:00:13 +0100215 size_t iv_len, tag_len;
Darryl Green0daf4ca2018-05-29 14:12:26 +0100216 int ret;
217
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200218 mbedtls_ccm_init(&ctx);
Darryl Green0daf4ca2018-05-29 14:12:26 +0100219
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200220 memset(result, 0x00, sizeof(result));
Darryl Green0daf4ca2018-05-29 14:12:26 +0100221
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200222 if (sec_level % 4 == 0)
Darryl Green0daf4ca2018-05-29 14:12:26 +0100223 tag_len = 0;
224 else
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200225 tag_len = 1 << (sec_level % 4 + 1);
Darryl Green0daf4ca2018-05-29 14:12:26 +0100226
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200227 TEST_ASSERT(source_address->len == 8);
228 TEST_ASSERT(frame_counter->len == 4);
229 memcpy(iv, source_address->x, source_address->len);
230 memcpy(iv + source_address->len, frame_counter->x, frame_counter->len);
Ronald Cron9ed40732020-06-25 09:03:34 +0200231 iv[source_address->len + frame_counter->len] = sec_level;
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200232 iv_len = sizeof(iv);
Darryl Green0daf4ca2018-05-29 14:12:26 +0100233
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200234 TEST_ASSERT(mbedtls_ccm_setkey(&ctx, cipher_id, key->x, key->len * 8) == 0);
Darryl Green0daf4ca2018-05-29 14:12:26 +0100235
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200236 ret = mbedtls_ccm_star_encrypt_and_tag(&ctx, msg->len, iv, iv_len, add->x,
237 add->len, msg->x, result,
238 result + msg->len, tag_len);
Darryl Green0daf4ca2018-05-29 14:12:26 +0100239
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200240 TEST_ASSERT(ret == output_ret);
Darryl Green0daf4ca2018-05-29 14:12:26 +0100241
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200242 TEST_ASSERT(memcmp(result, expected_result->x, expected_result->len) == 0);
Darryl Green0daf4ca2018-05-29 14:12:26 +0100243
244 /* Check we didn't write past the end */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200245 TEST_ASSERT(result[expected_result->len] == 0 &&
246 result[expected_result->len + 1] == 0);
Darryl Green0daf4ca2018-05-29 14:12:26 +0100247
248exit:
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200249 mbedtls_ccm_free(&ctx);
Darryl Green0daf4ca2018-05-29 14:12:26 +0100250}
251/* END_CASE */
252
253/* BEGIN_CASE */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200254void mbedtls_ccm_star_auth_decrypt(int cipher_id,
255 data_t *key,
256 data_t *msg,
257 data_t *source_address,
258 data_t *frame_counter,
259 int sec_level,
260 data_t *add,
261 data_t *expected_result,
262 int output_ret)
Darryl Green0daf4ca2018-05-29 14:12:26 +0100263{
Darryl Green0daf4ca2018-05-29 14:12:26 +0100264 unsigned char iv[13];
Darryl Green0daf4ca2018-05-29 14:12:26 +0100265 unsigned char result[50];
Darryl Green0daf4ca2018-05-29 14:12:26 +0100266 mbedtls_ccm_context ctx;
Gilles Peskineb168c0d2021-02-09 12:00:13 +0100267 size_t iv_len, tag_len;
Darryl Green0daf4ca2018-05-29 14:12:26 +0100268 int ret;
269
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200270 mbedtls_ccm_init(&ctx);
Darryl Green0daf4ca2018-05-29 14:12:26 +0100271
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200272 memset(iv, 0x00, sizeof(iv));
273 memset(result, '+', sizeof(result));
Darryl Green0daf4ca2018-05-29 14:12:26 +0100274
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200275 if (sec_level % 4 == 0)
Darryl Green0daf4ca2018-05-29 14:12:26 +0100276 tag_len = 0;
277 else
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200278 tag_len = 1 << (sec_level % 4 + 1);
Darryl Green0daf4ca2018-05-29 14:12:26 +0100279
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200280 TEST_ASSERT(source_address->len == 8);
281 TEST_ASSERT(frame_counter->len == 4);
282 memcpy(iv, source_address->x, source_address->len);
283 memcpy(iv + source_address->len, frame_counter->x, frame_counter->len);
Ronald Cron9ed40732020-06-25 09:03:34 +0200284 iv[source_address->len + frame_counter->len] = sec_level;
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200285 iv_len = sizeof(iv);
Darryl Green0daf4ca2018-05-29 14:12:26 +0100286
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200287 TEST_ASSERT(mbedtls_ccm_setkey(&ctx, cipher_id, key->x, key->len * 8) == 0);
Darryl Green0daf4ca2018-05-29 14:12:26 +0100288
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200289 ret = mbedtls_ccm_star_auth_decrypt(&ctx, msg->len - tag_len, iv, iv_len,
290 add->x, add->len, msg->x, result,
291 msg->x + msg->len - tag_len, tag_len);
Darryl Green0daf4ca2018-05-29 14:12:26 +0100292
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200293 TEST_ASSERT(ret == output_ret);
Darryl Green0daf4ca2018-05-29 14:12:26 +0100294
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200295 TEST_ASSERT(memcmp(result, expected_result->x, expected_result->len) == 0);
Darryl Green0daf4ca2018-05-29 14:12:26 +0100296
297 /* Check we didn't write past the end (where the original tag is) */
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200298 TEST_ASSERT((msg->len + 2) <= sizeof(result));
299 TEST_EQUAL(result[msg->len], '+');
300 TEST_EQUAL(result[msg->len + 1], '+');
Darryl Green0daf4ca2018-05-29 14:12:26 +0100301
302exit:
Mateusz Starzykc0eabdc2021-08-03 14:09:02 +0200303 mbedtls_ccm_free(&ctx);
Darryl Green0daf4ca2018-05-29 14:12:26 +0100304}
305/* END_CASE */