#include <crypto/hmac.h>
#include <crypto/internal/hash.h>
#include <crypto/scatterwalk.h>
#include <linux/err.h>
#include <linux/fips.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/scatterlist.h>
#include <linux/string.h>
struct hmac_ctx { … };
static int hmac_setkey(struct crypto_shash *parent,
const u8 *inkey, unsigned int keylen)
{ … }
static int hmac_export(struct shash_desc *pdesc, void *out)
{ … }
static int hmac_import(struct shash_desc *pdesc, const void *in)
{ … }
static int hmac_init(struct shash_desc *pdesc)
{ … }
static int hmac_update(struct shash_desc *pdesc,
const u8 *data, unsigned int nbytes)
{ … }
static int hmac_final(struct shash_desc *pdesc, u8 *out)
{ … }
static int hmac_finup(struct shash_desc *pdesc, const u8 *data,
unsigned int nbytes, u8 *out)
{ … }
static int hmac_init_tfm(struct crypto_shash *parent)
{ … }
static int hmac_clone_tfm(struct crypto_shash *dst, struct crypto_shash *src)
{ … }
static void hmac_exit_tfm(struct crypto_shash *parent)
{ … }
static int hmac_create(struct crypto_template *tmpl, struct rtattr **tb)
{ … }
static struct crypto_template hmac_tmpl = …;
static int __init hmac_module_init(void)
{ … }
static void __exit hmac_module_exit(void)
{ … }
subsys_initcall(hmac_module_init);
module_exit(hmac_module_exit);
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_ALIAS_CRYPTO(…) …;