ACK: [PATCH 1/2] lib: fwts_tpm: move some tpm funcitons to lib
Alex Hung
alex.hung at canonical.com
Fri Oct 16 20:09:45 UTC 2020
On 2020-10-16 6:01 a.m., Ivan Hu wrote:
> No function changed.``
>
> Signed-off-by: Ivan Hu <ivan.hu at canonical.com>
> ---
> src/lib/include/fwts_tpm.h | 3 ++
> src/lib/src/Makefile.am | 1 +
> src/lib/src/fwts_tpm.c | 68 +++++++++++++++++++++++++++++
> src/tpm/tpmevlogdump/tpmevlogdump.c | 57 ++++--------------------
> 4 files changed, 80 insertions(+), 49 deletions(-)
> create mode 100644 src/lib/src/fwts_tpm.c
>
> diff --git a/src/lib/include/fwts_tpm.h b/src/lib/include/fwts_tpm.h
> index 6e32e334..07fdb40b 100644
> --- a/src/lib/include/fwts_tpm.h
> +++ b/src/lib/include/fwts_tpm.h
> @@ -167,6 +167,9 @@ typedef struct {
> */
> } __attribute__ ((packed)) fwts_tcg_pcr_event2;
>
> +void fwts_tpm_data_hexdump(fwts_framework *fw, uint8_t *data, size_t size, char *str);
> +uint8_t fwts_tpm_get_hash_size(TPM2_ALG_ID hash);
> +
> PRAGMA_POP
>
> #endif
> diff --git a/src/lib/src/Makefile.am b/src/lib/src/Makefile.am
> index 4593bb82..2c3c1cb7 100644
> --- a/src/lib/src/Makefile.am
> +++ b/src/lib/src/Makefile.am
> @@ -107,6 +107,7 @@ libfwts_la_SOURCES = \
> fwts_stringextras.c \
> fwts_summary.c \
> fwts_text_list.c \
> + fwts_tpm.c \
> fwts_tty.c \
> fwts_uefi.c \
> fwts_wakealarm.c \
> diff --git a/src/lib/src/fwts_tpm.c b/src/lib/src/fwts_tpm.c
> new file mode 100644
> index 00000000..f196ff8c
> --- /dev/null
> +++ b/src/lib/src/fwts_tpm.c
> @@ -0,0 +1,68 @@
> +/*
> + * Copyright (C) 2020 Canonical
> + *
> + * This program is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU General Public License
> + * as published by the Free Software Foundation; either version 2
> + * of the License, or (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
> + * GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
> + *
> + */
> +
> +#include "fwts.h"
> +#include "fwts_tpm.h"
> +
> +/*
> + * fwts_tpm_data_hexdump
> + * hex dump of a tpm event log data
> + */
> +void fwts_tpm_data_hexdump(fwts_framework *fw, uint8_t *data, size_t size, char *str)
> +{
> + size_t i;
> +
> + fwts_log_info_verbatim(fw, "%s: ", str);
> + for (i = 0; i < size; i += 16) {
> + char buffer[128];
> + size_t left = size - i;
> +
> + fwts_dump_raw_data(buffer, sizeof(buffer), data + i, i, left > 16 ? 16 : left);
> + fwts_log_info_verbatim(fw, "%s", buffer + 2);
> + }
> +}
> +
> +/*
> + * fwts_tpm_evlog_type_to_string
> + * get hash size
> + */
> +uint8_t fwts_tpm_get_hash_size (TPM2_ALG_ID hash)
> +{
> + uint8_t sz;
> +
> + switch (hash) {
> + case TPM2_ALG_SHA1:
> + sz = TPM2_SHA1_DIGEST_SIZE;
> + break;
> + case TPM2_ALG_SHA256:
> + sz = TPM2_SHA256_DIGEST_SIZE;
> + break;
> + case TPM2_ALG_SHA384:
> + sz = TPM2_SHA384_DIGEST_SIZE;
> + break;
> + case TPM2_ALG_SHA512:
> + sz = TPM2_SHA512_DIGEST_SIZE;
> + break;
> + default:
> + sz = 0;
> + break;
> + }
> +
> + return sz;
> +}
> diff --git a/src/tpm/tpmevlogdump/tpmevlogdump.c b/src/tpm/tpmevlogdump/tpmevlogdump.c
> index 94bb5cc1..8254554f 100644
> --- a/src/tpm/tpmevlogdump/tpmevlogdump.c
> +++ b/src/tpm/tpmevlogdump/tpmevlogdump.c
> @@ -26,22 +26,7 @@
>
> #include "fwts_tpm.h"
>
> -#define FWTS_TPM_LOG_DIR_PATH "/sys/kernel/security"
> -
> -
> -static void tpmevlogdump_data_hexdump(fwts_framework *fw, uint8_t *data, size_t size, char *str)
> -{
> - size_t i;
> -
> - fwts_log_info_verbatim(fw, "%s: ", str);
> - for (i = 0; i < size; i += 16) {
> - char buffer[128];
> - size_t left = size - i;
> -
> - fwts_dump_raw_data(buffer, sizeof(buffer), data + i, i, left > 16 ? 16 : left);
> - fwts_log_info_verbatim(fw, "%s", buffer + 2);
> - }
> -}
> +#define FWTS_TPM_LOG_DIR_PATH "/sys/kernel/security"
>
> static char *tpmevlogdump_evtype_to_string (fwts_tpmlog_event_type event_type)
> {
> @@ -172,32 +157,6 @@ static char *tpmevlogdump_hash_to_string (TPM2_ALG_ID hash)
>
> return str;
> }
> -
> -static uint8_t tpmevlogdump_get_hash_size (TPM2_ALG_ID hash)
> -{
> - uint8_t sz;
> -
> - switch (hash) {
> - case TPM2_ALG_SHA1:
> - sz = TPM2_SHA1_DIGEST_SIZE;
> - break;
> - case TPM2_ALG_SHA256:
> - sz = TPM2_SHA256_DIGEST_SIZE;
> - break;
> - case TPM2_ALG_SHA384:
> - sz = TPM2_SHA384_DIGEST_SIZE;
> - break;
> - case TPM2_ALG_SHA512:
> - sz = TPM2_SHA512_DIGEST_SIZE;
> - break;
> - default:
> - sz = 0;
> - break;
> - }
> -
> - return sz;
> -}
> -
> static char *tpmevlogdump_pcrindex_to_string (uint32_t pcr)
> {
>
> @@ -270,7 +229,7 @@ static size_t tpmevlogdump_specid_event_dump(fwts_framework *fw, uint8_t *data,
> 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");
> + fwts_tpm_data_hexdump(fw, pc_event->digest, sizeof(pc_event->digest), "Digest");
> fwts_log_info_verbatim(fw, "EventSize: 0x%8.8" PRIx32, pc_event->event_data_size);
>
> pdata += sizeof(fwts_pc_client_pcr_event);
> @@ -318,7 +277,7 @@ static size_t tpmevlogdump_specid_event_dump(fwts_framework *fw, uint8_t *data,
> fwts_log_info(fw, "Cannot get enough length for dumping data.");
> return 0;
> }
> - tpmevlogdump_data_hexdump(fw, pdata, vendor_info_size, " vendorInfo");
> + fwts_tpm_data_hexdump(fw, pdata, vendor_info_size, " vendorInfo");
> len_remain -= vendor_info_size;
> }
>
> @@ -357,7 +316,7 @@ static size_t tpmevlogdump_event_v2_dump(fwts_framework *fw, uint8_t *data, size
> }
> str_info = tpmevlogdump_hash_to_string(alg_id);
> fwts_log_info_verbatim(fw, " Digests[%d].AlgId: 0x%4.4" PRIx16 "(%s)", i, alg_id, str_info);
> - hash_size = tpmevlogdump_get_hash_size(alg_id);
> + hash_size = fwts_tpm_get_hash_size(alg_id);
> if (!hash_size) {
> fwts_log_info(fw, "Unknown hash algorithm. Aborted.");
> return 0;
> @@ -369,7 +328,7 @@ static size_t tpmevlogdump_event_v2_dump(fwts_framework *fw, uint8_t *data, size
> fwts_log_info(fw, "Cannot get enough length for dumping data.");
> return 0;
> }
> - tpmevlogdump_data_hexdump(fw, pdata, hash_size, " Digest");
> + fwts_tpm_data_hexdump(fw, pdata, hash_size, " Digest");
> pdata += hash_size;
> len_remain -= hash_size;
> }
> @@ -386,7 +345,7 @@ static size_t tpmevlogdump_event_v2_dump(fwts_framework *fw, uint8_t *data, size
>
> fwts_log_info_verbatim(fw, " EventSize: %" PRIu32, event_size);
> if (event_size > 0) {
> - tpmevlogdump_data_hexdump(fw, pdata, event_size, " Event");
> + fwts_tpm_data_hexdump(fw, pdata, event_size, " Event");
> len_remain -= event_size;
> }
>
> @@ -435,10 +394,10 @@ static void tpmevlogdump_event_dump(fwts_framework *fw, uint8_t *data, size_t le
> 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");
> + fwts_tpm_data_hexdump(fw, pc_event->digest, sizeof(pc_event->digest), "Digest");
> fwts_log_info_verbatim(fw, "EventSize: 0x%8.8" PRIx32, pc_event->event_data_size);
> if (pc_event->event_data_size > 0)
> - tpmevlogdump_data_hexdump(fw, pc_event->event, pc_event->event_data_size, "Event");
> + fwts_tpm_data_hexdump(fw, pc_event->event, pc_event->event_data_size, "Event");
> pdata += (sizeof(fwts_pc_client_pcr_event) + pc_event->event_data_size);
> len -= (sizeof(fwts_pc_client_pcr_event) + pc_event->event_data_size);
> }
>
Acked-by: Alex Hung <alex.hung at canonical.com>
More information about the fwts-devel
mailing list