Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp622832pxb; Fri, 14 Jan 2022 12:33:10 -0800 (PST) X-Google-Smtp-Source: ABdhPJySVbaBrI5THAFRJTYdln6c8rg+Bhxl1fgxwykW/DXXRgA/IRMG5ncN0M3qNkcLybfw3jlY X-Received: by 2002:a63:3509:: with SMTP id c9mr9254745pga.332.1642192390522; Fri, 14 Jan 2022 12:33:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642192390; cv=none; d=google.com; s=arc-20160816; b=h1b3NiSc5EwQkGsOUlJmjWXpAARpL9emh8kVM54jX7NuN5yOPuRs4pbs1ikXglvgco L/1Vk38opSnYzS06Jsnat4XjQJ4bjNX/v8EeQSBCTiHuDNwir6fpufoDClZ7OCrjUMJV 3iPiFRGUdOn65aHJ2B6BidUvwlwA7nWG6mnNfPqRt688beTk4HaQPuxcIfQW6TtXwz4T gC7p/tY8E7T/kY97FDxNu9BCEeAMFCqJJ1N6q9ehQ9kinFd/3tCd3pUOLOpI2caxMvo2 BNAODyOLjiQGyb2d11sG6iLbVw5rN5TEU9ZUrWr5TalpLx4z94E8pXl33g/MUu4lol+6 C47Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=SXGvPkAMqzYJXzsGek6Bz9d5lEnfRt918Ar0CfEuIq0=; b=PDbLBg1IEe8RmC5I1QAxs1NlCExzXdV7nMRsoOh43fe1bXWCrWCmZ8IFHaBXpCZcs6 CYXD0J+hweetiq+/4paJGlJNVikEuY6VMmMFRZAnJCKlyBUwJ4k/1DuEP0/5jwdWmraM aKwMRrW7r6ohhN5hIsTT0qK18z+OvmBq97x5NAqbR76tKydk1g8sykzMF8BFEVobknyP 3t+ZZM/lYMQNRauQANKBd84EG4kDfFxf1sULsqHacPA6sE4tr4Td/7sYfozSQxElw43P za9Svb0qBOSoNKVikAJ75WoO8k3LsfBH+nIIp5+hW3FQslGpOWvFhZW2N6QMqTla6/ME TWIg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=TqZ7D66v; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j12si4863204pfc.189.2022.01.14.12.32.55; Fri, 14 Jan 2022 12:33:10 -0800 (PST) Received-SPF: pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@kernel.org header.s=k20201202 header.b=TqZ7D66v; spf=pass (google.com: domain of linux-crypto-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-crypto-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S240004AbiANIW4 (ORCPT + 99 others); Fri, 14 Jan 2022 03:22:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:50328 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S240208AbiANIVU (ORCPT ); Fri, 14 Jan 2022 03:21:20 -0500 Received: from dfw.source.kernel.org (dfw.source.kernel.org [IPv6:2604:1380:4641:c500::1]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 6B0D0C0617A9; Fri, 14 Jan 2022 00:21:12 -0800 (PST) Received: from smtp.kernel.org (relay.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by dfw.source.kernel.org (Postfix) with ESMTPS id 4D8F061E30; Fri, 14 Jan 2022 08:21:12 +0000 (UTC) Received: by smtp.kernel.org (Postfix) with ESMTPSA id F08F2C36AEA; Fri, 14 Jan 2022 08:21:11 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1642148472; bh=Dk3kLypObH2mqW0ZKWU+/2CO0Ao8WaPUXgjLmFLpykk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=TqZ7D66vF/3eCKKjWN6fxPaZq/PMrA1ZwxQTIUadcxOdeI/n5kYfPUTLHt67hSjgr m1sDzCIYh/A0QHohL+S5tW9bOnRibwSePvphDF0oIwaWXKhEmXLy3/2Gvb4T/hyTSN /0w/moE9pVdPBPcj1MMVCKAFR2J2oElmgX/RPge55OJj1lAkr/lixRRpu/IdWwa793 oexDBmEmKOdmhOSPaa49JKjJXXl8UEbrByZS0/+YKYvC7+YGf4jQVCn47jrmaI2Er1 Ki5k9bqIMdpecmjn2TZI2us51QlQid1MZNCvmmMEKC7KrYMr5aWiT4O9p3MRETsg+z /3AKDtbUJXOdg== From: Eric Biggers To: linux-crypto@vger.kernel.org, Herbert Xu Cc: keyrings@vger.kernel.org, Vitaly Chikunov , Denis Kenzior Subject: [PATCH 3/3] crypto: rsa-pkcs1pad - use clearer variable names Date: Fri, 14 Jan 2022 00:19:39 -0800 Message-Id: <20220114081939.218416-4-ebiggers@kernel.org> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220114081939.218416-1-ebiggers@kernel.org> References: <20220114081939.218416-1-ebiggers@kernel.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org From: Eric Biggers The new convention for akcipher_alg::verify makes it unclear which values are the lengths of the signature and digest. Add local variables to make it clearer what is going on. Also rename the digest_size variable in pkcs1pad_sign(), as it is actually the digest *info* size, not the digest size which is different. Signed-off-by: Eric Biggers --- crypto/rsa-pkcs1pad.c | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/crypto/rsa-pkcs1pad.c b/crypto/rsa-pkcs1pad.c index 6cd24b4b9b9e..8a3054a43735 100644 --- a/crypto/rsa-pkcs1pad.c +++ b/crypto/rsa-pkcs1pad.c @@ -385,15 +385,15 @@ static int pkcs1pad_sign(struct akcipher_request *req) struct pkcs1pad_inst_ctx *ictx = akcipher_instance_ctx(inst); const struct rsa_asn1_template *digest_info = ictx->digest_info; int err; - unsigned int ps_end, digest_size = 0; + unsigned int ps_end, digest_info_size = 0; if (!ctx->key_size) return -EINVAL; if (digest_info) - digest_size = digest_info->size; + digest_info_size = digest_info->size; - if (req->src_len + digest_size > ctx->key_size - 11) + if (req->src_len + digest_info_size > ctx->key_size - 11) return -EOVERFLOW; if (req->dst_len < ctx->key_size) { @@ -406,7 +406,7 @@ static int pkcs1pad_sign(struct akcipher_request *req) if (!req_ctx->in_buf) return -ENOMEM; - ps_end = ctx->key_size - digest_size - req->src_len - 2; + ps_end = ctx->key_size - digest_info_size - req->src_len - 2; req_ctx->in_buf[0] = 0x01; memset(req_ctx->in_buf + 1, 0xff, ps_end - 1); req_ctx->in_buf[ps_end] = 0x00; @@ -441,6 +441,8 @@ static int pkcs1pad_verify_complete(struct akcipher_request *req, int err) struct akcipher_instance *inst = akcipher_alg_instance(tfm); struct pkcs1pad_inst_ctx *ictx = akcipher_instance_ctx(inst); const struct rsa_asn1_template *digest_info = ictx->digest_info; + const unsigned int sig_size = req->src_len; + const unsigned int digest_size = req->dst_len; unsigned int dst_len; unsigned int pos; u8 *out_buf; @@ -487,20 +489,19 @@ static int pkcs1pad_verify_complete(struct akcipher_request *req, int err) err = 0; - if (req->dst_len != dst_len - pos) { + if (digest_size != dst_len - pos) { err = -EKEYREJECTED; req->dst_len = dst_len - pos; goto done; } /* Extract appended digest. */ sg_pcopy_to_buffer(req->src, - sg_nents_for_len(req->src, - req->src_len + req->dst_len), + sg_nents_for_len(req->src, sig_size + digest_size), req_ctx->out_buf + ctx->key_size, - req->dst_len, req->src_len); + digest_size, sig_size); /* Do the actual verification step. */ if (memcmp(req_ctx->out_buf + ctx->key_size, out_buf + pos, - req->dst_len) != 0) + digest_size) != 0) err = -EKEYREJECTED; done: kfree_sensitive(req_ctx->out_buf); @@ -536,14 +537,15 @@ static int pkcs1pad_verify(struct akcipher_request *req) struct crypto_akcipher *tfm = crypto_akcipher_reqtfm(req); struct pkcs1pad_ctx *ctx = akcipher_tfm_ctx(tfm); struct pkcs1pad_request *req_ctx = akcipher_request_ctx(req); + const unsigned int sig_size = req->src_len; + const unsigned int digest_size = req->dst_len; int err; - if (WARN_ON(req->dst) || - WARN_ON(!req->dst_len) || - !ctx->key_size || req->src_len < ctx->key_size) + if (WARN_ON(req->dst) || WARN_ON(!digest_size) || + !ctx->key_size || sig_size < ctx->key_size) return -EINVAL; - req_ctx->out_buf = kmalloc(ctx->key_size + req->dst_len, GFP_KERNEL); + req_ctx->out_buf = kmalloc(ctx->key_size + digest_size, GFP_KERNEL); if (!req_ctx->out_buf) return -ENOMEM; @@ -556,8 +558,7 @@ static int pkcs1pad_verify(struct akcipher_request *req) /* Reuse input buffer, output to a new buffer */ akcipher_request_set_crypt(&req_ctx->child_req, req->src, - req_ctx->out_sg, req->src_len, - ctx->key_size); + req_ctx->out_sg, sig_size, ctx->key_size); err = crypto_akcipher_encrypt(&req_ctx->child_req); if (err != -EINPROGRESS && err != -EBUSY) -- 2.34.1