Received: by 2002:a05:6a10:206:0:0:0:0 with SMTP id 6csp778037pxj; Thu, 27 May 2021 11:23:09 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxT0d2ZzfpIYCXQ4l++wRqggLg0KT91nLd3Sa9iUb+4aWWg6JC844olqh98oV+SK74QV3ZV X-Received: by 2002:a17:906:aec6:: with SMTP id me6mr5310181ejb.522.1622139789664; Thu, 27 May 2021 11:23:09 -0700 (PDT) ARC-Seal: i=2; a=rsa-sha256; t=1622139789; cv=pass; d=google.com; s=arc-20160816; b=RkZSozXITvljQtbcNzfBraPF9L/z336XJAx1UtXDNxYUe0avasgCjOtuyYt9x5OxwA T2VLz4XePDmJBDPsgVHapRI33muAwa9VuJb6CuuNw1dUyDC8AIGBPZQuaMRKXYR4ilyd n0tPmrWrgf05pO6NsMtNKVBjCk+bHUBWKvlus+tEJsghku3g8uNRaPHgaLpy08DAytoJ 2I5f8LnIRrv93JeqchLMtTX3NM0D4e10uU3eIAbxUnVQ+/uMCO4HGInuZy7Nt7tpARe3 g4mnQq/k5EYe4g2cIStxN3QeeNzYMmfKd0Pkz9/n5IAuwXTjgDGEH2KXIO7AKfZisC6o sh/Q== ARC-Message-Signature: i=2; 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=ranCbvW4TnthBRZ12Yjv+jFdhJhWaYkicXK0NNup6iM=; b=ik1HExyd2Ym4KLMGH1OgfQ6mU6B4LMympK2HLofCJcTk9YLw2MQQ22GUngu53z8Qwj GPifAez876pVay7YxtLcJIsUhbtGAUXd31GsEEeO8P+Th+QtTdRqx0fxV4EtDuD3BH1F jwuWoWGSgRPgJ0S9OtZWuKN1SV5OboZVJx//O/nPUbcuavatytWKvLFOMzNjKq+XIUJs U9z7JaP+227rzWKN+Ed735rGMqWBuMEt9IjtFW/6XV8WuNyJio+QiRuA2H6y2c1ocfyT 710CkF6OW53OZZOYyQIhivH9tzICQYnDy93bewCe3w0887JDRo/NpVghbxwLe2+C+tkC L9dw== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@chronox.de header.s=strato-dkim-0002 header.b=Y3iKVkMx; arc=pass (i=1); 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 k8si2604107edx.488.2021.05.27.11.22.45; Thu, 27 May 2021 11:23:09 -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=Y3iKVkMx; arc=pass (i=1); 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 S235870AbhE0QOt (ORCPT + 99 others); Thu, 27 May 2021 12:14:49 -0400 Received: from mo4-p04-ob.smtp.rzone.de ([85.215.255.122]:15872 "EHLO mo4-p04-ob.smtp.rzone.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237123AbhE0QOZ (ORCPT ); Thu, 27 May 2021 12:14:25 -0400 ARC-Seal: i=1; a=rsa-sha256; t=1622131885; cv=none; d=strato.com; s=strato-dkim-0002; b=ssMh6SUtyLmg6v+wibXkPY/l3ixcOPGLJ1JW/0n3qlGM5NOrXBglQJFbY5a1Vaiy1O eApinSY9Fb+aEdREUlpoghtzvce7xlTH5JQN/kN5JeM6iwht0Rm7scmiUZYZLnVi02OQ Gq+xm6hoK9UVp+gtQPIJvT+Andn9LBor9plR3t7opN/8bQzv5hObqKX+ladzsuSiIzmG MijgmC7RBHzrbwv+v2SeZFm4tvR8RAssz4Jc0pm4AaoZnSfeYe8Fe6/uEkxNKpoGAVrc QpXU1JAx8rfyvco/BKLla86oZOWIelGwFbMvI7gN+9/BwEfW8r+qubbWeM+0lJVXzzTr l7Fg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1622131885; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=ranCbvW4TnthBRZ12Yjv+jFdhJhWaYkicXK0NNup6iM=; b=sij5VvfSW7A3MxqZkDpFtfP4I9Znejmpn1WUNU2uM4rXgtbObabDV9MXoW8BAHpGmB o//lmRqif69AGnOkR1haEabjFuQs7plbPreVMHSwtFQg7Eynv7+6YCe8mLKJFOX58E4m ZSqXIed1RX39M1Cqco97bMFaDIidCo3MrNJnpAz9817mT4799Tuwl8oQ6l54qwNOLuXz 9Ahy69a74jRn/UhQ7xG832oot2ObYEH7Se2aTY2zPsIQdzEb78gvJ0I41F+OqZbJNw0G G2UGXE9UaYkNS09F6+kGG1UhaLJvM09QadJIBfVqCtMkjbvGGT+rb7XPncDyjCmjsoNl UQhg== ARC-Authentication-Results: i=1; strato.com; dkim=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; t=1622131885; s=strato-dkim-0002; d=chronox.de; h=References:In-Reply-To:Message-ID:Date:Subject:Cc:To:From:Cc:Date: From:Subject:Sender; bh=ranCbvW4TnthBRZ12Yjv+jFdhJhWaYkicXK0NNup6iM=; b=Y3iKVkMx0HlRV6ZAOkqNUeWFQEw70jn/Fp3umnfr5XA1ORu6zz7wK9fU7pRSQwpys2 6BBrWTJRJ+HlTCxvNz52IyvHFcOpjLXPBweF7NEKGbcMF4VfJLv4s01ih/v9vf9YJF8L AqEOEnnbG2tpy957M5mp/NL6guLtgFxUdrdSp2JruPhfXfaBOSQX5ak6BIkdeQjFcn6H oJadRLjgLr8EQwREnmo9EVR9GAkLnBlr6tZfejlF9nMT1NxClIcAGbxotgwWMELwnu91 rdd9iNQLulPhqCFzV/O9xuMNY/5md/KUxtosj5CgoMsTWlurBonfbIqVjYqTyAqI7vQ0 /wEQ== Authentication-Results: strato.com; dkim=none X-RZG-AUTH: ":P2ERcEykfu11Y98lp/T7+hdri+uKZK8TKWEqNyiHySGSa9k9xmwdNnzGHXPbJvSfFeK2" X-RZG-CLASS-ID: mo00 Received: from positron.chronox.de by smtp.strato.de (RZmta 47.26.3 DYNA|AUTH) with ESMTPSA id R0123ax4RGBO0Tl (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256 bits)) (Client did not present a certificate); Thu, 27 May 2021 18:11:24 +0200 (CEST) From: Stephan =?ISO-8859-1?Q?M=FCller?= To: Tso Ted , linux-crypto@vger.kernel.org Cc: Willy Tarreau , 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 , John Haxby Subject: [PATCH v40 09/13] crypto: provide access to a static Jitter RNG state Date: Thu, 27 May 2021 18:02:12 +0200 Message-ID: <2378105.yh0kzDQQHu@positron.chronox.de> In-Reply-To: <18450229.rjpLZT9oXI@positron.chronox.de> References: <18450229.rjpLZT9oXI@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 e8a4165a1874..c90e60910827 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.31.1