Received: by 2002:a05:6a10:6744:0:0:0:0 with SMTP id w4csp3807772pxu; Tue, 20 Oct 2020 00:33:10 -0700 (PDT) X-Google-Smtp-Source: ABdhPJycROJ0jmKrMzyPG1yHP55Z7IlZQIIQ29/c9Wledl4febHOOUUZWoO+IQ7llbOLupuwDAP8 X-Received: by 2002:a17:906:a0cb:: with SMTP id bh11mr1874573ejb.314.1603179190450; Tue, 20 Oct 2020 00:33:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1603179190; cv=none; d=google.com; s=arc-20160816; b=ceJvj4NnGC69dPBo2U9LtesOt/p6LPcGSiu8e5AjtLQeRFqehnEWhuswQoCFB6bLW7 R7bEI3FN0K4RCeofMI6KaoL8x4V9Jr3l7Fw2wEtbXnq3mHLAZM+jM4PMVnNemVPVdqnh cECngBhN7jVuqhGNzpVcHsDhTQtzBJCKPLrdPAkbrWkBlL1/kADcKy09WsLjBi/7Z9SP eJKkvisk3gVxZOhYoB2xnLvzAVbBSgM2dLcLQnNgQaLM7fT0FtR/O/0lZcb4X7/pK3Xt XnwHEuS0V6N6XnekJP/CTsO0cFWOffxES1ezDfdhjnJCWAWQxD1Tlgfkrhp3mpcpvnxy doeQ== 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 :dkim-signature; bh=GVx2vZlE/APND97lQCFY3rskcAprAEL0qmiY7RItiec=; b=vPFA7TTMz7/ZwbtBCs6ycCJ2tdwYDJOp49TUyFjPBt14BKnzKq3vxxZmspCX+32Q7Y ul8epZh91CT4NOLLBufp/vHkqhsG/wgFAPqpJWjm9twgtZn3GbKo1ppSomifd8dC/FuO nX3UP8+5wlOaK2JsEF+gHIPGXP3Fgbd3a9kVU/VrpmBQFLSpQns0kh7hfRESV8gOSpe+ bGHOGD+WKJ9eQIfzdyti8jTlARwCFyL2TDoSazHuOaqwfBmRwvLDcT+zVaJtb/DND27a oBRcpEWW9ZXDxdzBGj4V/WFqeYj8+5Wyh6qmbWOkPddokSFQI76edokvrb1DSXriKb3f oENg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chronox.de header.s=strato-dkim-0002 header.b=HBqU6Vqb; 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 s8si586689edy.195.2020.10.20.00.32.46; Tue, 20 Oct 2020 00:33:10 -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=pass header.i=@chronox.de header.s=strato-dkim-0002 header.b=HBqU6Vqb; 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 S1731422AbgJSTwo (ORCPT + 99 others); Mon, 19 Oct 2020 15:52:44 -0400 Received: from mo4-p03-ob.smtp.rzone.de ([85.215.255.104]:21734 "EHLO mo4-p03-ob.smtp.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727936AbgJSTwo (ORCPT ); Mon, 19 Oct 2020 15:52:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1603137159; 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=GVx2vZlE/APND97lQCFY3rskcAprAEL0qmiY7RItiec=; b=HBqU6Vqbr0IXPAJ2fEkFSYwkZp29Ua/i/6lOQsMYGayUwGl1eakPnzH22gwKA60Nzf C3N/HsTJ7dEMyV4VrTggTCxhdfJ3/3sKGhACXkMuf3Ag+4Hz+jlUV2n5/zc7Zjz5WsJ9 uucH7bhrZTcRAX4F/OwUGBBvXX8VLRx3WgdtgJi4jHzFUjUGlw6KQBgqIq/T49KTQA5K HQc9gBRoVZKV8PGJh/JuSjNdy4H1mWEIWolGGYjZE/L40/IirfFvoKPzHLh5Ay2sLuUQ 5D+JCkCzQuq9wQPXFvJzu5zevKWDH7nGsnGR6J/VUKnud4cIhpL2kkJXBGxI7j//14lw kOTA== X-RZG-AUTH: ":P2ERcEykfu11Y98lp/T7+hdri+uKZK8TKWEqNyiHySGSa9k9xmwdNnzGHXPbJPSb3t0=" X-RZG-CLASS-ID: mo00 Received: from positron.chronox.de by smtp.strato.de (RZmta 47.2.1 DYNA|AUTH) with ESMTPSA id C0b627w9JJpeU6q (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Mon, 19 Oct 2020 21:51:40 +0200 (CEST) From: Stephan =?ISO-8859-1?Q?M=FCller?= To: Torsten Duwe Cc: Willy Tarreau , "Theodore Y. Ts'o" , linux-crypto@vger.kernel.org, Nicolai Stange , LKML , Arnd Bergmann , Greg Kroah-Hartman , "Eric W. Biederman" , "Alexander E. Patrakov" , "Ahmed S. Darwish" , Matthew Garrett , Vito Caputo , Andreas Dilger , Jan Kara , Ray Strode , William Jon McCann , zhangjs , Andy Lutomirski , Florian Weimer , Lennart Poettering , Peter Matthias , Marcelo Henrique Cerri , Neil Horman , Randy Dunlap , Julia Lawall , Dan Carpenter , Andy Lavr , Eric Biggers , "Jason A. Donenfeld" , Petr Tesarik Subject: [PATCH v36 09/13] crypto: provide access to a static Jitter RNG state Date: Mon, 19 Oct 2020 21:35:58 +0200 Message-ID: <21963480.6Emhk5qWAg@positron.chronox.de> In-Reply-To: <3073852.aeNJFYEL58@positron.chronox.de> References: <20200921075857.4424-1-nstange@suse.de> <20201016172619.GA18410@lst.de> <3073852.aeNJFYEL58@positron.chronox.de> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="iso-8859-1" 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: Torsten Duwe 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 | 31 ++++++++++++++++++- .../crypto/internal}/jitterentropy.h | 3 ++ 3 files changed, 34 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 eb7d1dd506bf..25a192f5984e 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 6e147c43fc18..fa1459f09b01 100644 =2D-- a/crypto/jitterentropy.c +++ b/crypto/jitterentropy.c @@ -117,7 +117,7 @@ struct rand_data { #define JENT_EHEALTH 9 /* Health test failed during initialization */ #define JENT_ERCT 10 /* RCT failed during initialization */ =20 =2D#include "jitterentropy.h" +#include =20 /*************************************************************************= ** * Adaptive Proportion Test @@ -854,3 +854,32 @@ 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, + .rct_count =3D 0, + .apt_observations =3D 0, + .apt_count =3D 0, + .apt_base =3D 0, + .apt_base_set =3D 0, + .health_failure =3D 0 + }; + + 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.26.2