feat(handoff): add event log test
Adds a new TFTF test to validate presence and correctness of the TPM
event log in the transfer list received from EL3. Uses event_log_dump to
parse and output log data.
Change-Id: I0b1f782429e4bfe3d1760fce52d40a9836dc27a2
Signed-off-by: Harrison Mutai <harrison.mutai@arm.com>
diff --git a/tftf/tests/misc_tests/test_firmware_handoff.c b/tftf/tests/misc_tests/test_firmware_handoff.c
index 61091ae..026f057 100644
--- a/tftf/tests/misc_tests/test_firmware_handoff.c
+++ b/tftf/tests/misc_tests/test_firmware_handoff.c
@@ -6,10 +6,13 @@
#include <assert.h>
+#include <drivers/measured_boot/event_log/tcg.h>
#include <test_helpers.h>
#include <tftf_lib.h>
#include <transfer_list.h>
+#include "event_log.h"
+
extern u_register_t hw_config_base;
extern u_register_t ns_tl;
extern u_register_t tl_signature;
@@ -61,3 +64,31 @@
return TEST_RESULT_SUCCESS;
}
+
+test_result_t test_handoff_event_payload(void)
+{
+
+ struct transfer_list_header *tl = (struct transfer_list_header *)ns_tl;
+ struct transfer_list_entry *te;
+ uint8_t *log_addr;
+ size_t log_size;
+
+ tftf_testcase_printf(
+ "Validate that a TPM event log can be successfully dumped when "
+ "present in the transfer list.");
+
+ te = transfer_list_find(tl, TL_TAG_TPM_EVLOG);
+ if (te == NULL) {
+ return TEST_RESULT_SKIPPED;
+ }
+
+ /* 4-bytes are reserved in TE data section. */
+ log_addr = (uint8_t *)transfer_list_entry_data(te) + U(4);
+ log_size = te->data_size - U(4);
+
+ if (event_log_dump(log_addr, log_size) != 0) {
+ return TEST_RESULT_FAIL;
+ }
+
+ return TEST_RESULT_SUCCESS;
+}