diff options
| author | Olivier Hériveaux <[email protected]> | 2024-09-16 11:48:54 +0200 |
|---|---|---|
| committer | Olivier Hériveaux <[email protected]> | 2024-09-16 11:54:40 +0200 |
| commit | 8519e54461b8d3c3c2a97c88823498c878187ba4 (patch) | |
| tree | 9c09356e32c4e75736da74e26adfd99a51c5035c | |
| parent | 3d6a270f30c45eaf394c8eb8bf182dd1a7ec2d7b (diff) | |
fix(boot): return signature error when no features
Always return signature error in verify_and_mark_updated when no
signature features are enabled.
| -rw-r--r-- | embassy-boot/src/firmware_updater/asynch.rs | 12 | ||||
| -rw-r--r-- | embassy-boot/src/firmware_updater/blocking.rs | 12 |
2 files changed, 16 insertions, 8 deletions
diff --git a/embassy-boot/src/firmware_updater/asynch.rs b/embassy-boot/src/firmware_updater/asynch.rs index 26f65f295..86b441592 100644 --- a/embassy-boot/src/firmware_updater/asynch.rs +++ b/embassy-boot/src/firmware_updater/asynch.rs | |||
| @@ -107,7 +107,8 @@ impl<'d, DFU: NorFlash, STATE: NorFlash> FirmwareUpdater<'d, DFU, STATE> { | |||
| 107 | let mut message = [0; 64]; | 107 | let mut message = [0; 64]; |
| 108 | self.hash::<Sha512>(_update_len, &mut chunk_buf, &mut message).await?; | 108 | self.hash::<Sha512>(_update_len, &mut chunk_buf, &mut message).await?; |
| 109 | 109 | ||
| 110 | public_key.verify(&message, &signature).map_err(into_signature_error)? | 110 | public_key.verify(&message, &signature).map_err(into_signature_error)?; |
| 111 | return self.state.mark_updated().await; | ||
| 111 | } | 112 | } |
| 112 | #[cfg(feature = "ed25519-salty")] | 113 | #[cfg(feature = "ed25519-salty")] |
| 113 | { | 114 | { |
| @@ -134,10 +135,13 @@ impl<'d, DFU: NorFlash, STATE: NorFlash> FirmwareUpdater<'d, DFU, STATE> { | |||
| 134 | message, | 135 | message, |
| 135 | r.is_ok() | 136 | r.is_ok() |
| 136 | ); | 137 | ); |
| 137 | r.map_err(into_signature_error)? | 138 | r.map_err(into_signature_error)?; |
| 139 | return self.state.mark_updated().await; | ||
| 140 | } | ||
| 141 | #[cfg(not(any(feature = "ed25519-dalek", feature = "ed25519-salty")))] | ||
| 142 | { | ||
| 143 | Err(FirmwareUpdaterError::Signature(signature::Error::new())) | ||
| 138 | } | 144 | } |
| 139 | |||
| 140 | self.state.mark_updated().await | ||
| 141 | } | 145 | } |
| 142 | 146 | ||
| 143 | /// Verify the update in DFU with any digest. | 147 | /// Verify the update in DFU with any digest. |
diff --git a/embassy-boot/src/firmware_updater/blocking.rs b/embassy-boot/src/firmware_updater/blocking.rs index 35772a856..d3c723456 100644 --- a/embassy-boot/src/firmware_updater/blocking.rs +++ b/embassy-boot/src/firmware_updater/blocking.rs | |||
| @@ -142,7 +142,8 @@ impl<'d, DFU: NorFlash, STATE: NorFlash> BlockingFirmwareUpdater<'d, DFU, STATE> | |||
| 142 | let mut chunk_buf = [0; 2]; | 142 | let mut chunk_buf = [0; 2]; |
| 143 | self.hash::<Sha512>(_update_len, &mut chunk_buf, &mut message)?; | 143 | self.hash::<Sha512>(_update_len, &mut chunk_buf, &mut message)?; |
| 144 | 144 | ||
| 145 | public_key.verify(&message, &signature).map_err(into_signature_error)? | 145 | public_key.verify(&message, &signature).map_err(into_signature_error)?; |
| 146 | return self.state.mark_updated(); | ||
| 146 | } | 147 | } |
| 147 | #[cfg(feature = "ed25519-salty")] | 148 | #[cfg(feature = "ed25519-salty")] |
| 148 | { | 149 | { |
| @@ -169,10 +170,13 @@ impl<'d, DFU: NorFlash, STATE: NorFlash> BlockingFirmwareUpdater<'d, DFU, STATE> | |||
| 169 | message, | 170 | message, |
| 170 | r.is_ok() | 171 | r.is_ok() |
| 171 | ); | 172 | ); |
| 172 | r.map_err(into_signature_error)? | 173 | r.map_err(into_signature_error)?; |
| 174 | return self.state.mark_updated(); | ||
| 175 | } | ||
| 176 | #[cfg(not(any(feature = "ed25519-dalek", feature = "ed25519-salty")))] | ||
| 177 | { | ||
| 178 | Err(FirmwareUpdaterError::Signature(signature::Error::new())) | ||
| 173 | } | 179 | } |
| 174 | |||
| 175 | self.state.mark_updated() | ||
| 176 | } | 180 | } |
| 177 | 181 | ||
| 178 | /// Verify the update in DFU with any digest. | 182 | /// Verify the update in DFU with any digest. |
