@@ -26,22 +26,35 @@ BOOT_LOG_MODULE_REGISTER(ed25519_psa);
26
26
#if defined(CONFIG_BOOT_SIGNATURE_USING_KMU )
27
27
/* List of KMU stored key ids available for MCUboot */
28
28
#define MAKE_PSA_KMU_KEY_ID (id ) PSA_KEY_HANDLE_FROM_CRACEN_KMU_SLOT(CRACEN_KMU_KEY_USAGE_SCHEME_RAW, id)
29
- static psa_key_id_t kmu_key_ids [ 3 ] = {
29
+ static psa_key_id_t key_ids [ ] = {
30
30
MAKE_PSA_KMU_KEY_ID (226 ),
31
31
MAKE_PSA_KMU_KEY_ID (228 ),
32
32
MAKE_PSA_KMU_KEY_ID (230 )
33
33
};
34
34
35
+ #define KEY_SLOTS_COUNT CONFIG_BOOT_SIGNATURE_KMU_SLOTS
36
+
35
37
#if defined(CONFIG_BOOT_KMU_KEYS_REVOCATION )
36
38
#include <bootutil/key_revocation.h>
37
39
static psa_key_id_t * validated_with = NULL ;
38
40
#endif
39
41
40
- BUILD_ASSERT (CONFIG_BOOT_SIGNATURE_KMU_SLOTS <= ARRAY_SIZE (kmu_key_ids ),
42
+ BUILD_ASSERT (CONFIG_BOOT_SIGNATURE_KMU_SLOTS <= ARRAY_SIZE (key_ids ),
41
43
"Invalid number of KMU slots, up to 3 are supported on nRF54L15" );
42
44
#endif
43
45
44
- #if !defined(CONFIG_BOOT_SIGNATURE_USING_KMU )
46
+ #if defined(CONFIG_NCS_BOOT_SIGNATURE_USING_ITS )
47
+ static const psa_key_id_t key_ids [] = {
48
+ 0x40022100 ,
49
+ 0x40022101 ,
50
+ 0x40022102 ,
51
+ 0x40022103
52
+ };
53
+
54
+ #define KEY_SLOTS_COUNT ARRAY_SIZE(key_ids)
55
+ #endif
56
+
57
+ #if !defined(CONFIG_BOOT_SIGNATURE_USING_KMU ) && !defined(CONFIG_NCS_BOOT_SIGNATURE_USING_ITS )
45
58
int ED25519_verify (const uint8_t * message , size_t message_len ,
46
59
const uint8_t signature [EDDSA_SIGNAGURE_LENGTH ],
47
60
const uint8_t public_key [EDDSA_KEY_LENGTH ])
@@ -102,7 +115,6 @@ int ED25519_verify(const uint8_t *message, size_t message_len,
102
115
ARG_UNUSED (public_key );
103
116
/* Set to any error */
104
117
psa_status_t status = PSA_ERROR_BAD_STATE ;
105
- int ret = 0 ; /* Fail by default */
106
118
107
119
/* Initialize PSA Crypto */
108
120
status = psa_crypto_init ();
@@ -113,24 +125,24 @@ int ED25519_verify(const uint8_t *message, size_t message_len,
113
125
114
126
status = PSA_ERROR_BAD_STATE ;
115
127
116
- for (int i = 0 ; i < CONFIG_BOOT_SIGNATURE_KMU_SLOTS ; ++ i ) {
117
- psa_key_id_t kid = kmu_key_ids [i ];
128
+ for (int i = 0 ; i < KEY_SLOTS_COUNT ; ++ i ) {
129
+ psa_key_id_t kid = key_ids [i ];
118
130
119
131
status = psa_verify_message (kid , PSA_ALG_PURE_EDDSA , message ,
120
132
message_len , signature ,
121
133
EDDSA_SIGNAGURE_LENGTH );
122
134
if (status == PSA_SUCCESS ) {
123
- ret = 1 ;
124
135
#if defined(CONFIG_BOOT_KMU_KEYS_REVOCATION )
125
- validated_with = kmu_key_ids + i ;
136
+ validated_with = key_ids + i ;
126
137
#endif
127
- break ;
138
+ return 1 ;
128
139
}
129
140
130
- BOOT_LOG_ERR ("ED25519 signature verification failed %d" , status );
131
141
}
132
142
133
- return ret ;
143
+ BOOT_LOG_ERR ("ED25519 signature verification failed %d" , status );
144
+
145
+ return 0 ;
134
146
}
135
147
#if defined(CONFIG_BOOT_KMU_KEYS_REVOCATION )
136
148
int exec_revoke (void )
@@ -149,12 +161,12 @@ int exec_revoke(void)
149
161
goto out ;
150
162
}
151
163
for (int i = 0 ; i < CONFIG_BOOT_SIGNATURE_KMU_SLOTS ; i ++ ) {
152
- if ((kmu_key_ids + i ) == validated_with ) {
164
+ if ((key_ids + i ) == validated_with ) {
153
165
break ;
154
166
}
155
167
BOOT_LOG_DBG ("Invalidating key ID %d" , i );
156
168
157
- status = psa_destroy_key (kmu_key_ids [i ]);
169
+ status = psa_destroy_key (key_ids [i ]);
158
170
if (status == PSA_SUCCESS ) {
159
171
BOOT_LOG_DBG ("Success on key ID %d" , i );
160
172
} else {
0 commit comments