#[cfg(not(target_os = "linux"))]
mod supported {
use robius_authentication::{
AndroidText, BiometricStrength, Context, Policy, PolicyBuilder, Text,
WindowsText,
};
pub struct AuthenticateOptions {
pub biometrics: BiometricStrength,
pub password: bool,
pub android: AndroidText<'static, 'static, 'static>,
pub apple: &'static str,
pub windows: WindowsText<'static, 'static>,
}
impl Default for AuthenticateOptions {
fn default() -> Self {
Self {
biometrics: BiometricStrength::Strong,
password: true,
android: AndroidText {
title: "Authenticate",
subtitle: None,
description: None,
},
apple: "authenticate",
windows: WindowsText::new(
"Save Our Secrets",
"Verify your identity to authenticate",
)
.unwrap(),
}
}
}
pub fn authenticate(options: AuthenticateOptions) -> bool {
let policy: Policy = PolicyBuilder::new()
.biometrics(Some(options.biometrics))
.password(options.password)
.watch(true)
.build()
.unwrap();
let text: Text = Text {
android: options.android,
apple: options.apple,
windows: options.windows,
};
let context = Context::new(());
context.blocking_authenticate(text, &policy).is_ok()
}
pub fn supported() -> bool {
true
}
}
#[cfg(not(target_os = "linux"))]
pub use supported::*;
#[cfg(target_os = "linux")]
mod unsupported {
#[derive(Default)]
pub struct AuthenticateOptions {}
pub fn authenticate(_options: AuthenticateOptions) -> bool {
false
}
pub fn supported() -> bool {
false
}
}
#[cfg(target_os = "linux")]
pub use unsupported::*;