LKML Archive on lore.kernel.org help / color / mirror / Atom feed
From: Eric Snowberg <eric.snowberg@oracle.com> To: keyrings@vger.kernel.org, linux-integrity@vger.kernel.org, zohar@linux.ibm.com, dhowells@redhat.com, dwmw2@infradead.org, herbert@gondor.apana.org.au, davem@davemloft.net, jarkko@kernel.org, jmorris@namei.org, serge@hallyn.com Cc: eric.snowberg@oracle.com, keescook@chromium.org, gregkh@linuxfoundation.org, torvalds@linux-foundation.org, scott.branden@broadcom.com, weiyongjun1@huawei.com, nayna@linux.ibm.com, ebiggers@google.com, ardb@kernel.org, nramas@linux.microsoft.com, lszubowi@redhat.com, linux-kernel@vger.kernel.org, linux-crypto@vger.kernel.org, linux-security-module@vger.kernel.org, James.Bottomley@HansenPartnership.com, pjones@redhat.com, glin@suse.com, konrad.wilk@oracle.com Subject: [PATCH v3 07/14] integrity: add new keyring handler for mok keys Date: Wed, 11 Aug 2021 22:18:48 -0400 [thread overview] Message-ID: <20210812021855.3083178-8-eric.snowberg@oracle.com> (raw) In-Reply-To: <20210812021855.3083178-1-eric.snowberg@oracle.com> Currently both Secure Boot DB and Machine Owner Keys (MOK) go through the same keyring handler (get_handler_for_db). With the addition of the new mok keyring, the end-user may choose to trust MOK keys. Introduce a new keyring handler specific for mok keys. If mok keys are trusted by the end-user, use the new keyring handler instead. Signed-off-by: Eric Snowberg <eric.snowberg@oracle.com> --- v1: Initial version v3: Only change the keyring handler if the secondary is enabled --- .../integrity/platform_certs/keyring_handler.c | 17 ++++++++++++++++- .../integrity/platform_certs/keyring_handler.h | 5 +++++ security/integrity/platform_certs/load_uefi.c | 4 ++-- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/security/integrity/platform_certs/keyring_handler.c b/security/integrity/platform_certs/keyring_handler.c index 5604bd57c990..b6daeb1e3de5 100644 --- a/security/integrity/platform_certs/keyring_handler.c +++ b/security/integrity/platform_certs/keyring_handler.c @@ -66,7 +66,7 @@ static __init void uefi_revocation_list_x509(const char *source, /* * Return the appropriate handler for particular signature list types found in - * the UEFI db and MokListRT tables. + * the UEFI db tables. */ __init efi_element_handler_t get_handler_for_db(const efi_guid_t *sig_type) { @@ -75,6 +75,21 @@ __init efi_element_handler_t get_handler_for_db(const efi_guid_t *sig_type) return 0; } +/* + * Return the appropriate handler for particular signature list types found in + * the MokListRT tables. + */ +__init efi_element_handler_t get_handler_for_mok(const efi_guid_t *sig_type) +{ + if (efi_guidcmp(*sig_type, efi_cert_x509_guid) == 0) { + if (IS_ENABLED(CONFIG_SECONDARY_TRUSTED_KEYRING) && trust_moklist()) + return add_to_mok_keyring; + else + return add_to_platform_keyring; + } + return 0; +} + /* * Return the appropriate handler for particular signature list types found in * the UEFI dbx and MokListXRT tables. diff --git a/security/integrity/platform_certs/keyring_handler.h b/security/integrity/platform_certs/keyring_handler.h index 2462bfa08fe3..284558f30411 100644 --- a/security/integrity/platform_certs/keyring_handler.h +++ b/security/integrity/platform_certs/keyring_handler.h @@ -24,6 +24,11 @@ void blacklist_binary(const char *source, const void *data, size_t len); */ efi_element_handler_t get_handler_for_db(const efi_guid_t *sig_type); +/* + * Return the handler for particular signature list types found in the mok. + */ +efi_element_handler_t get_handler_for_mok(const efi_guid_t *sig_type); + /* * Return the handler for particular signature list types found in the dbx. */ diff --git a/security/integrity/platform_certs/load_uefi.c b/security/integrity/platform_certs/load_uefi.c index f290f78c3f30..c1bfd1cd7cc3 100644 --- a/security/integrity/platform_certs/load_uefi.c +++ b/security/integrity/platform_certs/load_uefi.c @@ -94,7 +94,7 @@ static int __init load_moklist_certs(void) rc = parse_efi_signature_list("UEFI:MokListRT (MOKvar table)", mokvar_entry->data, mokvar_entry->data_size, - get_handler_for_db); + get_handler_for_mok); /* All done if that worked. */ if (!rc) return rc; @@ -109,7 +109,7 @@ static int __init load_moklist_certs(void) mok = get_cert_list(L"MokListRT", &mok_var, &moksize, &status); if (mok) { rc = parse_efi_signature_list("UEFI:MokListRT", - mok, moksize, get_handler_for_db); + mok, moksize, get_handler_for_mok); kfree(mok); if (rc) pr_err("Couldn't parse MokListRT signatures: %d\n", rc); -- 2.18.4
next prev parent reply other threads:[~2021-08-12 2:20 UTC|newest] Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-08-12 2:18 [PATCH v3 00/14] Enroll kernel keys thru MOK Eric Snowberg 2021-08-12 2:18 ` [PATCH v3 01/14] integrity: Introduce a Linux keyring for the Machine Owner Key (MOK) Eric Snowberg 2021-08-12 18:58 ` Jarkko Sakkinen 2021-08-12 22:16 ` Eric Snowberg 2021-08-13 18:26 ` Nayna 2021-08-12 21:31 ` Mimi Zohar 2021-08-12 22:36 ` Eric Snowberg 2021-08-13 0:35 ` Mimi Zohar 2021-08-12 2:18 ` [PATCH v3 02/14] KEYS: CA link restriction Eric Snowberg 2021-08-12 2:18 ` [PATCH v3 03/14] integrity: Trust MOK keys if MokListTrustedRT found Eric Snowberg 2021-08-12 2:18 ` [PATCH v3 04/14] integrity: add add_to_mok_keyring Eric Snowberg 2021-08-12 19:32 ` Jarkko Sakkinen 2021-08-12 22:04 ` Eric Snowberg 2021-08-12 2:18 ` [PATCH v3 05/14] integrity: restrict INTEGRITY_KEYRING_MOK to restrict_link_by_ca Eric Snowberg 2021-08-12 2:18 ` [PATCH v3 06/14] integrity: accessor function to get trust_moklist Eric Snowberg 2021-08-12 2:18 ` Eric Snowberg [this message] 2021-08-12 2:18 ` [PATCH v3 08/14] KEYS: add a reference to mok keyring Eric Snowberg 2021-08-12 2:18 ` [PATCH v3 09/14] KEYS: Introduce link restriction to include builtin, secondary and mok keys Eric Snowberg 2021-08-12 2:18 ` [PATCH v3 10/14] KEYS: change link restriction for secondary to also trust mok Eric Snowberg 2021-08-12 19:46 ` Mimi Zohar 2021-08-12 22:10 ` Eric Snowberg 2021-08-12 22:14 ` Mimi Zohar 2021-08-12 2:18 ` [PATCH v3 11/14] KEYS: link secondary_trusted_keys to mok trusted keys Eric Snowberg 2021-08-12 2:18 ` [PATCH v3 12/14] integrity: Do not allow mok keyring updates following init Eric Snowberg 2021-08-12 2:18 ` [PATCH v3 13/14] integrity: store reference to mok keyring Eric Snowberg 2021-08-12 2:18 ` [PATCH v3 14/14] integrity: change ima link restriction to include mok keys Eric Snowberg
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210812021855.3083178-8-eric.snowberg@oracle.com \ --to=eric.snowberg@oracle.com \ --cc=James.Bottomley@HansenPartnership.com \ --cc=ardb@kernel.org \ --cc=davem@davemloft.net \ --cc=dhowells@redhat.com \ --cc=dwmw2@infradead.org \ --cc=ebiggers@google.com \ --cc=glin@suse.com \ --cc=gregkh@linuxfoundation.org \ --cc=herbert@gondor.apana.org.au \ --cc=jarkko@kernel.org \ --cc=jmorris@namei.org \ --cc=keescook@chromium.org \ --cc=keyrings@vger.kernel.org \ --cc=konrad.wilk@oracle.com \ --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 \ --cc=lszubowi@redhat.com \ --cc=nayna@linux.ibm.com \ --cc=nramas@linux.microsoft.com \ --cc=pjones@redhat.com \ --cc=scott.branden@broadcom.com \ --cc=serge@hallyn.com \ --cc=torvalds@linux-foundation.org \ --cc=weiyongjun1@huawei.com \ --cc=zohar@linux.ibm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).