diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2006-09-20 21:39:29 -0400 |
---|---|---|
committer | Herbert Xu <herbert@gondor.apana.org.au> | 2006-09-20 21:39:29 -0400 |
commit | 6bfd48096ff8ecabf955958b51ddfa7988eb0a14 (patch) | |
tree | 813799f00d8402348ba6817953b1c631541be66c /include | |
parent | 492e2b63eb10c28f4f0b694264d74a8755cd1be0 (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.h | 11 | ||||
-rw-r--r-- | include/linux/crypto.h | 4 |
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 | ||
39 | struct crypto_spawn { | ||
40 | struct list_head list; | ||
41 | struct crypto_alg *alg; | ||
42 | struct crypto_instance *inst; | ||
43 | }; | ||
44 | |||
39 | int crypto_register_template(struct crypto_template *tmpl); | 45 | int crypto_register_template(struct crypto_template *tmpl); |
40 | void crypto_unregister_template(struct crypto_template *tmpl); | 46 | void crypto_unregister_template(struct crypto_template *tmpl); |
41 | struct crypto_template *crypto_lookup_template(const char *name); | 47 | struct crypto_template *crypto_lookup_template(const char *name); |
42 | 48 | ||
49 | int crypto_init_spawn(struct crypto_spawn *spawn, struct crypto_alg *alg, | ||
50 | struct crypto_instance *inst); | ||
51 | void crypto_drop_spawn(struct crypto_spawn *spawn); | ||
52 | struct crypto_tfm *crypto_spawn_tfm(struct crypto_spawn *spawn); | ||
53 | |||
43 | static inline void *crypto_instance_ctx(struct crypto_instance *inst) | 54 | static 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 | ||
146 | struct crypto_alg { | 148 | struct 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; |