File tree Expand file tree Collapse file tree 3 files changed +48
-0
lines changed Expand file tree Collapse file tree 3 files changed +48
-0
lines changed Original file line number Diff line number Diff line change @@ -165,4 +165,34 @@ int exec_revoke(void)
165
165
return ret ;
166
166
}
167
167
#endif /* CONFIG_BOOT_KMU_KEYS_REVOCATION */
168
+
169
+ void nrf_crypto_keys_housekeeping (void )
170
+ {
171
+ psa_status_t status = psa_crypto_init ();
172
+
173
+ if (status != PSA_SUCCESS ) {
174
+ BOOT_LOG_ERR ("PSA crypto init failed with error %d" , status );
175
+ return ;
176
+ }
177
+
178
+ status = PSA_ERROR_NOT_SUPPORTED ;
179
+
180
+ /* We will continue through all keys, even if we have error while
181
+ * processing any of it. Only doing BOOT_LOG_DBG, as we do not
182
+ * really want to inform on failures to lock.
183
+ */
184
+ for (int i = 0 ; i < CONFIG_BOOT_SIGNATURE_KMU_SLOTS ; ++ i ) {
185
+ psa_key_attributes_t attr ;
186
+
187
+ status = psa_get_key_attributes (kmu_key_ids [i ], & attr );
188
+ BOOT_LOG_DBG ("KMU key 0x%x(%d) attr query status == %d" ,
189
+ kmu_key_ids [i ], i , status );
190
+
191
+ if (status == PSA_SUCCESS ) {
192
+ status = cracen_kmu_block (& attr );
193
+ BOOT_LOG_DBG ("KMU key lock status == %d" , status );
194
+ }
195
+ }
196
+ }
197
+
168
198
#endif
Original file line number Diff line number Diff line change @@ -21,4 +21,15 @@ void nrf_cleanup_peripheral(void);
21
21
*/
22
22
void nrf_cleanup_ns_ram (void );
23
23
24
+ /**
25
+ * Crypto key storage housekeeping. Intended to cleanup key objects from
26
+ * crypto backend and apply key policies that should take effect after
27
+ * MCUboot no longer needs access to keys.
28
+ */
29
+ #if defined(CONFIG_BOOT_SIGNATURE_USING_KMU )
30
+ extern void nrf_crypto_keys_housekeeping (void );
31
+ #else
32
+ #define nrf_crypto_keys_housekeeping () do {} while (0)
33
+ #endif
34
+
24
35
#endif
Original file line number Diff line number Diff line change @@ -648,6 +648,13 @@ int main(void)
648
648
649
649
mcuboot_status_change (MCUBOOT_STATUS_BOOTABLE_IMAGE_FOUND );
650
650
651
+ /* From this point MCUboot does not need access to crypto keys.
652
+ * Cleanup backend key objects and apply key access policies that
653
+ * will take effect from now through entire boot session and application
654
+ * run.
655
+ */
656
+ nrf_crypto_keys_housekeeping ();
657
+
651
658
#if USE_PARTITION_MANAGER && CONFIG_FPROTECT
652
659
653
660
#ifdef PM_S1_ADDRESS
You can’t perform that action at this time.
0 commit comments