(parse_dn_part): Map common OIDs to human readable
[gnupg.git] / g10 / keygen.c
index 935cff3..72c5e1e 100644 (file)
@@ -1,6 +1,6 @@
 /* keygen.c - generate a key pair
  * Copyright (C) 1998, 1999, 2000, 2001, 2002,
- *               2003 Free Software Foundation, Inc.
+ *               2003, 2004 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -2452,7 +2452,7 @@ do_generate_keypair (struct para_data_s *para,
          outctrl->pub.stream = iobuf_create (outctrl->pub.fname);
          if (!outctrl->pub.stream)
            {
-             log_error ("can't create `%s': %s\n", outctrl->pub.newfname,
+             log_error ("can't create `%s': %s\n", outctrl->pub.fname,
                         strerror (errno));
              return;
            }
@@ -2474,7 +2474,7 @@ do_generate_keypair (struct para_data_s *para,
          outctrl->sec.stream = iobuf_create (outctrl->sec.fname);
          if (!outctrl->sec.stream)
            {
-             log_error ("can't create `%s': %s\n", outctrl->sec.newfname,
+             log_error ("can't create `%s': %s\n", outctrl->sec.fname,
                         strerror (errno));
              return;
            }
@@ -2549,7 +2549,7 @@ do_generate_keypair (struct para_data_s *para,
                            get_parameter_uint (para, pKEYUSAGE));
     }
 
-  if (get_parameter (para, pSUBKEYTYPE))
+  if ((! rc) && get_parameter (para, pSUBKEYTYPE))
     {
       if (!card)
         {
@@ -2575,7 +2575,7 @@ do_generate_keypair (struct para_data_s *para,
       did_sub = 1;
     }
 
-  if (card && get_parameter (para, pAUTHKEYTYPE))
+  if ((! rc) && card && get_parameter (para, pAUTHKEYTYPE))
     {
       rc = gen_card_key (PUBKEY_ALGO_RSA, 3, pub_root, sec_root,
                          get_parameter_u32 (para, pKEYEXPIRE), para);
@@ -2866,10 +2866,8 @@ gen_card_key (int algo, int keyno, KBNODE pub_root, KBNODE sec_root,
 /*      } */
 
   if (rc)
-    {
-      log_error ("key generation failed: %s\n", gpg_strerror (rc));
-      return rc;
-    }
+    return rc;
+
   if ( !info.n || !info.e )
     {
       log_error ("communication error with SCD\n");