Make gpgconf aware of --p12-charset.
[gnupg.git] / agent / learncard.c
index 7dcacee..fac12be 100644 (file)
@@ -1,5 +1,5 @@
 /* learncard.c - Handle the LEARN command
- *     Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+ *     Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -15,7 +15,8 @@
  *
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ * USA.
  */
 
 #include <config.h>
@@ -239,32 +240,6 @@ sinfo_cb (void *opaque, const char *keyword, size_t keywordlen,
 }
 
 
-/* Create an S-expression with the shadow info.  */
-static unsigned char *
-make_shadow_info (const char *serialno, const char *idstring)
-{
-  const char *s;
-  unsigned char *info, *p;
-  char numbuf[21];
-  int n;
-
-  for (s=serialno, n=0; *s && s[1]; s += 2)
-    n++;
-
-  info = p = xtrymalloc (1 + 21 + n
-                           + 21 + strlen (idstring) + 1 + 1);
-  *p++ = '(';
-  sprintf (numbuf, "%d:", n);
-  p = stpcpy (p, numbuf);
-  for (s=serialno; *s && s[1]; s += 2)
-    *p++ = xtoi_2 (s);
-  sprintf (numbuf, "%d:", strlen (idstring));
-  p = stpcpy (p, numbuf);
-  p = stpcpy (p, idstring);
-  *p++ = ')';
-  *p = 0;
-  return info;
-}
 
 static int
 send_cert_back (ctrl_t ctrl, const char *id, void *assuan_context)
@@ -290,8 +265,8 @@ send_cert_back (ctrl_t ctrl, const char *id, void *assuan_context)
   if (rc)
     {
       log_error ("sending certificate failed: %s\n",
-                 assuan_strerror (rc));
-      return map_assuan_err (rc);
+                 gpg_strerror (rc));
+      return rc;
     }
   return 0;
 }
@@ -385,6 +360,12 @@ agent_handle_learn (ctrl_t ctrl, void *assuan_context)
       if (item->no_cert)
         continue; /* No public key yet available. */
 
+      if (assuan_context)
+        {
+          agent_write_status (ctrl, "KEYPAIRINFO",
+                              item->hexgrip, item->id, NULL);
+        }
+
       for (p=item->hexgrip, i=0; i < 20; p += 2, i++)
         grip[i] = xtoi_2 (p);