mirror of
https://git.tartarus.org/simon/putty.git
synced 2025-06-30 19:12:48 -05:00
Polish up passphrase prompts for key decryption.
Now Windows Pageant has two clearly distinct dialog boxes for requesting a key passphrase: one to use synchronously when the user has just used the 'Add Key' GUI action, and one to use asynchronously in response to an agent client's attempt to use a key that was loaded encrypted. Also fixed the wording in the asynchronous box: there were two copies of the 'enter passphrase' instruction, one from the dialog definition in pageant.rc file and one from the cross-platform pageant.c. Now pageant.c doesn't format a whole user-facing message any more: it leaves that to the platform front end to do it the way it wants. I've also added a call to SetForegroundWindow, to try to get the passphrase prompt into the foreground. In my experience this doesn't actually get it the keyboard focus, which I think is deliberate on Windows's part and there's nothing I can do about it. But at least the user should _see_ that the prompt is there, so they can focus it themself.
This commit is contained in:
11
pageant.c
11
pageant.c
@ -392,11 +392,8 @@ static bool request_passphrase(PageantClient *pc, PageantKey *pk)
|
||||
if (!pk->decryption_prompt_active) {
|
||||
assert(!gui_request_in_progress);
|
||||
|
||||
strbuf *sb = strbuf_new();
|
||||
strbuf_catf(sb, "Enter passphrase to decrypt key '%s'", pk->comment);
|
||||
bool created_dlg = pageant_client_ask_passphrase(
|
||||
pc, &pk->dlgid, sb->s);
|
||||
strbuf_free(sb);
|
||||
pc, &pk->dlgid, pk->comment);
|
||||
|
||||
if (!created_dlg)
|
||||
return false;
|
||||
@ -1525,11 +1522,11 @@ static void pageant_conn_got_response(
|
||||
}
|
||||
|
||||
static bool pageant_conn_ask_passphrase(
|
||||
PageantClient *pc, PageantClientDialogId *dlgid, const char *msg)
|
||||
PageantClient *pc, PageantClientDialogId *dlgid, const char *comment)
|
||||
{
|
||||
struct pageant_conn_state *pcs =
|
||||
container_of(pc, struct pageant_conn_state, pc);
|
||||
return pageant_listener_client_ask_passphrase(pcs->plc, dlgid, msg);
|
||||
return pageant_listener_client_ask_passphrase(pcs->plc, dlgid, comment);
|
||||
}
|
||||
|
||||
static const PageantClientVtable pageant_connection_clientvt = {
|
||||
@ -1719,7 +1716,7 @@ static void internal_client_got_response(
|
||||
}
|
||||
|
||||
static bool internal_client_ask_passphrase(
|
||||
PageantClient *pc, PageantClientDialogId *dlgid, const char *msg)
|
||||
PageantClient *pc, PageantClientDialogId *dlgid, const char *comment)
|
||||
{
|
||||
/* No delaying operations are permitted in this mode */
|
||||
return false;
|
||||
|
Reference in New Issue
Block a user