#include <linux/module.h>
#include <linux/sched.h>
#include <linux/delay.h>
#include <linux/scatterlist.h>
#include <linux/crypto.h>
#include <crypto/algapi.h>
#include <crypto/hash.h>
#include <crypto/hmac.h>
#include <crypto/internal/hash.h>
#include <crypto/sha1.h>
#include <crypto/sha2.h>
#include <crypto/scatterwalk.h>
#include <linux/string.h>
#include "ccp-crypto.h"
static int ccp_sha_complete(struct crypto_async_request *async_req, int ret)
{ … }
static int ccp_do_sha_update(struct ahash_request *req, unsigned int nbytes,
unsigned int final)
{ … }
static int ccp_sha_init(struct ahash_request *req)
{ … }
static int ccp_sha_update(struct ahash_request *req)
{ … }
static int ccp_sha_final(struct ahash_request *req)
{ … }
static int ccp_sha_finup(struct ahash_request *req)
{ … }
static int ccp_sha_digest(struct ahash_request *req)
{ … }
static int ccp_sha_export(struct ahash_request *req, void *out)
{ … }
static int ccp_sha_import(struct ahash_request *req, const void *in)
{ … }
static int ccp_sha_setkey(struct crypto_ahash *tfm, const u8 *key,
unsigned int key_len)
{ … }
static int ccp_sha_cra_init(struct crypto_tfm *tfm)
{ … }
static void ccp_sha_cra_exit(struct crypto_tfm *tfm)
{ … }
static int ccp_hmac_sha_cra_init(struct crypto_tfm *tfm)
{ … }
static void ccp_hmac_sha_cra_exit(struct crypto_tfm *tfm)
{ … }
struct ccp_sha_def { … };
static struct ccp_sha_def sha_algs[] = …;
static int ccp_register_hmac_alg(struct list_head *head,
const struct ccp_sha_def *def,
const struct ccp_crypto_ahash_alg *base_alg)
{ … }
static int ccp_register_sha_alg(struct list_head *head,
const struct ccp_sha_def *def)
{ … }
int ccp_register_sha_algs(struct list_head *head)
{ … }