No more warnings for AMD64 (at least when cross-compiling). Thus tehre is a
[gnupg.git] / g10 / seskey.c
index a31cbb1..6ac83b0 100644 (file)
@@ -77,7 +77,7 @@ make_session_key( DEK *dek )
 gcry_mpi_t
 encode_session_key (DEK *dek, unsigned int nbits)
 {
-    int nframe = (nbits+7) / 8;
+    size_t nframe = (nbits+7) / 8;
     byte *p;
     byte *frame;
     int i,n;
@@ -157,7 +157,7 @@ static gcry_mpi_t
 do_encode_md( gcry_md_hd_t md, int algo, size_t len, unsigned nbits,
              const byte *asn, size_t asnlen )
 {
-    int nframe = (nbits+7) / 8;
+    size_t nframe = (nbits+7) / 8;
     byte *frame;
     int i,n;
     gcry_mpi_t a;
@@ -220,8 +220,7 @@ encode_md_value (PKT_public_key *pk, PKT_secret_key *sk,
     {
       /* It's a DSA signature, so find out the size of q. */
 
-      unsigned int qbytes = gcry_mpi_get_nbits (pk?pk->pkey[1]:sk->skey[1]);
-      size_t n;
+      size_t qbytes = gcry_mpi_get_nbits (pk?pk->pkey[1]:sk->skey[1]);
 
       /* Make sure it is a multiple of 8 bits. */
 
@@ -238,11 +237,11 @@ encode_md_value (PKT_public_key *pk, PKT_secret_key *sk,
         or something like that, which would look correct but allow
         trivial forgeries.  Yes, I know this rules out using MD5 with
         DSA. ;) */
-
-      if(qbytes<160)
+      if (qbytes < 160)
        {
-         log_error(_("DSA key %s uses an unsafe (%u bit) hash\n"),
-                   pk?keystr_from_pk(pk):keystr_from_sk(sk),qbytes);
+         log_error (_("DSA key %s uses an unsafe (%u bit) hash\n"),
+                     pk?keystr_from_pk(pk):keystr_from_sk(sk),
+                     (unsigned int)qbytes);
          return NULL;
        }
 
@@ -250,16 +249,16 @@ encode_md_value (PKT_public_key *pk, PKT_secret_key *sk,
 
       /* Check if we're too short.  Too long is safe as we'll
         automatically left-truncate. */
-
-      if(gcry_md_get_algo_dlen (hash_algo) < qbytes)
+      if (gcry_md_get_algo_dlen (hash_algo) < qbytes)
        {
-         log_error(_("DSA key %s requires a %u bit or larger hash\n"),
-                   pk?keystr_from_pk(pk):keystr_from_sk(sk),qbytes*8);
+         log_error (_("DSA key %s requires a %u bit or larger hash\n"),
+                     pk?keystr_from_pk(pk):keystr_from_sk(sk),
+                     (unsigned int)(qbytes*8));
          return NULL;
        }
 
       if (gcry_mpi_scan (&frame, GCRYMPI_FMT_USG,
-                         gcry_md_read (md, hash_algo), n, &n))
+                         gcry_md_read (md, hash_algo), qbytes, &qbytes))
         BUG();
     }
   else
@@ -268,7 +267,9 @@ encode_md_value (PKT_public_key *pk, PKT_secret_key *sk,
       byte *asn;
       size_t asnlen;
 
-      rc = gcry_md_algo_info (hash_algo, GCRYCTL_GET_ASNOID, NULL, &asnlen);
+      rc = gcry_md_test_algo (hash_algo);
+      if (!rc)
+        rc = gcry_md_algo_info (hash_algo, GCRYCTL_GET_ASNOID, NULL, &asnlen);
       if (rc)
         log_fatal ("can't get OID of algo %d: %s\n",
                    hash_algo, gpg_strerror (rc));