aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2006-09-20 21:39:29 -0400
committerHerbert Xu <herbert@gondor.apana.org.au>2006-09-20 21:39:29 -0400
commit6bfd48096ff8ecabf955958b51ddfa7988eb0a14 (patch)
tree813799f00d8402348ba6817953b1c631541be66c /include
parent492e2b63eb10c28f4f0b694264d74a8755cd1be0 (diff)
[CRYPTO] api: Added spawns
Spawns lock a specific crypto algorithm in place. They can then be used with crypto_spawn_tfm to allocate a tfm for that algorithm. When the base algorithm of a spawn is deregistered, all its spawns will be automatically removed. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
-rw-r--r--include/crypto/algapi.h11
-rw-r--r--include/linux/crypto.h4
2 files changed, 15 insertions, 0 deletions
diff --git a/include/crypto/algapi.h b/include/crypto/algapi.h
index ffec530d52fb..b20f4bdb23ba 100644
--- a/include/crypto/algapi.h
+++ b/include/crypto/algapi.h
@@ -36,10 +36,21 @@ struct crypto_template {
36 char name[CRYPTO_MAX_ALG_NAME]; 36 char name[CRYPTO_MAX_ALG_NAME];
37}; 37};
38 38
39struct crypto_spawn {
40 struct list_head list;
41 struct crypto_alg *alg;
42 struct crypto_instance *inst;
43};
44
39int crypto_register_template(struct crypto_template *tmpl); 45int crypto_register_template(struct crypto_template *tmpl);
40void crypto_unregister_template(struct crypto_template *tmpl); 46void crypto_unregister_template(struct crypto_template *tmpl);
41struct crypto_template *crypto_lookup_template(const char *name); 47struct crypto_template *crypto_lookup_template(const char *name);
42 48
49int crypto_init_spawn(struct crypto_spawn *spawn, struct crypto_alg *alg,
50 struct crypto_instance *inst);
51void crypto_drop_spawn(struct crypto_spawn *spawn);
52struct crypto_tfm *crypto_spawn_tfm(struct crypto_spawn *spawn);
53
43static inline void *crypto_instance_ctx(struct crypto_instance *inst) 54static inline void *crypto_instance_ctx(struct crypto_instance *inst)
44{ 55{
45 return inst->__ctx; 56 return inst->__ctx;
diff --git a/include/linux/crypto.h b/include/linux/crypto.h
index 85f73c381913..40a6330abc8d 100644
--- a/include/linux/crypto.h
+++ b/include/linux/crypto.h
@@ -35,6 +35,8 @@
35#define CRYPTO_ALG_TYPE_COMPRESS 0x00000004 35#define CRYPTO_ALG_TYPE_COMPRESS 0x00000004
36 36
37#define CRYPTO_ALG_LARVAL 0x00000010 37#define CRYPTO_ALG_LARVAL 0x00000010
38#define CRYPTO_ALG_DEAD 0x00000020
39#define CRYPTO_ALG_DYING 0x00000040
38 40
39/* 41/*
40 * Transform masks and values (for crt_flags). 42 * Transform masks and values (for crt_flags).
@@ -145,6 +147,8 @@ struct compress_alg {
145 147
146struct crypto_alg { 148struct crypto_alg {
147 struct list_head cra_list; 149 struct list_head cra_list;
150 struct list_head cra_users;
151
148 u32 cra_flags; 152 u32 cra_flags;
149 unsigned int cra_blocksize; 153 unsigned int cra_blocksize;
150 unsigned int cra_ctxsize; 154 unsigned int cra_ctxsize;