#ifndef _CRYPTO_ALGAPI_H
#define _CRYPTO_ALGAPI_H
#include <crypto/utils.h>
#include <linux/align.h>
#include <linux/cache.h>
#include <linux/crypto.h>
#include <linux/types.h>
#include <linux/workqueue.h>
#define MAX_ALGAPI_BLOCKSIZE …
#define MAX_ALGAPI_ALIGNMASK …
#define MAX_CIPHER_BLOCKSIZE …
#define MAX_CIPHER_ALIGNMASK …
#ifdef ARCH_DMA_MINALIGN
#define CRYPTO_DMA_ALIGN …
#else
#define CRYPTO_DMA_ALIGN …
#endif
#define CRYPTO_DMA_PADDING …
#define MODULE_ALIAS_CRYPTO(name) …
struct crypto_aead;
struct crypto_instance;
struct module;
struct notifier_block;
struct rtattr;
struct scatterlist;
struct seq_file;
struct sk_buff;
struct crypto_type { … };
struct crypto_instance { … };
struct crypto_template { … };
struct crypto_spawn { … };
struct crypto_queue { … };
struct scatter_walk { … };
struct crypto_attr_alg { … };
struct crypto_attr_type { … };
int crypto_register_alg(struct crypto_alg *alg);
void crypto_unregister_alg(struct crypto_alg *alg);
int crypto_register_algs(struct crypto_alg *algs, int count);
void crypto_unregister_algs(struct crypto_alg *algs, int count);
void crypto_mod_put(struct crypto_alg *alg);
int crypto_register_template(struct crypto_template *tmpl);
int crypto_register_templates(struct crypto_template *tmpls, int count);
void crypto_unregister_template(struct crypto_template *tmpl);
void crypto_unregister_templates(struct crypto_template *tmpls, int count);
struct crypto_template *crypto_lookup_template(const char *name);
int crypto_register_instance(struct crypto_template *tmpl,
struct crypto_instance *inst);
void crypto_unregister_instance(struct crypto_instance *inst);
int crypto_grab_spawn(struct crypto_spawn *spawn, struct crypto_instance *inst,
const char *name, u32 type, u32 mask);
void crypto_drop_spawn(struct crypto_spawn *spawn);
struct crypto_tfm *crypto_spawn_tfm(struct crypto_spawn *spawn, u32 type,
u32 mask);
void *crypto_spawn_tfm2(struct crypto_spawn *spawn);
struct crypto_attr_type *crypto_get_attr_type(struct rtattr **tb);
int crypto_check_attr_type(struct rtattr **tb, u32 type, u32 *mask_ret);
const char *crypto_attr_alg_name(struct rtattr *rta);
int crypto_inst_setname(struct crypto_instance *inst, const char *name,
struct crypto_alg *alg);
void crypto_init_queue(struct crypto_queue *queue, unsigned int max_qlen);
int crypto_enqueue_request(struct crypto_queue *queue,
struct crypto_async_request *request);
void crypto_enqueue_request_head(struct crypto_queue *queue,
struct crypto_async_request *request);
struct crypto_async_request *crypto_dequeue_request(struct crypto_queue *queue);
static inline unsigned int crypto_queue_len(struct crypto_queue *queue)
{ … }
void crypto_inc(u8 *a, unsigned int size);
static inline void *crypto_tfm_ctx(struct crypto_tfm *tfm)
{ … }
static inline void *crypto_tfm_ctx_align(struct crypto_tfm *tfm,
unsigned int align)
{ … }
static inline unsigned int crypto_dma_align(void)
{ … }
static inline unsigned int crypto_dma_padding(void)
{ … }
static inline void *crypto_tfm_ctx_dma(struct crypto_tfm *tfm)
{ … }
static inline struct crypto_instance *crypto_tfm_alg_instance(
struct crypto_tfm *tfm)
{ … }
static inline void *crypto_instance_ctx(struct crypto_instance *inst)
{ … }
static inline struct crypto_async_request *crypto_get_backlog(
struct crypto_queue *queue)
{ … }
static inline u32 crypto_requires_off(struct crypto_attr_type *algt, u32 off)
{ … }
#define CRYPTO_ALG_INHERITED_FLAGS …
static inline u32 crypto_algt_inherited_mask(struct crypto_attr_type *algt)
{ … }
int crypto_register_notifier(struct notifier_block *nb);
int crypto_unregister_notifier(struct notifier_block *nb);
enum { … };
static inline void crypto_request_complete(struct crypto_async_request *req,
int err)
{ … }
static inline u32 crypto_tfm_alg_type(struct crypto_tfm *tfm)
{ … }
#endif