handle additional credentials

This commit is contained in:
shimun 2020-06-22 22:30:12 +02:00
parent e28828cc2b
commit 5cb3982d65
Signed by: shimun
GPG Key ID: E81D8382DC2F971B

View File

@ -225,7 +225,7 @@ impl LuksDevice {
self.device
.activate_handle()
.activate_by_passphrase(Some(name), slot_hint, secret, CryptActivateFlags::empty())
.map_err(|_e| Fido2LuksError::WrongSecret)
.map_err(LuksError::activate)
}
pub fn activate_token(
@ -262,12 +262,12 @@ impl LuksDevice {
});
}
let (secret, credential) = secret(creds.keys().cloned().collect())?;
let empty;
let slots = if let Some(slots) = creds.get(&credential) {
slots
} else {
return Err(Fido2LuksError::LuksError {
cause: LuksError::NoToken,
});
empty = HashSet::new();
&empty
};
//Try slots associated with the credential used
let slots = slots.iter().cloned().map(Option::Some).chain(
@ -276,12 +276,7 @@ impl LuksDevice {
.chain(std::iter::once(None).take(slots.is_empty() as usize)), // Try all slots as last resort
);
for slot in slots {
match self
.device
.activate_handle()
.activate_by_passphrase(Some(name), slot, &secret, CryptActivateFlags::empty())
.map_err(LuksError::activate)
{
match self.activate(name, &secret, slot) {
Err(Fido2LuksError::WrongSecret) => (),
res => return res,
}