diff mbox series

tpmevlogdump: add pcr_index usage

Message ID 20200714062938.17948-1-ivan.hu@canonical.com
State Accepted
Headers show
Series tpmevlogdump: add pcr_index usage | expand

Commit Message

Ivan Hu July 14, 2020, 6:29 a.m. UTC
Base on "TCG PC Client Specific Platform Firmware Profile Specification"
table 1.
https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification/

Signed-off-by: Ivan Hu <ivan.hu@canonical.com>
---
 src/tpm/tpmevlogdump/tpmevlogdump.c | 60 ++++++++++++++++++++++++++++-
 1 file changed, 58 insertions(+), 2 deletions(-)

Comments

Colin Ian King July 14, 2020, 8:18 a.m. UTC | #1
On 14/07/2020 07:29, Ivan Hu wrote:
> Base on "TCG PC Client Specific Platform Firmware Profile Specification"
> table 1.
> https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification/
> 
> Signed-off-by: Ivan Hu <ivan.hu@canonical.com>
> ---
>  src/tpm/tpmevlogdump/tpmevlogdump.c | 60 ++++++++++++++++++++++++++++-
>  1 file changed, 58 insertions(+), 2 deletions(-)
> 
> diff --git a/src/tpm/tpmevlogdump/tpmevlogdump.c b/src/tpm/tpmevlogdump/tpmevlogdump.c
> index 998b48eb..dd5e3a5b 100644
> --- a/src/tpm/tpmevlogdump/tpmevlogdump.c
> +++ b/src/tpm/tpmevlogdump/tpmevlogdump.c
> @@ -198,6 +198,60 @@ static uint8_t tpmevlogdump_get_hash_size (TPM2_ALG_ID hash)
>  	return sz;
>  }
>  
> +static char *tpmevlogdump_pcrindex_to_string (uint32_t pcr)
> +{
> +
> +	char *str;
> +
> +	switch (pcr) {
> +	case 0:
> +		str = "SRTM, BIOS, Host Platform Extensions, Embedded Option ROMs and PI Drivers";
> +		break;
> +	case 1:
> +		str = "Host Platform Configuration";
> +		break;
> +	case 2:
> +		str = "UEFI driver and application Code";
> +		break;
> +	case 3:
> +		str = "UEFI driver and application Configuration and Data";
> +		break;
> +	case 4:
> +		str = "UEFI Boot Manager Code and Boot Attempts";
> +		break;
> +	case 5:
> +		str = "Boot Manager Code Configuration and Data and GPT/Partition Table";
> +		break;
> +	case 6:
> +		str = "Host Platform Manufacturer Specific";
> +		break;
> +	case 7:
> +		str = "Secure Boot Policy";
> +		break;
> +	case 8:
> +	case 9:
> +	case 10:
> +	case 11:
> +	case 12:
> +	case 13:
> +	case 14:
> +	case 15:
> +		str = "Defined for use by the Static OS";
> +		break;
> +	case 16:
> +		str = "Debug";
> +		break;
> +	case 23:
> +		str = "Application Support";
> +		break;
> +	default:
> +		str = "Unknown";
> +		break;
> +	}
> +
> +	return str;
> +}
> +
>  static size_t tpmevlogdump_specid_event_dump(fwts_framework *fw, uint8_t *data, size_t len)
>  {
>  
> @@ -212,7 +266,8 @@ static size_t tpmevlogdump_specid_event_dump(fwts_framework *fw, uint8_t *data,
>  		return 0;
>  	}
>  	fwts_pc_client_pcr_event *pc_event = (fwts_pc_client_pcr_event *)pdata;
> -	fwts_log_info_verbatim(fw, "PCRIndex:                    0x%8.8" PRIx32, pc_event->pcr_index);
> +	str_info = tpmevlogdump_pcrindex_to_string(pc_event->pcr_index);
> +	fwts_log_info_verbatim(fw, "PCRIndex:                    0x%8.8" PRIx32 "(%s)", pc_event->pcr_index, str_info);
>  	str_info = tpmevlogdump_evtype_to_string(pc_event->event_type);
>  	fwts_log_info_verbatim(fw, "EventType:                   0x%8.8" PRIx32 "(%s)", pc_event->event_type, str_info);
>  	tpmevlogdump_data_hexdump(fw, pc_event->digest, sizeof(pc_event->digest), "Digest");
> @@ -283,7 +338,8 @@ static size_t tpmevlogdump_event_v2_dump(fwts_framework *fw, uint8_t *data, size
>  		return 0;
>  	}
>  	fwts_tcg_pcr_event2 *pcr_event2 = (fwts_tcg_pcr_event2 *)pdata;
> -	fwts_log_info_verbatim(fw, "PCRIndex:           0x%8.8" PRIx32, pcr_event2->pcr_index);
> +	str_info = tpmevlogdump_pcrindex_to_string(pcr_event2->pcr_index);
> +	fwts_log_info_verbatim(fw, "PCRIndex:           0x%8.8" PRIx32 "(%s)", pcr_event2->pcr_index, str_info);
>  	str_info = tpmevlogdump_evtype_to_string(pcr_event2->event_type);
>  	fwts_log_info_verbatim(fw, "EventType:          0x%8.8" PRIx32 "(%s)", pcr_event2->event_type, str_info);
>  	fwts_log_info_verbatim(fw, "Digests Count :     0x%8.8" PRIx32, pcr_event2->digests_count);
> 

Thanks Ivan,

Acked-by: Colin Ian King <colin.king@canonical.com>
Alex Hung July 14, 2020, 6:31 p.m. UTC | #2
On 2020-07-14 12:29 a.m., Ivan Hu wrote:
> Base on "TCG PC Client Specific Platform Firmware Profile Specification"
> table 1.
> https://trustedcomputinggroup.org/resource/pc-client-specific-platform-firmware-profile-specification/
> 
> Signed-off-by: Ivan Hu <ivan.hu@canonical.com>
> ---
>  src/tpm/tpmevlogdump/tpmevlogdump.c | 60 ++++++++++++++++++++++++++++-
>  1 file changed, 58 insertions(+), 2 deletions(-)
> 
> diff --git a/src/tpm/tpmevlogdump/tpmevlogdump.c b/src/tpm/tpmevlogdump/tpmevlogdump.c
> index 998b48eb..dd5e3a5b 100644
> --- a/src/tpm/tpmevlogdump/tpmevlogdump.c
> +++ b/src/tpm/tpmevlogdump/tpmevlogdump.c
> @@ -198,6 +198,60 @@ static uint8_t tpmevlogdump_get_hash_size (TPM2_ALG_ID hash)
>  	return sz;
>  }
>  
> +static char *tpmevlogdump_pcrindex_to_string (uint32_t pcr)
> +{
> +
> +	char *str;
> +
> +	switch (pcr) {
> +	case 0:
> +		str = "SRTM, BIOS, Host Platform Extensions, Embedded Option ROMs and PI Drivers";
> +		break;
> +	case 1:
> +		str = "Host Platform Configuration";
> +		break;
> +	case 2:
> +		str = "UEFI driver and application Code";
> +		break;
> +	case 3:
> +		str = "UEFI driver and application Configuration and Data";
> +		break;
> +	case 4:
> +		str = "UEFI Boot Manager Code and Boot Attempts";
> +		break;
> +	case 5:
> +		str = "Boot Manager Code Configuration and Data and GPT/Partition Table";
> +		break;
> +	case 6:
> +		str = "Host Platform Manufacturer Specific";
> +		break;
> +	case 7:
> +		str = "Secure Boot Policy";
> +		break;
> +	case 8:
> +	case 9:
> +	case 10:
> +	case 11:
> +	case 12:
> +	case 13:
> +	case 14:
> +	case 15:
> +		str = "Defined for use by the Static OS";
> +		break;
> +	case 16:
> +		str = "Debug";
> +		break;
> +	case 23:
> +		str = "Application Support";
> +		break;
> +	default:
> +		str = "Unknown";
> +		break;
> +	}
> +
> +	return str;
> +}
> +
>  static size_t tpmevlogdump_specid_event_dump(fwts_framework *fw, uint8_t *data, size_t len)
>  {
>  
> @@ -212,7 +266,8 @@ static size_t tpmevlogdump_specid_event_dump(fwts_framework *fw, uint8_t *data,
>  		return 0;
>  	}
>  	fwts_pc_client_pcr_event *pc_event = (fwts_pc_client_pcr_event *)pdata;
> -	fwts_log_info_verbatim(fw, "PCRIndex:                    0x%8.8" PRIx32, pc_event->pcr_index);
> +	str_info = tpmevlogdump_pcrindex_to_string(pc_event->pcr_index);
> +	fwts_log_info_verbatim(fw, "PCRIndex:                    0x%8.8" PRIx32 "(%s)", pc_event->pcr_index, str_info);
>  	str_info = tpmevlogdump_evtype_to_string(pc_event->event_type);
>  	fwts_log_info_verbatim(fw, "EventType:                   0x%8.8" PRIx32 "(%s)", pc_event->event_type, str_info);
>  	tpmevlogdump_data_hexdump(fw, pc_event->digest, sizeof(pc_event->digest), "Digest");
> @@ -283,7 +338,8 @@ static size_t tpmevlogdump_event_v2_dump(fwts_framework *fw, uint8_t *data, size
>  		return 0;
>  	}
>  	fwts_tcg_pcr_event2 *pcr_event2 = (fwts_tcg_pcr_event2 *)pdata;
> -	fwts_log_info_verbatim(fw, "PCRIndex:           0x%8.8" PRIx32, pcr_event2->pcr_index);
> +	str_info = tpmevlogdump_pcrindex_to_string(pcr_event2->pcr_index);
> +	fwts_log_info_verbatim(fw, "PCRIndex:           0x%8.8" PRIx32 "(%s)", pcr_event2->pcr_index, str_info);
>  	str_info = tpmevlogdump_evtype_to_string(pcr_event2->event_type);
>  	fwts_log_info_verbatim(fw, "EventType:          0x%8.8" PRIx32 "(%s)", pcr_event2->event_type, str_info);
>  	fwts_log_info_verbatim(fw, "Digests Count :     0x%8.8" PRIx32, pcr_event2->digests_count);
> 


Acked-by: Alex Hung <alex.hung@canonical.com>
diff mbox series

Patch

diff --git a/src/tpm/tpmevlogdump/tpmevlogdump.c b/src/tpm/tpmevlogdump/tpmevlogdump.c
index 998b48eb..dd5e3a5b 100644
--- a/src/tpm/tpmevlogdump/tpmevlogdump.c
+++ b/src/tpm/tpmevlogdump/tpmevlogdump.c
@@ -198,6 +198,60 @@  static uint8_t tpmevlogdump_get_hash_size (TPM2_ALG_ID hash)
 	return sz;
 }
 
+static char *tpmevlogdump_pcrindex_to_string (uint32_t pcr)
+{
+
+	char *str;
+
+	switch (pcr) {
+	case 0:
+		str = "SRTM, BIOS, Host Platform Extensions, Embedded Option ROMs and PI Drivers";
+		break;
+	case 1:
+		str = "Host Platform Configuration";
+		break;
+	case 2:
+		str = "UEFI driver and application Code";
+		break;
+	case 3:
+		str = "UEFI driver and application Configuration and Data";
+		break;
+	case 4:
+		str = "UEFI Boot Manager Code and Boot Attempts";
+		break;
+	case 5:
+		str = "Boot Manager Code Configuration and Data and GPT/Partition Table";
+		break;
+	case 6:
+		str = "Host Platform Manufacturer Specific";
+		break;
+	case 7:
+		str = "Secure Boot Policy";
+		break;
+	case 8:
+	case 9:
+	case 10:
+	case 11:
+	case 12:
+	case 13:
+	case 14:
+	case 15:
+		str = "Defined for use by the Static OS";
+		break;
+	case 16:
+		str = "Debug";
+		break;
+	case 23:
+		str = "Application Support";
+		break;
+	default:
+		str = "Unknown";
+		break;
+	}
+
+	return str;
+}
+
 static size_t tpmevlogdump_specid_event_dump(fwts_framework *fw, uint8_t *data, size_t len)
 {
 
@@ -212,7 +266,8 @@  static size_t tpmevlogdump_specid_event_dump(fwts_framework *fw, uint8_t *data,
 		return 0;
 	}
 	fwts_pc_client_pcr_event *pc_event = (fwts_pc_client_pcr_event *)pdata;
-	fwts_log_info_verbatim(fw, "PCRIndex:                    0x%8.8" PRIx32, pc_event->pcr_index);
+	str_info = tpmevlogdump_pcrindex_to_string(pc_event->pcr_index);
+	fwts_log_info_verbatim(fw, "PCRIndex:                    0x%8.8" PRIx32 "(%s)", pc_event->pcr_index, str_info);
 	str_info = tpmevlogdump_evtype_to_string(pc_event->event_type);
 	fwts_log_info_verbatim(fw, "EventType:                   0x%8.8" PRIx32 "(%s)", pc_event->event_type, str_info);
 	tpmevlogdump_data_hexdump(fw, pc_event->digest, sizeof(pc_event->digest), "Digest");
@@ -283,7 +338,8 @@  static size_t tpmevlogdump_event_v2_dump(fwts_framework *fw, uint8_t *data, size
 		return 0;
 	}
 	fwts_tcg_pcr_event2 *pcr_event2 = (fwts_tcg_pcr_event2 *)pdata;
-	fwts_log_info_verbatim(fw, "PCRIndex:           0x%8.8" PRIx32, pcr_event2->pcr_index);
+	str_info = tpmevlogdump_pcrindex_to_string(pcr_event2->pcr_index);
+	fwts_log_info_verbatim(fw, "PCRIndex:           0x%8.8" PRIx32 "(%s)", pcr_event2->pcr_index, str_info);
 	str_info = tpmevlogdump_evtype_to_string(pcr_event2->event_type);
 	fwts_log_info_verbatim(fw, "EventType:          0x%8.8" PRIx32 "(%s)", pcr_event2->event_type, str_info);
 	fwts_log_info_verbatim(fw, "Digests Count :     0x%8.8" PRIx32, pcr_event2->digests_count);