implement make_credential_devices & rename feature
This commit is contained in:
parent
1202fed98d
commit
4e14d265b8
@ -27,4 +27,4 @@ crossbeam = "0.7.3"
|
||||
hex = "0.4.0"
|
||||
|
||||
[features]
|
||||
assert_devices = ["crossbeam"]
|
||||
request_multiple = ["crossbeam"]
|
||||
|
31
src/util.rs
31
src/util.rs
@ -1,10 +1,10 @@
|
||||
use crate::cbor::AuthenticatorData;
|
||||
use crate::{FidoAssertionRequest, FidoCredential, FidoDevice, FidoErrorKind, FidoResult};
|
||||
#[cfg(feature = "assert_devices")]
|
||||
use crate::{FidoAssertionRequest, FidoCredentialRequest, FidoCredential, FidoDevice, FidoErrorKind, FidoResult};
|
||||
#[cfg(feature = "request_multiple")]
|
||||
use crossbeam::thread;
|
||||
use std::sync::mpsc::channel;
|
||||
|
||||
#[cfg(feature = "assert_devices")]
|
||||
#[cfg(feature = "request_multiple")]
|
||||
pub fn request_multiple_devices<
|
||||
'a,
|
||||
T: Send + 'a,
|
||||
@ -42,17 +42,22 @@ pub fn request_multiple_devices<
|
||||
.unwrap()
|
||||
}
|
||||
|
||||
/// Will send the `assertion` to all supplied `devices` and return either the first successful assertion or the last error
|
||||
#[cfg(feature = "assert_devices")]
|
||||
/// Will send the `assertion_request` to all supplied `devices` and return either the first successful assertion or the last error
|
||||
#[cfg(feature = "request_multiple")]
|
||||
pub fn get_assertion_devices<'a>(
|
||||
assertion: &'a FidoAssertionRequest,
|
||||
assertion_request: &'a FidoAssertionRequest,
|
||||
devices: impl Iterator<Item = &'a mut FidoDevice>,
|
||||
) -> FidoResult<(&'a FidoCredential, AuthenticatorData)> {
|
||||
let get_assertion = |device: &mut FidoDevice| device.get_assertion(assertion);
|
||||
request_multiple_devices(devices.map(|device| {
|
||||
(
|
||||
device,
|
||||
&get_assertion,
|
||||
)
|
||||
}))
|
||||
let get_assertion = |device: &mut FidoDevice| device.get_assertion(assertion_request);
|
||||
request_multiple_devices(devices.map(|device| (device, &get_assertion)))
|
||||
}
|
||||
|
||||
/// Will send the `credential_request` to all supplied `devices` and return either the first credential or the last error
|
||||
#[cfg(feature = "request_multiple")]
|
||||
pub fn make_credential_devices<'a>(
|
||||
credential_request: &'a FidoCredentialRequest,
|
||||
devices: impl Iterator<Item = &'a mut FidoDevice>,
|
||||
) -> FidoResult<FidoCredential> {
|
||||
let make_credential = |device: &mut FidoDevice| device.make_credential(credential_request);
|
||||
request_multiple_devices(devices.map(|device| (device, &make_credential)))
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user