Received: by 2002:a05:6a10:1287:0:0:0:0 with SMTP id d7csp5626453pxv; Wed, 21 Jul 2021 09:53:53 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyKNd6ROgtSE/o0XFUQZPfPj7TWVkeN2LuQHkRWas8dzLb+QmIoA3sUYSABQuU4hlxNCZKt X-Received: by 2002:a17:906:4a05:: with SMTP id w5mr39147888eju.2.1626886433714; Wed, 21 Jul 2021 09:53:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1626886433; cv=none; d=google.com; s=arc-20160816; b=k52HZoK3GUQBaCAqWWA9blsyrhCIt4vexkX16wBKmOHf3IZ1rueXInHAC6T3hs9naG XaXdVjOddevwMS/MD3y+63rxppM8rQNx8SeumBTfxbXEg0/qgO96Q9OGS/7eTRg3/gBs cloru54Sb1IZ+rXjVoUkLt0KFGLM7OoSKp6efjt4bDON/wsoLIWyokz5DfN0z/zAwaJu ZzWdz5E2aNAm6jxwuTYbIcId9Nna7AohwJhbK32IFD1cP/a2tSZ4Nps9HdhJ0RhBbp90 rsCckvTvoC83RNlPVCCXgxqEmRoSJ2L/9A1WPDG0fKadNqByXyOlJPo9sIpvXLXRExvt VUjA== 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; bh=lkQUYag0X+WUVwYzeuUdzL/0vHAXC49EQZQVYLcck0k=; b=m8NQHrJRfHzM+Idv0y2Hy6Pa63kKoeBN2KRHxv2H7hP0WnccsVkbW8NVpFJ179gtmc FtsclLL8XHwAZ9yHMrc4akITc9LaOkuXuw2HgnFyZa1rLjgqh2eY23/RHEqLxOBqYqZ8 q2cngXcXD5s1LIIIwh+3KnDIHPwl5KX403F9F6ydz5E+OUHw47WjXESQmC/It6fk0s92 XKZMV83Nqop/oAePNXXS5GZkMOh5YAa2hZITNpLr/PODD8kQNyjDTV+F4+J2ciX3Yv98 yIjdG77AoqY+sZ/pcv6RHmfvAeNSMixGOuX88UhIDpQ1v8M2C2z+ll0eD4QTqnPm5Rmm y/Lw== ARC-Authentication-Results: i=1; mx.google.com; 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 o8si2840331ejj.94.2021.07.21.09.53.24; Wed, 21 Jul 2021 09:53:53 -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; 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 S231684AbhGUQKw (ORCPT + 99 others); Wed, 21 Jul 2021 12:10:52 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60720 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S234888AbhGUQIw (ORCPT ); Wed, 21 Jul 2021 12:08:52 -0400 Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de [IPv6:2001:67c:670:201:290:27ff:fe1d:cc33]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 829C5C0613C1 for ; Wed, 21 Jul 2021 09:49:28 -0700 (PDT) Received: from dude.hi.pengutronix.de ([2001:67c:670:100:1d::7]) by metis.ext.pengutronix.de with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1m6FP7-0004wj-4C; Wed, 21 Jul 2021 18:49:05 +0200 Received: from afa by dude.hi.pengutronix.de with local (Exim 4.92) (envelope-from ) id 1m6FP4-0003EU-9E; Wed, 21 Jul 2021 18:49:02 +0200 From: Ahmad Fatoum To: James Bottomley , Jarkko Sakkinen , Mimi Zohar , David Howells Cc: kernel@pengutronix.de, Ahmad Fatoum , James Morris , "Serge E. Hallyn" , =?UTF-8?q?Horia=20Geant=C4=83?= , Aymen Sghaier , Herbert Xu , "David S. Miller" , Udit Agarwal , Eric Biggers , Jan Luebbe , David Gstir , Richard Weinberger , Franck LENORMAND , Sumit Garg , keyrings@vger.kernel.org, linux-crypto@vger.kernel.org, linux-integrity@vger.kernel.org, linux-kernel@vger.kernel.org, linux-security-module@vger.kernel.org Subject: [PATCH 2/4] KEYS: trusted: allow trust sources to use kernel RNG for key material Date: Wed, 21 Jul 2021 18:48:53 +0200 Message-Id: <7b771da7b09a01c8b4da2ed21f05251ea797b2e8.1626885907.git-series.a.fatoum@pengutronix.de> X-Mailer: git-send-email 2.30.2 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-SA-Exim-Connect-IP: 2001:67c:670:100:1d::7 X-SA-Exim-Mail-From: afa@pengutronix.de X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de); SAEximRunCond expanded to false X-PTX-Original-Recipient: linux-crypto@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-crypto@vger.kernel.org The two existing trusted key sources don't make use of the kernel RNG, but instead let the hardware that does the sealing/unsealing also generate the random key material. While a previous change offers users the choice to use the kernel RNG instead for both, new trust sources may want to unconditionally use the kernel RNG for generating key material, like it's done elsewhere in the kernel. This is especially prudent for hardware that has proven-in-production HWRNG drivers implemented, as otherwise code would have to be duplicated only to arrive at a possibly worse result. Make this possible by turning struct trusted_key_ops::get_random into an optional member. If a driver leaves it NULL, kernel RNG will be used instead. Signed-off-by: Ahmad Fatoum --- To: James Bottomley To: Jarkko Sakkinen To: Mimi Zohar To: David Howells Cc: James Morris Cc: "Serge E. Hallyn" Cc: "Horia Geantă" Cc: Aymen Sghaier Cc: Herbert Xu Cc: "David S. Miller" Cc: Udit Agarwal Cc: Eric Biggers Cc: Jan Luebbe Cc: David Gstir Cc: Richard Weinberger Cc: Franck LENORMAND Cc: Sumit Garg Cc: keyrings@vger.kernel.org Cc: linux-crypto@vger.kernel.org Cc: linux-integrity@vger.kernel.org Cc: linux-kernel@vger.kernel.org Cc: linux-security-module@vger.kernel.org --- include/keys/trusted-type.h | 2 +- security/keys/trusted-keys/trusted_core.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/include/keys/trusted-type.h b/include/keys/trusted-type.h index d89fa2579ac0..4eb64548a74f 100644 --- a/include/keys/trusted-type.h +++ b/include/keys/trusted-type.h @@ -64,7 +64,7 @@ struct trusted_key_ops { /* Unseal a key. */ int (*unseal)(struct trusted_key_payload *p, char *datablob); - /* Get a randomized key. */ + /* Optional: Get a randomized key. */ int (*get_random)(unsigned char *key, size_t key_len); /* Exit key interface. */ diff --git a/security/keys/trusted-keys/trusted_core.c b/security/keys/trusted-keys/trusted_core.c index 569af9af8df0..d2b7626cde8b 100644 --- a/security/keys/trusted-keys/trusted_core.c +++ b/security/keys/trusted-keys/trusted_core.c @@ -334,7 +334,7 @@ static int __init init_trusted(void) continue; get_random = trusted_key_sources[i].ops->get_random; - if (trusted_kernel_rng) + if (trusted_kernel_rng || !get_random) get_random = kernel_get_random; static_call_update(trusted_key_init, -- git-series 0.9.1