Received: by 2002:a25:1985:0:0:0:0:0 with SMTP id 127csp648901ybz; Wed, 15 Apr 2020 15:56:27 -0700 (PDT) X-Google-Smtp-Source: APiQypKQvZABp1T2wZXmxgBa8PqZgiZX+Yh936EsSXEfLqsT1amGLVh45koYoLC2x9znElu19OMR X-Received: by 2002:a17:906:8609:: with SMTP id o9mr7274803ejx.361.1586991386822; Wed, 15 Apr 2020 15:56:26 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1586991386; cv=none; d=google.com; s=arc-20160816; b=wdyBK4c/hMXAWbnjVLOV/3QzcOYH3m3IoVZ9ujI6f9tNFPU+G06QXI3myh28s06fjK QYIe7NwFvbFp9NU6TYA3GukGgUatG57NbTR3h4MLZuwIUqg/ie0d6+KPLJT1oANvPP+G Dilgt0AENsw8/2AsVHLeQBrImd7F0CV/D7/zPpWwqcMxgUpWXEmg18gb0y6igtfW0tme m7D1gpOvCFUXwEtr9SVVod5Sl+otd/fHHJUOGiTeyeLLsN5N/p6YuQJHaWokk+sB500P ib6hfbSD3tiquJ/jCqQwZVyloXA8TMT+yChvpA8FTsZ+RPxxkA72VRgTlFP5H6w3fEaR eqPA== 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=mjk0gtxR3vHDozjMxfcOm68bNrEuQVSiavW2x6IZ3NE=; b=FSRDGKemJEeMidq9Mpk0wt/osSl3Dnip70rC8oLM8IJOGY+mjQNlCKOxmNWH68iCnL Xyp74vkn6n9ukYuweG+X/ZhydvXVzY48xOrdf2rjODx/72Fbl8yPbrPHWor/vP5eC2Wy si3ecX/EH0Ze3KLi2LBzk2bdm4MIl0BWN0Ih3ptYySgjUG8oY1yWjruzMtLAj7CmBEe8 fx98AHcNVn6AQuJcoBByiCwzkhq+3Iy3ZiB+dsmNYlw7NJI40wSfXbePHebTyIqz0PMw cRRjc6UuC01mNldmGPb1n45W1SFO5qCp4SMpxmCID/TFxSxQlYiCHZsc233S5J/szcVp KbXQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@chronox.de header.s=strato-dkim-0002 header.b=Aazq4xHt; 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 m17si11133665edf.454.2020.04.15.15.56.03; Wed, 15 Apr 2020 15:56:26 -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; dkim=fail header.i=@chronox.de header.s=strato-dkim-0002 header.b=Aazq4xHt; 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 S2406608AbgDOKmV (ORCPT + 99 others); Wed, 15 Apr 2020 06:42:21 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57142 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S2896488AbgDOKXv (ORCPT ); Wed, 15 Apr 2020 06:23:51 -0400 Received: from mo6-p03-ob.smtp.rzone.de (mo6-p03-ob.smtp.rzone.de [IPv6:2a01:238:20a:202:5303::10]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 7F8D4C03C1AD; Wed, 15 Apr 2020 03:23:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1586946179; 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=mjk0gtxR3vHDozjMxfcOm68bNrEuQVSiavW2x6IZ3NE=; b=Aazq4xHtgt/nZGFs8ozyKJMRjogHF+UsAnFOxlfCH8UXh+ns+vXD3JeJEgTzniIP3Y Z7yfETZ7fPyXu9eDpzxerDG0M+JoSbwu5rbkwysU/trZz7oN4DmBapSLAxJS3kIGa7+j 7b68Xxh22cHLSIEGEN8iFJ5huDSbpQDRbT4+DKQyZ40XT5lDjPX3vFSfz4Z98DZeiLSt u84MinlAST3tNRTDiGITbQXM+i5KJHwIWAR8g9by9NB2YnWfhx0+LiljmZXjLLI0EOSH h4dXH0t1NxX7BILLXVuRCc6Yr8WguBoDg41yGQZ/OOZgeezytgyNV90uYoKaTE6ZiRax TJNw== X-RZG-AUTH: ":P2ERcEykfu11Y98lp/T7+hdri+uKZK8TKWEqNyiHySGSa9k9xmwdNnzGHXPZIvSaiyU=" X-RZG-CLASS-ID: mo00 Received: from positron.chronox.de by smtp.strato.de (RZmta 46.4.0 DYNA|AUTH) with ESMTPSA id 404ef0w3FAJn123 (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Wed, 15 Apr 2020 12:19:49 +0200 (CEST) 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 , Randy Dunlap , Julia Lawall , Dan Carpenter Subject: [PATCH v30 08/12] crypto: provide access to a static Jitter RNG state Date: Wed, 15 Apr 2020 12:13:31 +0200 Message-ID: <5514806.Sqd0JiJ7ZV@positron.chronox.de> In-Reply-To: <11836144.hkEK2qVKZC@positron.chronox.de> References: <11836144.hkEK2qVKZC@positron.chronox.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="iso-8859-1" Sender: linux-crypto-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org To support the LRNG operation which uses the Jitter RNG separately from the kernel crypto API, at a time where potentially the regular memory management is not yet initialized, the Jitter RNG needs to provide a state whose memory is defined at compile time. As only once instance will ever be needed by the LRNG, define once static memory block which is solely to be used by the LRNG. 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/jitterentropy-kcapi.c | 3 +-- crypto/jitterentropy.c | 25 ++++++++++++++++++- .../crypto/internal}/jitterentropy.h | 3 +++ 3 files changed, 28 insertions(+), 3 deletions(-) rename {crypto =3D> include/crypto/internal}/jitterentropy.h (84%) diff --git a/crypto/jitterentropy-kcapi.c b/crypto/jitterentropy-kcapi.c index a5ce8f96790f..11b00e9f37f3 100644 =2D-- a/crypto/jitterentropy-kcapi.c +++ b/crypto/jitterentropy-kcapi.c @@ -43,8 +43,7 @@ #include #include #include =2D =2D#include "jitterentropy.h" +#include =20 /*************************************************************************= ** * Helper function diff --git a/crypto/jitterentropy.c b/crypto/jitterentropy.c index 042157f0d28b..529c9db13e64 100644 =2D-- a/crypto/jitterentropy.c +++ b/crypto/jitterentropy.c @@ -103,7 +103,7 @@ struct rand_data { * Helper functions *************************************************************************= **/ =20 =2D#include "jitterentropy.h" +#include =20 /** * Update of the loop count used for the next round of @@ -639,3 +639,26 @@ int jent_entropy_init(void) =20 return 0; } + +struct rand_data *jent_lrng_entropy_collector(void) +{ + static unsigned char lrng_jent_mem[JENT_MEMORY_SIZE]; + static struct rand_data lrng_jent_state =3D { + .data =3D 0, + .old_data =3D 0, + .prev_time =3D 0, + .last_delta =3D 0, + .last_delta2 =3D 0, + .osr =3D 1, + .mem =3D lrng_jent_mem, + .memlocation =3D 0, + .memblocks =3D JENT_MEMORY_BLOCKSIZE, + .memblocksize =3D JENT_MEMORY_BLOCKS, + .memaccessloops =3D JENT_MEMORY_ACCESSLOOPS, + }; + + if (jent_entropy_init()) + return NULL; + + return &lrng_jent_state; +} diff --git a/crypto/jitterentropy.h b/include/crypto/internal/jitterentropy= =2Eh similarity index 84% rename from crypto/jitterentropy.h rename to include/crypto/internal/jitterentropy.h index c83fff32d130..6e07d86eac82 100644 =2D-- a/crypto/jitterentropy.h +++ b/include/crypto/internal/jitterentropy.h @@ -15,3 +15,6 @@ extern int jent_read_entropy(struct rand_data *ec, unsign= ed char *data, extern struct rand_data *jent_entropy_collector_alloc(unsigned int osr, unsigned int flags); extern void jent_entropy_collector_free(struct rand_data *entropy_collecto= r); + +/* Access to statically allocated Jitter RNG instance */ +extern struct rand_data *jent_lrng_entropy_collector(void); =2D-=20 2.25.2