diff options
| -rw-r--r-- | embassy-boot/boot/src/firmware_updater.rs | 20 | ||||
| -rw-r--r-- | embassy-boot/boot/src/lib.rs | 2 |
2 files changed, 10 insertions, 12 deletions
diff --git a/embassy-boot/boot/src/firmware_updater.rs b/embassy-boot/boot/src/firmware_updater.rs index fffb9a500..48e15024e 100644 --- a/embassy-boot/boot/src/firmware_updater.rs +++ b/embassy-boot/boot/src/firmware_updater.rs | |||
| @@ -119,13 +119,11 @@ impl FirmwareUpdater { | |||
| 119 | _state_and_dfu_flash: &mut F, | 119 | _state_and_dfu_flash: &mut F, |
| 120 | _public_key: &[u8], | 120 | _public_key: &[u8], |
| 121 | _signature: &[u8], | 121 | _signature: &[u8], |
| 122 | _update_len: u32, | 122 | _update_len: usize, |
| 123 | _aligned: &mut [u8], | 123 | _aligned: &mut [u8], |
| 124 | ) -> Result<(), FirmwareUpdaterError> { | 124 | ) -> Result<(), FirmwareUpdaterError> { |
| 125 | let _read_size = _aligned.len(); | ||
| 126 | |||
| 127 | assert_eq!(_aligned.len(), F::WRITE_SIZE); | 125 | assert_eq!(_aligned.len(), F::WRITE_SIZE); |
| 128 | assert!(_update_len <= self.dfu.len() as u32); | 126 | assert!(_update_len <= self.dfu.len()); |
| 129 | 127 | ||
| 130 | #[cfg(feature = "ed25519-dalek")] | 128 | #[cfg(feature = "ed25519-dalek")] |
| 131 | { | 129 | { |
| @@ -182,10 +180,11 @@ impl FirmwareUpdater { | |||
| 182 | pub async fn hash<F: AsyncNorFlash, D: Digest>( | 180 | pub async fn hash<F: AsyncNorFlash, D: Digest>( |
| 183 | &mut self, | 181 | &mut self, |
| 184 | dfu_flash: &mut F, | 182 | dfu_flash: &mut F, |
| 185 | update_len: u32, | 183 | update_len: usize, |
| 186 | chunk_buf: &mut [u8], | 184 | chunk_buf: &mut [u8], |
| 187 | output: &mut [u8], | 185 | output: &mut [u8], |
| 188 | ) -> Result<(), FirmwareUpdaterError> { | 186 | ) -> Result<(), FirmwareUpdaterError> { |
| 187 | let update_len = update_len as u32; | ||
| 189 | let mut digest = D::new(); | 188 | let mut digest = D::new(); |
| 190 | for offset in (0..update_len).step_by(chunk_buf.len()) { | 189 | for offset in (0..update_len).step_by(chunk_buf.len()) { |
| 191 | self.dfu.read(dfu_flash, offset, chunk_buf).await?; | 190 | self.dfu.read(dfu_flash, offset, chunk_buf).await?; |
| @@ -341,13 +340,11 @@ impl FirmwareUpdater { | |||
| 341 | _state_and_dfu_flash: &mut F, | 340 | _state_and_dfu_flash: &mut F, |
| 342 | _public_key: &[u8], | 341 | _public_key: &[u8], |
| 343 | _signature: &[u8], | 342 | _signature: &[u8], |
| 344 | _update_len: u32, | 343 | _update_len: usize, |
| 345 | _aligned: &mut [u8], | 344 | _aligned: &mut [u8], |
| 346 | ) -> Result<(), FirmwareUpdaterError> { | 345 | ) -> Result<(), FirmwareUpdaterError> { |
| 347 | let _read_size = _aligned.len(); | ||
| 348 | |||
| 349 | assert_eq!(_aligned.len(), F::WRITE_SIZE); | 346 | assert_eq!(_aligned.len(), F::WRITE_SIZE); |
| 350 | assert!(_update_len <= self.dfu.len() as u32); | 347 | assert!(_update_len <= self.dfu.len()); |
| 351 | 348 | ||
| 352 | #[cfg(feature = "ed25519-dalek")] | 349 | #[cfg(feature = "ed25519-dalek")] |
| 353 | { | 350 | { |
| @@ -402,10 +399,11 @@ impl FirmwareUpdater { | |||
| 402 | pub fn hash_blocking<F: NorFlash, D: Digest>( | 399 | pub fn hash_blocking<F: NorFlash, D: Digest>( |
| 403 | &mut self, | 400 | &mut self, |
| 404 | dfu_flash: &mut F, | 401 | dfu_flash: &mut F, |
| 405 | update_len: u32, | 402 | update_len: usize, |
| 406 | chunk_buf: &mut [u8], | 403 | chunk_buf: &mut [u8], |
| 407 | output: &mut [u8], | 404 | output: &mut [u8], |
| 408 | ) -> Result<(), FirmwareUpdaterError> { | 405 | ) -> Result<(), FirmwareUpdaterError> { |
| 406 | let update_len = update_len as u32; | ||
| 409 | let mut digest = D::new(); | 407 | let mut digest = D::new(); |
| 410 | for offset in (0..update_len).step_by(chunk_buf.len()) { | 408 | for offset in (0..update_len).step_by(chunk_buf.len()) { |
| 411 | self.dfu.read_blocking(dfu_flash, offset, chunk_buf)?; | 409 | self.dfu.read_blocking(dfu_flash, offset, chunk_buf)?; |
| @@ -536,7 +534,7 @@ mod tests { | |||
| 536 | block_on(updater.write_firmware(0, to_write.as_slice(), &mut flash)).unwrap(); | 534 | block_on(updater.write_firmware(0, to_write.as_slice(), &mut flash)).unwrap(); |
| 537 | let mut chunk_buf = [0; 2]; | 535 | let mut chunk_buf = [0; 2]; |
| 538 | let mut hash = [0; 20]; | 536 | let mut hash = [0; 20]; |
| 539 | block_on(updater.hash::<_, Sha1>(&mut flash, update.len() as u32, &mut chunk_buf, &mut hash)).unwrap(); | 537 | block_on(updater.hash::<_, Sha1>(&mut flash, update.len(), &mut chunk_buf, &mut hash)).unwrap(); |
| 540 | 538 | ||
| 541 | assert_eq!(Sha1::digest(update).as_slice(), hash); | 539 | assert_eq!(Sha1::digest(update).as_slice(), hash); |
| 542 | } | 540 | } |
diff --git a/embassy-boot/boot/src/lib.rs b/embassy-boot/boot/src/lib.rs index 605e5253c..acd90996f 100644 --- a/embassy-boot/boot/src/lib.rs +++ b/embassy-boot/boot/src/lib.rs | |||
| @@ -281,7 +281,7 @@ mod tests { | |||
| 281 | &mut flash, | 281 | &mut flash, |
| 282 | &public_key.to_bytes(), | 282 | &public_key.to_bytes(), |
| 283 | &signature.to_bytes(), | 283 | &signature.to_bytes(), |
| 284 | firmware_len as u32, | 284 | firmware_len, |
| 285 | &mut aligned, | 285 | &mut aligned, |
| 286 | )) | 286 | )) |
| 287 | .is_ok()); | 287 | .is_ok()); |
