add timeout
This commit is contained in:
@@ -48,7 +48,7 @@ impl<T: Display + FromStr> FromStr for CommaSeparated<T> {
|
||||
fn from_str(s: &str) -> Result<Self, Self::Err> {
|
||||
Ok(CommaSeparated(
|
||||
s.split(',')
|
||||
.map(|part| <T as FromStr>::from_str(dbg!(part)))
|
||||
.map(|part| <T as FromStr>::from_str(part))
|
||||
.collect::<Result<Vec<_>, _>>()?,
|
||||
))
|
||||
}
|
||||
@@ -144,7 +144,7 @@ impl SecretGeneration {
|
||||
.collect::<Vec<_>>();
|
||||
let credentials = credentials.iter().collect::<Vec<_>>();
|
||||
Ok(assemble_secret(
|
||||
&perform_challenge(&credentials[..], &salt)?,
|
||||
&perform_challenge(&credentials[..], &salt, timeout - start.elapsed().unwrap())?,
|
||||
&salt,
|
||||
))
|
||||
}
|
||||
|
@@ -4,6 +4,7 @@ use ctap::{
|
||||
self, extensions::hmac::HmacExtension, request_multiple_devices, FidoAssertionRequestBuilder,
|
||||
FidoCredential, FidoCredentialRequestBuilder, FidoDevice, FidoError, FidoErrorKind,
|
||||
};
|
||||
use std::time::Duration;
|
||||
|
||||
const RP_ID: &'static str = "fido2luks";
|
||||
|
||||
@@ -18,12 +19,14 @@ pub fn make_credential_id(name: Option<&str>) -> Fido2LuksResult<FidoCredential>
|
||||
get_devices()?
|
||||
.iter_mut()
|
||||
.map(|device| (device, &make_credential)),
|
||||
None,
|
||||
)?)
|
||||
}
|
||||
|
||||
pub fn perform_challenge(
|
||||
credentials: &[&FidoCredential],
|
||||
salt: &[u8; 32],
|
||||
timeout: Duration,
|
||||
) -> Fido2LuksResult<[u8; 32]> {
|
||||
let request = FidoAssertionRequestBuilder::default()
|
||||
.rp_id(RP_ID)
|
||||
@@ -35,6 +38,7 @@ pub fn perform_challenge(
|
||||
get_devices()?
|
||||
.iter_mut()
|
||||
.map(|device| (device, &get_assertion)),
|
||||
Some(timeout),
|
||||
)?;
|
||||
Ok(secret)
|
||||
}
|
||||
|
Reference in New Issue
Block a user