g10: Simplify get_seckey_byname: it was never called with NAME not NULL.
[gnupg.git] / g10 / ecdh.c
index 752181e..a1b7ecf 100644 (file)
@@ -76,7 +76,7 @@ pk_ecdh_default_params (unsigned int qbits)
         }
     }
   assert (i < DIM (kek_params_table));
-  if (DBG_CIPHER)
+  if (DBG_CRYPTO)
     log_printhex ("ECDH KEK params are", kek_params, sizeof(kek_params) );
 
   return gcry_mpi_set_opaque (NULL, kek_params, 4 * 8);
@@ -134,11 +134,14 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
       }
 
     secret_x_size = (nbits+7)/8;
-    assert (nbytes > secret_x_size);
-    memmove (secret_x, secret_x+1, secret_x_size);
-    memset (secret_x+secret_x_size, 0, nbytes-secret_x_size);
-
-    if (DBG_CIPHER)
+    assert (nbytes >= secret_x_size);
+    if ((nbytes & 1))
+      /* Remove the "04" prefix of non-compressed format.  */
+      memmove (secret_x, secret_x+1, secret_x_size);
+    if (nbytes - secret_x_size)
+      memset (secret_x+secret_x_size, 0, nbytes-secret_x_size);
+
+    if (DBG_CRYPTO)
       log_printhex ("ECDH shared secret X is:", secret_x, secret_x_size );
   }
 
@@ -158,7 +161,7 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
   kek_params = gcry_mpi_get_opaque (pkey[2], &nbits);
   kek_params_size = (nbits+7)/8;
 
-  if (DBG_CIPHER)
+  if (DBG_CRYPTO)
     log_printhex ("ecdh KDF params:", kek_params, kek_params_size);
 
   /* Expect 4 bytes  03 01 hash_alg symm_alg.  */
@@ -171,7 +174,7 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
   kdf_hash_algo = kek_params[2];
   kdf_encr_algo = kek_params[3];
 
-  if (DBG_CIPHER)
+  if (DBG_CRYPTO)
     log_debug ("ecdh KDF algorithms %s+%s with aeswrap\n",
                openpgp_md_algo_name (kdf_hash_algo),
                openpgp_cipher_algo_name (kdf_encr_algo));
@@ -183,9 +186,9 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
       xfree (secret_x);
       return gpg_error (GPG_ERR_BAD_PUBKEY);
     }
-  if (kdf_encr_algo != GCRY_CIPHER_AES128
-      && kdf_encr_algo != GCRY_CIPHER_AES192
-      && kdf_encr_algo != GCRY_CIPHER_AES256)
+  if (kdf_encr_algo != CIPHER_ALGO_AES
+      && kdf_encr_algo != CIPHER_ALGO_AES192
+      && kdf_encr_algo != CIPHER_ALGO_AES256)
     {
       xfree (secret_x);
       return gpg_error (GPG_ERR_BAD_PUBKEY);
@@ -215,7 +218,7 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
         return err;
       }
 
-    if(DBG_CIPHER)
+    if(DBG_CRYPTO)
       log_printhex ("ecdh KDF message params are:", message, message_size);
   }
 
@@ -250,8 +253,8 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
     assert( secret_x_size <= gcry_md_get_algo_dlen (kdf_hash_algo) );
 
     /* We could have allocated more, so clean the tail before returning.  */
-    memset( secret_x+secret_x_size, old_size-secret_x_size, 0 );
-    if (DBG_CIPHER)
+    memset (secret_x+secret_x_size, 0, old_size - secret_x_size);
+    if (DBG_CRYPTO)
       log_printhex ("ecdh KEK is:", secret_x, secret_x_size );
   }
 
@@ -317,7 +320,7 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
             return err;
           }
 
-        if (DBG_CIPHER)
+        if (DBG_CRYPTO)
           log_printhex ("ecdh encrypting  :", in, data_buf_size );
 
         err = gcry_cipher_encrypt (hd, data_buf+1, data_buf_size+8,
@@ -333,7 +336,7 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
           }
         data_buf[0] = data_buf_size+8;
 
-        if (DBG_CIPHER)
+        if (DBG_CRYPTO)
           log_printhex ("ecdh encrypted to:", data_buf+1, data_buf[0] );
 
         result = gcry_mpi_set_opaque (NULL, data_buf, 8 * (1+data_buf[0]));
@@ -370,7 +373,7 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
         in = data_buf+data_buf_size;
         data_buf_size = data_buf[0];
 
-        if (DBG_CIPHER)
+        if (DBG_CRYPTO)
           log_printhex ("ecdh decrypting :", data_buf+1, data_buf_size);
 
         err = gcry_cipher_decrypt (hd, in, data_buf_size, data_buf+1,
@@ -386,7 +389,7 @@ pk_ecdh_encrypt_with_shared_point (int is_encrypt, gcry_mpi_t shared_mpi,
 
         data_buf_size -= 8;
 
-        if (DBG_CIPHER)
+        if (DBG_CRYPTO)
           log_printhex ("ecdh decrypted to :", in, data_buf_size);
 
         /* Padding is removed later.  */
@@ -420,12 +423,12 @@ gen_k (unsigned nbits)
   gcry_mpi_t k;
 
   k = gcry_mpi_snew (nbits);
-  if (DBG_CIPHER)
+  if (DBG_CRYPTO)
     log_debug ("choosing a random k of %u bits\n", nbits);
 
   gcry_mpi_randomize (k, nbits-1, GCRY_STRONG_RANDOM);
 
-  if (DBG_CIPHER)
+  if (DBG_CRYPTO)
     {
       unsigned char *buffer;
       if (gcry_mpi_aprint (GCRYMPI_FMT_HEX, &buffer, NULL, k))