#include <asm/unaligned.h>
#include <linux/crc32.h>
#include <crypto/internal/hash.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/string.h>
#include <linux/kernel.h>
#define CHKSUM_BLOCK_SIZE …
#define CHKSUM_DIGEST_SIZE …
static int crc32_cra_init(struct crypto_tfm *tfm)
{ … }
static int crc32_setkey(struct crypto_shash *hash, const u8 *key,
unsigned int keylen)
{ … }
static int crc32_init(struct shash_desc *desc)
{ … }
static int crc32_update(struct shash_desc *desc, const u8 *data,
unsigned int len)
{ … }
static int __crc32_finup(u32 *crcp, const u8 *data, unsigned int len,
u8 *out)
{ … }
static int crc32_finup(struct shash_desc *desc, const u8 *data,
unsigned int len, u8 *out)
{ … }
static int crc32_final(struct shash_desc *desc, u8 *out)
{ … }
static int crc32_digest(struct shash_desc *desc, const u8 *data,
unsigned int len, u8 *out)
{ … }
static struct shash_alg alg = …;
static int __init crc32_mod_init(void)
{ … }
static void __exit crc32_mod_fini(void)
{ … }
subsys_initcall(crc32_mod_init);
module_exit(crc32_mod_fini);
MODULE_AUTHOR(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_LICENSE(…) …;
MODULE_ALIAS_CRYPTO(…) …;
MODULE_ALIAS_CRYPTO(…) …;