From 98fe9bfda3bcf6c532d57e07e6ba25c350e7b7a1 Mon Sep 17 00:00:00 2001 From: Gary Ching-Pang Lin Date: Thu, 13 Feb 2014 14:32:18 +0800 Subject: [PATCH 1/3] Be more verbose while skipping a key Signed-off-by: Gary Ching-Pang Lin --- src/mokutil.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/mokutil.c b/src/mokutil.c index 1c32313..3655b92 100644 --- a/src/mokutil.c +++ b/src/mokutil.c @@ -1228,7 +1228,8 @@ issue_mok_request (char **files, uint32_t total, MokRequest req, printf ("Removed %s from %s\n", files[i], reverse_req); ptr -= sizeof(EFI_SIGNATURE_LIST) + sizeof(efi_guid_t); } else { - printf ("Skip %s\n", files[i]); + printf ("%s is already enrolled or in %s request\n", files[i], + import?"an enrollment":"a deletion"); ptr -= sizeof(EFI_SIGNATURE_LIST) + sizeof(efi_guid_t); } -- 1.8.4.5 From 2e5560600b213e35e59d4a7923c01f8b9c095323 Mon Sep 17 00:00:00 2001 From: Gary Ching-Pang Lin Date: Mon, 24 Mar 2014 14:48:53 +0800 Subject: [PATCH 2/3] Show more details when skipping a key Signed-off-by: Gary Ching-Pang Lin --- src/mokutil.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/src/mokutil.c b/src/mokutil.c index 3655b92..cd039f0 100644 --- a/src/mokutil.c +++ b/src/mokutil.c @@ -1111,6 +1111,29 @@ in_pending_request (efi_guid_t type, void *data, uint32_t data_size, return 0; } +static void +print_skip_message (const char *filename, void *mok, uint32_t mok_size, + uint8_t import) +{ + if (import) { + if (is_duplicate (mok, mok_size, "PK", EFI_GLOBAL_VARIABLE)) + printf ("SKIP: %s is already in PK\n", filename); + else if (is_duplicate (mok, mok_size, "KEK", EFI_GLOBAL_VARIABLE)) + printf ("SKIP: %s is already in KEK\n", filename); + else if (is_duplicate (mok, mok_size, "db", EFI_IMAGE_SECURITY_DATABASE_GUID)) + printf ("SKIP: %s is already in db\n", filename); + else if (is_duplicate (mok, mok_size, "MokListRT", SHIM_LOCK_GUID)) + printf ("SKIP: %s is already enrolled\n", filename); + else if (is_duplicate (mok, mok_size, "MokNew", SHIM_LOCK_GUID)) + printf ("SKIP: %s is already in the enrollement request\n", filename); + } else { + if (!is_duplicate (mok, mok_size, "MokListRT", SHIM_LOCK_GUID)) + printf ("SKIP: %s is not in MokList\n", filename); + else if (is_duplicate (mok, mok_size, "MokDel", SHIM_LOCK_GUID)) + printf ("SKIP: %s is already in the deletion request\n", filename); + } +} + static int issue_mok_request (char **files, uint32_t total, MokRequest req, const char *hash_file, const int root_pw) @@ -1228,8 +1251,7 @@ issue_mok_request (char **files, uint32_t total, MokRequest req, printf ("Removed %s from %s\n", files[i], reverse_req); ptr -= sizeof(EFI_SIGNATURE_LIST) + sizeof(efi_guid_t); } else { - printf ("%s is already enrolled or in %s request\n", files[i], - import?"an enrollment":"a deletion"); + print_skip_message (files[i], ptr, sizes[i], import); ptr -= sizeof(EFI_SIGNATURE_LIST) + sizeof(efi_guid_t); } -- 1.8.4.5 From 19df75d89e636293c93686e1edd8529f4b68170e Mon Sep 17 00:00:00 2001 From: Gary Ching-Pang Lin Date: Mon, 24 Mar 2014 16:27:06 +0800 Subject: [PATCH 3/3] Merge MokX for print_skip_message() Signed-off-by: Gary Ching-Pang Lin --- src/mokutil.c | 39 ++++++++++++++++++++++++++++----------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/src/mokutil.c b/src/mokutil.c index cd039f0..492dffc 100644 --- a/src/mokutil.c +++ b/src/mokutil.c @@ -1113,24 +1113,41 @@ in_pending_request (efi_guid_t type, void *data, uint32_t data_size, static void print_skip_message (const char *filename, void *mok, uint32_t mok_size, - uint8_t import) + MokRequest req) { - if (import) { - if (is_duplicate (mok, mok_size, "PK", EFI_GLOBAL_VARIABLE)) + efi_guid_t type = EfiCertX509Guid; + + switch (req) { + case ENROLL_MOK: + if (is_duplicate (type, mok, mok_size, EFI_GLOBAL_VARIABLE, "PK")) printf ("SKIP: %s is already in PK\n", filename); - else if (is_duplicate (mok, mok_size, "KEK", EFI_GLOBAL_VARIABLE)) + else if (is_duplicate (type, mok, mok_size, EFI_GLOBAL_VARIABLE, "KEK")) printf ("SKIP: %s is already in KEK\n", filename); - else if (is_duplicate (mok, mok_size, "db", EFI_IMAGE_SECURITY_DATABASE_GUID)) + else if (is_duplicate (type, mok, mok_size, EFI_IMAGE_SECURITY_DATABASE_GUID, "db")) printf ("SKIP: %s is already in db\n", filename); - else if (is_duplicate (mok, mok_size, "MokListRT", SHIM_LOCK_GUID)) + else if (is_duplicate (type, mok, mok_size, SHIM_LOCK_GUID, "MokListRT")) printf ("SKIP: %s is already enrolled\n", filename); - else if (is_duplicate (mok, mok_size, "MokNew", SHIM_LOCK_GUID)) + else if (is_duplicate (type, mok, mok_size, SHIM_LOCK_GUID, "MokNew")) printf ("SKIP: %s is already in the enrollement request\n", filename); - } else { - if (!is_duplicate (mok, mok_size, "MokListRT", SHIM_LOCK_GUID)) + break; + case DELETE_MOK: + if (!is_duplicate (type, mok, mok_size, SHIM_LOCK_GUID, "MokListRT")) printf ("SKIP: %s is not in MokList\n", filename); - else if (is_duplicate (mok, mok_size, "MokDel", SHIM_LOCK_GUID)) + else if (is_duplicate (type, mok, mok_size, SHIM_LOCK_GUID, "MokDel")) printf ("SKIP: %s is already in the deletion request\n", filename); + break; + case ENROLL_BLACKLIST: + if (is_duplicate (type, mok, mok_size, SHIM_LOCK_GUID, "MokListXRT")) + printf ("SKIP: %s is already in MokListX\n", filename); + else if (is_duplicate (type, mok, mok_size, SHIM_LOCK_GUID, "MokXNew")) + printf ("SKIP: %s is already in the MokX enrollment request\n", filename); + break; + case DELETE_BLACKLIST: + if (!is_duplicate (type, mok, mok_size, SHIM_LOCK_GUID, "MokListXRT")) + printf ("SKIP: %s is not in MokListX\n", filename); + else if (is_duplicate (type, mok, mok_size, SHIM_LOCK_GUID, "MokXDel")) + printf ("SKIP: %s is already in the MokX deletion request\n", filename); + break; } } @@ -1251,7 +1268,7 @@ issue_mok_request (char **files, uint32_t total, MokRequest req, printf ("Removed %s from %s\n", files[i], reverse_req); ptr -= sizeof(EFI_SIGNATURE_LIST) + sizeof(efi_guid_t); } else { - print_skip_message (files[i], ptr, sizes[i], import); + print_skip_message (files[i], ptr, sizes[i], req); ptr -= sizeof(EFI_SIGNATURE_LIST) + sizeof(efi_guid_t); } -- 1.8.4.5