diff --git a/src/ikm.rs b/src/ikm.rs index 45d2fda..05ccce1 100644 --- a/src/ikm.rs +++ b/src/ikm.rs @@ -98,6 +98,11 @@ impl InputKeyMaterialList { Ok(()) } + #[cfg(feature = "ikm-management")] + pub fn delete_ikm(&mut self, id: IkmId) { + self.ikm_lst.retain(|ikm| ikm.id != id); + } + #[cfg(feature = "ikm-management")] pub fn revoke_ikm(&mut self, id: IkmId) -> Result<()> { let ikm = self @@ -288,6 +293,25 @@ mod tests { } } + #[test] + #[cfg(feature = "ikm-management")] + fn delete_ikm() { + let mut lst = InputKeyMaterialList::new(); + let _ = lst.add_ikm(); + let _ = lst.add_ikm(); + + let latest_ikm = lst.get_latest_ikm().unwrap(); + assert_eq!(latest_ikm.id, 2); + + lst.delete_ikm(2); + let latest_ikm = lst.get_latest_ikm().unwrap(); + assert_eq!(latest_ikm.id, 1); + + lst.delete_ikm(1); + let res = lst.get_latest_ikm(); + assert!(res.is_err()); + } + #[test] #[cfg(feature = "ikm-management")] fn revoke_ikm() {