Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp530793pxj; Thu, 10 Jun 2021 06:46:35 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxcKvf5epami76iQnpd7HdQgOnt8cbA7ZQSHJBhG/5NFdU1DlMbvSpJjwjyK2yOqeDfMkAf X-Received: by 2002:a05:6402:5a:: with SMTP id f26mr4864059edu.306.1623332784744; Thu, 10 Jun 2021 06:46:24 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1623332784; cv=none; d=google.com; s=arc-20160816; b=fDjZNhYevzpRtCAmVNaE0Wm8/e98KK4U8iZUYhsfSPvThaCccRYQLHiczp1vba/MGO A1dZ+cDaMT4m0y52ty72zaaTa1Zoa62uQe7b08/UnQHS0ZYdIMlXsq1hXmA0Cr7VsvHY wWzgpukyJqldvT4mH8gCZhgpRV+XSxrp+GSxe+uN38ZfwCcyCtXM6xZoQ/LMj5bzLZA4 SUEsxtI1Z7r5b6JVP8m6TmzRa+/XpScznAttOsGar3GeamtCP05/ARWrU2G9Mt1U1T1W oG2BW9o2wLftsRrtnsgLuoO1OtMbaZlg159asQnVUZqryyhgc9pvYow388jolvsUHbvB gLXA== 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; bh=dqNkglxch/pFIw6DPEQkjtNmEneunoVqTCJk5D5/MXg=; b=Ud+edIT3eYDeDYZjxxjIQ6LMRLvHpc61cPOs/05lYjTfSg4I4GR/HTrHjMLqpwCD5H Svb8aDH0l7j9SX7qIpv9miEtKmgWPl1GYw6Cxy4qzxA4SCj/AoVKHLn91+P9I1B5Eisn QiR4Uo+rtWloItnJ290NcM5D6jtKHU/K6WnoJjQZZzrAZLYQV5z5UEvO6JvaYqzWDa3I wvzGbiqZyO312oyxoSGSaRWbKhLpsXVuXn2mgD0U90RymDqDqh88claS729dnDwSR6wz dUJbvecCIrMpQzSRLRC7AMNRYhgjDjaMXv+fsPIVEOMlb74Grqk/AMK7LD+hD1dIFSgY IVig== 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id f22si2342044ejb.54.2021.06.10.06.46.00; Thu, 10 Jun 2021 06:46:24 -0700 (PDT) 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; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231169AbhFJNrF (ORCPT + 99 others); Thu, 10 Jun 2021 09:47:05 -0400 Received: from out4436.biz.mail.alibaba.com ([47.88.44.36]:50336 "EHLO out4436.biz.mail.alibaba.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230035AbhFJNrF (ORCPT ); Thu, 10 Jun 2021 09:47:05 -0400 X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R161e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e01e04426;MF=tianjia.zhang@linux.alibaba.com;NM=1;PH=DS;RN=17;SR=0;TI=SMTPD_---0UbzGBj3_1623332701; Received: from localhost(mailfrom:tianjia.zhang@linux.alibaba.com fp:SMTPD_---0UbzGBj3_1623332701) by smtp.aliyun-inc.com(127.0.0.1); Thu, 10 Jun 2021 21:45:01 +0800 From: Tianjia Zhang To: Herbert Xu , "David S. Miller" , Catalin Marinas , Will Deacon , Thomas Gleixner , Ingo Molnar , Borislav Petkov , "H. Peter Anvin" , Gilad Ben-Yossef , Ard Biesheuvel , "Markku-Juhani O . Saarinen" , Jussi Kivilinna , x86@kernel.org, linux-crypto@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Cc: Tianjia Zhang Subject: [PATCH 2/3] crypto: arm64/sm4-ce - Make dependent on sm4 library instead of sm4-generic Date: Thu, 10 Jun 2021 21:44:58 +0800 Message-Id: <20210610134459.28541-3-tianjia.zhang@linux.alibaba.com> X-Mailer: git-send-email 2.19.1.3.ge56e4f7 In-Reply-To: <20210610134459.28541-1-tianjia.zhang@linux.alibaba.com> References: <20210610134459.28541-1-tianjia.zhang@linux.alibaba.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org SM4 library is abstracted from sm4-generic algorithm, sm4-ce can depend on the SM4 library instead of sm4-generic, and some functions in sm4-generic do not need to be exported. Signed-off-by: Tianjia Zhang --- arch/arm64/crypto/Kconfig | 2 +- arch/arm64/crypto/sm4-ce-glue.c | 14 +++++++++++--- crypto/sm4_generic.c | 15 ++++++--------- include/crypto/sm4.h | 5 ----- 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/arch/arm64/crypto/Kconfig b/arch/arm64/crypto/Kconfig index b8eb0453123d..55f19450091b 100644 --- a/arch/arm64/crypto/Kconfig +++ b/arch/arm64/crypto/Kconfig @@ -51,7 +51,7 @@ config CRYPTO_SM4_ARM64_CE tristate "SM4 symmetric cipher (ARMv8.2 Crypto Extensions)" depends on KERNEL_MODE_NEON select CRYPTO_ALGAPI - select CRYPTO_SM4 + select CRYPTO_LIB_SM4 config CRYPTO_GHASH_ARM64_CE tristate "GHASH/AES-GCM using ARMv8 Crypto Extensions" diff --git a/arch/arm64/crypto/sm4-ce-glue.c b/arch/arm64/crypto/sm4-ce-glue.c index 2754c875d39c..ba2261ec54d5 100644 --- a/arch/arm64/crypto/sm4-ce-glue.c +++ b/arch/arm64/crypto/sm4-ce-glue.c @@ -17,12 +17,20 @@ MODULE_LICENSE("GPL v2"); asmlinkage void sm4_ce_do_crypt(const u32 *rk, void *out, const void *in); +int sm4_ce_setkey(struct crypto_tfm *tfm, const u8 *in_key, + unsigned int key_len) +{ + struct crypto_sm4_ctx *ctx = crypto_tfm_ctx(tfm); + + return crypto_sm4_expand_key(ctx, in_key, key_len); +} + static void sm4_ce_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in) { const struct crypto_sm4_ctx *ctx = crypto_tfm_ctx(tfm); if (!crypto_simd_usable()) { - crypto_sm4_encrypt(tfm, out, in); + crypto_sm4_do_crypt(ctx->rkey_enc, out, in); } else { kernel_neon_begin(); sm4_ce_do_crypt(ctx->rkey_enc, out, in); @@ -35,7 +43,7 @@ static void sm4_ce_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in) const struct crypto_sm4_ctx *ctx = crypto_tfm_ctx(tfm); if (!crypto_simd_usable()) { - crypto_sm4_decrypt(tfm, out, in); + crypto_sm4_do_crypt(ctx->rkey_dec, out, in); } else { kernel_neon_begin(); sm4_ce_do_crypt(ctx->rkey_dec, out, in); @@ -54,7 +62,7 @@ static struct crypto_alg sm4_ce_alg = { .cra_u.cipher = { .cia_min_keysize = SM4_KEY_SIZE, .cia_max_keysize = SM4_KEY_SIZE, - .cia_setkey = crypto_sm4_set_key, + .cia_setkey = sm4_ce_setkey, .cia_encrypt = sm4_ce_encrypt, .cia_decrypt = sm4_ce_decrypt } diff --git a/crypto/sm4_generic.c b/crypto/sm4_generic.c index 7d1c25244268..c06856110126 100644 --- a/crypto/sm4_generic.c +++ b/crypto/sm4_generic.c @@ -28,34 +28,31 @@ * * Return: 0 on success; -EINVAL on failure (only happens for bad key lengths) */ -int crypto_sm4_set_key(struct crypto_tfm *tfm, const u8 *in_key, +static int sm4_setkey(struct crypto_tfm *tfm, const u8 *in_key, unsigned int key_len) { struct crypto_sm4_ctx *ctx = crypto_tfm_ctx(tfm); return crypto_sm4_expand_key(ctx, in_key, key_len); } -EXPORT_SYMBOL_GPL(crypto_sm4_set_key); /* encrypt a block of text */ -void crypto_sm4_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in) +static void sm4_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in) { const struct crypto_sm4_ctx *ctx = crypto_tfm_ctx(tfm); crypto_sm4_do_crypt(ctx->rkey_enc, out, in); } -EXPORT_SYMBOL_GPL(crypto_sm4_encrypt); /* decrypt a block of text */ -void crypto_sm4_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in) +static void sm4_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in) { const struct crypto_sm4_ctx *ctx = crypto_tfm_ctx(tfm); crypto_sm4_do_crypt(ctx->rkey_dec, out, in); } -EXPORT_SYMBOL_GPL(crypto_sm4_decrypt); static struct crypto_alg sm4_alg = { .cra_name = "sm4", @@ -69,9 +66,9 @@ static struct crypto_alg sm4_alg = { .cipher = { .cia_min_keysize = SM4_KEY_SIZE, .cia_max_keysize = SM4_KEY_SIZE, - .cia_setkey = crypto_sm4_set_key, - .cia_encrypt = crypto_sm4_encrypt, - .cia_decrypt = crypto_sm4_decrypt + .cia_setkey = sm4_setkey, + .cia_encrypt = sm4_encrypt, + .cia_decrypt = sm4_decrypt } } }; diff --git a/include/crypto/sm4.h b/include/crypto/sm4.h index 39273121c145..73c15179e4c6 100644 --- a/include/crypto/sm4.h +++ b/include/crypto/sm4.h @@ -45,9 +45,4 @@ int crypto_sm4_expand_key(struct crypto_sm4_ctx *ctx, const u8 *in_key, */ void crypto_sm4_do_crypt(const u32 *rk, u8 *out, const u8 *in); -int crypto_sm4_set_key(struct crypto_tfm *tfm, const u8 *in_key, - unsigned int key_len); -void crypto_sm4_encrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in); -void crypto_sm4_decrypt(struct crypto_tfm *tfm, u8 *out, const u8 *in); - #endif -- 2.19.1.3.ge56e4f7