Fix APDU buffer problem under MAC OS.
[gnupg.git] / g10 / mainproc.c
index 4e76ab3..3756e2f 100644 (file)
@@ -6,7 +6,7 @@
  *
  * GnuPG is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
+ * the Free Software Foundation; either version 3 of the License, or
  * (at your option) any later version.
  *
  * GnuPG is distributed in the hope that it will be useful,
@@ -15,9 +15,7 @@
  * GNU General Public License for more details.
  *
  * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
- * USA.
+ * along with this program; if not, see <http://www.gnu.org/licenses/>.
  */
 
 #include <config.h>
@@ -276,9 +274,9 @@ proc_symkey_enc( CTX c, PACKET *pkt )
     else if(!c->dek)
       {
         int algo = enc->cipher_algo;
-       const char *s = gcry_cipher_algo_name (algo);
+       const char *s = openpgp_cipher_algo_name (algo);
 
-       if (!gcry_cipher_test_algo (algo))
+       if (!openpgp_cipher_test_algo (algo))
          {
            if(!opt.quiet)
              {
@@ -379,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 )) ) {
@@ -520,8 +524,8 @@ proc_encrypted( CTX c, PACKET *pkt )
            algo = opt.def_cipher_algo;
            if ( algo )
              log_info (_("assuming %s encrypted data\n"),
-                        gcry_cipher_algo_name (algo));
-           else if ( gcry_cipher_test_algo (CIPHER_ALGO_IDEA) )
+                        openpgp_cipher_algo_name (algo));
+           else if ( openpgp_cipher_test_algo (CIPHER_ALGO_IDEA) )
              {
                algo = opt.def_cipher_algo;
                if (!algo)
@@ -529,7 +533,7 @@ proc_encrypted( CTX c, PACKET *pkt )
                idea_cipher_warn(1);
                log_info (_("IDEA cipher unavailable, "
                            "optimistically attempting to use %s instead\n"),
-                         gcry_cipher_algo_name (algo));
+                         openpgp_cipher_algo_name (algo));
              }
            else
              {