From 170e1df9d96f628af8cf8107f29227b90ae9350b Mon Sep 17 00:00:00 2001 From: Robin Krahl Date: Wed, 19 Dec 2018 19:33:50 +0000 Subject: pinentry: Encode spaces in prompt argument MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Spaces in the arguments for gpg-connect-agent’s `GET_PASSPHRASE` command have to be esaced using a plus sign. Somehow this was missing for the prompt argument. This patch adds escaping for the prompt so that the pinentry dialog is displayed correctly. --- nitrocli/src/pinentry.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'nitrocli/src/pinentry.rs') diff --git a/nitrocli/src/pinentry.rs b/nitrocli/src/pinentry.rs index fc7af2c..ce9a98f 100644 --- a/nitrocli/src/pinentry.rs +++ b/nitrocli/src/pinentry.rs @@ -90,10 +90,10 @@ pub fn inquire_passphrase(pin_type: PinType, error_msg: Option<&str>) -> Result< let error_msg = error_msg .map(|msg| msg.replace(" ", "+")) .unwrap_or_else(|| String::from("+")); - let prompt = pin_type.prompt(); + let prompt = pin_type.prompt().replace(" ", "+"); let description = pin_type.description().replace(" ", "+"); - let args = vec![cache_id, &error_msg, prompt, &description].join(" "); + let args = vec![cache_id, &error_msg, &prompt, &description].join(" "); let command = "GET_PASSPHRASE --data ".to_string() + &args; // We could also use the --data parameter here to have a more direct // representation of the passphrase but the resulting response was -- cgit v1.2.1