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