Exporting secret keys via gpg-agent is now basically supported.
[gnupg.git] / agent / genkey.c
index 0a35643..c267852 100644 (file)
@@ -290,10 +290,12 @@ reenter_compare_cb (struct pin_entry_info_s *pi)
    function returns 0 and store the passphrase at R_PASSPHRASE; if the
    user opted not to use a passphrase NULL will be stored there.  The
    user needs to free the returned string.  In case of an error and
-   error code is returned and NULL stored at R_PASSPHRASE.  */
+   error code is returned and NULL stored at R_PASSPHRASE.  If
+   R_CANCEL_ALL is not NULL and the user canceled by directly closing
+   the window true will be stored at this address.  */
 gpg_error_t
 agent_ask_new_passphrase (ctrl_t ctrl, const char *prompt,
-                          char **r_passphrase)
+                          char **r_passphrase, int *r_cancel_all)
 {
   gpg_error_t err;
   const char *text1 = prompt;
@@ -314,7 +316,7 @@ agent_ask_new_passphrase (ctrl_t ctrl, const char *prompt,
   pi2->check_cb_arg = pi->pin;
 
  next_try:
-  err = agent_askpin (ctrl, text1, NULL, initial_errtext, pi);
+  err = agent_askpin (ctrl, text1, NULL, initial_errtext, pi, r_cancel_all);
   initial_errtext = NULL;
   if (!err)
     {
@@ -327,7 +329,7 @@ agent_ask_new_passphrase (ctrl_t ctrl, const char *prompt,
       /* Unless the passphrase is empty, ask to confirm it.  */
       if (pi->pin && *pi->pin)
         {
-          err = agent_askpin (ctrl, text2, NULL, NULL, pi2);
+          err = agent_askpin (ctrl, text2, NULL, NULL, pi2, NULL);
           if (err == -1)
             { /* The re-entered one did not match and the user did not
                  hit cancel. */
@@ -379,7 +381,7 @@ agent_genkey (ctrl_t ctrl, const char *cache_nonce,
     rc = agent_ask_new_passphrase (ctrl, 
                                    _("Please enter the passphrase to%0A"
                                      "to protect your new key"),
-                                   &passphrase);
+                                   &passphrase, NULL);
   if (rc)
     return rc;
 
@@ -471,7 +473,7 @@ agent_protect_and_store (ctrl_t ctrl, gcry_sexp_t s_skey)
 
   rc = agent_ask_new_passphrase (ctrl, 
                                  _("Please enter the new passphrase"),
-                                 &passphrase);
+                                 &passphrase, NULL);
   if (!rc)
     {
       rc = store_key (s_skey, passphrase, 1);