#include <crypto/internal/hash.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/mm.h>
#include <linux/init.h>
#include <linux/crypto.h>
#include <linux/types.h>
#include <crypto/sha2.h>
#include <crypto/sha512_base.h>
#include <linux/percpu.h>
#include <asm/byteorder.h>
#include <asm/unaligned.h>
const u8 sha384_zero_message_hash[SHA384_DIGEST_SIZE] = …;
EXPORT_SYMBOL_GPL(…);
const u8 sha512_zero_message_hash[SHA512_DIGEST_SIZE] = …;
EXPORT_SYMBOL_GPL(…);
static inline u64 Ch(u64 x, u64 y, u64 z)
{ … }
static inline u64 Maj(u64 x, u64 y, u64 z)
{ … }
static const u64 sha512_K[80] = …;
#define e0(x) …
#define e1(x) …
#define s0(x) …
#define s1(x) …
static inline void LOAD_OP(int I, u64 *W, const u8 *input)
{ … }
static inline void BLEND_OP(int I, u64 *W)
{ … }
static void
sha512_transform(u64 *state, const u8 *input)
{ … }
static void sha512_generic_block_fn(struct sha512_state *sst, u8 const *src,
int blocks)
{ … }
int crypto_sha512_update(struct shash_desc *desc, const u8 *data,
unsigned int len)
{ … }
EXPORT_SYMBOL(…);
static int sha512_final(struct shash_desc *desc, u8 *hash)
{ … }
int crypto_sha512_finup(struct shash_desc *desc, const u8 *data,
unsigned int len, u8 *hash)
{ … }
EXPORT_SYMBOL(…);
static struct shash_alg sha512_algs[2] = …;
static int __init sha512_generic_mod_init(void)
{ … }
static void __exit sha512_generic_mod_fini(void)
{ … }
subsys_initcall(sha512_generic_mod_init);
module_exit(sha512_generic_mod_fini);
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_ALIAS_CRYPTO(…) …;
MODULE_ALIAS_CRYPTO(…) …;
MODULE_ALIAS_CRYPTO(…) …;
MODULE_ALIAS_CRYPTO(…) …;