#include <crypto/internal/hash.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/mm.h>
#include <asm/byteorder.h>
#include <linux/types.h>
#define WP512_DIGEST_SIZE …
#define WP384_DIGEST_SIZE …
#define WP256_DIGEST_SIZE …
#define WP512_BLOCK_SIZE …
#define WP512_LENGTHBYTES …
#define WHIRLPOOL_ROUNDS …
struct wp512_ctx { … };
static const u64 C0[256] = …;
static const u64 C1[256] = …;
static const u64 C2[256] = …;
static const u64 C3[256] = …;
static const u64 C4[256] = …;
static const u64 C5[256] = …;
static const u64 C6[256] = …;
static const u64 C7[256] = …;
static const u64 rc[WHIRLPOOL_ROUNDS] = …;
static __no_kmsan_checks void wp512_process_buffer(struct wp512_ctx *wctx) { … }
static int wp512_init(struct shash_desc *desc) { … }
static int wp512_update(struct shash_desc *desc, const u8 *source,
unsigned int len)
{ … }
static int wp512_final(struct shash_desc *desc, u8 *out)
{ … }
static int wp384_final(struct shash_desc *desc, u8 *out)
{ … }
static int wp256_final(struct shash_desc *desc, u8 *out)
{ … }
static struct shash_alg wp_algs[3] = …;
static int __init wp512_mod_init(void)
{ … }
static void __exit wp512_mod_fini(void)
{ … }
MODULE_ALIAS_CRYPTO(…) …;
MODULE_ALIAS_CRYPTO(…) …;
MODULE_ALIAS_CRYPTO(…) …;
subsys_initcall(wp512_mod_init);
module_exit(wp512_mod_fini);
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;