diff options
Diffstat (limited to 'include/crypto/aead.h')
-rw-r--r-- | include/crypto/aead.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/include/crypto/aead.h b/include/crypto/aead.h index 03b97629442c..1e26f790b03f 100644 --- a/include/crypto/aead.h +++ b/include/crypto/aead.h | |||
@@ -327,7 +327,12 @@ static inline struct crypto_aead *crypto_aead_reqtfm(struct aead_request *req) | |||
327 | */ | 327 | */ |
328 | static inline int crypto_aead_encrypt(struct aead_request *req) | 328 | static inline int crypto_aead_encrypt(struct aead_request *req) |
329 | { | 329 | { |
330 | return crypto_aead_alg(crypto_aead_reqtfm(req))->encrypt(req); | 330 | struct crypto_aead *aead = crypto_aead_reqtfm(req); |
331 | |||
332 | if (crypto_aead_get_flags(aead) & CRYPTO_TFM_NEED_KEY) | ||
333 | return -ENOKEY; | ||
334 | |||
335 | return crypto_aead_alg(aead)->encrypt(req); | ||
331 | } | 336 | } |
332 | 337 | ||
333 | /** | 338 | /** |
@@ -356,6 +361,9 @@ static inline int crypto_aead_decrypt(struct aead_request *req) | |||
356 | { | 361 | { |
357 | struct crypto_aead *aead = crypto_aead_reqtfm(req); | 362 | struct crypto_aead *aead = crypto_aead_reqtfm(req); |
358 | 363 | ||
364 | if (crypto_aead_get_flags(aead) & CRYPTO_TFM_NEED_KEY) | ||
365 | return -ENOKEY; | ||
366 | |||
359 | if (req->cryptlen < crypto_aead_authsize(aead)) | 367 | if (req->cryptlen < crypto_aead_authsize(aead)) |
360 | return -EINVAL; | 368 | return -EINVAL; |
361 | 369 | ||