/* * Cryptographic API for algorithms (i.e., low-level API). * * Copyright (c) 2006 Herbert Xu * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. * */ #ifndef _CRYPTO_ALGAPI_H #define _CRYPTO_ALGAPI_H #include struct module; struct crypto_instance { struct crypto_alg alg; struct crypto_template *tmpl; struct hlist_node list; void *__ctx[] CRYPTO_MINALIGN_ATTR; }; struct crypto_template { struct list_head list; struct hlist_head instances; struct module *module; struct crypto_instance *(*alloc)(void *param, unsigned int len); void (*free)(struct crypto_instance *inst); char name[CRYPTO_MAX_ALG_NAME]; }; int crypto_register_template(struct crypto_template *tmpl); void crypto_unregister_template(struct crypto_template *tmpl); struct crypto_template *crypto_lookup_template(const char *name); static inline void *crypto_instance_ctx(struct crypto_instance *inst) { return inst->__ctx; } #endif /* _CRYPTO_ALGAPI_H */