(show_key_with_all_names): Print the card S/N.
[gnupg.git] / g10 / call-agent.c
index b981b7f..f93132f 100644 (file)
@@ -82,7 +82,7 @@ start_agent (void)
                  the access to the agent. */
 
   infostr = force_pipe_server? NULL : getenv ("GPG_AGENT_INFO");
-  if (!infostr)
+  if (!infostr || !*infostr)
     {
       const char *pgmname;
       const char *argv[3];
@@ -461,6 +461,7 @@ agent_release_card_info (struct agent_card_info_s *info)
   xfree (info->disp_lang); info->disp_lang = NULL;
   xfree (info->pubkey_url); info->pubkey_url = NULL;
   xfree (info->login_data); info->login_data = NULL;
+  info->cafpr1valid = info->cafpr2valid = info->cafpr3valid = 0;
   info->fpr1valid = info->fpr2valid = info->fpr3valid = 0;
 }
 
@@ -557,6 +558,20 @@ learn_status_cb (void *opaque, const char *line)
       else if (no == 3)
         parm->fpr3valid = unhexify_fpr (line, parm->fpr3);
     }
+  else if (keywordlen == 6 && !memcmp (keyword, "CA-FPR", keywordlen))
+    {
+      int no = atoi (line);
+      while (*line && !spacep (line))
+        line++;
+      while (spacep (line))
+        line++;
+      if (no == 1)
+        parm->cafpr1valid = unhexify_fpr (line, parm->cafpr1);
+      else if (no == 2)
+        parm->cafpr2valid = unhexify_fpr (line, parm->cafpr2);
+      else if (no == 3)
+        parm->cafpr3valid = unhexify_fpr (line, parm->cafpr3);
+    }
   
   return 0;
 }
@@ -870,7 +885,7 @@ agent_scd_change_pin (int chvno)
 }
 
 
-/* Perform a CHECKPIN operation.  SERIALNO should be the seriial
+/* Perform a CHECKPIN operation.  SERIALNO should be the serial
    number of the card - optioanlly followed by the fingerprint;
    however the fingerprint is ignored here. */
 int