]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - crypto/sha1.c
[CRYPTO] Use standard byte order macros wherever possible
[linux-2.6-omap-h63xx.git] / crypto / sha1.c
index 4016f3b8ce9b6233f24a8200d3b1661588da7f96..c686e7826174fd3184328eeac58356b5dafd42f6 100644 (file)
@@ -21,6 +21,7 @@
 #include <linux/mm.h>
 #include <linux/crypto.h>
 #include <linux/cryptohash.h>
+#include <linux/types.h>
 #include <asm/scatterlist.h>
 #include <asm/byteorder.h>
 
@@ -72,20 +73,12 @@ static void sha1_update(void *ctx, const u8 *data, unsigned int len)
 static void sha1_final(void* ctx, u8 *out)
 {
        struct sha1_ctx *sctx = ctx;
-       u32 i, j, index, padlen;
-       u64 t;
-       u8 bits[8] = { 0, };
+       __be32 *dst = (__be32 *)out;
+       u32 i, index, padlen;
+       __be64 bits;
        static const u8 padding[64] = { 0x80, };
 
-       t = sctx->count;
-       bits[7] = 0xff & t; t>>=8;
-       bits[6] = 0xff & t; t>>=8;
-       bits[5] = 0xff & t; t>>=8;
-       bits[4] = 0xff & t; t>>=8;
-       bits[3] = 0xff & t; t>>=8;
-       bits[2] = 0xff & t; t>>=8;
-       bits[1] = 0xff & t; t>>=8;
-       bits[0] = 0xff & t;
+       bits = cpu_to_be64(sctx->count);
 
        /* Pad out to 56 mod 64 */
        index = (sctx->count >> 3) & 0x3f;
@@ -93,16 +86,11 @@ static void sha1_final(void* ctx, u8 *out)
        sha1_update(sctx, padding, padlen);
 
        /* Append length */
-       sha1_update(sctx, bits, sizeof bits); 
+       sha1_update(sctx, (const u8 *)&bits, sizeof(bits));
 
        /* Store state in digest */
-       for (i = j = 0; i < 5; i++, j += 4) {
-               u32 t2 = sctx->state[i];
-               out[j+3] = t2 & 0xff; t2>>=8;
-               out[j+2] = t2 & 0xff; t2>>=8;
-               out[j+1] = t2 & 0xff; t2>>=8;
-               out[j  ] = t2 & 0xff;
-       }
+       for (i = 0; i < 5; i++)
+               dst[i] = cpu_to_be32(sctx->state[i]);
 
        /* Wipe context */
        memset(sctx, 0, sizeof *sctx);