Received: by 2002:ab2:710b:0:b0:1ef:a325:1205 with SMTP id z11csp1295989lql; Tue, 12 Mar 2024 12:46:47 -0700 (PDT) X-Forwarded-Encrypted: i=3; AJvYcCW/H6Fwpbf9aa1n1CMpRTjB+PqeuINY0I/tVs/gLmQZcG90IyvNGTGq61JeUsAsfBnTZFlz5OF15FZgKjzSY2UkPJFer9NRF4Mb1RG4EA== X-Google-Smtp-Source: AGHT+IHXmNqHdPoiCiFx3SsR1jp14UrK/Asgbc/vxj+ahZJGvPPEqCz2bIyKEVj3gEc246fEa+ey X-Received: by 2002:a05:6358:539e:b0:17c:3316:f021 with SMTP id z30-20020a056358539e00b0017c3316f021mr18236906rwe.28.1710272807568; Tue, 12 Mar 2024 12:46:47 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1710272807; cv=pass; d=google.com; s=arc-20160816; b=i45oJIHNl8hI+GD81pRgFK64SjgspPYGLC8sHISDeY2juDIXJGxCWRrtyIDdPssGeW os/hhZxZrVa9cPBN40LYtrxyg3Gx/gxvfwUd6u2Kf0suOArHHNhUxza/v27XOameCe4N 3irVktJ1ykyz+ko99YbE2V+tg9sxCfrTvikvz53PV/N62wH8+Q3/7ZpnFTJ1z2TU44hW u07y1LAMg25CrlaTqGc/ji61gXAydb2aMHJrTaBRWwKMAXBd73QsPllsWDYte7/ph5G0 j6ukMKP1820vemBpPAYEa05+cQzXh4s8WVCJf4EYnKEnzCoRCq7HaUzd6jXeI5/kMg5g XQdg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:references:in-reply-to:message-id :date:subject:cc:to:from:dkim-signature; bh=3ZUne4qzvAvhXom987zL4TkiYNBeRkZHjcNCLQNmfp0=; fh=ttd58PQB/9Jq7mprP/nc7Swd4f1ty4MwWMUAn54aZMY=; b=E3dSqUKc4CU/kJe2EjJWl6+maNf+8uJHs6HCJDT5MZlq1JnfNY3P3Ef/LVwULGGvpX uTa3NVVsMO09eyjO7sbfHitr/Sgc0MYwCej/dahzNnYqxUSCXob4diQ7n3Pqz7fcFKIE MyU0pHJ1cJ5SWX0lk/iAMlf74Ayf02aILgeI1/pHqmEa+IdNztz+6quhEpYXu/Fzhs3i F3WuUJSuaXdzvu1H/655vZ2cDr/dFpSdOmUbE8OwC+Ev+P1kqm4VxZC1PL5DE1/b+XLl NiBaxHG/ApuAtPLTzTKHgoi5gn+QTT1qsXHHex/f8v/LqKSjmlZAwug+AD/NGor5GY5M GjVw==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=toUFl8vp; arc=pass (i=1 dkim=pass dkdomain=ibm.com dmarc=pass fromdomain=linux.vnet.ibm.com); spf=pass (google.com: domain of linux-kernel+bounces-100668-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-100668-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=NONE dis=NONE) header.from=ibm.com Return-Path: Received: from sy.mirrors.kernel.org (sy.mirrors.kernel.org. [2604:1380:40f1:3f00::1]) by mx.google.com with ESMTPS id n36-20020a635924000000b005e438ff5c40si7596469pgb.591.2024.03.12.12.46.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 12 Mar 2024 12:46:47 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel+bounces-100668-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) client-ip=2604:1380:40f1:3f00::1; Authentication-Results: mx.google.com; dkim=pass header.i=@ibm.com header.s=pp1 header.b=toUFl8vp; arc=pass (i=1 dkim=pass dkdomain=ibm.com dmarc=pass fromdomain=linux.vnet.ibm.com); spf=pass (google.com: domain of linux-kernel+bounces-100668-linux.lists.archive=gmail.com@vger.kernel.org designates 2604:1380:40f1:3f00::1 as permitted sender) smtp.mailfrom="linux-kernel+bounces-100668-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=NONE dis=NONE) header.from=ibm.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by sy.mirrors.kernel.org (Postfix) with ESMTPS id B952EB23C41 for ; Tue, 12 Mar 2024 18:38:11 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 353A31428F9; Tue, 12 Mar 2024 18:37:43 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b="toUFl8vp" Received: from mx0b-001b2d01.pphosted.com (mx0b-001b2d01.pphosted.com [148.163.158.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B14B61419B0; Tue, 12 Mar 2024 18:37:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=148.163.158.5 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710268662; cv=none; b=HWUgew6W4qo2JVJ8H5Wzmk+4dcJqNmkp5dUt6isczkqNEakCiwD7Bcuuus2eZeQ4q5TLIetusVTWQQBDX8TR1zLAlUC6DbMrJcwU4qIteoaSPSB9pjz46gjIwh1PntpHQ/No9+JujGdai6JrcDMo+plJi7Ms+7jI3VSVKpYlUYA= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1710268662; c=relaxed/simple; bh=HJNTECjcP7hVlkLM/J0+a6D2Csmbnoycbxs7pGxdvio=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=jhx2FKqk8NECxy8R5EyUPZABP2G7LlDFWLG5NZnwMTOpEL/YGcUanH5m8D9RNvcSFbw5OhG8IS4gr/EEq43zVDHC3O1j4AiNdrwsiy59UnpJkTJcAOPFYpAAVeQvcsJm28JmG6IbmwfvGkJRszq+LvW9KaC2QUSx3ICq4ykSacM= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.vnet.ibm.com; spf=none smtp.mailfrom=linux.vnet.ibm.com; dkim=pass (2048-bit key) header.d=ibm.com header.i=@ibm.com header.b=toUFl8vp; arc=none smtp.client-ip=148.163.158.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.vnet.ibm.com Authentication-Results: smtp.subspace.kernel.org; spf=none smtp.mailfrom=linux.vnet.ibm.com Received: from pps.filterd (m0353723.ppops.net [127.0.0.1]) by mx0a-001b2d01.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 42CINLdl013201; Tue, 12 Mar 2024 18:36:29 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ibm.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : mime-version : content-transfer-encoding; s=pp1; bh=3ZUne4qzvAvhXom987zL4TkiYNBeRkZHjcNCLQNmfp0=; b=toUFl8vpaQezniPFk24G1yg44Trt1J7zF/Q8V70ItCDSuG1Da5yWacVMEPSYSVLjF5tW DS7yxb/aIyQDmVqxfdLdkHY8nnG4QhUFPi9xobVYMxlTxNhBxnOInMQM0CucXixWNBdZ jbEwWHsSclkXrINu6KfHscgDuDk3pUpgnZ3PYDAcVBBmCnLcoden+8tQzVw1q+mrNY1L dEGSTbC+ADKSIMqSsZyoBZbl5ABsQcQLybn0W0RFtbnj0kuuvtWqOnvSlmPQGvMPLnIu YMzVU01lIOrSf+iiFuyyw2J9VeE/9mU3y8gH0R6WkmCsQapmQaeaIGqsmJ/MM1y2T1iz ng== Received: from ppma13.dal12v.mail.ibm.com (dd.9e.1632.ip4.static.sl-reverse.com [50.22.158.221]) by mx0a-001b2d01.pphosted.com (PPS) with ESMTPS id 3wtv9d86k2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 Mar 2024 18:36:28 +0000 Received: from pps.filterd (ppma13.dal12v.mail.ibm.com [127.0.0.1]) by ppma13.dal12v.mail.ibm.com (8.17.1.19/8.17.1.19) with ESMTP id 42CGNFJJ013580; Tue, 12 Mar 2024 18:36:27 GMT Received: from smtprelay03.wdc07v.mail.ibm.com ([172.16.1.70]) by ppma13.dal12v.mail.ibm.com (PPS) with ESMTPS id 3ws4ak8gtt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Tue, 12 Mar 2024 18:36:27 +0000 Received: from smtpav06.wdc07v.mail.ibm.com (smtpav06.wdc07v.mail.ibm.com [10.39.53.233]) by smtprelay03.wdc07v.mail.ibm.com (8.14.9/8.14.9/NCO v10.0) with ESMTP id 42CIaPG337421544 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 12 Mar 2024 18:36:27 GMT Received: from smtpav06.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 17C015806F; Tue, 12 Mar 2024 18:36:25 +0000 (GMT) Received: from smtpav06.wdc07v.mail.ibm.com (unknown [127.0.0.1]) by IMSVA (Postfix) with ESMTP id 28ECB58062; Tue, 12 Mar 2024 18:36:24 +0000 (GMT) Received: from sbct-3.pok.ibm.com (unknown [9.47.158.153]) by smtpav06.wdc07v.mail.ibm.com (Postfix) with ESMTP; Tue, 12 Mar 2024 18:36:24 +0000 (GMT) From: Stefan Berger To: keyrings@vger.kernel.org, linux-crypto@vger.kernel.org, herbert@gondor.apana.org.au, davem@davemloft.net Cc: linux-kernel@vger.kernel.org, saulo.alessandre@tse.jus.br, lukas@wunner.de, bbhushan2@marvell.com, jarkko@kernel.org, Stefan Berger Subject: [PATCH v6 04/13] crypto: ecdsa - Extend res.x mod n calculation for NIST P521 Date: Tue, 12 Mar 2024 14:36:09 -0400 Message-ID: <20240312183618.1211745-5-stefanb@linux.vnet.ibm.com> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240312183618.1211745-1-stefanb@linux.vnet.ibm.com> References: <20240312183618.1211745-1-stefanb@linux.vnet.ibm.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TM-AS-GCONF: 00 X-Proofpoint-GUID: N_q-3bDQ9lwe16RmS8dULQFM40qakM-R X-Proofpoint-ORIG-GUID: N_q-3bDQ9lwe16RmS8dULQFM40qakM-R X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.272,Aquarius:18.0.1011,Hydra:6.0.619,FMLib:17.11.176.26 definitions=2024-03-12_11,2024-03-12_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 priorityscore=1501 impostorscore=0 clxscore=1015 spamscore=0 mlxlogscore=999 bulkscore=0 lowpriorityscore=0 mlxscore=0 phishscore=0 malwarescore=0 suspectscore=0 adultscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2311290000 definitions=main-2403120139 From: Stefan Berger res.x has been calculated by ecc_point_mult_shamir, which uses 'mod curve_prime'. The curve_prime 'p' is typically larger than the curve_order 'n' and therefore it is possible that p > res.x >= n. If res.x >= n then res.x mod n can be calculated by iteratively sub- tracting n from res.x until n > res.x. For NIST P192/256/384 this can be done in a single subtraction. This can also be done in a single subtraction for NIST P521. The mathematical reason why a single subtraction is sufficient is due to the values of 'p' and 'n' of the NIST curves where the following holds true: note: max(res.x) = p - 1 max(res.x) - n < n p - 1 - n < n p - 1 < 2n => true for the NIST curves Signed-off-by: Stefan Berger Tested-by: Lukas Wunner --- crypto/ecdsa.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crypto/ecdsa.c b/crypto/ecdsa.c index 64e1e69d53ba..1814f009f971 100644 --- a/crypto/ecdsa.c +++ b/crypto/ecdsa.c @@ -122,7 +122,7 @@ static int _ecdsa_verify(struct ecc_ctx *ctx, const u64 *hash, const u64 *r, con /* res.x = res.x mod n (if res.x > order) */ if (unlikely(vli_cmp(res.x, curve->n, ndigits) == 1)) - /* faster alternative for NIST p384, p256 & p192 */ + /* faster alternative for NIST p521, p384, p256 & p192 */ vli_sub(res.x, res.x, curve->n, ndigits); if (!vli_cmp(res.x, r, ndigits)) -- 2.43.0