hint pin input
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing

This commit is contained in:
shimun 2020-09-29 19:41:20 +02:00
parent 4e3d799179
commit 349807a6c4
Signed by: shimun
GPG Key ID: E81D8382DC2F971B

View File

@ -28,7 +28,7 @@ impl PamFido2Luks {
fn open(
&self,
user: String,
mut password: impl FnMut() -> PamResult<String>,
mut password: impl FnMut(&str) -> PamResult<String>,
args: Vec<String>,
) -> Fido2LuksResult<()> {
let args: HashMap<String, String> = args
@ -100,7 +100,7 @@ impl PamFido2Luks {
if !credentials.is_empty() {
loop {
let (pin, pass) = if pin_prefix {
let password = password()
let password = password("PIN + FIDO2 salt (pin:password):")
.map_err(|e| Fido2LuksError::AskPassError { cause: e.into() })?;
let mut parts = password.split(":");
(
@ -110,7 +110,7 @@ impl PamFido2Luks {
} else {
(
pin.cloned(),
password()
password("FIDO2 salt: ")
.map_err(|e| Fido2LuksError::AskPassError { cause: e.into() })?,
)
};
@ -158,13 +158,13 @@ impl PamServiceModule for PamFido2Luks {
if let Some(user) = user {
PamFido2Luks.open(
user,
move || match password.take() {
move |q: &str| match password.take() {
Some(pass) => Ok(pass),
None => pamh
.conv(Some("Fido2 salt: "), PamMsgStyle::PROMPT_ECHO_OFF)
.conv(Some(q), PamMsgStyle::PROMPT_ECHO_OFF)
.map(|s| s.map(|s| s.to_str().unwrap()).unwrap_or("").to_string()),
},
args
args,
)
} else {
Err(AskPassError::Pam(PamError::AUTH_ERR))?