mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-05 10:04:12 +08:00
crypto: caam - add xts check for block length equal to zero
XTS should not return succes when dealing with block length equal to zero.
This is different than the rest of the skcipher algorithms.
Fixes: 31bb2f0da1
("crypto: caam - check zero-length input")
Cc: <stable@vger.kernel.org> # v5.4+
Signed-off-by: Andrei Botila <andrei.botila@nxp.com>
Reviewed-by: Horia Geantă <horia.geanta@nxp.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
This commit is contained in:
parent
596efd57cf
commit
297b931c2a
@ -1787,7 +1787,12 @@ static inline int skcipher_crypt(struct skcipher_request *req, bool encrypt)
|
||||
u32 *desc;
|
||||
int ret = 0;
|
||||
|
||||
if (!req->cryptlen)
|
||||
/*
|
||||
* XTS is expected to return an error even for input length = 0
|
||||
* Note that the case input length < block size will be caught during
|
||||
* HW offloading and return an error.
|
||||
*/
|
||||
if (!req->cryptlen && !ctx->fallback)
|
||||
return 0;
|
||||
|
||||
if (ctx->fallback && (xts_skcipher_ivsize(req) ||
|
||||
|
@ -1405,7 +1405,12 @@ static inline int skcipher_crypt(struct skcipher_request *req, bool encrypt)
|
||||
struct caam_ctx *ctx = crypto_skcipher_ctx(skcipher);
|
||||
int ret;
|
||||
|
||||
if (!req->cryptlen)
|
||||
/*
|
||||
* XTS is expected to return an error even for input length = 0
|
||||
* Note that the case input length < block size will be caught during
|
||||
* HW offloading and return an error.
|
||||
*/
|
||||
if (!req->cryptlen && !ctx->fallback)
|
||||
return 0;
|
||||
|
||||
if (ctx->fallback && (xts_skcipher_ivsize(req) ||
|
||||
|
@ -1472,7 +1472,12 @@ static int skcipher_encrypt(struct skcipher_request *req)
|
||||
struct caam_request *caam_req = skcipher_request_ctx(req);
|
||||
int ret;
|
||||
|
||||
if (!req->cryptlen)
|
||||
/*
|
||||
* XTS is expected to return an error even for input length = 0
|
||||
* Note that the case input length < block size will be caught during
|
||||
* HW offloading and return an error.
|
||||
*/
|
||||
if (!req->cryptlen && !ctx->fallback)
|
||||
return 0;
|
||||
|
||||
if (ctx->fallback && (xts_skcipher_ivsize(req) ||
|
||||
@ -1516,7 +1521,12 @@ static int skcipher_decrypt(struct skcipher_request *req)
|
||||
struct caam_request *caam_req = skcipher_request_ctx(req);
|
||||
int ret;
|
||||
|
||||
if (!req->cryptlen)
|
||||
/*
|
||||
* XTS is expected to return an error even for input length = 0
|
||||
* Note that the case input length < block size will be caught during
|
||||
* HW offloading and return an error.
|
||||
*/
|
||||
if (!req->cryptlen && !ctx->fallback)
|
||||
return 0;
|
||||
|
||||
if (ctx->fallback && (xts_skcipher_ivsize(req) ||
|
||||
|
Loading…
Reference in New Issue
Block a user