Jeremy Cline 3313b2c
From 70cecc97a4fc1667472224558a50dd7b6c42c789 Mon Sep 17 00:00:00 2001
Jeremy Cline 3313b2c
From: Robert Holmes <robeholmes@gmail.com>
Jeremy Cline 3313b2c
Date: Tue, 23 Apr 2019 07:39:29 +0000
Jeremy Cline 3313b2c
Subject: [PATCH] KEYS: Make use of platform keyring for module signature
Jeremy Cline 3313b2c
 verify
Jeremy Cline 3313b2c
Jeremy Cline 3313b2c
This patch completes commit 278311e417be ("kexec, KEYS: Make use of
Jeremy Cline 3313b2c
platform keyring for signature verify") which, while adding the
Jeremy Cline 3313b2c
platform keyring for bzImage verification, neglected to also add
Jeremy Cline 3313b2c
this keyring for module verification.
Jeremy Cline 3313b2c
Jeremy Cline 3313b2c
As such, kernel modules signed with keys from the MokList variable
Jeremy Cline 3313b2c
were not successfully verified.
Jeremy Cline 3313b2c
Jeremy Cline 3313b2c
Signed-off-by: Robert Holmes <robeholmes@gmail.com>
Jeremy Cline e21e52b
Signed-off-by: Jeremy Cline <jcline@redhat.com>
Jeremy Cline 3313b2c
---
Jeremy Cline 3313b2c
 kernel/module_signing.c | 16 ++++++++++++----
Jeremy Cline 3313b2c
 1 file changed, 12 insertions(+), 4 deletions(-)
Jeremy Cline 3313b2c
Jeremy Cline 3313b2c
diff --git a/kernel/module_signing.c b/kernel/module_signing.c
Jeremy Cline e21e52b
index 9d9fc678c91d..84ad75a53c83 100644
Jeremy Cline 3313b2c
--- a/kernel/module_signing.c
Jeremy Cline 3313b2c
+++ b/kernel/module_signing.c
Jeremy Cline e21e52b
@@ -38,8 +38,15 @@ int mod_verify_sig(const void *mod, struct load_info *info)
Jeremy Cline e21e52b
 	modlen -= sig_len + sizeof(ms);
Jeremy Cline e21e52b
 	info->len = modlen;
Jeremy Cline 3313b2c
 
Jeremy Cline 3313b2c
-	return verify_pkcs7_signature(mod, modlen, mod + modlen, sig_len,
Jeremy Cline 3313b2c
+	ret = verify_pkcs7_signature(mod, modlen, mod + modlen, sig_len,
Jeremy Cline e21e52b
 				      VERIFY_USE_SECONDARY_KEYRING,
Jeremy Cline e21e52b
 				      VERIFYING_MODULE_SIGNATURE,
Jeremy Cline e21e52b
 				      NULL, NULL);
Jeremy Cline 3313b2c
+	if (ret == -ENOKEY && IS_ENABLED(CONFIG_INTEGRITY_PLATFORM_KEYRING)) {
Jeremy Cline 3313b2c
+		ret = verify_pkcs7_signature(mod, modlen, mod + modlen, sig_len,
Jeremy Cline e21e52b
+				VERIFY_USE_PLATFORM_KEYRING,
Jeremy Cline e21e52b
+				VERIFYING_MODULE_SIGNATURE,
Jeremy Cline e21e52b
+				NULL, NULL);
Jeremy Cline 3313b2c
+	}
Jeremy Cline 3313b2c
+	return ret;
Jeremy Cline 3313b2c
 }
Jeremy Cline 3313b2c
-- 
Jeremy Cline 3313b2c
2.21.0