]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
crypto: hash - add zero length message hash for shax and md5
authorLABBE Corentin <clabbe.montjoie@gmail.com>
Thu, 17 Dec 2015 12:45:39 +0000 (13:45 +0100)
committerSomasundaram Krishnasamy <somasundaram.krishnasamy@oracle.com>
Thu, 24 Aug 2017 17:53:14 +0000 (10:53 -0700)
Orabug: 26644685

Some crypto drivers cannot process empty data message and return a
precalculated hash for md5/sha1/sha224/sha256.

This patch add thoses precalculated hash in include/crypto.

Signed-off-by: LABBE Corentin <clabbe.montjoie@gmail.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
(cherry picked from commit 0c4c78de0417ced1da92351a3013e631860ea576)
Signed-off-by: Somasundaram Krishnasamy <somasundaram.krishnasamy@oracle.com>
Reviewed-by: Jack Vogel <jack.vogel@oracle.com>
Conflicts:
include/crypto/md5.h

crypto/md5.c
crypto/sha1_generic.c
crypto/sha256_generic.c
include/crypto/md5.h
include/crypto/sha.h

index 36f5e5b103f302dbeda611466fb97ab94b87511f..f1b51d17fc71e827c422b7abb7549315fe72146d 100644 (file)
 #include <linux/cryptohash.h>
 #include <asm/byteorder.h>
 
+const u8 md5_zero_message_hash[MD5_DIGEST_SIZE] = {
+       0xd4, 0x1d, 0x8c, 0xd9, 0x8f, 0x00, 0xb2, 0x04,
+       0xe9, 0x80, 0x09, 0x98, 0xec, 0xf8, 0x42, 0x7e,
+};
+EXPORT_SYMBOL_GPL(md5_zero_message_hash);
+
 /* XXX: this stuff can be optimized */
 static inline void le32_to_cpu_array(u32 *buf, unsigned int words)
 {
index 39e3acc438d95c1ed1c15aaf9916b9489febbade..6877cbb9105fbb24cb0a65f441f0c9f272a22733 100644 (file)
 #include <crypto/sha1_base.h>
 #include <asm/byteorder.h>
 
+const u8 sha1_zero_message_hash[SHA1_DIGEST_SIZE] = {
+       0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d,
+       0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, 0x18, 0x90,
+       0xaf, 0xd8, 0x07, 0x09
+};
+EXPORT_SYMBOL_GPL(sha1_zero_message_hash);
+
 static void sha1_generic_block_fn(struct sha1_state *sst, u8 const *src,
                                  int blocks)
 {
index 78431163ed3c77eebb89db84852959cf45aee369..8f9c47e1a96e4792a52454a79312ab6696ede007 100644 (file)
 #include <asm/byteorder.h>
 #include <asm/unaligned.h>
 
+const u8 sha224_zero_message_hash[SHA224_DIGEST_SIZE] = {
+       0xd1, 0x4a, 0x02, 0x8c, 0x2a, 0x3a, 0x2b, 0xc9, 0x47,
+       0x61, 0x02, 0xbb, 0x28, 0x82, 0x34, 0xc4, 0x15, 0xa2,
+       0xb0, 0x1f, 0x82, 0x8e, 0xa6, 0x2a, 0xc5, 0xb3, 0xe4,
+       0x2f
+};
+EXPORT_SYMBOL_GPL(sha224_zero_message_hash);
+
+const u8 sha256_zero_message_hash[SHA256_DIGEST_SIZE] = {
+       0xe3, 0xb0, 0xc4, 0x42, 0x98, 0xfc, 0x1c, 0x14,
+       0x9a, 0xfb, 0xf4, 0xc8, 0x99, 0x6f, 0xb9, 0x24,
+       0x27, 0xae, 0x41, 0xe4, 0x64, 0x9b, 0x93, 0x4c,
+       0xa4, 0x95, 0x99, 0x1b, 0x78, 0x52, 0xb8, 0x55
+};
+EXPORT_SYMBOL_GPL(sha256_zero_message_hash);
+
 static inline u32 Ch(u32 x, u32 y, u32 z)
 {
        return z ^ (x & (y ^ z));
index 65f299b08b0d7721f6748b0f4c67672bffe62c59..327deac963c08f01de978ba5fd02ee4da10a70ea 100644 (file)
@@ -8,6 +8,13 @@
 #define MD5_BLOCK_WORDS                16
 #define MD5_HASH_WORDS         4
 
+#define MD5_H0 0x67452301UL
+#define MD5_H1 0xefcdab89UL
+#define MD5_H2 0x98badcfeUL
+#define MD5_H3 0x10325476UL
+
+extern const u8 md5_zero_message_hash[MD5_DIGEST_SIZE];
+
 struct md5_state {
        u32 hash[MD5_HASH_WORDS];
        u32 block[MD5_BLOCK_WORDS];
index dd7905a3c22e92c9ae1fc1b6b39524cf3ce51618..c94d3eb1cefdef3dc9437554d1b5a2eeb1879092 100644 (file)
 #define SHA512_H6      0x1f83d9abfb41bd6bULL
 #define SHA512_H7      0x5be0cd19137e2179ULL
 
+extern const u8 sha1_zero_message_hash[SHA1_DIGEST_SIZE];
+
+extern const u8 sha224_zero_message_hash[SHA224_DIGEST_SIZE];
+
+extern const u8 sha256_zero_message_hash[SHA256_DIGEST_SIZE];
+
 struct sha1_state {
        u32 state[SHA1_DIGEST_SIZE / 4];
        u64 count;