From a9edbfb3a316e8c1bfa0373c39ad69a1e1c29080 Mon Sep 17 00:00:00 2001 From: Ben Kibbey Date: Sun, 10 Apr 2011 16:06:18 -0400 Subject: [PATCH] Added PASSWD --preset. --- agent/ChangeLog | 4 ++++ agent/command.c | 13 +++++++++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/agent/ChangeLog b/agent/ChangeLog index 83ad65178..d4cea792c 100644 --- a/agent/ChangeLog +++ b/agent/ChangeLog @@ -1,3 +1,7 @@ +2011-04-10 Ben Kibbey + + * command.c: (cmd_passwd): Add option --preset. + 2011-04-10 Ben Kibbey * command.c: (cmd_genkey): Add option --preset. diff --git a/agent/command.c b/agent/command.c index 0121a20de..8655c9998 100644 --- a/agent/command.c +++ b/agent/command.c @@ -1411,9 +1411,10 @@ cmd_learn (assuan_context_t ctx, char *line) static const char hlp_passwd[] = - "PASSWD [--cache-nonce=] [--passwd-nonce=] \n" + "PASSWD [--cache-nonce=] [--passwd-nonce=] [--preset] \n" "\n" - "Change the passphrase/PIN for the key identified by keygrip in LINE."; + "Change the passphrase/PIN for the key identified by keygrip in LINE. When\n" + "--preset is used then the new passphrase will be added to the cache.\n"; static gpg_error_t cmd_passwd (assuan_context_t ctx, char *line) { @@ -1427,7 +1428,9 @@ cmd_passwd (assuan_context_t ctx, char *line) unsigned char *shadow_info = NULL; char *passphrase = NULL; char *pend; + int opt_preset; + opt_preset = has_option (line, "--preset"); cache_nonce = option_value (line, "--cache-nonce"); if (cache_nonce) { @@ -1525,6 +1528,12 @@ cmd_passwd (assuan_context_t ctx, char *line) ctrl->server_local->last_passwd_nonce = passwd_nonce; passwd_nonce = NULL; } + if (opt_preset) + { + char hexgrip[40+1]; + bin2hex(grip, 20, hexgrip); + err = agent_put_cache (hexgrip, CACHE_MODE_ANY, newpass, 900); + } } } xfree (newpass);