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; |
