Require repeating the passphrase when you encrypt a private key, to make sure you typed it right.

This commit is contained in:
Mike Dilger 2023-02-04 11:44:10 +13:00
parent 1e581a0b5d
commit f9d6a58be0
2 changed files with 34 additions and 10 deletions

View File

@ -119,6 +119,7 @@ struct GossipUi {
follow_pubkey: String,
follow_pubkey_at_relay: String,
password: String,
password2: String,
del_password: String,
new_metadata_fieldname: String,
import_priv: String,
@ -129,6 +130,8 @@ struct GossipUi {
impl Drop for GossipUi {
fn drop(&mut self) {
self.password.zeroize();
self.password2.zeroize();
self.del_password.zeroize();
}
}
@ -236,6 +239,7 @@ impl GossipUi {
follow_pubkey: "".to_owned(),
follow_pubkey_at_relay: "".to_owned(),
password: "".to_owned(),
password2: "".to_owned(),
del_password: "".to_owned(),
new_metadata_fieldname: String::new(),
import_priv: "".to_owned(),

View File

@ -266,18 +266,28 @@ fn offer_import_priv_key(app: &mut GossipUi, ui: &mut Ui) {
);
});
ui.horizontal(|ui| {
ui.label("Enter a passphrase for the private key");
ui.label("Enter a passphrase to keep it encrypted under");
ui.add(TextEdit::singleline(&mut app.password).password(true));
});
ui.horizontal(|ui| {
ui.label("Repeat passphrase to be sure");
ui.add(TextEdit::singleline(&mut app.password2).password(true));
});
if ui.button("import").clicked() {
let _ = GLOBALS.to_overlord.send(ToOverlordMessage::ImportPriv(
app.import_priv.clone(),
app.password.clone(),
));
app.import_priv.zeroize();
app.import_priv = "".to_owned();
if app.password != app.password2 {
*GLOBALS.status_message.blocking_write() = "Passwords do not match".to_owned();
} else {
let _ = GLOBALS.to_overlord.send(ToOverlordMessage::ImportPriv(
app.import_priv.clone(),
app.password.clone(),
));
app.import_priv.zeroize();
app.import_priv = "".to_owned();
}
app.password.zeroize();
app.password = "".to_owned();
app.password2.zeroize();
app.password2 = "".to_owned();
}
}
@ -351,11 +361,21 @@ fn offer_generate(app: &mut GossipUi, ui: &mut Ui) {
ui.label("Enter a passphrase to keep it encrypted under");
ui.add(TextEdit::singleline(&mut app.password).password(true));
});
ui.horizontal(|ui| {
ui.label("Repeat passphrase to be sure");
ui.add(TextEdit::singleline(&mut app.password2).password(true));
});
if ui.button("Generate Now").clicked() {
let _ = GLOBALS
.to_overlord
.send(ToOverlordMessage::GeneratePrivateKey(app.password.clone()));
if app.password != app.password2 {
*GLOBALS.status_message.blocking_write() = "Passwords do not match".to_owned();
} else {
let _ = GLOBALS
.to_overlord
.send(ToOverlordMessage::GeneratePrivateKey(app.password.clone()));
}
app.password.zeroize();
app.password = "".to_owned();
app.password2.zeroize();
app.password2 = "".to_owned();
}
}