(parse_dn_part): Map common OIDs to human readable
[gnupg.git] / g10 / keygen.c
index a13ea15..72c5e1e 100644 (file)
@@ -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");