Received: by 2002:a05:6a10:8c0a:0:0:0:0 with SMTP id go10csp2162853pxb; Mon, 22 Feb 2021 23:17:19 -0800 (PST) X-Google-Smtp-Source: ABdhPJx2uGfb9W6vb4BMwLXtBifnziKRlyd9j42PKOHgi5FnWJZC2TNFbmLlhFBK7ngh1GMtXTev X-Received: by 2002:a05:6402:95b:: with SMTP id h27mr12504438edz.77.1614064638833; Mon, 22 Feb 2021 23:17:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1614064638; cv=none; d=google.com; s=arc-20160816; b=thCd+0uscF8me5Srw9vzluPElmLqopmFd+OnBkkYkTR9m/GymRYTHFiTEbW2T9BJuA s1IoCjz9NKjv/UC/kihGLoyH4+bkrhYVc5E7Je8z34uwpDeucoYPxBmBXYNgupwZ3HIc RRqXVCDwIQiSsawdATlA0bCyGiYo1wM9bsLLJSi+TYBVN9HihZlGJ4ZaPwEv/v7PdZAN zUd0OmdeJ7DfLkrZN1RAReMdB2UsLCfzU9GDzgj3v6J1ndTPJ0ApioEpgCLkGMp3kBrd eioqQU+IXe0nYdIUSvIbrQyLjJSZJ/+xn8nndbwOxbkT5VjgPywT3rEdIiVnIwpFvtia 5dXw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:mime-version:references:in-reply-to:message-id :date:subject:cc:to:from; bh=msj+ClQhxi320mG4bJU7Q3pKn4F3BuHCbz4idR3Z8gE=; b=by0ngM8JTD6KAoduzyCjoXfgr2GqsL8PfrHOLqGFUlvCePc5h6C/6NUTP/EJNXgiX3 o+rGHasC9BcLpeIXQUwCRAFQ1G8sQ3UhwDu/MC9AQvNIJJi3tXdMkruAdjr0rrl+UnCg ICM+HJyhh97cBZshjnj32aXPO2GW7p4EV2zfgLbSlQqhrSrbj2fLt2VKSl8tZQ7x+hjX zHG/4BQH6+ojz9PTZEj2Hs7Pxwzr7uvqFIGWp3GePKYZjV9AQc2JDkzSjkNGyw99BuH+ cO7yiicW3hoUhGw9nqWL3f19llmYpUhd9GviATr3X53hc+aXXtkmXxoymCmelzbWJBlk BJdg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id hk1si2451049ejb.36.2021.02.22.23.16.56; Mon, 22 Feb 2021 23:17:18 -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; 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 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231639AbhBWHNi (ORCPT + 99 others); Tue, 23 Feb 2021 02:13:38 -0500 Received: from szxga05-in.huawei.com ([45.249.212.191]:12989 "EHLO szxga05-in.huawei.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231800AbhBWHNb (ORCPT ); Tue, 23 Feb 2021 02:13:31 -0500 Received: from DGGEMS402-HUB.china.huawei.com (unknown [172.30.72.60]) by szxga05-in.huawei.com (SkyGuard) with ESMTP id 4Dl9FV1MC6zjQt2; Tue, 23 Feb 2021 15:11:10 +0800 (CST) Received: from localhost.localdomain (10.67.165.24) by DGGEMS402-HUB.china.huawei.com (10.3.19.202) with Microsoft SMTP Server id 14.3.498.0; Tue, 23 Feb 2021 15:12:34 +0800 From: Meng Yu To: , , , , , CC: , , , , Subject: [PATCH v9 6/7] crypto: add curve25519 params and expose them Date: Tue, 23 Feb 2021 15:10:18 +0800 Message-ID: <1614064219-40701-7-git-send-email-yumeng18@huawei.com> X-Mailer: git-send-email 2.8.1 In-Reply-To: <1614064219-40701-1-git-send-email-yumeng18@huawei.com> References: <1614064219-40701-1-git-send-email-yumeng18@huawei.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [10.67.165.24] X-CFilter-Loop: Reflected Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org 1. Add curve 25519 parameters in 'crypto/ecc_curve_defs.h'; 2. Add curve25519 interface 'ecc_get_curve25519_param' in 'include/crypto/ecc_curve.h', to make its parameters be exposed to everyone in kernel tree. Signed-off-by: Meng Yu Reviewed-by: Zaibo Xu --- crypto/ecc.c | 6 ++++++ crypto/ecc_curve_defs.h | 17 +++++++++++++++++ include/crypto/ecc_curve.h | 7 +++++++ 3 files changed, 30 insertions(+) diff --git a/crypto/ecc.c b/crypto/ecc.c index 4b55ad0..0798a18 100644 --- a/crypto/ecc.c +++ b/crypto/ecc.c @@ -43,6 +43,12 @@ typedef struct { u64 m_high; } uint128_t; +/* Returns curv25519 curve param */ +const struct ecc_curve *ecc_get_curve25519(void) +{ + return &ecc_25519; +} +EXPORT_SYMBOL(ecc_get_curve25519); const struct ecc_curve *ecc_get_curve(unsigned int curve_id) { diff --git a/crypto/ecc_curve_defs.h b/crypto/ecc_curve_defs.h index 69be6c7..d7769cc 100644 --- a/crypto/ecc_curve_defs.h +++ b/crypto/ecc_curve_defs.h @@ -54,4 +54,21 @@ static struct ecc_curve nist_p256 = { .b = nist_p256_b }; +/* curve25519 */ +static u64 curve25519_g_x[] = { 0x0000000000000009, 0x0000000000000000, + 0x0000000000000000, 0x0000000000000000 }; +static u64 curve25519_p[] = { 0xffffffffffffffed, 0xffffffffffffffff, + 0xffffffffffffffff, 0x7fffffffffffffff }; +static u64 curve25519_a[] = { 0x000000000001DB41, 0x0000000000000000, + 0x0000000000000000, 0x0000000000000000 }; +static const struct ecc_curve ecc_25519 = { + .name = "curve25519", + .g = { + .x = curve25519_g_x, + .ndigits = 4, + }, + .p = curve25519_p, + .a = curve25519_a, +}; + #endif diff --git a/include/crypto/ecc_curve.h b/include/crypto/ecc_curve.h index 19a35da..7096478 100644 --- a/include/crypto/ecc_curve.h +++ b/include/crypto/ecc_curve.h @@ -50,4 +50,11 @@ struct ecc_curve { */ const struct ecc_curve *ecc_get_curve(unsigned int curve_id); +/** + * ecc_get_curve25519() - get curve25519 curve; + * + * Returns curve25519 + */ +const struct ecc_curve *ecc_get_curve25519(void); + #endif -- 2.8.1