Skip to content

Commit ce9f1d4

Browse files
committed
Some refactoring
1 parent 2cbc9be commit ce9f1d4

File tree

1 file changed

+48
-129
lines changed
  • tests/subsys/suit/unit/suit_decrypt_filter/src

1 file changed

+48
-129
lines changed

tests/subsys/suit/unit/suit_decrypt_filter/src/main.c

Lines changed: 48 additions & 129 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,21 @@
1313

1414
#define KEY_ID_FWENC_APPLICATION_GEN1 0x40022000
1515

16+
#define ENC_INFO_DEFAULT_INIT { \
17+
.enc_alg_id = suit_cose_aes256_gcm, \
18+
.IV = { \
19+
.value = iv_direct, \
20+
.len = sizeof(iv_direct), \
21+
}, \
22+
.aad = { \
23+
.value = aad, \
24+
.len = strlen(aad), \
25+
}, \
26+
.kw_alg_id = suit_cose_direct, \
27+
.kw_key.direct = {.key_id = {.value = cek_key_id_cbor, \
28+
.len = sizeof(cek_key_id_cbor)},} \
29+
}
30+
1631
/**
1732
* Encryption without wrapping CEK achieved by running:
1833
*
@@ -46,6 +61,9 @@ static const suit_manifest_class_id_t sample_class_id = {
4661
0x36}
4762
};
4863

64+
static const uint8_t cek_key_id_cbor[] = {
65+
0x1A, 0x40, 0x02, 0x20, 0x00,
66+
};
4967

5068
struct suit_decrypt_filter_tests_fixture {
5169
char dummy; //nothing for now
@@ -59,7 +77,8 @@ static const char aad[] = {
5977
"sample aad"
6078
};
6179

62-
static struct stream_sink dec_sink = {0};
80+
static struct stream_sink dec_sink;
81+
static struct stream_sink ram_sink;
6382

6483
static void get_cbor_key_id(psa_key_id_t const key_id, uint8_t * const cbor_key_id, size_t const cbor_key_id_len)
6584
{
@@ -75,25 +94,32 @@ static void get_cbor_key_id(psa_key_id_t const key_id, uint8_t * const cbor_key_
7594

7695
static suit_plat_err_t write_ram(void *ctx, const uint8_t *buf, size_t size)
7796
{
97+
// dummy write interface function for the decrypted data output sink
98+
7899
(void)ctx;
79100
(void)buf;
80101
(void)size;
81102

82-
// dummy write interface function for the decrypted data output sink
103+
return 0;
83104
}
84105

85106
static suit_plat_err_t used_storage(void *ctx, size_t *size)
86107
{
108+
// dummy used_storage interface function for the decrypted data output sink
109+
87110
(void)ctx;
88111
(void)size;
89112

90-
// dummy used_storage interface function for the decrypted data output sink
113+
return 0;
91114
}
92115

93116
static void *test_suite_setup(void)
94117
{
95118
static struct suit_decrypt_filter_tests_fixture fixture = {0};
96119

120+
ram_sink.write = write_ram;
121+
ram_sink.used_storage = used_storage;
122+
97123
return &fixture;
98124
}
99125

@@ -112,7 +138,6 @@ static void test_before(void *data)
112138

113139
if (dec_sink.release && dec_sink.ctx)
114140
{
115-
printf("realese me!\n");
116141
dec_sink.release(dec_sink.ctx);
117142
memset(&dec_sink, 0, sizeof(dec_sink));
118143
}
@@ -122,37 +147,16 @@ ZTEST_SUITE(suit_decrypt_filter_tests, NULL, test_suite_setup, test_before, NULL
122147

123148
ZTEST_F(suit_decrypt_filter_tests, test_key_id_validation_fail)
124149
{
125-
struct stream_sink ram_sink = {0};
126-
uint8_t cek_key_id_cbor[] = {
127-
0x1A, 0x00, 0x00, 0x00, 0x00,
128-
};
150+
struct suit_encryption_info enc_info = ENC_INFO_DEFAULT_INIT;
129151

130-
get_cbor_key_id(KEY_ID_FWENC_APPLICATION_GEN1, cek_key_id_cbor, sizeof(cek_key_id_cbor));
131-
132-
struct suit_encryption_info enc_info = {
133-
.enc_alg_id = suit_cose_aes256_gcm,
134-
.IV = {
135-
.value = iv_direct,
136-
.len = sizeof(iv_direct),
137-
},
138-
.aad = {
139-
.value = aad,
140-
.len = strlen(aad),
141-
},
142-
.kw_alg_id = suit_cose_direct,
143-
.kw_key.direct = {.key_id = {.value = cek_key_id_cbor,
144-
.len = sizeof(cek_key_id_cbor)},}
145-
};
146-
147-
ram_sink.write = write_ram;
148152
suit_mci_fw_encryption_key_id_validate_fake.return_val = MCI_ERR_WRONGKEYID;
149153
suit_plat_decode_key_id_fake.return_val = SUIT_PLAT_SUCCESS;
150154

151155
suit_plat_err_t err = suit_decrypt_filter_get(&dec_sink, &enc_info, &sample_class_id, &ram_sink);
152156
zassert_equal(err, SUIT_PLAT_ERR_AUTHENTICATION,
153157
"Incorrect error code when getting decrypt filter");
154158

155-
zassert_equal_ptr(suit_mci_fw_encryption_key_id_validate_fake.call_count, 1,
159+
zassert_equal(suit_mci_fw_encryption_key_id_validate_fake.call_count, 1,
156160
"Invalid number of calls to suit_mci_fw_encryption_key_id_validate");
157161
zassert_equal_ptr(suit_mci_fw_encryption_key_id_validate_fake.arg0_val, &sample_class_id,
158162
"Invalid class ID passed to suit_mci_fw_encryption_key_id_validate");
@@ -164,35 +168,14 @@ ZTEST_F(suit_decrypt_filter_tests, test_key_id_validation_fail)
164168
"Invalid number of calls to psa_aead_update_ad");
165169
zassert_equal(psa_aead_abort_fake.call_count, 0,
166170
"Invalid number of calls to psa_aead_abort");
167-
zassert_equal(dec_sink.ctx, NULL,
171+
zassert_equal_ptr(dec_sink.ctx, NULL,
168172
"Invalid dec_sink.ctx value");
169173
}
170174

171175
ZTEST_F(suit_decrypt_filter_tests, test_decryption_setup_fail)
172176
{
173-
struct stream_sink ram_sink = {0};
174-
uint8_t cek_key_id_cbor[] = {
175-
0x1A, 0x00, 0x00, 0x00, 0x00,
176-
};
177+
struct suit_encryption_info enc_info = ENC_INFO_DEFAULT_INIT;
177178

178-
get_cbor_key_id(KEY_ID_FWENC_APPLICATION_GEN1, cek_key_id_cbor, sizeof(cek_key_id_cbor));
179-
180-
struct suit_encryption_info enc_info = {
181-
.enc_alg_id = suit_cose_aes256_gcm,
182-
.IV = {
183-
.value = iv_direct,
184-
.len = sizeof(iv_direct),
185-
},
186-
.aad = {
187-
.value = aad,
188-
.len = strlen(aad),
189-
},
190-
.kw_alg_id = suit_cose_direct,
191-
.kw_key.direct = {.key_id = {.value = cek_key_id_cbor,
192-
.len = sizeof(cek_key_id_cbor)},}
193-
};
194-
195-
ram_sink.write = write_ram;
196179
suit_mci_fw_encryption_key_id_validate_fake.return_val = SUIT_PLAT_SUCCESS;
197180
suit_plat_decode_key_id_fake.return_val = SUIT_PLAT_SUCCESS;
198181
psa_aead_decrypt_setup_fake.return_val = PSA_ERROR_GENERIC_ERROR;
@@ -201,7 +184,7 @@ ZTEST_F(suit_decrypt_filter_tests, test_decryption_setup_fail)
201184
zassert_equal(err, SUIT_PLAT_ERR_CRASH,
202185
"Incorrect error code when getting decrypt filter");
203186

204-
zassert_equal_ptr(suit_mci_fw_encryption_key_id_validate_fake.call_count, 1,
187+
zassert_equal(suit_mci_fw_encryption_key_id_validate_fake.call_count, 1,
205188
"Invalid number of calls to suit_mci_fw_encryption_key_id_validate");
206189
zassert_equal_ptr(suit_mci_fw_encryption_key_id_validate_fake.arg0_val, &sample_class_id,
207190
"Invalid class ID passed to suit_mci_fw_encryption_key_id_validate");
@@ -213,35 +196,14 @@ ZTEST_F(suit_decrypt_filter_tests, test_decryption_setup_fail)
213196
"Invalid number of calls to psa_aead_update_ad");
214197
zassert_equal(psa_aead_abort_fake.call_count, 1,
215198
"Invalid number of calls to psa_aead_abort");
216-
zassert_equal(dec_sink.ctx, NULL,
199+
zassert_equal_ptr(dec_sink.ctx, NULL,
217200
"Invalid dec_sink.ctx value");
218201
}
219202

220203
ZTEST_F(suit_decrypt_filter_tests, test_decryption_set_nonce_fail)
221204
{
222-
struct stream_sink ram_sink = {0};
223-
uint8_t cek_key_id_cbor[] = {
224-
0x1A, 0x00, 0x00, 0x00, 0x00,
225-
};
205+
struct suit_encryption_info enc_info = ENC_INFO_DEFAULT_INIT;
226206

227-
get_cbor_key_id(KEY_ID_FWENC_APPLICATION_GEN1, cek_key_id_cbor, sizeof(cek_key_id_cbor));
228-
229-
struct suit_encryption_info enc_info = {
230-
.enc_alg_id = suit_cose_aes256_gcm,
231-
.IV = {
232-
.value = iv_direct,
233-
.len = sizeof(iv_direct),
234-
},
235-
.aad = {
236-
.value = aad,
237-
.len = strlen(aad),
238-
},
239-
.kw_alg_id = suit_cose_direct,
240-
.kw_key.direct = {.key_id = {.value = cek_key_id_cbor,
241-
.len = sizeof(cek_key_id_cbor)},}
242-
};
243-
244-
ram_sink.write = write_ram;
245207
suit_mci_fw_encryption_key_id_validate_fake.return_val = SUIT_PLAT_SUCCESS;
246208
suit_plat_decode_key_id_fake.return_val = SUIT_PLAT_SUCCESS;
247209
psa_aead_decrypt_setup_fake.return_val = PSA_SUCCESS;
@@ -251,51 +213,30 @@ ZTEST_F(suit_decrypt_filter_tests, test_decryption_set_nonce_fail)
251213
zassert_equal(err, SUIT_PLAT_ERR_CRASH,
252214
"Incorrect error code when getting decrypt filter");
253215

254-
zassert_equal_ptr(suit_mci_fw_encryption_key_id_validate_fake.call_count, 1,
216+
zassert_equal(suit_mci_fw_encryption_key_id_validate_fake.call_count, 1,
255217
"Invalid number of calls to suit_mci_fw_encryption_key_id_validate");
256218
zassert_equal_ptr(suit_mci_fw_encryption_key_id_validate_fake.arg0_val, &sample_class_id,
257219
"Invalid class ID passed to suit_mci_fw_encryption_key_id_validate");
258220
zassert_equal(psa_aead_decrypt_setup_fake.call_count, 1,
259221
"Invalid number of calls to psa_aead_decrypt_setup");
260222
zassert_equal_ptr(psa_aead_set_nonce_fake.arg1_val, iv_direct,
261223
"Invalid IV passed to psa_aead_set_nonce");
262-
zassert_equal_ptr(psa_aead_set_nonce_fake.arg2_val, sizeof(iv_direct),
224+
zassert_equal(psa_aead_set_nonce_fake.arg2_val, sizeof(iv_direct),
263225
"Invalid IV length passed to psa_aead_set_nonce");
264226
zassert_equal(psa_aead_set_nonce_fake.call_count, 1,
265227
"Invalid number of calls to psa_aead_set_nonce");
266228
zassert_equal(psa_aead_update_ad_fake.call_count, 0,
267229
"Invalid number of calls to psa_aead_update_ad");
268230
zassert_equal(psa_aead_abort_fake.call_count, 1,
269231
"Invalid number of calls to psa_aead_abort");
270-
zassert_equal(dec_sink.ctx, NULL,
232+
zassert_equal_ptr(dec_sink.ctx, NULL,
271233
"Invalid dec_sink.ctx value");
272234
}
273235

274236
ZTEST_F(suit_decrypt_filter_tests, test_decryption_update_ad_fail)
275237
{
276-
struct stream_sink ram_sink = {0};
277-
uint8_t cek_key_id_cbor[] = {
278-
0x1A, 0x00, 0x00, 0x00, 0x00,
279-
};
238+
struct suit_encryption_info enc_info = ENC_INFO_DEFAULT_INIT;
280239

281-
get_cbor_key_id(KEY_ID_FWENC_APPLICATION_GEN1, cek_key_id_cbor, sizeof(cek_key_id_cbor));
282-
283-
struct suit_encryption_info enc_info = {
284-
.enc_alg_id = suit_cose_aes256_gcm,
285-
.IV = {
286-
.value = iv_direct,
287-
.len = sizeof(iv_direct),
288-
},
289-
.aad = {
290-
.value = aad,
291-
.len = strlen(aad),
292-
},
293-
.kw_alg_id = suit_cose_direct,
294-
.kw_key.direct = {.key_id = {.value = cek_key_id_cbor,
295-
.len = sizeof(cek_key_id_cbor)},}
296-
};
297-
298-
ram_sink.write = write_ram;
299240
suit_mci_fw_encryption_key_id_validate_fake.return_val = SUIT_PLAT_SUCCESS;
300241
suit_plat_decode_key_id_fake.return_val = SUIT_PLAT_SUCCESS;
301242
psa_aead_decrypt_setup_fake.return_val = PSA_SUCCESS;
@@ -306,56 +247,34 @@ ZTEST_F(suit_decrypt_filter_tests, test_decryption_update_ad_fail)
306247
zassert_equal(err, SUIT_PLAT_ERR_CRASH,
307248
"Incorrect error code when getting decrypt filter");
308249

309-
zassert_equal_ptr(suit_mci_fw_encryption_key_id_validate_fake.call_count, 1,
250+
zassert_equal(suit_mci_fw_encryption_key_id_validate_fake.call_count, 1,
310251
"Invalid number of calls to suit_mci_fw_encryption_key_id_validate");
311252
zassert_equal_ptr(suit_mci_fw_encryption_key_id_validate_fake.arg0_val, &sample_class_id,
312253
"Invalid class ID passed to suit_mci_fw_encryption_key_id_validate");
313254
zassert_equal(psa_aead_decrypt_setup_fake.call_count, 1,
314255
"Invalid number of calls to psa_aead_decrypt_setup");
315256
zassert_equal_ptr(psa_aead_set_nonce_fake.arg1_val, iv_direct,
316257
"Invalid IV passed to psa_aead_set_nonce");
317-
zassert_equal_ptr(psa_aead_set_nonce_fake.arg2_val, sizeof(iv_direct),
258+
zassert_equal(psa_aead_set_nonce_fake.arg2_val, sizeof(iv_direct),
318259
"Invalid IV length passed to psa_aead_set_nonce");
319260
zassert_equal(psa_aead_set_nonce_fake.call_count, 1,
320261
"Invalid number of calls to psa_aead_set_nonce");
321262
zassert_equal(psa_aead_update_ad_fake.call_count, 1,
322263
"Invalid number of calls to psa_aead_update_ad");
323264
zassert_equal_ptr(psa_aead_update_ad_fake.arg1_val, aad,
324265
"Invalid ad passed to psa_aead_update_ad");
325-
zassert_equal_ptr(psa_aead_update_ad_fake.arg2_val, strlen(aad),
266+
zassert_equal(psa_aead_update_ad_fake.arg2_val, strlen(aad),
326267
"Invalid ad length passed to psa_aead_update_ad");
327268
zassert_equal(psa_aead_abort_fake.call_count, 1,
328269
"Invalid number of calls to psa_aead_abort");
329-
zassert_equal(dec_sink.ctx, NULL,
270+
zassert_equal_ptr(dec_sink.ctx, NULL,
330271
"Invalid dec_sink.ctx value");
331272
}
332273

333274
ZTEST_F(suit_decrypt_filter_tests, test_filter_get_happy_path)
334275
{
335-
struct stream_sink ram_sink = {0};
336-
uint8_t cek_key_id_cbor[] = {
337-
0x1A, 0x00, 0x00, 0x00, 0x00,
338-
};
276+
struct suit_encryption_info enc_info = ENC_INFO_DEFAULT_INIT;
339277

340-
get_cbor_key_id(KEY_ID_FWENC_APPLICATION_GEN1, cek_key_id_cbor, sizeof(cek_key_id_cbor));
341-
342-
struct suit_encryption_info enc_info = {
343-
.enc_alg_id = suit_cose_aes256_gcm,
344-
.IV = {
345-
.value = iv_direct,
346-
.len = sizeof(iv_direct),
347-
},
348-
.aad = {
349-
.value = aad,
350-
.len = strlen(aad),
351-
},
352-
.kw_alg_id = suit_cose_direct,
353-
.kw_key.direct = {.key_id = {.value = cek_key_id_cbor,
354-
.len = sizeof(cek_key_id_cbor)},}
355-
};
356-
357-
ram_sink.write = write_ram;
358-
ram_sink.used_storage = used_storage;
359278
suit_mci_fw_encryption_key_id_validate_fake.return_val = SUIT_PLAT_SUCCESS;
360279
suit_plat_decode_key_id_fake.return_val = SUIT_PLAT_SUCCESS;
361280
psa_aead_decrypt_setup_fake.return_val = PSA_SUCCESS;
@@ -366,23 +285,23 @@ ZTEST_F(suit_decrypt_filter_tests, test_filter_get_happy_path)
366285
zassert_equal(err, SUIT_PLAT_SUCCESS,
367286
"Incorrect error code when getting decrypt filter");
368287

369-
zassert_equal_ptr(suit_mci_fw_encryption_key_id_validate_fake.call_count, 1,
288+
zassert_equal(suit_mci_fw_encryption_key_id_validate_fake.call_count, 1,
370289
"Invalid number of calls to suit_mci_fw_encryption_key_id_validate");
371290
zassert_equal_ptr(suit_mci_fw_encryption_key_id_validate_fake.arg0_val, &sample_class_id,
372291
"Invalid class ID passed to suit_mci_fw_encryption_key_id_validate");
373292
zassert_equal(psa_aead_decrypt_setup_fake.call_count, 1,
374293
"Invalid number of calls to psa_aead_decrypt_setup");
375294
zassert_equal_ptr(psa_aead_set_nonce_fake.arg1_val, iv_direct,
376295
"Invalid IV passed to psa_aead_set_nonce");
377-
zassert_equal_ptr(psa_aead_set_nonce_fake.arg2_val, sizeof(iv_direct),
296+
zassert_equal(psa_aead_set_nonce_fake.arg2_val, sizeof(iv_direct),
378297
"Invalid IV length passed to psa_aead_set_nonce");
379298
zassert_equal(psa_aead_set_nonce_fake.call_count, 1,
380299
"Invalid number of calls to psa_aead_set_nonce");
381300
zassert_equal(psa_aead_update_ad_fake.call_count, 1,
382301
"Invalid number of calls to psa_aead_update_ad");
383302
zassert_equal_ptr(psa_aead_update_ad_fake.arg1_val, aad,
384303
"Invalid ad passed to psa_aead_update_ad");
385-
zassert_equal_ptr(psa_aead_update_ad_fake.arg2_val, strlen(aad),
304+
zassert_equal(psa_aead_update_ad_fake.arg2_val, strlen(aad),
386305
"Invalid ad length passed to psa_aead_update_ad");
387306
zassert_equal(psa_aead_abort_fake.call_count, 0,
388307
"Invalid number of calls to psa_aead_abort");

0 commit comments

Comments
 (0)