diff options
Diffstat (limited to 'g10/keygen.c')
-rw-r--r-- | g10/keygen.c | 10 |
1 files changed, 4 insertions, 6 deletions
diff --git a/g10/keygen.c b/g10/keygen.c index a13ea155c..72c5e1e8a 100644 --- a/g10/keygen.c +++ b/g10/keygen.c @@ -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"); |