diff options
Diffstat (limited to 'include/crypto/algapi.h')
-rw-r--r-- | include/crypto/algapi.h | 31 |
1 files changed, 21 insertions, 10 deletions
diff --git a/include/crypto/algapi.h b/include/crypto/algapi.h index b9b05d399d2b..60d06e784be3 100644 --- a/include/crypto/algapi.h +++ b/include/crypto/algapi.h | |||
@@ -111,8 +111,15 @@ void crypto_drop_spawn(struct crypto_spawn *spawn); | |||
111 | struct crypto_tfm *crypto_spawn_tfm(struct crypto_spawn *spawn, u32 type, | 111 | struct crypto_tfm *crypto_spawn_tfm(struct crypto_spawn *spawn, u32 type, |
112 | u32 mask); | 112 | u32 mask); |
113 | 113 | ||
114 | static inline void crypto_set_spawn(struct crypto_spawn *spawn, | ||
115 | struct crypto_instance *inst) | ||
116 | { | ||
117 | spawn->inst = inst; | ||
118 | } | ||
119 | |||
114 | struct crypto_attr_type *crypto_get_attr_type(struct rtattr **tb); | 120 | struct crypto_attr_type *crypto_get_attr_type(struct rtattr **tb); |
115 | int crypto_check_attr_type(struct rtattr **tb, u32 type); | 121 | int crypto_check_attr_type(struct rtattr **tb, u32 type); |
122 | const char *crypto_attr_alg_name(struct rtattr *rta); | ||
116 | struct crypto_alg *crypto_attr_alg(struct rtattr *rta, u32 type, u32 mask); | 123 | struct crypto_alg *crypto_attr_alg(struct rtattr *rta, u32 type, u32 mask); |
117 | int crypto_attr_u32(struct rtattr *rta, u32 *num); | 124 | int crypto_attr_u32(struct rtattr *rta, u32 *num); |
118 | struct crypto_instance *crypto_alloc_instance(const char *name, | 125 | struct crypto_instance *crypto_alloc_instance(const char *name, |
@@ -124,6 +131,10 @@ int crypto_enqueue_request(struct crypto_queue *queue, | |||
124 | struct crypto_async_request *crypto_dequeue_request(struct crypto_queue *queue); | 131 | struct crypto_async_request *crypto_dequeue_request(struct crypto_queue *queue); |
125 | int crypto_tfm_in_queue(struct crypto_queue *queue, struct crypto_tfm *tfm); | 132 | int crypto_tfm_in_queue(struct crypto_queue *queue, struct crypto_tfm *tfm); |
126 | 133 | ||
134 | /* These functions require the input/output to be aligned as u32. */ | ||
135 | void crypto_inc(u8 *a, unsigned int size); | ||
136 | void crypto_xor(u8 *dst, const u8 *src, unsigned int size); | ||
137 | |||
127 | int blkcipher_walk_done(struct blkcipher_desc *desc, | 138 | int blkcipher_walk_done(struct blkcipher_desc *desc, |
128 | struct blkcipher_walk *walk, int err); | 139 | struct blkcipher_walk *walk, int err); |
129 | int blkcipher_walk_virt(struct blkcipher_desc *desc, | 140 | int blkcipher_walk_virt(struct blkcipher_desc *desc, |
@@ -187,20 +198,11 @@ static inline struct crypto_instance *crypto_aead_alg_instance( | |||
187 | return crypto_tfm_alg_instance(&aead->base); | 198 | return crypto_tfm_alg_instance(&aead->base); |
188 | } | 199 | } |
189 | 200 | ||
190 | static inline struct crypto_ablkcipher *crypto_spawn_ablkcipher( | ||
191 | struct crypto_spawn *spawn) | ||
192 | { | ||
193 | u32 type = CRYPTO_ALG_TYPE_BLKCIPHER; | ||
194 | u32 mask = CRYPTO_ALG_TYPE_MASK; | ||
195 | |||
196 | return __crypto_ablkcipher_cast(crypto_spawn_tfm(spawn, type, mask)); | ||
197 | } | ||
198 | |||
199 | static inline struct crypto_blkcipher *crypto_spawn_blkcipher( | 201 | static inline struct crypto_blkcipher *crypto_spawn_blkcipher( |
200 | struct crypto_spawn *spawn) | 202 | struct crypto_spawn *spawn) |
201 | { | 203 | { |
202 | u32 type = CRYPTO_ALG_TYPE_BLKCIPHER; | 204 | u32 type = CRYPTO_ALG_TYPE_BLKCIPHER; |
203 | u32 mask = CRYPTO_ALG_TYPE_MASK | CRYPTO_ALG_ASYNC; | 205 | u32 mask = CRYPTO_ALG_TYPE_MASK; |
204 | 206 | ||
205 | return __crypto_blkcipher_cast(crypto_spawn_tfm(spawn, type, mask)); | 207 | return __crypto_blkcipher_cast(crypto_spawn_tfm(spawn, type, mask)); |
206 | } | 208 | } |
@@ -303,5 +305,14 @@ static inline struct crypto_alg *crypto_get_attr_alg(struct rtattr **tb, | |||
303 | return crypto_attr_alg(tb[1], type, mask); | 305 | return crypto_attr_alg(tb[1], type, mask); |
304 | } | 306 | } |
305 | 307 | ||
308 | /* | ||
309 | * Returns CRYPTO_ALG_ASYNC if type/mask requires the use of sync algorithms. | ||
310 | * Otherwise returns zero. | ||
311 | */ | ||
312 | static inline int crypto_requires_sync(u32 type, u32 mask) | ||
313 | { | ||
314 | return (type ^ CRYPTO_ALG_ASYNC) & mask & CRYPTO_ALG_ASYNC; | ||
315 | } | ||
316 | |||
306 | #endif /* _CRYPTO_ALGAPI_H */ | 317 | #endif /* _CRYPTO_ALGAPI_H */ |
307 | 318 | ||