crypto: atmel-tdes - Add FIPS81's zero length cryptlen constraint
authorTudor Ambarus <tudor.ambarus@microchip.com>
Tue, 20 Jul 2021 08:55:32 +0000 (11:55 +0300)
committerHerbert Xu <herbert@gondor.apana.org.au>
Fri, 30 Jul 2021 02:58:33 +0000 (10:58 +0800)
FIPS81 requires for the ECB, CBC, CFB, and OFB modes that the
plaintext and ciphertext to have a positive integer length.
Add this constraint and just return 0 for a zero length cryptlen.

Signed-off-by: Tudor Ambarus <tudor.ambarus@microchip.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
drivers/crypto/atmel-tdes.c

index abbf1b7..8380e0a 100644 (file)
@@ -682,6 +682,9 @@ static int atmel_tdes_crypt(struct skcipher_request *req, unsigned long mode)
        struct atmel_tdes_reqctx *rctx = skcipher_request_ctx(req);
        struct device *dev = ctx->dd->dev;
 
+       if (!req->cryptlen)
+               return 0;
+
        switch (mode & TDES_FLAGS_OPMODE_MASK) {
        case TDES_FLAGS_CFB8:
                if (!IS_ALIGNED(req->cryptlen, CFB8_BLOCK_SIZE)) {