From 6ceb598c04f6c69e93d2f0549de66ece44b6fa2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rodolphe=20Br=C3=A9ard?= Date: Sun, 25 Feb 2024 15:28:08 +0100 Subject: [PATCH] Allow to delete an IKM --- src/ikm.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) 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() {