Received: by 2002:a25:31c3:0:0:0:0:0 with SMTP id x186csp6578494ybx; Mon, 11 Nov 2019 11:14:55 -0800 (PST) X-Google-Smtp-Source: APXvYqyc6pNK/0SPGe1MqeTNVLSTpBOiq1gRRV1lV7mbrqp3ttFBfNngLE6sNLES0/HZMRCiOyVM X-Received: by 2002:a05:6402:6cf:: with SMTP id n15mr27752193edy.269.1573499695112; Mon, 11 Nov 2019 11:14:55 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1573499695; cv=none; d=google.com; s=arc-20160816; b=Eh5aOFYClagVmFAgU+4ZDYpXZCVhOzWXDfejue8pbF8ztu4Gl6VBTkTDDuVCDWPyX/ MkJ0OE0x001WxnlvBrKZA2avx60UUkLZUzlIHHYbZnJ/gxNmQ2/9RcZSaByFhmpqlB3b E9R7tJ7Vf5aRgLtGSyeT7T9dUMLTyG8edOnLlbkGGs/yN7ZDSNxzMUiqtOTtB4a6aU8u jor+TYWHgzw4PQERBJdhsXsiBNSGHxQfTkfoMsPFZ106ywQee8QIZA685b+X/19tM5iH jFFluuAwae9VxazAuUj+iYyyq6F1ZZpb/NbYvZn9q7qp2PrYbSQyhIt8UUoOuE2wUnlZ 6JFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=+9pvk9ZDlZUHmWQLjDe5Bin9DRZFPCDlC4EvIJp/HGw=; b=iH6baNWr7YezzXrWxm4lQ5T3+xFzKsCA0mkmnL5URVlsry0PLR5z7VmC+ML9+Foboz 68LV9cDI7nOnNNPDV+x+1hxDrycnEMt6ymENNwrOsRB7sGY4zCCyMqr6YsQxD0qsoo2S UjvsLNbWbx44p24Wg3mYiYZ3ekRwfuRiCffF/ixsQpxWxAkBnfFh0ddiocdO0hXXZFR+ KHRUiN+wCDZuD89kzeOHIc10x3LW0HWlzHOL4NLbPEqUKZMyMKJEcS937xBgf6+N+sC5 oTxx+RL8mweEw9UbJHUnSLYJFE1n5WFmOIiJh2x4t1HdRQWJ8TBIUfOQ4LpZiW2YdE+z 60bw== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@chronox.de header.s=strato-dkim-0002 header.b=aR4O8L+8; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l5si4833363edv.108.2019.11.11.11.14.31; Mon, 11 Nov 2019 11:14:55 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@chronox.de header.s=strato-dkim-0002 header.b=aR4O8L+8; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727731AbfKKTOB (ORCPT + 99 others); Mon, 11 Nov 2019 14:14:01 -0500 Received: from mo4-p04-ob.smtp.rzone.de ([85.215.255.121]:35468 "EHLO mo4-p04-ob.smtp.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727027AbfKKTOA (ORCPT ); Mon, 11 Nov 2019 14:14:00 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1573499636; s=strato-dkim-0002; d=chronox.de; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From: X-RZG-CLASS-ID:X-RZG-AUTH:From:Subject:Sender; bh=+9pvk9ZDlZUHmWQLjDe5Bin9DRZFPCDlC4EvIJp/HGw=; b=aR4O8L+8zi5YcnBQMsF2RKVCv9STfy3gfhOQTtjYF8B1AMOxyA3i8qXGIiD6AxXaQE t2Ng6B58ssuyj7ygEvE36IuE/K6NIbvQ+A47bDX9ImiuBumBzqsfPY3N0y3MEN4RQ9HZ 6FI9ohydvjBTrKbhe41YE8htTqjLfQtiECeFotXx9wuJRdL+gV3l01lHwm29SQ8yW8X0 xUr2ar0CunaBI6TuiCJn43lLEcnsmYJusCEby4YM/DY8a1t6s8W09ZGrprF4eZMWJRYj 0zAMhjpqsdhFdQ6Kt2Biddal5gPPRI3VUTtmqkzsurebVqh+nHqWerDPkZFqofj0K8IF Tdgg== X-RZG-AUTH: ":P2ERcEykfu11Y98lp/T7+hdri+uKZK8TKWEqNyiHySGSa9k9zmgLKehaO2hZDSTWbgzIOA==" X-RZG-CLASS-ID: mo00 Received: from positron.chronox.de by smtp.strato.de (RZmta 44.29.0 AUTH) with ESMTPSA id N09a57vABJCp3XV (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (curve secp521r1 with 521 ECDH bits, eq. 15360 bits RSA)) (Client did not present a certificate); Mon, 11 Nov 2019 20:12:51 +0100 (CET) From: Stephan =?ISO-8859-1?Q?M=FCller?= To: Arnd Bergmann Cc: Greg Kroah-Hartman , linux-crypto@vger.kernel.org, LKML , linux-api@vger.kernel.org, "Eric W. Biederman" , "Alexander E. Patrakov" , "Ahmed S. Darwish" , "Theodore Y. Ts'o" , Willy Tarreau , Matthew Garrett , Vito Caputo , Andreas Dilger , Jan Kara , Ray Strode , William Jon McCann , zhangjs , Andy Lutomirski , Florian Weimer , Lennart Poettering , Nicolai Stange , "Peter, Matthias" , Marcelo Henrique Cerri , Roman Drahtmueller , Neil Horman Subject: [PATCH v24 05/12] crypto: DRBG - externalize DRBG functions for LRNG Date: Mon, 11 Nov 2019 19:21:16 +0100 Message-ID: <2428275.qkElJ5Bovf@positron.chronox.de> In-Reply-To: <6157374.ptSnyUpaCn@positron.chronox.de> References: <6157374.ptSnyUpaCn@positron.chronox.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="iso-8859-1" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This patch allows several DRBG functions to be called by the LRNG kernel code paths outside the drbg.c file. CC: "Eric W. Biederman" CC: "Alexander E. Patrakov" CC: "Ahmed S. Darwish" CC: "Theodore Y. Ts'o" CC: Willy Tarreau CC: Matthew Garrett CC: Vito Caputo CC: Andreas Dilger CC: Jan Kara CC: Ray Strode CC: William Jon McCann CC: zhangjs CC: Andy Lutomirski CC: Florian Weimer CC: Lennart Poettering CC: Nicolai Stange Reviewed-by: Roman Drahtmueller Tested-by: Roman Drahtm=FCller Tested-by: Marcelo Henrique Cerri Tested-by: Neil Horman Signed-off-by: Stephan Mueller =2D-- crypto/drbg.c | 16 ++++++++++------ include/crypto/drbg.h | 7 +++++++ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/crypto/drbg.c b/crypto/drbg.c index b6929eb5f565..5561dd0f09e1 100644 =2D-- a/crypto/drbg.c +++ b/crypto/drbg.c @@ -113,7 +113,7 @@ * the SHA256 / AES 256 over other ciphers. Thus, the favored * DRBGs are the latest entries in this array. */ =2Dstatic const struct drbg_core drbg_cores[] =3D { +const struct drbg_core drbg_cores[] =3D { #ifdef CONFIG_CRYPTO_DRBG_CTR { .flags =3D DRBG_CTR | DRBG_STRENGTH128, @@ -190,6 +190,7 @@ static const struct drbg_core drbg_cores[] =3D { }, #endif /* CONFIG_CRYPTO_DRBG_HMAC */ }; +EXPORT_SYMBOL(drbg_cores); =20 static int drbg_uninstantiate(struct drbg_state *drbg); =20 @@ -205,7 +206,7 @@ static int drbg_uninstantiate(struct drbg_state *drbg); * Return: normalized strength in *bytes* value or 32 as default * to counter programming errors */ =2Dstatic inline unsigned short drbg_sec_strength(drbg_flag_t flags) +unsigned short drbg_sec_strength(drbg_flag_t flags) { switch (flags & DRBG_STRENGTH_MASK) { case DRBG_STRENGTH128: @@ -218,6 +219,7 @@ static inline unsigned short drbg_sec_strength(drbg_fla= g_t flags) return 32; } } +EXPORT_SYMBOL(drbg_sec_strength); =20 /* * FIPS 140-2 continuous self test for the noise source @@ -1202,7 +1204,7 @@ static int drbg_seed(struct drbg_state *drbg, struct = drbg_string *pers, } =20 /* Free all substructures in a DRBG state without the DRBG state structure= */ =2Dstatic inline void drbg_dealloc_state(struct drbg_state *drbg) +void drbg_dealloc_state(struct drbg_state *drbg) { if (!drbg) return; @@ -1223,12 +1225,13 @@ static inline void drbg_dealloc_state(struct drbg_s= tate *drbg) drbg->fips_primed =3D false; } } +EXPORT_SYMBOL(drbg_dealloc_state); =20 /* * Allocate all sub-structures for a DRBG state. * The DRBG state structure must already be allocated. */ =2Dstatic inline int drbg_alloc_state(struct drbg_state *drbg) +int drbg_alloc_state(struct drbg_state *drbg) { int ret =3D -ENOMEM; unsigned int sb_size =3D 0; @@ -1307,6 +1310,7 @@ static inline int drbg_alloc_state(struct drbg_state = *drbg) drbg_dealloc_state(drbg); return ret; } +EXPORT_SYMBOL(drbg_alloc_state); =20 /************************************************************************* * DRBG interface functions @@ -1874,8 +1878,7 @@ static int drbg_kcapi_sym_ctr(struct drbg_state *drbg, * * return: flags */ =2Dstatic inline void drbg_convert_tfm_core(const char *cra_driver_name, =2D int *coreref, bool *pr) +void drbg_convert_tfm_core(const char *cra_driver_name, int *coreref, bool= *pr) { int i =3D 0; size_t start =3D 0; @@ -1902,6 +1905,7 @@ static inline void drbg_convert_tfm_core(const char *= cra_driver_name, } } } +EXPORT_SYMBOL(drbg_convert_tfm_core); =20 static int drbg_kcapi_init(struct crypto_tfm *tfm) { diff --git a/include/crypto/drbg.h b/include/crypto/drbg.h index 8c9af21efce1..c63b20375235 100644 =2D-- a/include/crypto/drbg.h +++ b/include/crypto/drbg.h @@ -282,4 +282,11 @@ enum drbg_prefixes { DRBG_PREFIX3 }; =20 +extern int drbg_alloc_state(struct drbg_state *drbg); +extern void drbg_dealloc_state(struct drbg_state *drbg); +extern void drbg_convert_tfm_core(const char *cra_driver_name, int *corere= f, + bool *pr); +extern const struct drbg_core drbg_cores[]; +extern unsigned short drbg_sec_strength(drbg_flag_t flags); + #endif /* _DRBG_H */ =2D-=20 2.23.0