diff options
Diffstat (limited to 'g10/skclist.c')
-rw-r--r-- | g10/skclist.c | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/g10/skclist.c b/g10/skclist.c index 6d34b05bf..53fd2e985 100644 --- a/g10/skclist.c +++ b/g10/skclist.c @@ -63,14 +63,18 @@ build_skc_list( STRLIST locusr, SKC_LIST *ret_skc_list, int unlock, else if( !(rc=check_pubkey_algo2(skc->pubkey_algo, usage)) ) { SKC_LIST r; if( skc->version == 4 && (usage & 1) - && skc->pubkey_algo == PUBKEY_ALGO_ELGAMAL ) - log_info("WARNING: This is probably a PGP generated " + && skc->pubkey_algo == PUBKEY_ALGO_ELGAMAL_E ) { + log_error("this is a PGP generated " "ElGamal key which is NOT secure for signatures!\n"); - r = m_alloc( sizeof *r ); - r->skc = skc; skc = NULL; - r->next = skc_list; - r->mark = 0; - skc_list = r; + free_secret_cert( skc ); skc = NULL; + } + else { + r = m_alloc( sizeof *r ); + r->skc = skc; skc = NULL; + r->next = skc_list; + r->mark = 0; + skc_list = r; + } } else { free_secret_cert( skc ); skc = NULL; @@ -89,14 +93,19 @@ build_skc_list( STRLIST locusr, SKC_LIST *ret_skc_list, int unlock, else if( !(rc=check_pubkey_algo2(skc->pubkey_algo, usage)) ) { SKC_LIST r; if( skc->version == 4 && (usage & 1) - && skc->pubkey_algo == PUBKEY_ALGO_ELGAMAL ) - log_info("WARNING: This is probably a PGP generated " - "ElGamal key which is NOT secure for signatures!\n"); - r = m_alloc( sizeof *r ); - r->skc = skc; skc = NULL; - r->next = skc_list; - r->mark = 0; - skc_list = r; + && skc->pubkey_algo == PUBKEY_ALGO_ELGAMAL_E ) { + log_info("skipped '%s': this is a PGP generated " + "ElGamal key which is not secure for signatures!\n", + locusr->d ); + free_secret_cert( skc ); skc = NULL; + } + else { + r = m_alloc( sizeof *r ); + r->skc = skc; skc = NULL; + r->next = skc_list; + r->mark = 0; + skc_list = r; + } } else { free_secret_cert( skc ); skc = NULL; |