Commit be34c4ef authored by David S. Miller's avatar David S. Miller Committed by Herbert Xu

crypto: sha - Handle unaligned input data in generic sha256 and sha512.

Like SHA1, use get_unaligned_be*() on the raw input data.
Reported-by: default avatarBob Picco <bob.picco@oracle.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarHerbert Xu <herbert@gondor.apana.org.au>
parent 5cfed7b3
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include <linux/types.h> #include <linux/types.h>
#include <crypto/sha.h> #include <crypto/sha.h>
#include <asm/byteorder.h> #include <asm/byteorder.h>
#include <asm/unaligned.h>
static inline u32 Ch(u32 x, u32 y, u32 z) static inline u32 Ch(u32 x, u32 y, u32 z)
{ {
...@@ -42,7 +43,7 @@ static inline u32 Maj(u32 x, u32 y, u32 z) ...@@ -42,7 +43,7 @@ static inline u32 Maj(u32 x, u32 y, u32 z)
static inline void LOAD_OP(int I, u32 *W, const u8 *input) static inline void LOAD_OP(int I, u32 *W, const u8 *input)
{ {
W[I] = __be32_to_cpu( ((__be32*)(input))[I] ); W[I] = get_unaligned_be32((__u32 *)input + I);
} }
static inline void BLEND_OP(int I, u32 *W) static inline void BLEND_OP(int I, u32 *W)
......
...@@ -20,6 +20,7 @@ ...@@ -20,6 +20,7 @@
#include <crypto/sha.h> #include <crypto/sha.h>
#include <linux/percpu.h> #include <linux/percpu.h>
#include <asm/byteorder.h> #include <asm/byteorder.h>
#include <asm/unaligned.h>
static inline u64 Ch(u64 x, u64 y, u64 z) static inline u64 Ch(u64 x, u64 y, u64 z)
{ {
...@@ -68,7 +69,7 @@ static const u64 sha512_K[80] = { ...@@ -68,7 +69,7 @@ static const u64 sha512_K[80] = {
static inline void LOAD_OP(int I, u64 *W, const u8 *input) static inline void LOAD_OP(int I, u64 *W, const u8 *input)
{ {
W[I] = __be64_to_cpu( ((__be64*)(input))[I] ); W[I] = get_unaligned_be64((__u64 *)input + I);
} }
static inline void BLEND_OP(int I, u64 *W) static inline void BLEND_OP(int I, u64 *W)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment