Skip to content

Commit a47ab77

Browse files
[manuf] consolidate cert flash page erase ops
This cleans up the personalization binary by consolidating the erasing of the certificate flash info pages before they are written. Signed-off-by: Tim Trippel <[email protected]>
1 parent 12f04e3 commit a47ab77

File tree

1 file changed

+9
-16
lines changed

1 file changed

+9
-16
lines changed

sw/device/silicon_creator/manuf/skus/earlgrey_a0/sival_bringup/ft_personalize.c

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ static void sw_reset(void) {
126126
/**
127127
* Configures flash info pages to store device certificates.
128128
*/
129-
static status_t config_certificate_flash_pages(void) {
129+
static status_t config_and_erase_certificate_flash_pages(void) {
130130
const flash_ctrl_info_page_t *kCertFlashInfoPages[] = {
131131
&kFlashCtrlInfoPageUdsCertificate,
132132
&kFlashCtrlInfoPageCdi0Certificate,
@@ -137,6 +137,12 @@ static status_t config_certificate_flash_pages(void) {
137137
flash_ctrl_info_perms_set(kCertFlashInfoPages[i],
138138
kCertificateFlashInfoPerms);
139139
}
140+
TRY(flash_ctrl_info_erase(&kFlashCtrlInfoPageUdsCertificate,
141+
kFlashCtrlEraseTypePage));
142+
TRY(flash_ctrl_info_erase(&kFlashCtrlInfoPageCdi0Certificate,
143+
kFlashCtrlEraseTypePage));
144+
TRY(flash_ctrl_info_erase(&kFlashCtrlInfoPageCdi1Certificate,
145+
kFlashCtrlEraseTypePage));
140146
return OK_STATUS();
141147
}
142148

@@ -211,7 +217,7 @@ static status_t personalize_dice_certificates(ujson_t *uj) {
211217
TRY(ujson_deserialize_manuf_certgen_inputs_t(uj, &certgen_inputs));
212218

213219
// Configure certificate flash info page permissions.
214-
TRY(config_certificate_flash_pages());
220+
TRY(config_and_erase_certificate_flash_pages());
215221

216222
// Initialize entropy complex / KMAC for key manager operations.
217223
TRY(entropy_complex_init());
@@ -232,14 +238,7 @@ static status_t personalize_dice_certificates(ujson_t *uj) {
232238
TRY(dice_uds_cert_build(&certgen_inputs, &uds_pubkey_id,
233239
dice_certs.uds_tbs_certificate,
234240
&dice_certs.uds_tbs_certificate_size));
235-
TRY(flash_ctrl_info_erase(&kFlashCtrlInfoPageUdsCertificate,
236-
kFlashCtrlEraseTypePage));
237-
TRY(flash_ctrl_info_write(
238-
&kFlashCtrlInfoPageUdsCertificate,
239-
kFlashInfoFieldUdsCertificate.byte_offset,
240-
dice_certs.uds_tbs_certificate_size / sizeof(uint32_t),
241-
dice_certs.uds_tbs_certificate));
242-
LOG_INFO("Generated UDS certificate.");
241+
LOG_INFO("Generated UDS TBS certificate.");
243242

244243
// Generate CDI_0 keys and cert.
245244
compute_keymgr_owner_int_binding(&certgen_inputs);
@@ -249,8 +248,6 @@ static status_t personalize_dice_certificates(ujson_t *uj) {
249248
TRY(dice_cdi_0_cert_build(&certgen_inputs, &uds_pubkey_id, &cdi_0_pubkey_id,
250249
dice_certs.cdi_0_certificate,
251250
&dice_certs.cdi_0_certificate_size));
252-
TRY(flash_ctrl_info_erase(&kFlashCtrlInfoPageCdi0Certificate,
253-
kFlashCtrlEraseTypePage));
254251
TRY(flash_ctrl_info_write(
255252
&kFlashCtrlInfoPageCdi0Certificate,
256253
kFlashInfoFieldCdi0Certificate.byte_offset,
@@ -266,8 +263,6 @@ static status_t personalize_dice_certificates(ujson_t *uj) {
266263
TRY(dice_cdi_1_cert_build(&certgen_inputs, &cdi_0_pubkey_id,
267264
dice_certs.cdi_1_certificate,
268265
&dice_certs.cdi_1_certificate_size));
269-
TRY(flash_ctrl_info_erase(&kFlashCtrlInfoPageCdi1Certificate,
270-
kFlashCtrlEraseTypePage));
271266
TRY(flash_ctrl_info_write(
272267
&kFlashCtrlInfoPageCdi1Certificate,
273268
kFlashInfoFieldCdi1Certificate.byte_offset,
@@ -284,8 +279,6 @@ static status_t personalize_dice_certificates(ujson_t *uj) {
284279
TRY(ujson_deserialize_manuf_endorsed_certs_t(uj, &endorsed_certs));
285280

286281
// Write the endorsed UDS certificate to flash and ack to host.
287-
TRY(flash_ctrl_info_erase(&kFlashCtrlInfoPageUdsCertificate,
288-
kFlashCtrlEraseTypePage));
289282
TRY(flash_ctrl_info_write(
290283
&kFlashCtrlInfoPageUdsCertificate,
291284
kFlashInfoFieldUdsCertificate.byte_offset,

0 commit comments

Comments
 (0)