gpg: Fix "can't handle public key algorithm" warning.
authorWerner Koch <wk@gnupg.org>
Wed, 20 Aug 2014 07:59:36 +0000 (09:59 +0200)
committerWerner Koch <wk@gnupg.org>
Wed, 20 Aug 2014 07:59:36 +0000 (09:59 +0200)
* g10/parse-packet.c (unknown_pubkey_warning): Check for encr/sign
capabilities.

g10/parse-packet.c

index c69393a..cfae788 100644 (file)
@@ -195,12 +195,29 @@ unknown_pubkey_warning (int algo)
 {
   static byte unknown_pubkey_algos[256];
 
-  algo &= 0xff;
-  if (!unknown_pubkey_algos[algo])
+  /* First check whether the algorithm is usable but not suitable for
+     encryption/signing.  */
+  if (pubkey_get_npkey (algo))
     {
       if (opt.verbose)
-       log_info (_("can't handle public key algorithm %d\n"), algo);
-      unknown_pubkey_algos[algo] = 1;
+        {
+          if (!pubkey_get_nsig (algo))
+            log_info ("public key algorithm %s not suitable for %s\n",
+                      openpgp_pk_algo_name (algo), "signing");
+          if (!pubkey_get_nenc (algo))
+            log_info ("public key algorithm %s not suitable for %s\n",
+                      openpgp_pk_algo_name (algo), "encryption");
+        }
+    }
+  else
+    {
+      algo &= 0xff;
+      if (!unknown_pubkey_algos[algo])
+        {
+          if (opt.verbose)
+            log_info (_("can't handle public key algorithm %d\n"), algo);
+          unknown_pubkey_algos[algo] = 1;
+        }
     }
 }