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