Received: by 2002:a25:ad19:0:0:0:0:0 with SMTP id y25csp5959056ybi; Wed, 31 Jul 2019 06:07:06 -0700 (PDT) X-Google-Smtp-Source: APXvYqwuCvFAN6YvjgWe98+mNyLu/4wEw3PSuuXRBCZy05kO+iEPka4Q0GKllaZNTkkhFpSnRsL2 X-Received: by 2002:a62:b60e:: with SMTP id j14mr47903948pff.54.1564578426752; Wed, 31 Jul 2019 06:07:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1564578426; cv=none; d=google.com; s=arc-20160816; b=p/ZMiqiWtyEbcJuVZ7HdCJ/BM8qB+WwaxnPwlxcH7dj0V4z26QzAfqn+OXW7EW7Izk 0a8XcyYDtS5/MKmSzEVb5bqqmFUxThTb/SCSHIglCvUN3odvqOzFIF5d6pySgfBpJ2tQ 3mUM0P1ozRA3tQSEpELCuOqKtDOK1Pw6GhfipRHWMm5gocU5H1TQTOj11nADjZ2WZ1IX 5gOpOcT4YNDSZ0HOg1L8+e7i/HJkGpUBb/wmtRgS3hcUClqjb+phxA99xBivVcl/vJae kMAgV7UCDzcosO2+c/YBu1SBMtPTqa+xc0Hj4U2x4R8pGTApzsw1gnHPkZqrjMVQFvQJ UQ1Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=SaRAiJ2trAJgCRQRbh/BqGSo8wLezKb4EJobPf7K124=; b=uw8yjA55IqF7SZz9+Md6xQe94vBf0D2DcGxVeF3W3WUkEHfUcOV91vC60eGR34/NVb NQayREqcNwGkV/itYzNJotDElK4/TRVmu0rKIhqMUVkD6uS343MZLF0tuLnXIX//vcqT 6iyX/3DHr6wooARTVcsEpejdjsS0XTca3bRd+SPBWuJgS+n+G/GFy36tsBbxKGsJEzLp DmiBwQ5ms+6SJmb0CQCaBLVmwLa3qMphSE+E3yMNJicyVJEG5/il+e3SK84h05g3wUhS TqCn2sboXKp+Z7wmlQv8gFCXxsQhQXSi4XobkaXcoqm6rUvP+KqvENj6YV/dabLtIuSL mRLg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id m17si1381909pgc.461.2019.07.31.06.06.52; Wed, 31 Jul 2019 06:07:06 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-crypto-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=nxp.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2387877AbfGaNGI (ORCPT + 99 others); Wed, 31 Jul 2019 09:06:08 -0400 Received: from inva021.nxp.com ([92.121.34.21]:41214 "EHLO inva021.nxp.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2387730AbfGaNGH (ORCPT ); Wed, 31 Jul 2019 09:06:07 -0400 Received: from inva021.nxp.com (localhost [127.0.0.1]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 1A17A200A1F; Wed, 31 Jul 2019 15:06:05 +0200 (CEST) Received: from inva024.eu-rdc02.nxp.com (inva024.eu-rdc02.nxp.com [134.27.226.22]) by inva021.eu-rdc02.nxp.com (Postfix) with ESMTP id 0E0EF2009FA; Wed, 31 Jul 2019 15:06:05 +0200 (CEST) Received: from lorenz.ea.freescale.net (lorenz.ea.freescale.net [10.171.71.5]) by inva024.eu-rdc02.nxp.com (Postfix) with ESMTP id C22B7205F3; Wed, 31 Jul 2019 15:06:04 +0200 (CEST) From: Iuliana Prodan To: Herbert Xu , "David S. Miller" Cc: linux-crypto@vger.kernel.org, linux-kernel@vger.kernel.org, linux-imx Subject: [PATCH v3 2/2] crypto: aes - helper function to validate key length for AES algorithms Date: Wed, 31 Jul 2019 16:05:55 +0300 Message-Id: <1564578355-9639-3-git-send-email-iuliana.prodan@nxp.com> X-Mailer: git-send-email 2.1.0 In-Reply-To: <1564578355-9639-1-git-send-email-iuliana.prodan@nxp.com> References: <1564578355-9639-1-git-send-email-iuliana.prodan@nxp.com> X-Virus-Scanned: ClamAV using ClamSMTP Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org Add inline helper function to check key length for AES algorithms. The key can be 128, 192 or 256 bits size. This function is used in the generic aes implementation. Signed-off-by: Iuliana Prodan --- include/crypto/aes.h | 17 +++++++++++++++++ lib/crypto/aes.c | 8 ++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/include/crypto/aes.h b/include/crypto/aes.h index 8e0f4cf..2090729 100644 --- a/include/crypto/aes.h +++ b/include/crypto/aes.h @@ -31,6 +31,23 @@ struct crypto_aes_ctx { extern const u32 crypto_ft_tab[4][256] ____cacheline_aligned; extern const u32 crypto_it_tab[4][256] ____cacheline_aligned; +/* + * validate key length for AES algorithms + */ +static inline int aes_check_keylen(unsigned int keylen) +{ + switch (keylen) { + case AES_KEYSIZE_128: + case AES_KEYSIZE_192: + case AES_KEYSIZE_256: + break; + default: + return -EINVAL; + } + + return 0; +} + int crypto_aes_set_key(struct crypto_tfm *tfm, const u8 *in_key, unsigned int key_len); diff --git a/lib/crypto/aes.c b/lib/crypto/aes.c index 4e100af..827fe89 100644 --- a/lib/crypto/aes.c +++ b/lib/crypto/aes.c @@ -187,11 +187,11 @@ int aes_expandkey(struct crypto_aes_ctx *ctx, const u8 *in_key, { u32 kwords = key_len / sizeof(u32); u32 rc, i, j; + int err; - if (key_len != AES_KEYSIZE_128 && - key_len != AES_KEYSIZE_192 && - key_len != AES_KEYSIZE_256) - return -EINVAL; + err = aes_check_keylen(key_len); + if (err) + return err; ctx->key_length = key_len; -- 2.1.0