blob: e6f79e6803e25f102775991a6aff38e6103c2666 [file] [log] [blame]
/*
* SPDX-FileCopyrightText: Copyright The TrustedFirmware-M Contributors
*
* SPDX-License-Identifier: BSD-3-Clause
*
*/
#include "measured_boot_utils.h"
#include "measured_boot_api.h"
#include "tfm_log_unpriv.h"
#include <stddef.h>
#include <stdint.h>
#include <string.h>
static void print_byte_array(const uint8_t *array, size_t len)
{
size_t i;
if (array == NULL || len == 0) {
VERBOSE_UNPRIV_RAW("\n");
} else {
for (i = 0; i < len; ++i) {
if (array[i] < 0x10) {
VERBOSE_UNPRIV_RAW(" 0%x", array[i]);
} else {
VERBOSE_UNPRIV_RAW(" %x", array[i]);
}
if ((i & 0xFu) == 0xFu) {
VERBOSE_UNPRIV_RAW("\n");
if (i < (len - 1)) {
VERBOSE_UNPRIV_RAW(" :");
}
}
}
}
}
static inline void add_null_terminator(uint8_t *dest,
const uint8_t *src,
size_t src_len)
{
memcpy(dest, src, src_len);
*(dest + src_len) = '\0';
}
void log_extend_measurement(uint8_t index,
const uint8_t *signer_id,
size_t signer_id_size,
const uint8_t *version,
uint8_t version_size,
uint32_t measurement_algo,
const uint8_t *sw_type,
uint8_t sw_type_size,
const uint8_t *measurement_value,
size_t measurement_value_size,
uint8_t lock_measurement)
{
uint8_t string_buf[((SW_TYPE_MAX_SIZE > VERSION_MAX_SIZE) ?
SW_TYPE_MAX_SIZE : VERSION_MAX_SIZE) + 1];
VERBOSE_UNPRIV_RAW("Measured Boot : store and extend measurement:\n");
VERBOSE_UNPRIV_RAW(" - slot : %u\n", index);
VERBOSE_UNPRIV_RAW(" - signer_id :");
print_byte_array(signer_id, signer_id_size);
add_null_terminator(string_buf, version, version_size);
VERBOSE_UNPRIV_RAW(" - version : %s\n", string_buf);
VERBOSE_UNPRIV_RAW(" - algorithm : %x\n", measurement_algo);
add_null_terminator(string_buf, sw_type, sw_type_size);
VERBOSE_UNPRIV_RAW(" - sw_type : %s\n", string_buf);
VERBOSE_UNPRIV_RAW(" - measurement :");
print_byte_array(measurement_value, measurement_value_size);
VERBOSE_UNPRIV_RAW(" - locking : %s\n", lock_measurement ? "true" : "false");
}