fix(boot): return signature error when no features

Always return signature error in verify_and_mark_updated when no
signature features are enabled.
This commit is contained in:
Olivier Hériveaux 2024-09-16 11:48:54 +02:00
parent 3d6a270f30
commit 8519e54461
2 changed files with 16 additions and 8 deletions

View File

@ -107,7 +107,8 @@ impl<'d, DFU: NorFlash, STATE: NorFlash> FirmwareUpdater<'d, DFU, STATE> {
let mut message = [0; 64]; let mut message = [0; 64];
self.hash::<Sha512>(_update_len, &mut chunk_buf, &mut message).await?; self.hash::<Sha512>(_update_len, &mut chunk_buf, &mut message).await?;
public_key.verify(&message, &signature).map_err(into_signature_error)? public_key.verify(&message, &signature).map_err(into_signature_error)?;
return self.state.mark_updated().await;
} }
#[cfg(feature = "ed25519-salty")] #[cfg(feature = "ed25519-salty")]
{ {
@ -134,10 +135,13 @@ impl<'d, DFU: NorFlash, STATE: NorFlash> FirmwareUpdater<'d, DFU, STATE> {
message, message,
r.is_ok() r.is_ok()
); );
r.map_err(into_signature_error)? r.map_err(into_signature_error)?;
return self.state.mark_updated().await;
}
#[cfg(not(any(feature = "ed25519-dalek", feature = "ed25519-salty")))]
{
Err(FirmwareUpdaterError::Signature(signature::Error::new()))
} }
self.state.mark_updated().await
} }
/// Verify the update in DFU with any digest. /// Verify the update in DFU with any digest.

View File

@ -142,7 +142,8 @@ impl<'d, DFU: NorFlash, STATE: NorFlash> BlockingFirmwareUpdater<'d, DFU, STATE>
let mut chunk_buf = [0; 2]; let mut chunk_buf = [0; 2];
self.hash::<Sha512>(_update_len, &mut chunk_buf, &mut message)?; self.hash::<Sha512>(_update_len, &mut chunk_buf, &mut message)?;
public_key.verify(&message, &signature).map_err(into_signature_error)? public_key.verify(&message, &signature).map_err(into_signature_error)?;
return self.state.mark_updated();
} }
#[cfg(feature = "ed25519-salty")] #[cfg(feature = "ed25519-salty")]
{ {
@ -169,10 +170,13 @@ impl<'d, DFU: NorFlash, STATE: NorFlash> BlockingFirmwareUpdater<'d, DFU, STATE>
message, message,
r.is_ok() r.is_ok()
); );
r.map_err(into_signature_error)? r.map_err(into_signature_error)?;
return self.state.mark_updated();
}
#[cfg(not(any(feature = "ed25519-dalek", feature = "ed25519-salty")))]
{
Err(FirmwareUpdaterError::Signature(signature::Error::new()))
} }
self.state.mark_updated()
} }
/// Verify the update in DFU with any digest. /// Verify the update in DFU with any digest.