From 7936e3513ee339650a7ac2eff11edd2fac3f037d Mon Sep 17 00:00:00 2001 From: Nora Widdecke Date: Thu, 8 Sep 2022 17:49:08 +0200 Subject: openpgp, sq: Update dependency rpassword to 6. - rpassword underwent some rework. The successor of read_password_from_tty seems to be prompt_password, relevant commits to rpassword: - e6023757df00a67a1e16796db50c5ffad41b6268 - 2edf6cee07573ec4aa86531e6177ee90331d5c60 --- Cargo.lock | 6 ++++-- openpgp/Cargo.toml | 2 +- openpgp/examples/notarize.rs | 7 ++++--- openpgp/examples/sign-detached.rs | 7 ++++--- openpgp/examples/sign.rs | 7 ++++--- sq/Cargo.toml | 2 +- sq/src/commands/decrypt.rs | 25 ++++++++++++++----------- sq/src/commands/key.rs | 14 ++++++-------- sq/src/commands/mod.rs | 12 ++++++------ sq/src/sq.rs | 11 +++++------ 10 files changed, 49 insertions(+), 44 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index a297228e..ff3bde43 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2571,11 +2571,13 @@ checksum = "b833d8d034ea094b1ea68aa6d5c740e0d04bad9d16568d08ba6f76823a114316" [[package]] name = "rpassword" -version = "5.0.1" +version = "6.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ffc936cf8a7ea60c58f030fd36a612a48f440610214dc54bc36431f9ea0c3efb" +checksum = "2bf099a1888612545b683d2661a1940089f6c2e5a8e38979b2159da876bfd956" dependencies = [ "libc", + "serde", + "serde_json", "winapi", ] diff --git a/openpgp/Cargo.toml b/openpgp/Cargo.toml index f9ce98ee..6b24955d 100644 --- a/openpgp/Cargo.toml +++ b/openpgp/Cargo.toml @@ -87,7 +87,7 @@ lalrpop = { version = ">=0.17", default-features = false } [dev-dependencies] quickcheck = { version = "1", default-features = false } rand = { version = "0.8" } -rpassword = "5.0" +rpassword = "6.0" criterion = { version = "0.3.4", features = ["html_reports"] } [features] diff --git a/openpgp/examples/notarize.rs b/openpgp/examples/notarize.rs index 22fbf301..95e2e171 100644 --- a/openpgp/examples/notarize.rs +++ b/openpgp/examples/notarize.rs @@ -39,9 +39,10 @@ fn main() -> openpgp::Result<()> { keys.push({ let mut key = key.clone(); if key.secret().is_encrypted() { - let password = rpassword::read_password_from_tty( - Some(&format!("Please enter password to decrypt \ - {}/{}: ",tsk, key)))?; + let password = rpassword::prompt_password(format!( + "Please enter password to decrypt {}/{}: ", + tsk, key + ))?; let algo = key.pk_algo(); key.secret_mut() .decrypt_in_place(algo, &password.into()) diff --git a/openpgp/examples/sign-detached.rs b/openpgp/examples/sign-detached.rs index dfc46ab5..3360f7f8 100644 --- a/openpgp/examples/sign-detached.rs +++ b/openpgp/examples/sign-detached.rs @@ -36,9 +36,10 @@ fn main() -> openpgp::Result<()> { keys.push({ let mut key = key.clone(); if key.secret().is_encrypted() { - let password = rpassword::read_password_from_tty( - Some(&format!("Please enter password to decrypt \ - {}/{}: ",tsk, key)))?; + let password = rpassword::prompt_password(format!( + "Please enter password to decrypt {}/{}: ", + tsk, key + ))?; let algo = key.pk_algo(); key.secret_mut() .decrypt_in_place(algo, &password.into()) diff --git a/openpgp/examples/sign.rs b/openpgp/examples/sign.rs index 02feea96..585242c4 100644 --- a/openpgp/examples/sign.rs +++ b/openpgp/examples/sign.rs @@ -34,9 +34,10 @@ fn main() -> openpgp::Result<()> { keys.push({ let mut key = key.clone(); if key.secret().is_encrypted() { - let password = rpassword::read_password_from_tty( - Some(&format!("Please enter password to decrypt \ - {}/{}: ",tsk, key)))?; + let password = rpassword::prompt_password(format!( + "Please enter password to decrypt {}/{}: ", + tsk, key + ))?; let algo = key.pk_algo(); key.secret_mut() .decrypt_in_place(algo, &password.into()) diff --git a/sq/Cargo.toml b/sq/Cargo.toml index ab94e858..83978fd2 100644 --- a/sq/Cargo.toml +++ b/sq/Cargo.toml @@ -37,7 +37,7 @@ itertools = "0.10" tempfile = "3.1" term_size = "0.3" tokio = { version = "1.13.1" } -rpassword = "5.0" +rpassword = "6.0" serde_json = "1.0.80" serde = { version = "1.0.137", features = ["derive"] } roff = "0.2.1" diff --git a/sq/src/commands/decrypt.rs b/sq/src/commands/decrypt.rs index bdac7377..7359cd49 100644 --- a/sq/src/commands/decrypt.rs +++ b/sq/src/commands/decrypt.rs @@ -254,10 +254,11 @@ impl<'a> DecryptionHelper for Helper<'a> { break keypair; } - let p = rpassword::read_password_from_tty(Some( - &format!( - "Enter password to decrypt key {}: ", - self.key_hints.get(keyid).unwrap())))?.into(); + let p = rpassword::prompt_password(&format!( + "Enter password to decrypt key {}: ", + self.key_hints.get(keyid).unwrap() + ))? + .into(); match key.unlock(&p) { Ok(decryptor) => break decryptor, @@ -308,10 +309,11 @@ impl<'a> DecryptionHelper for Helper<'a> { break keypair; } - let p = rpassword::read_password_from_tty(Some( - &format!( - "Enter password to decrypt key {}: ", - self.key_hints.get(&keyid).unwrap())))?.into(); + let p = rpassword::prompt_password(&format!( + "Enter password to decrypt key {}: ", + self.key_hints.get(&keyid).unwrap() + ))? + .into(); if let Ok(decryptor) = key.unlock(&p) { break decryptor; @@ -336,9 +338,10 @@ impl<'a> DecryptionHelper for Helper<'a> { // Finally, try to decrypt using the SKESKs. loop { - let password = - rpassword::read_password_from_tty(Some( - "Enter password to decrypt message: "))?.into(); + let password = rpassword::prompt_password( + "Enter password to decrypt message: ", + )? + .into(); for skesk in skesks { if let Some(sk) = skesk.decrypt(&password).ok() diff --git a/sq/src/commands/key.rs b/sq/src/commands/key.rs index f2062f3a..f6f8b729 100644 --- a/sq/src/commands/key.rs +++ b/sq/src/commands/key.rs @@ -150,10 +150,10 @@ fn generate( } if command.with_password { - let p0 = rpassword::read_password_from_tty(Some( - "Enter password to protect the key: "))?.into(); - let p1 = rpassword::read_password_from_tty(Some( - "Repeat the password once more: "))?.into(); + let p0 = rpassword::prompt_password( + "Enter password to protect the key: ")?.into(); + let p1 = rpassword::prompt_password( + "Repeat the password once more: ")?.into(); if p0 == p1 { builder = builder.set_password(Some(p0)); @@ -254,11 +254,9 @@ fn password( let new_password = if command.clear { None } else { - let prompt_0 = - rpassword::read_password_from_tty(Some("New password: ")) + let prompt_0 = rpassword::prompt_password("New password: ") .context("Error reading password")?; - let prompt_1 = - rpassword::read_password_from_tty(Some("Repeat new password: ")) + let prompt_1 = rpassword::prompt_password("Repeat new password: ") .context("Error reading password")?; if prompt_0 != prompt_1 { diff --git a/sq/src/commands/mod.rs b/sq/src/commands/mod.rs index a7444391..8c23366d 100644 --- a/sq/src/commands/mod.rs +++ b/sq/src/commands/mod.rs @@ -126,9 +126,9 @@ fn get_keys(certs: &[C], p: &dyn Policy, if let Some(secret) = key.optional_secret() { let unencrypted = match secret { SecretKeyMaterial::Encrypted(ref e) => { - let password = rpassword::read_password_from_tty(Some( + let password = rpassword::prompt_password( &format!("Please enter password to decrypt {}/{}: ", - tsk, key))) + tsk, key)) .context("Reading password from tty")?; e.decrypt(key.pk_algo(), &password.into()) .expect("decryption failed") @@ -140,8 +140,8 @@ fn get_keys(certs: &[C], p: &dyn Policy, .unwrap())); continue 'next_cert; } else if let Some(private_key_store) = private_key_store { - let password = rpassword::read_password_from_tty( - Some(&format!("Please enter password to key {}/{}: ", tsk, key))).unwrap().into(); + let password = rpassword::prompt_password( + &format!("Please enter password to key {}/{}: ", tsk, key)).unwrap().into(); match pks::unlock_signer(private_key_store, key.clone(), &password) { Ok(signer) => { keys.push(signer); @@ -323,12 +323,12 @@ pub fn encrypt(opts: EncryptOpts) -> Result<()> { let mut passwords: Vec = Vec::with_capacity(opts.npasswords); for n in 0..opts.npasswords { let nprompt = format!("Enter password {}: ", n + 1); - passwords.push(rpassword::read_password_from_tty(Some( + passwords.push(rpassword::prompt_password( if opts.npasswords > 1 { &nprompt } else { "Enter password: " - }))?.into()); + })?.into()); } if opts.recipients.len() + passwords.len() == 0 { diff --git a/sq/src/sq.rs b/sq/src/sq.rs index 7ea299a8..f96b32cd 100644 --- a/sq/src/sq.rs +++ b/sq/src/sq.rs @@ -238,12 +238,11 @@ fn decrypt_key(key: Key, passwords: &mut Vec) let mut first = true; loop { // Prompt the user. - match rpassword::read_password_from_tty( - Some(&format!( - "{}Enter password to unlock {} (blank to skip): ", - if first { "" } else { "Invalid password. " }, - key.keyid().to_hex()))) - { + match rpassword::prompt_password(&format!( + "{}Enter password to unlock {} (blank to skip): ", + if first { "" } else { "Invalid password. " }, + key.keyid().to_hex() + )) { Ok(p) => { first = false; if p.is_empty() { -- cgit v1.2.3