Received: by 2002:a05:6a10:a0d1:0:0:0:0 with SMTP id j17csp2711802pxa; Tue, 25 Aug 2020 00:40:11 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwALXXQ32K6GCpG2O0StrpZTr3mli89jUSA9m5REJbdRCL38g+p7K/K6Zgq0WLTz8MceuhF X-Received: by 2002:a17:906:f886:: with SMTP id lg6mr8975379ejb.227.1598341211055; Tue, 25 Aug 2020 00:40:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1598341211; cv=none; d=google.com; s=arc-20160816; b=T+95C4FY0KIu7ksMH1bjaHhedXXEriIoMIBME9DTM5aHrMidqMDiuA3sc2uT1SvkiC w4cSNuFFsGfK/lAhTcg3isqkIyysJi9UnNiVrJkojRrPhllJ+a5Xp3M4tiswQYc1wEo8 e9y6sxb7jlhwtdgkpu/knCMAzI813YDz5OuBDtOb1FxR8uXstkLrEcEX9qb0Ahr4dIbi H96mW/U5bthECPcaNsKYZ2O5iwplk077y0Yf2TMo6mLZsFIbdOCzLC1ltship0V0KBc9 Tzm2b3GGUox5y9MVREcvKB1pJ7sDq4Vn/9/O9cjRMVrrRKGDsSovyKvkX6BBs2E0jWMj oEzQ== 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=Es9pGKLx4z5oIgmChL28JnLmrOhua6NbH8JPKO7vMAs=; b=C1W1jaJWHUHmLIQXv1x6Oo0PCw3njA/d1iyfnFOxqI0fVJzWNciDxGxfsb0SCb/bq6 Y+G5AFc45BjoBgwR6IbUCeXDe2IPG5Biu+KKUppW259UoBSOjcPzSBrQv2y4eEY1p8YJ 7punfWuyXcY3jnSfnZzgG3za6fzwhNpk2jQFNhRl9/mkZKyW6UpdpOt1W2ZED8S6bCJh c7Fi3qa9mLy991JhofvA832vQDeAfhuGxgjYnDnS3PDvryixKHuJBexl3quF9coAVNcy BNgOjfGoejM0Pntl1gztCf8tkFcFGeN84Hib3v113MuUcRsLZW9Av86gbPYzcFCqFqXy B0ew== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@chronox.de header.s=strato-dkim-0002 header.b=e4I5mqmf; 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 a19si6343272ejy.219.2020.08.25.00.39.46; Tue, 25 Aug 2020 00:40:11 -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=e4I5mqmf; 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 S1729646AbgHYHiF (ORCPT + 99 others); Tue, 25 Aug 2020 03:38:05 -0400 Received: from mo4-p03-ob.smtp.rzone.de ([85.215.255.103]:36316 "EHLO mo4-p03-ob.smtp.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729522AbgHYHge (ORCPT ); Tue, 25 Aug 2020 03:36:34 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1598340988; 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=Es9pGKLx4z5oIgmChL28JnLmrOhua6NbH8JPKO7vMAs=; b=e4I5mqmfnm1DWjo4fHrE36LAD04vYUE4xX4LkHrZLHfClvSsvucOtEZj6tp3cKvTQ/ GHRln+OuAFHgt00Tw3o3hndnzgQ7u7d/hqpQMJlYJbF4z5BM7PhOTsNn2A4lhjZ0wzav OJ0BgY23h9RcWC1C/3ghPQJgaec3MSm/ZIPX+zz4FPiO1b2VGy3iF2YTmmuhUNCKaeP/ 2EotqecGO49cQ+5bV7akdNeK/j3to4jQIqlDzediWitLmAuPPTkamnG0Ro6KB2mO88hz mrTE5RMocK12mK+tt94GlnyYghgtTf9e1nxVv+kNqtSvkrsUPDCKr70rneJofnXnDoVc kX/Q== X-RZG-AUTH: ":P2ERcEykfu11Y98lp/T7+hdri+uKZK8TKWEqNyiHySGSa9k9xmwdNnzHHXDaIvSXRbo=" X-RZG-CLASS-ID: mo00 Received: from positron.chronox.de by smtp.strato.de (RZmta 46.10.7 DYNA|AUTH) with ESMTPSA id 002e9aw7P7ZGZGO (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Tue, 25 Aug 2020 09:35:16 +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 , Andy Lavr Subject: [PATCH v34 08/12] crypto: provide access to a static Jitter RNG state Date: Tue, 25 Aug 2020 09:26:04 +0200 Message-ID: <1896203.PYKUYFuaPT@positron.chronox.de> In-Reply-To: <11649613.O9o76ZdvQC@positron.chronox.de> References: <2544450.mvXUDI8C0e@positron.chronox.de> <5532247.MhkbZ0Pkbq@positron.chronox.de> <11649613.O9o76ZdvQC@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 | 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