Browse Source

crypto: atmel-aes - check alignment of cfb64 mode

The length shoule be 64 bit alignment and the block size shoule be 64 bit in aes cfb64 mode.

Signed-off-by: Leilei Zhao <leilei.zhao@atmel.com>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Leilei Zhao 11 years ago
parent
commit
9f84951fc6
1 changed files with 6 additions and 0 deletions
  1. 6 0
      drivers/crypto/atmel-aes.c

+ 6 - 0
drivers/crypto/atmel-aes.c

@@ -716,6 +716,12 @@ static int atmel_aes_crypt(struct ablkcipher_request *req, unsigned long mode)
 			return -EINVAL;
 			return -EINVAL;
 		}
 		}
 		ctx->block_size = CFB32_BLOCK_SIZE;
 		ctx->block_size = CFB32_BLOCK_SIZE;
+	} else if (mode & AES_FLAGS_CFB64) {
+		if (!IS_ALIGNED(req->nbytes, CFB64_BLOCK_SIZE)) {
+			pr_err("request size is not exact amount of CFB64 blocks\n");
+			return -EINVAL;
+		}
+		ctx->block_size = CFB64_BLOCK_SIZE;
 	} else {
 	} else {
 		if (!IS_ALIGNED(req->nbytes, AES_BLOCK_SIZE)) {
 		if (!IS_ALIGNED(req->nbytes, AES_BLOCK_SIZE)) {
 			pr_err("request size is not exact amount of AES blocks\n");
 			pr_err("request size is not exact amount of AES blocks\n");