#include <linux/kernel.h>
#include <linux/module.h>
#include <crypto/algapi.h>
#include <crypto/internal/aead.h>
#include <crypto/authenc.h>
#include <crypto/gcm.h>
#include <linux/rtnetlink.h>
#include <crypto/internal/des.h>
#include "cc_driver.h"
#include "cc_buffer_mgr.h"
#include "cc_aead.h"
#include "cc_request_mgr.h"
#include "cc_hash.h"
#include "cc_sram_mgr.h"
#define template_aead …
#define MAX_AEAD_SETKEY_SEQ …
#define MAX_AEAD_PROCESS_SEQ …
#define MAX_HMAC_DIGEST_SIZE …
#define MAX_HMAC_BLOCK_SIZE …
#define MAX_NONCE_SIZE …
struct cc_aead_handle { … };
struct cc_hmac_s { … };
struct cc_xcbc_s { … };
struct cc_aead_ctx { … };
static void cc_aead_exit(struct crypto_aead *tfm)
{ … }
static unsigned int cc_get_aead_hash_len(struct crypto_aead *tfm)
{ … }
static int cc_aead_init(struct crypto_aead *tfm)
{ … }
static void cc_aead_complete(struct device *dev, void *cc_req, int err)
{ … }
static unsigned int xcbc_setkey(struct cc_hw_desc *desc,
struct cc_aead_ctx *ctx)
{ … }
static unsigned int hmac_setkey(struct cc_hw_desc *desc,
struct cc_aead_ctx *ctx)
{ … }
static int validate_keys_sizes(struct cc_aead_ctx *ctx)
{ … }
static int cc_get_plain_hmac_key(struct crypto_aead *tfm, const u8 *authkey,
unsigned int keylen)
{ … }
static int cc_aead_setkey(struct crypto_aead *tfm, const u8 *key,
unsigned int keylen)
{ … }
static int cc_des3_aead_setkey(struct crypto_aead *aead, const u8 *key,
unsigned int keylen)
{ … }
static int cc_rfc4309_ccm_setkey(struct crypto_aead *tfm, const u8 *key,
unsigned int keylen)
{ … }
static int cc_aead_setauthsize(struct crypto_aead *authenc,
unsigned int authsize)
{ … }
static int cc_rfc4309_ccm_setauthsize(struct crypto_aead *authenc,
unsigned int authsize)
{ … }
static int cc_ccm_setauthsize(struct crypto_aead *authenc,
unsigned int authsize)
{ … }
static void cc_set_assoc_desc(struct aead_request *areq, unsigned int flow_mode,
struct cc_hw_desc desc[], unsigned int *seq_size)
{ … }
static void cc_proc_authen_desc(struct aead_request *areq,
unsigned int flow_mode,
struct cc_hw_desc desc[],
unsigned int *seq_size, int direct)
{ … }
static void cc_proc_cipher_desc(struct aead_request *areq,
unsigned int flow_mode,
struct cc_hw_desc desc[],
unsigned int *seq_size)
{ … }
static void cc_proc_digest_desc(struct aead_request *req,
struct cc_hw_desc desc[],
unsigned int *seq_size)
{ … }
static void cc_set_cipher_desc(struct aead_request *req,
struct cc_hw_desc desc[],
unsigned int *seq_size)
{ … }
static void cc_proc_cipher(struct aead_request *req, struct cc_hw_desc desc[],
unsigned int *seq_size, unsigned int data_flow_mode)
{ … }
static void cc_set_hmac_desc(struct aead_request *req, struct cc_hw_desc desc[],
unsigned int *seq_size)
{ … }
static void cc_set_xcbc_desc(struct aead_request *req, struct cc_hw_desc desc[],
unsigned int *seq_size)
{ … }
static void cc_proc_header_desc(struct aead_request *req,
struct cc_hw_desc desc[],
unsigned int *seq_size)
{ … }
static void cc_proc_scheme_desc(struct aead_request *req,
struct cc_hw_desc desc[],
unsigned int *seq_size)
{ … }
static void cc_mlli_to_sram(struct aead_request *req,
struct cc_hw_desc desc[], unsigned int *seq_size)
{ … }
static enum cc_flow_mode cc_get_data_flow(enum drv_crypto_direction direct,
enum cc_flow_mode setup_flow_mode,
bool is_single_pass)
{ … }
static void cc_hmac_authenc(struct aead_request *req, struct cc_hw_desc desc[],
unsigned int *seq_size)
{ … }
static void
cc_xcbc_authenc(struct aead_request *req, struct cc_hw_desc desc[],
unsigned int *seq_size)
{ … }
static int validate_data_size(struct cc_aead_ctx *ctx,
enum drv_crypto_direction direct,
struct aead_request *req)
{ … }
static unsigned int format_ccm_a0(u8 *pa0_buff, u32 header_size)
{ … }
static int set_msg_len(u8 *block, unsigned int msglen, unsigned int csize)
{ … }
static int cc_ccm(struct aead_request *req, struct cc_hw_desc desc[],
unsigned int *seq_size)
{ … }
static int config_ccm_adata(struct aead_request *req)
{ … }
static void cc_proc_rfc4309_ccm(struct aead_request *req)
{ … }
static void cc_set_ghash_desc(struct aead_request *req,
struct cc_hw_desc desc[], unsigned int *seq_size)
{ … }
static void cc_set_gctr_desc(struct aead_request *req, struct cc_hw_desc desc[],
unsigned int *seq_size)
{ … }
static void cc_proc_gcm_result(struct aead_request *req,
struct cc_hw_desc desc[],
unsigned int *seq_size)
{ … }
static int cc_gcm(struct aead_request *req, struct cc_hw_desc desc[],
unsigned int *seq_size)
{ … }
static int config_gcm_context(struct aead_request *req)
{ … }
static void cc_proc_rfc4_gcm(struct aead_request *req)
{ … }
static int cc_proc_aead(struct aead_request *req,
enum drv_crypto_direction direct)
{ … }
static int cc_aead_encrypt(struct aead_request *req)
{ … }
static int cc_rfc4309_ccm_encrypt(struct aead_request *req)
{ … }
static int cc_aead_decrypt(struct aead_request *req)
{ … }
static int cc_rfc4309_ccm_decrypt(struct aead_request *req)
{ … }
static int cc_rfc4106_gcm_setkey(struct crypto_aead *tfm, const u8 *key,
unsigned int keylen)
{ … }
static int cc_rfc4543_gcm_setkey(struct crypto_aead *tfm, const u8 *key,
unsigned int keylen)
{ … }
static int cc_gcm_setauthsize(struct crypto_aead *authenc,
unsigned int authsize)
{ … }
static int cc_rfc4106_gcm_setauthsize(struct crypto_aead *authenc,
unsigned int authsize)
{ … }
static int cc_rfc4543_gcm_setauthsize(struct crypto_aead *authenc,
unsigned int authsize)
{ … }
static int cc_rfc4106_gcm_encrypt(struct aead_request *req)
{ … }
static int cc_rfc4543_gcm_encrypt(struct aead_request *req)
{ … }
static int cc_rfc4106_gcm_decrypt(struct aead_request *req)
{ … }
static int cc_rfc4543_gcm_decrypt(struct aead_request *req)
{ … }
static struct cc_alg_template aead_algs[] = …;
static struct cc_crypto_alg *cc_create_aead_alg(struct cc_alg_template *tmpl,
struct device *dev)
{ … }
int cc_aead_free(struct cc_drvdata *drvdata)
{ … }
int cc_aead_alloc(struct cc_drvdata *drvdata)
{ … }