This commit is contained in:
2026-04-02 15:55:15 +02:00
parent 1412bfb172
commit fe002dd609

View File

@@ -66,6 +66,17 @@ impl Tea3 {
r7 r7
} }
/// outputs the next cipher byte
pub fn next_byte(&mut self) -> u8 {
let mut kout: u8;
for _i in 1..19 {
kout = self.step_key_register();
self.step_state_register(kout);
}
kout = self.step_key_register();
self.step_state_register(kout)
}
pub fn key_register(&self) -> &[u8] { pub fn key_register(&self) -> &[u8] {
&self.key_register &self.key_register
} }
@@ -318,4 +329,27 @@ mod tests {
// 7=0, 8=0, 15=1, 16=1 -> 0011 = 0x3 // 7=0, 8=0, 15=1, 16=1 -> 0011 = 0x3
assert_eq!(out[4], 0b0011); assert_eq!(out[4], 0b0011);
} }
#[test]
fn test_state_register_step() {
let mut tea3 = Tea3::new(vec![0; 10], vec![1, 2, 3, 4, 5, 6, 7, 8]);
let kout = 0xAA;
let r7_before = tea3.state_register()[7];
let out = tea3.step_state_register(kout);
assert_eq!(out, r7_before);
let s = tea3.state_register();
assert_eq!(s[1], 1);
assert_eq!(s[2], 2);
assert_eq!(s[3], 3);
assert_eq!(s[4], 4);
assert_ne!(s[0], 1);
assert_ne!(s[5], 5);
}
} }