diff options
Diffstat (limited to 'embassy-boot')
| -rw-r--r-- | embassy-boot/boot/src/firmware_updater.rs | 16 | ||||
| -rw-r--r-- | embassy-boot/boot/src/lib.rs | 2 |
2 files changed, 8 insertions, 10 deletions
diff --git a/embassy-boot/boot/src/firmware_updater.rs b/embassy-boot/boot/src/firmware_updater.rs index 6aedec003..a2f822f4a 100644 --- a/embassy-boot/boot/src/firmware_updater.rs +++ b/embassy-boot/boot/src/firmware_updater.rs | |||
| @@ -114,11 +114,11 @@ impl FirmwareUpdater { | |||
| 114 | _state_and_dfu_flash: &mut F, | 114 | _state_and_dfu_flash: &mut F, |
| 115 | _public_key: &[u8], | 115 | _public_key: &[u8], |
| 116 | _signature: &[u8], | 116 | _signature: &[u8], |
| 117 | _update_len: usize, | 117 | _update_len: u32, |
| 118 | _aligned: &mut [u8], | 118 | _aligned: &mut [u8], |
| 119 | ) -> Result<(), FirmwareUpdaterError> { | 119 | ) -> Result<(), FirmwareUpdaterError> { |
| 120 | assert_eq!(_aligned.len(), F::WRITE_SIZE); | 120 | assert_eq!(_aligned.len(), F::WRITE_SIZE); |
| 121 | assert!(_update_len as u32 <= self.dfu.size()); | 121 | assert!(_update_len <= self.dfu.size()); |
| 122 | 122 | ||
| 123 | #[cfg(feature = "ed25519-dalek")] | 123 | #[cfg(feature = "ed25519-dalek")] |
| 124 | { | 124 | { |
| @@ -175,11 +175,10 @@ impl FirmwareUpdater { | |||
| 175 | pub async fn hash<F: AsyncNorFlash, D: Digest>( | 175 | pub async fn hash<F: AsyncNorFlash, D: Digest>( |
| 176 | &mut self, | 176 | &mut self, |
| 177 | dfu_flash: &mut F, | 177 | dfu_flash: &mut F, |
| 178 | update_len: usize, | 178 | update_len: u32, |
| 179 | chunk_buf: &mut [u8], | 179 | chunk_buf: &mut [u8], |
| 180 | output: &mut [u8], | 180 | output: &mut [u8], |
| 181 | ) -> Result<(), FirmwareUpdaterError> { | 181 | ) -> Result<(), FirmwareUpdaterError> { |
| 182 | let update_len = update_len as u32; | ||
| 183 | let mut digest = D::new(); | 182 | let mut digest = D::new(); |
| 184 | for offset in (0..update_len).step_by(chunk_buf.len()) { | 183 | for offset in (0..update_len).step_by(chunk_buf.len()) { |
| 185 | self.dfu.read(dfu_flash, offset, chunk_buf).await?; | 184 | self.dfu.read(dfu_flash, offset, chunk_buf).await?; |
| @@ -335,11 +334,11 @@ impl FirmwareUpdater { | |||
| 335 | _state_and_dfu_flash: &mut F, | 334 | _state_and_dfu_flash: &mut F, |
| 336 | _public_key: &[u8], | 335 | _public_key: &[u8], |
| 337 | _signature: &[u8], | 336 | _signature: &[u8], |
| 338 | _update_len: usize, | 337 | _update_len: u32, |
| 339 | _aligned: &mut [u8], | 338 | _aligned: &mut [u8], |
| 340 | ) -> Result<(), FirmwareUpdaterError> { | 339 | ) -> Result<(), FirmwareUpdaterError> { |
| 341 | assert_eq!(_aligned.len(), F::WRITE_SIZE); | 340 | assert_eq!(_aligned.len(), F::WRITE_SIZE); |
| 342 | assert!(_update_len as u32 <= self.dfu.size()); | 341 | assert!(_update_len <= self.dfu.size()); |
| 343 | 342 | ||
| 344 | #[cfg(feature = "ed25519-dalek")] | 343 | #[cfg(feature = "ed25519-dalek")] |
| 345 | { | 344 | { |
| @@ -394,11 +393,10 @@ impl FirmwareUpdater { | |||
| 394 | pub fn hash_blocking<F: NorFlash, D: Digest>( | 393 | pub fn hash_blocking<F: NorFlash, D: Digest>( |
| 395 | &mut self, | 394 | &mut self, |
| 396 | dfu_flash: &mut F, | 395 | dfu_flash: &mut F, |
| 397 | update_len: usize, | 396 | update_len: u32, |
| 398 | chunk_buf: &mut [u8], | 397 | chunk_buf: &mut [u8], |
| 399 | output: &mut [u8], | 398 | output: &mut [u8], |
| 400 | ) -> Result<(), FirmwareUpdaterError> { | 399 | ) -> Result<(), FirmwareUpdaterError> { |
| 401 | let update_len = update_len as u32; | ||
| 402 | let mut digest = D::new(); | 400 | let mut digest = D::new(); |
| 403 | for offset in (0..update_len).step_by(chunk_buf.len()) { | 401 | for offset in (0..update_len).step_by(chunk_buf.len()) { |
| 404 | self.dfu.read_blocking(dfu_flash, offset, chunk_buf)?; | 402 | self.dfu.read_blocking(dfu_flash, offset, chunk_buf)?; |
| @@ -529,7 +527,7 @@ mod tests { | |||
| 529 | block_on(updater.write_firmware(0, to_write.as_slice(), &mut flash)).unwrap(); | 527 | block_on(updater.write_firmware(0, to_write.as_slice(), &mut flash)).unwrap(); |
| 530 | let mut chunk_buf = [0; 2]; | 528 | let mut chunk_buf = [0; 2]; |
| 531 | let mut hash = [0; 20]; | 529 | let mut hash = [0; 20]; |
| 532 | block_on(updater.hash::<_, Sha1>(&mut flash, update.len(), &mut chunk_buf, &mut hash)).unwrap(); | 530 | block_on(updater.hash::<_, Sha1>(&mut flash, update.len() as u32, &mut chunk_buf, &mut hash)).unwrap(); |
| 533 | 531 | ||
| 534 | assert_eq!(Sha1::digest(update).as_slice(), hash); | 532 | assert_eq!(Sha1::digest(update).as_slice(), hash); |
| 535 | } | 533 | } |
diff --git a/embassy-boot/boot/src/lib.rs b/embassy-boot/boot/src/lib.rs index ef9333d36..87457b173 100644 --- a/embassy-boot/boot/src/lib.rs +++ b/embassy-boot/boot/src/lib.rs | |||
| @@ -255,7 +255,7 @@ mod tests { | |||
| 255 | &mut flash, | 255 | &mut flash, |
| 256 | &public_key.to_bytes(), | 256 | &public_key.to_bytes(), |
| 257 | &signature.to_bytes(), | 257 | &signature.to_bytes(), |
| 258 | firmware_len, | 258 | firmware_len as u32, |
| 259 | &mut aligned, | 259 | &mut aligned, |
| 260 | )) | 260 | )) |
| 261 | .is_ok()); | 261 | .is_ok()); |
