only process keyslots within a given range

This commit is contained in:
shimun 2020-03-27 19:56:57 +01:00
parent f6de4a033e
commit c4f781e6e3
Signed by: shimun
GPG Key ID: E81D8382DC2F971B

View File

@ -46,10 +46,10 @@ pub fn add_key<P: AsRef<Path>>(
pub fn remove_keyslots<P: AsRef<Path>>(path: P, exclude: &[u32]) -> Fido2LuksResult<u32> {
let mut device = load_device_handle(path)?;
let mut slot = 0;
let mut handle;
let mut destroyed = 0;
loop {
//TODO: detect how many keyslots there are instead of trying within a given range
for slot in 0..1024 {
handle = device.keyslot_handle(Some(slot));
match handle.status()? {
KeyslotInfo::Inactive => continue,
@ -63,7 +63,6 @@ pub fn remove_keyslots<P: AsRef<Path>>(path: P, exclude: &[u32]) -> Fido2LuksRes
KeyslotInfo::ActiveLast => break,
_ => (),
}
slot += 1;
}
Ok(destroyed)
}