blob: e6f79e6803e25f102775991a6aff38e6103c2666 [file] [log] [blame]
Maulik Pateld3142702022-06-22 10:09:13 +01001/*
Jackson Cooper-Driver90d89a02025-03-03 16:41:37 +00002 * SPDX-FileCopyrightText: Copyright The TrustedFirmware-M Contributors
Maulik Pateld3142702022-06-22 10:09:13 +01003 *
4 * SPDX-License-Identifier: BSD-3-Clause
5 *
6 */
7
8#include "measured_boot_utils.h"
9#include "measured_boot_api.h"
Jackson Cooper-Driver90d89a02025-03-03 16:41:37 +000010#include "tfm_log_unpriv.h"
Maulik Pateld3142702022-06-22 10:09:13 +010011#include <stddef.h>
12#include <stdint.h>
13#include <string.h>
14
15static void print_byte_array(const uint8_t *array, size_t len)
16{
17 size_t i;
18
19 if (array == NULL || len == 0) {
Jackson Cooper-Driver90d89a02025-03-03 16:41:37 +000020 VERBOSE_UNPRIV_RAW("\n");
Maulik Pateld3142702022-06-22 10:09:13 +010021 } else {
22 for (i = 0; i < len; ++i) {
23 if (array[i] < 0x10) {
Jackson Cooper-Driver90d89a02025-03-03 16:41:37 +000024 VERBOSE_UNPRIV_RAW(" 0%x", array[i]);
Maulik Pateld3142702022-06-22 10:09:13 +010025 } else {
Jackson Cooper-Driver90d89a02025-03-03 16:41:37 +000026 VERBOSE_UNPRIV_RAW(" %x", array[i]);
Maulik Pateld3142702022-06-22 10:09:13 +010027 }
28 if ((i & 0xFu) == 0xFu) {
Jackson Cooper-Driver90d89a02025-03-03 16:41:37 +000029 VERBOSE_UNPRIV_RAW("\n");
Maulik Pateld3142702022-06-22 10:09:13 +010030 if (i < (len - 1)) {
Jackson Cooper-Driver90d89a02025-03-03 16:41:37 +000031 VERBOSE_UNPRIV_RAW(" :");
Maulik Pateld3142702022-06-22 10:09:13 +010032 }
33 }
34 }
35 }
36}
37
38static inline void add_null_terminator(uint8_t *dest,
39 const uint8_t *src,
40 size_t src_len)
41{
42 memcpy(dest, src, src_len);
43 *(dest + src_len) = '\0';
44}
45
46void log_extend_measurement(uint8_t index,
47 const uint8_t *signer_id,
48 size_t signer_id_size,
49 const uint8_t *version,
50 uint8_t version_size,
51 uint32_t measurement_algo,
52 const uint8_t *sw_type,
53 uint8_t sw_type_size,
54 const uint8_t *measurement_value,
55 size_t measurement_value_size,
56 uint8_t lock_measurement)
57{
58 uint8_t string_buf[((SW_TYPE_MAX_SIZE > VERSION_MAX_SIZE) ?
59 SW_TYPE_MAX_SIZE : VERSION_MAX_SIZE) + 1];
60
Jackson Cooper-Driver90d89a02025-03-03 16:41:37 +000061 VERBOSE_UNPRIV_RAW("Measured Boot : store and extend measurement:\n");
62 VERBOSE_UNPRIV_RAW(" - slot : %u\n", index);
63 VERBOSE_UNPRIV_RAW(" - signer_id :");
Maulik Pateld3142702022-06-22 10:09:13 +010064 print_byte_array(signer_id, signer_id_size);
65 add_null_terminator(string_buf, version, version_size);
Jackson Cooper-Driver90d89a02025-03-03 16:41:37 +000066 VERBOSE_UNPRIV_RAW(" - version : %s\n", string_buf);
67 VERBOSE_UNPRIV_RAW(" - algorithm : %x\n", measurement_algo);
Maulik Pateld3142702022-06-22 10:09:13 +010068 add_null_terminator(string_buf, sw_type, sw_type_size);
Jackson Cooper-Driver90d89a02025-03-03 16:41:37 +000069 VERBOSE_UNPRIV_RAW(" - sw_type : %s\n", string_buf);
70 VERBOSE_UNPRIV_RAW(" - measurement :");
Maulik Pateld3142702022-06-22 10:09:13 +010071 print_byte_array(measurement_value, measurement_value_size);
Jackson Cooper-Driver90d89a02025-03-03 16:41:37 +000072 VERBOSE_UNPRIV_RAW(" - locking : %s\n", lock_measurement ? "true" : "false");
Maulik Pateld3142702022-06-22 10:09:13 +010073}