diff --git a/examples/aes_ecb.rs b/examples/aes_ecb.rs new file mode 100755 index 0000000..617e6d8 --- /dev/null +++ b/examples/aes_ecb.rs @@ -0,0 +1,46 @@ +#![no_main] +#![no_std] + +use defmt::{debug, info}; +use hal::pwr::PWR; +use hal::rtc::{Datelike, NaiveDateTime, Rtc, Timelike}; +use panic_probe as _; + +use defmt_rtt as _; // global logger + +use cortex_m_rt::entry; +use hal::{pac, prelude::*, rcc::Config}; + +const AES_PT: [u8; 16] = [ + 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, +]; +const AES_KEY: [u32; 4] = [0x1991, 0x1991, 0xAAAAAAAA, 0xBBBBBBBB]; + +#[entry] +fn main() -> ! { + let dp = pac::Peripherals::take().unwrap(); + let cp = cortex_m::Peripherals::take().unwrap(); + + let mut rcc = dp.RCC.freeze(Config::hsi16()); + let mut delay = cp.SYST.delay(rcc.clocks); + + compile_error!("The chip does not have an AES unit >:{"); + let aes = hal::aes::AES::new(dp.AES, &mut rcc); + let mut ecb_stream = aes.enable(::ecb_encrypt(), AES_KEY); + let mut encbuf: [[u8; 16]; 4] = [[0; 16]; 4]; + + let mut i = 0; + debug!("Entering Loop"); + #[allow(clippy::never_loop)] + loop { + debug!("reading from aes stream"); + encbuf[i % 4] = ecb_stream.process(&AES_PT).unwrap(); + + info!("encbuf[{:02}]: {:02x}", i, encbuf); + + if i > 100 { + delay.delay_ms(200_u16); + } + i += 1; + } +}