Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:michael-chang:bsc:1202438
grub2
0001-tpm-Use-tpm-hello-to-show-related-infromat...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File 0001-tpm-Use-tpm-hello-to-show-related-infromation.patch of Package grub2
From 17e4e27c68bdb320e00d323dbdd01a0430fb8a5f Mon Sep 17 00:00:00 2001 From: Michael Chang <mchang@suse.com> Date: Mon, 29 Aug 2022 14:46:47 +0800 Subject: [PATCH] tpm: Use tpm-hello to show related infromation --- grub-core/commands/efi/tpm.c | 57 ++++++++++++++++++++++++++++++++++++ grub-core/commands/tpm.c | 1 + include/grub/tpm.h | 1 + 3 files changed, 59 insertions(+) diff --git a/grub-core/commands/efi/tpm.c b/grub-core/commands/efi/tpm.c index 585b3ccb1..f68997ba8 100644 --- a/grub-core/commands/efi/tpm.c +++ b/grub-core/commands/efi/tpm.c @@ -88,6 +88,27 @@ grub_tpm2_present (grub_efi_tpm2_protocol_t *tpm) return (grub_efi_boolean_t) tpm2_present; } +static void +grub_tpm2_show_caps (grub_efi_tpm2_protocol_t *tpm) +{ + grub_efi_status_t status; + EFI_TCG2_BOOT_SERVICE_CAPABILITY caps; + + caps.Size = (grub_uint8_t) sizeof (caps); + + status = efi_call_2 (tpm->get_capability, tpm, &caps); + + if (status != GRUB_EFI_SUCCESS) + { + grub_printf ("Error trying to get tpm capability 0x%" PRIxGRUB_SIZE "\n", status); + return; + } + grub_printf ("HashAlgorithmBitmap 0x%" PRIxGRUB_UINT32_T "\n", caps.HashAlgorithmBitmap); + grub_printf ("TPMPresentFlag 0x%x\n", caps.TPMPresentFlag); + grub_printf ("NumberOfPcrBanks 0x%" PRIxGRUB_UINT32_T "\n", caps.NumberOfPcrBanks); + grub_printf ("ActivePcrBanks 0x%" PRIxGRUB_UINT32_T "\n", caps.ActivePcrBanks); +} + static grub_efi_boolean_t grub_tpm_handle_find (grub_efi_handle_t *tpm_handle, grub_efi_uint8_t *protocol_version) @@ -241,6 +262,42 @@ grub_tpm_measure (unsigned char *buf, grub_size_t size, grub_uint8_t pcr, return grub_tpm2_log_event (tpm_handle, buf, size, pcr, description); } +void +grub_tpm_show_caps () +{ + grub_efi_handle_t tpm_handle; + grub_efi_uint8_t protocol_version; + + if (!grub_tpm_handle_find (&tpm_handle, &protocol_version)) + { + grub_printf ("No TPM Handle found!\n"); + return; + } + if (protocol_version == 1) + { + grub_efi_tpm_protocol_t *tpm; + + grub_printf ("TPM 1.2\n"); + + tpm = grub_efi_open_protocol (tpm_handle, &tpm_guid, + GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); + if (!tpm) + grub_printf ("Failed to Open TPM Protcol\n"); + } + else + { + grub_efi_tpm2_protocol_t *tpm; + + grub_printf ("TPM 2.0\n"); + /*FIXME: Check tpm == 0 when open protocol failed ? */ + tpm = grub_efi_open_protocol (tpm_handle, &tpm2_guid, + GRUB_EFI_OPEN_PROTOCOL_GET_PROTOCOL); + if (!tpm) + grub_printf ("Failed to Open TPM Protcol\n"); + return grub_tpm2_show_caps (tpm); + } +} + int grub_tpm_present () { diff --git a/grub-core/commands/tpm.c b/grub-core/commands/tpm.c index 13675493f..3b7867317 100644 --- a/grub-core/commands/tpm.c +++ b/grub-core/commands/tpm.c @@ -91,6 +91,7 @@ grub_cmd_tpm_hello (grub_command_t cmd __attribute__ ((unused)), char **argv __attribute__ ((unused))) { grub_printf ("Hello!\n"); + grub_tpm_show_caps (); return 0; } diff --git a/include/grub/tpm.h b/include/grub/tpm.h index c19fcbd0a..e4c02a919 100644 --- a/include/grub/tpm.h +++ b/include/grub/tpm.h @@ -37,4 +37,5 @@ grub_err_t grub_tpm_measure (unsigned char *buf, grub_size_t size, grub_uint8_t pcr, const char *description); int grub_tpm_present (void); +void grub_tpm_show_caps (void); #endif -- 2.37.2
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor