#include <crypto/algapi.h>
#include <crypto/internal/hash.h>
#include <crypto/internal/simd.h>
#include <crypto/polyval.h>
#include <linux/crypto.h>
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <asm/cpu_device_id.h>
#include <asm/simd.h>
#define POLYVAL_ALIGN …
#define POLYVAL_ALIGN_ATTR …
#define POLYVAL_ALIGN_EXTRA …
#define POLYVAL_CTX_SIZE …
#define NUM_KEY_POWERS …
struct polyval_tfm_ctx { … };
struct polyval_desc_ctx { … };
asmlinkage void clmul_polyval_update(const struct polyval_tfm_ctx *keys,
const u8 *in, size_t nblocks, u8 *accumulator);
asmlinkage void clmul_polyval_mul(u8 *op1, const u8 *op2);
static inline struct polyval_tfm_ctx *polyval_tfm_ctx(struct crypto_shash *tfm)
{ … }
static void internal_polyval_update(const struct polyval_tfm_ctx *keys,
const u8 *in, size_t nblocks, u8 *accumulator)
{ … }
static void internal_polyval_mul(u8 *op1, const u8 *op2)
{ … }
static int polyval_x86_setkey(struct crypto_shash *tfm,
const u8 *key, unsigned int keylen)
{ … }
static int polyval_x86_init(struct shash_desc *desc)
{ … }
static int polyval_x86_update(struct shash_desc *desc,
const u8 *src, unsigned int srclen)
{ … }
static int polyval_x86_final(struct shash_desc *desc, u8 *dst)
{ … }
static struct shash_alg polyval_alg = …;
__maybe_unused static const struct x86_cpu_id pcmul_cpu_id[] = …;
MODULE_DEVICE_TABLE(x86cpu, pcmul_cpu_id);
static int __init polyval_clmulni_mod_init(void)
{ … }
static void __exit polyval_clmulni_mod_exit(void)
{ … }
module_init(…) …;
module_exit(polyval_clmulni_mod_exit);
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_ALIAS_CRYPTO(…) …;
MODULE_ALIAS_CRYPTO(…) …;