-
Notifications
You must be signed in to change notification settings - Fork 789
Description
Original comments (from #2022):
I am fine with the changes. I think that we should have some rework here because the code for key decoding keeps repeating in one form or another.
Could you elaborate on this? Do you mean the:
bootutil_rsa_oaep_decrypt
,key_unwrap
,parse_ec256_enckey
parse_x25519_enckey
,
functions?
Yes. Since only one type of encryption is used at once, we could define some key processing API that will link same name functions, but processing different keys, depending on what algorithm is selected. This can be later extended to take MCUboot identifier for key, if we decide to support more than one alg at once.
In the end the key ends in enckey buffer anyway, in byte string form.
Which is actually a problem also: I am currently working on making the x25519 to work with PSA and have found out that the best way would be to load key to PSA storage and use key id there, this requires change in key type, as passed in boot_status.
We also lack boot_enc_ type function for key destruction.
We also lack boot_enc_ type function for key destruction.
I believe it was not needed before as the key-encryption key is embedded as static data and the encryption key was simply decrypted from the TLV are into the boot_status struct. But it's different with PSA as you want to destroy the imported key after it's no longer needed. Correct?
Yes. Since only one type of encryption is used at once, we could define some key processing API that will link same name functions, but processing different keys, depending on what algorithm is selected.
I believe the boot_enc_load() > boot_decrypt_key() serve this purpose. boot_decrypt_key() acts as the key processing API with the difference that it's not implemented separately for the different algorithms but it's put together with the ifdef tsunami.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status