8 #include "dt/dt_kmac.h"
18 #include "sw/device/lib/testing/keymgr_dpe_testutils.h"
19 #include "sw/device/lib/testing/rstmgr_testutils.h"
20 #include "sw/device/lib/testing/test_framework/check.h"
23 OTTF_DEFINE_TEST_CONFIG();
25 static void init_kmac_for_keymgr(
void) {
27 CHECK_DIF_OK(dif_kmac_init_from_dt(kDtKmac, &kmac));
32 .entropy_fast_process =
false,
33 .entropy_seed = {0xaa25b4bf, 0x48ce8fff, 0x5a78282a, 0x48465647,
43 void advance(dif_keymgr_dpe_t *keymgr_dpe,
45 CHECK_STATUS_OK(keymgr_dpe_testutils_advance_state(keymgr_dpe, params));
46 CHECK_STATUS_OK(keymgr_dpe_testutils_check_state(
47 keymgr_dpe, kDifKeymgrDpeStateAvailable));
48 CHECK_STATUS_OK(keymgr_dpe_testutils_wait_for_operation_done(keymgr_dpe));
53 void generate(dif_keymgr_dpe_t *keymgr_dpe,
56 CHECK_STATUS_OK(keymgr_dpe_testutils_wait_for_operation_done(keymgr_dpe));
60 dif_keymgr_dpe_t keymgr_dpe;
65 CHECK_STATUS_OK(keymgr_dpe_testutils_startup(&keymgr_dpe,
67 CHECK_STATUS_OK(keymgr_dpe_testutils_check_state(
68 &keymgr_dpe, kDifKeymgrDpeStateAvailable));
69 LOG_INFO(
"KeymgrDpe derived boot stage 0 key");
71 init_kmac_for_keymgr();
78 gen_params.
salt[7] = 0x49379059;
79 gen_params.
salt[6] = 0xff523992;
80 gen_params.
salt[5] = 0x75666880;
81 gen_params.
salt[4] = 0xc0e44716;
82 gen_params.
salt[3] = 0x999612df;
83 gen_params.
salt[2] = 0x80f1a9de;
84 gen_params.
salt[1] = 0x481eae40;
85 gen_params.
salt[0] = 0x45e2c7f0;
86 generate(&keymgr_dpe, &gen_params);
87 LOG_INFO(
"KeymgrDpe generated OTBN output from boot stage 0");
94 gen_params.
salt[7] = 0x72d5886b;
95 gen_params.
salt[6] = 0x4e359e52;
96 gen_params.
salt[5] = 0x0d7ff336;
97 gen_params.
salt[4] = 0x267773cf;
98 gen_params.
salt[3] = 0x00c7d10c;
99 gen_params.
salt[2] = 0x6dea4fb9;
100 gen_params.
salt[1] = 0x77fa328a;
101 gen_params.
salt[0] = 0x15779805;
102 generate(&keymgr_dpe, &gen_params);
103 LOG_INFO(
"KeymgrDpe generated SW output from boot stage 0");
110 gen_params.
salt[7] = 0x78ad5715;
111 gen_params.
salt[6] = 0x508680d4;
112 gen_params.
salt[5] = 0xc7f825b2;
113 gen_params.
salt[4] = 0xa7924b8d;
114 gen_params.
salt[3] = 0x0906825f;
115 gen_params.
salt[2] = 0x77cf81a3;
116 gen_params.
salt[1] = 0xd63d89bd;
117 gen_params.
salt[0] = 0x88fd3697;
118 generate(&keymgr_dpe, &gen_params);
119 LOG_INFO(
"KeymgrDpe generated KMAC output from boot stage 0");
126 gen_params.
salt[7] = 0x945642d9;
127 gen_params.
salt[6] = 0xfbcbc925;
128 gen_params.
salt[5] = 0xdb7b0691;
129 gen_params.
salt[4] = 0xcd973f4d;
130 gen_params.
salt[3] = 0x278e051d;
131 gen_params.
salt[2] = 0x0d9f1f0d;
132 gen_params.
salt[1] = 0x45eff95b;
133 gen_params.
salt[0] = 0xb1ad6ba7;
134 generate(&keymgr_dpe, &gen_params);
135 LOG_INFO(
"KeymgrDpe generated AES output from boot stage 0");
152 advance(&keymgr_dpe, &adv_params);
153 LOG_INFO(
"KeymgrDpe derived boot stage 1 key");
160 gen_params.
salt[7] = 0x6b21d5da;
161 gen_params.
salt[6] = 0x929ea4f4;
162 gen_params.
salt[5] = 0xeb06038b;
163 gen_params.
salt[4] = 0xcecba4ea;
164 gen_params.
salt[3] = 0x8c8e756a;
165 gen_params.
salt[2] = 0x26691553;
166 gen_params.
salt[1] = 0x7189202b;
167 gen_params.
salt[0] = 0x5e560c86;
168 generate(&keymgr_dpe, &gen_params);
169 LOG_INFO(
"KeymgrDpe generated KMAC output from boot stage 1");
176 gen_params.
salt[7] = 0xcd887c60;
177 gen_params.
salt[6] = 0xcc40f919;
178 gen_params.
salt[5] = 0xdd2972b7;
179 gen_params.
salt[4] = 0x09cdc35f;
180 gen_params.
salt[3] = 0x3a10980c;
181 gen_params.
salt[2] = 0x4b38fdec;
182 gen_params.
salt[1] = 0x3d56d980;
183 gen_params.
salt[0] = 0x25314e07;
184 generate(&keymgr_dpe, &gen_params);
185 LOG_INFO(
"KeymgrDpe generated AES output from boot stage 1");
192 gen_params.
salt[7] = 0x72d5886b;
193 gen_params.
salt[6] = 0x4e359e52;
194 gen_params.
salt[5] = 0x0d7ff336;
195 gen_params.
salt[4] = 0x267773cf;
196 gen_params.
salt[3] = 0x00c7d10c;
197 gen_params.
salt[2] = 0x6dea4fb9;
198 gen_params.
salt[1] = 0x77fa328a;
199 gen_params.
salt[0] = 0x15779805;
200 generate(&keymgr_dpe, &gen_params);
201 LOG_INFO(
"KeymgrDpe generated SW output from boot stage 1");
208 gen_params.
salt[7] = 0x564712d4;
209 gen_params.
salt[6] = 0x7ab745f5;
210 gen_params.
salt[5] = 0x5fa8faa9;
211 gen_params.
salt[4] = 0x77fce728;
212 gen_params.
salt[3] = 0xffa3fd3c;
213 gen_params.
salt[2] = 0x876930f2;
214 gen_params.
salt[1] = 0x593b54d4;
215 gen_params.
salt[0] = 0xa75e231b;
216 generate(&keymgr_dpe, &gen_params);
217 LOG_INFO(
"KeymgrDpe generated OTBN output from boot stage 1");
229 advance(&keymgr_dpe, &adv_params);
230 LOG_INFO(
"KeymgrDpe derived boot stage 2 key");
237 gen_params.
salt[7] = 0xe1b3f29c;
238 gen_params.
salt[6] = 0xa3bc4d2a;
239 gen_params.
salt[5] = 0x458fdc76;
240 gen_params.
salt[4] = 0x1b1c0c2e;
241 gen_params.
salt[3] = 0x1a128785;
242 gen_params.
salt[2] = 0x69ce2d2f;
243 gen_params.
salt[1] = 0x8a60fd60;
244 gen_params.
salt[0] = 0x5307745c;
245 generate(&keymgr_dpe, &gen_params);
246 LOG_INFO(
"KeymgrDpe generated SW output from boot stage 2");
250 for (
size_t i = 0; i <
ARRAYSIZE(key.value); i++) {
251 for (
size_t j = 0; j <
ARRAYSIZE(key.value[0]); j++) {
261 gen_params.
salt[7] = 0x0f20f37e;
262 gen_params.
salt[6] = 0xb951b619;
263 gen_params.
salt[5] = 0xcb815e8d;
264 gen_params.
salt[4] = 0x77e17fa4;
265 gen_params.
salt[3] = 0x3074e3db;
266 gen_params.
salt[2] = 0xe7482b04;
267 gen_params.
salt[1] = 0xed12d4ee;
268 gen_params.
salt[0] = 0xa34fba3c;
269 generate(&keymgr_dpe, &gen_params);
270 LOG_INFO(
"KeymgrDpe generated AES output from boot stage 2");
277 gen_params.
salt[7] = 0xb31031a3;
278 gen_params.
salt[6] = 0x59fe6e8e;
279 gen_params.
salt[5] = 0x4171de6b;
280 gen_params.
salt[4] = 0xa3f3d397;
281 gen_params.
salt[3] = 0x7bb7800b;
282 gen_params.
salt[2] = 0x8f8f8cda;
283 gen_params.
salt[1] = 0xb697609d;
284 gen_params.
salt[0] = 0x122eb3b7;
285 generate(&keymgr_dpe, &gen_params);
286 LOG_INFO(
"KeymgrDpe generated KMAC output from boot stage 2");
293 gen_params.
salt[7] = 0x3f184f9b;
294 gen_params.
salt[6] = 0xd4af6765;
295 gen_params.
salt[5] = 0x8abeb221;
296 gen_params.
salt[4] = 0xaae3ca52;
297 gen_params.
salt[3] = 0x29f7114f;
298 gen_params.
salt[2] = 0xf5bf3e01;
299 gen_params.
salt[1] = 0x6a961bc2;
300 gen_params.
salt[0] = 0xec932d64;
301 generate(&keymgr_dpe, &gen_params);
302 LOG_INFO(
"KeymgrDpe generated OTBN output from boot stage 2");
315 advance(&keymgr_dpe, &adv_params);
316 LOG_INFO(
"KeymgrDpe derived boot stage 3 key");
323 gen_params.
salt[7] = 0x30059d96;
324 gen_params.
salt[6] = 0x97436d9c;
325 gen_params.
salt[5] = 0xf539a20a;
326 gen_params.
salt[4] = 0x6838564e;
327 gen_params.
salt[3] = 0x74ad4bb7;
328 gen_params.
salt[2] = 0x78000277;
329 gen_params.
salt[1] = 0x423025af;
330 gen_params.
salt[0] = 0x732e53a9;
331 generate(&keymgr_dpe, &gen_params);
332 LOG_INFO(
"KeymgrDpe generated AES output from boot stage 3");
339 gen_params.
salt[7] = 0x2cd82d66;
340 gen_params.
salt[6] = 0x24275e98;
341 gen_params.
salt[5] = 0xe0344ab2;
342 gen_params.
salt[4] = 0xc048d59e;
343 gen_params.
salt[3] = 0x139694c3;
344 gen_params.
salt[2] = 0x0043f9b4;
345 gen_params.
salt[1] = 0x413a2212;
346 gen_params.
salt[0] = 0xc2dcfbc8;
347 generate(&keymgr_dpe, &gen_params);
348 LOG_INFO(
"KeymgrDpe generated OTBN output from boot stage 3");
355 gen_params.
salt[7] = 0x23c20696;
356 gen_params.
salt[6] = 0xebaf62f0;
357 gen_params.
salt[5] = 0xa2ff413f;
358 gen_params.
salt[4] = 0x22d65603;
359 gen_params.
salt[3] = 0x91155c24;
360 gen_params.
salt[2] = 0xda1269fc;
361 gen_params.
salt[1] = 0xc8611986;
362 gen_params.
salt[0] = 0xf129041f;
363 generate(&keymgr_dpe, &gen_params);
364 LOG_INFO(
"KeymgrDpe generated SW output from boot stage 3");
371 gen_params.
salt[7] = 0x06896da3;
372 gen_params.
salt[6] = 0x9ce2c0da;
373 gen_params.
salt[5] = 0xaa23a965;
374 gen_params.
salt[4] = 0x108e57ca;
375 gen_params.
salt[3] = 0xd926d474;
376 gen_params.
salt[2] = 0xb6ae40fc;
377 gen_params.
salt[1] = 0xa65d1375;
378 gen_params.
salt[0] = 0x6ee7be64;
379 generate(&keymgr_dpe, &gen_params);
380 LOG_INFO(
"KeymgrDpe generated KMAC output from boot stage 3");
388 gen_params.
salt[7] = 0x2488d617;
389 gen_params.
salt[6] = 0x99227306;
390 gen_params.
salt[5] = 0xcd789bc0;
391 gen_params.
salt[4] = 0x9787039b;
392 gen_params.
salt[3] = 0x9869544a;
393 gen_params.
salt[2] = 0xb28b9fc7;
394 gen_params.
salt[1] = 0x69ab6f9d;
395 gen_params.
salt[0] = 0xfb11f188;
396 generate(&keymgr_dpe, &gen_params);
397 LOG_INFO(
"KeymgrDpe generated SW output from boot stage 1");
402 gen_params.
salt[7] = 0xfa94162c;
403 gen_params.
salt[6] = 0xd039a40f;
404 gen_params.
salt[5] = 0xc2b81d98;
405 gen_params.
salt[4] = 0x999ce18d;
406 gen_params.
salt[3] = 0xbf8fb838;
407 gen_params.
salt[2] = 0x589544ce;
408 gen_params.
salt[1] = 0xee7790c4;
409 gen_params.
salt[0] = 0x0de6bdcf;
410 generate(&keymgr_dpe, &gen_params);
411 LOG_INFO(
"KeymgrDpe generated OTBN output from boot stage 2");