diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2006-08-06 21:16:34 +1000 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2006-09-21 11:17:12 +1000 |
commit | 4cc7720cd165273b08a72b4193146dffee58e34b (patch) | |
tree | 19c49af8a8195624ae101f665a05efc086c7f53b /include/crypto | |
parent | cce9e06d100df19a327b19f23adad76e7bf63edd (diff) |
[CRYPTO] api: Add template registration
A crypto_template generates a crypto_alg object when given a set of
parameters. this patch adds the basic data structure fo templates
and code to handle their registration/deregistration.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/crypto')
-rw-r--r-- | include/crypto/algapi.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/include/crypto/algapi.h b/include/crypto/algapi.h index ed68d494b364..ffec530d52fb 100644 --- a/include/crypto/algapi.h +++ b/include/crypto/algapi.h @@ -14,5 +14,36 @@ #include <linux/crypto.h> +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 */ |