Added PASSWD --preset.
authorBen Kibbey <bjk@luxsci.net>
Sun, 10 Apr 2011 20:06:18 +0000 (16:06 -0400)
committerWerner Koch <wk@gnupg.org>
Tue, 12 Apr 2011 16:04:53 +0000 (18:04 +0200)
agent/ChangeLog
agent/command.c

index 83ad651..d4cea79 100644 (file)
@@ -1,5 +1,9 @@
 2011-04-10  Ben Kibbey <bjk@luxsci.net>
 
+       * command.c: (cmd_passwd): Add option --preset.
+
+2011-04-10  Ben Kibbey <bjk@luxsci.net>
+
        * command.c: (cmd_genkey): Add option --preset.
        * genkey.c: (agent_genkey): Add parameter preset.
 
index 0121a20..8655c99 100644 (file)
@@ -1411,9 +1411,10 @@ cmd_learn (assuan_context_t ctx, char *line)
 
 \f
 static const char hlp_passwd[] =
-  "PASSWD [--cache-nonce=<c>] [--passwd-nonce=<s>] <hexstring_with_keygrip>\n"
+  "PASSWD [--cache-nonce=<c>] [--passwd-nonce=<s>] [--preset] <hexstring_with_keygrip>\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);