aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--embassy-stm32/CHANGELOG.md1
-rw-r--r--embassy-stm32/src/hash/mod.rs14
2 files changed, 10 insertions, 5 deletions
diff --git a/embassy-stm32/CHANGELOG.md b/embassy-stm32/CHANGELOG.md
index 0f044419e..d2dccaea5 100644
--- a/embassy-stm32/CHANGELOG.md
+++ b/embassy-stm32/CHANGELOG.md
@@ -8,6 +8,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
8<!-- next-header --> 8<!-- next-header -->
9## Unreleased - ReleaseDate 9## Unreleased - ReleaseDate
10 10
11- feat: Improve blocking hash speed
11- fix: Fix vrefbuf building with log feature 12- fix: Fix vrefbuf building with log feature
12- fix: Fix performing a hash after performing a hmac 13- fix: Fix performing a hash after performing a hmac
13- chore: Updated stm32-metapac and stm32-data dependencies 14- chore: Updated stm32-metapac and stm32-data dependencies
diff --git a/embassy-stm32/src/hash/mod.rs b/embassy-stm32/src/hash/mod.rs
index a4c275242..90c06c0d8 100644
--- a/embassy-stm32/src/hash/mod.rs
+++ b/embassy-stm32/src/hash/mod.rs
@@ -353,13 +353,17 @@ impl<'d, T: Instance, M: Mode> Hash<'d, T, M> {
353 let num_valid_bits: u8 = (8 * (input.len() % 4)) as u8; 353 let num_valid_bits: u8 = (8 * (input.len() % 4)) as u8;
354 T::regs().str().modify(|w| w.set_nblw(num_valid_bits)); 354 T::regs().str().modify(|w| w.set_nblw(num_valid_bits));
355 355
356 let mut i = 0; 356 let mut chunks = input.chunks_exact(4);
357 while i < input.len() { 357 for chunk in &mut chunks {
358 T::regs()
359 .din()
360 .write_value(u32::from_ne_bytes(chunk.try_into().unwrap()));
361 }
362 let rem = chunks.remainder();
363 if !rem.is_empty() {
358 let mut word: [u8; 4] = [0; 4]; 364 let mut word: [u8; 4] = [0; 4];
359 let copy_idx = min(i + 4, input.len()); 365 word[0..rem.len()].copy_from_slice(rem);
360 word[0..copy_idx - i].copy_from_slice(&input[i..copy_idx]);
361 T::regs().din().write_value(u32::from_ne_bytes(word)); 366 T::regs().din().write_value(u32::from_ne_bytes(word));
362 i += 4;
363 } 367 }
364 } 368 }
365 369