diff --git a/g10/ChangeLog b/g10/ChangeLog index 3316f1ca6..cc4509433 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -2,6 +2,10 @@ * keygen.c (do_generate_keypair): Print member fname, instead of newfname, again. + (do_generate_keypair): Don't try to execute certain pieces of code + in case an error occured. + (gen_card_key): Don't print out a message, which is already + printed by do_generate_keypair(). 2004-01-18 Moritz Schulte 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");