aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2007-12-11 13:19:38 +0000
committerWerner Koch <[email protected]>2007-12-11 13:19:38 +0000
commitc8b76e56214ff466b2eb8b7dee5c3944a01c3c1f (patch)
treeb1f290b76a1a3d4c138e63a3d4775d4639213855
parent2007-12-10 Marcus Brinkmann <[email protected]> (diff)
downloadgnupg-c8b76e56214ff466b2eb8b7dee5c3944a01c3c1f.tar.gz
gnupg-c8b76e56214ff466b2eb8b7dee5c3944a01c3c1f.zip
Allow decryption using type 20 Elgamal keys.
Diffstat (limited to '')
-rw-r--r--g10/ChangeLog5
-rw-r--r--g10/mainproc.c14
2 files changed, 15 insertions, 4 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index a44f26d23..f6019a435 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,3 +1,8 @@
+2007-12-11 Werner Koch <[email protected]>
+
+ * mainproc.c (proc_pubkey_enc): Allo type 20 Elgamal key for
+ decryption.
+
2007-12-10 Werner Koch <[email protected]>
* import.c (auto_create_card_key_stub): Do not clear the entire
diff --git a/g10/mainproc.c b/g10/mainproc.c
index 1d5c03f00..10d665b80 100644
--- a/g10/mainproc.c
+++ b/g10/mainproc.c
@@ -377,10 +377,16 @@ proc_pubkey_enc( CTX c, PACKET *pkt )
}
}
else if( is_ELGAMAL(enc->pubkey_algo)
- || enc->pubkey_algo == PUBKEY_ALGO_DSA
- || is_RSA(enc->pubkey_algo) ) {
- /* FIXME: strore this all in a list and process it later */
-
+ || enc->pubkey_algo == PUBKEY_ALGO_DSA
+ || is_RSA(enc->pubkey_algo)
+ || enc->pubkey_algo == PUBKEY_ALGO_ELGAMAL) {
+ /* Note that we also allow type 20 Elgamal keys for decryption.
+ There are still a couple of those keys in active use as a
+ subkey. */
+
+ /* FIXME: Store this all in a list and process it later so that
+ we can prioritize what key to use. This gives a better user
+ experience if wildcard keyids are used. */
if ( !c->dek && ((!enc->keyid[0] && !enc->keyid[1])
|| opt.try_all_secrets
|| !seckey_available( enc->keyid )) ) {