diff --git a/.gitmodules b/.gitmodules
index 1946491..c753963 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,3 +1,7 @@
 [submodule "ext/mbedtls"]
 	path = ext/mbedtls
 	url = https://github.com/Mbed-TLS/mbedtls.git
+[submodule "libtl"]
+	path = contrib/libtl
+	url = https://review.trustedfirmware.org/shared/transfer-list-library
+	shallow = true
diff --git a/Makefile b/Makefile
index 3ebf566..d5a18be 100644
--- a/Makefile
+++ b/Makefile
@@ -98,6 +98,9 @@
 
 DOCS_PATH		:=	docs
 
+# Path to Transfer List Library (LibTL)
+LIBTL_PATH		:=	contrib/libtl
+
 ifeq (${PLAT},)
   $(error "Error: Unknown platform. Please use PLAT=<platform name> to specify the platform")
 endif
diff --git a/contrib/libtl b/contrib/libtl
new file mode 160000
index 0000000..38b309b
--- /dev/null
+++ b/contrib/libtl
@@ -0,0 +1 @@
+Subproject commit 38b309b70f830280af038e03c51082df8f54a149
diff --git a/include/lib/event_log/event_handoff.h b/include/lib/event_log/event_handoff.h
index e969d1f..f8c8716 100644
--- a/include/lib/event_log/event_handoff.h
+++ b/include/lib/event_log/event_handoff.h
@@ -10,7 +10,7 @@
 
 #include <stdint.h>
 
-#include <lib/transfer_list.h>
+#include <transfer_list.h>
 
 /**
  * Initializes or extends the TPM event log in the transfer list.
diff --git a/include/lib/event_log/event_log.h b/include/lib/event_log/event_log.h
index b5adfdc..964f80a 100644
--- a/include/lib/event_log/event_log.h
+++ b/include/lib/event_log/event_log.h
@@ -10,6 +10,7 @@
 #include <stddef.h>
 #include <stdint.h>
 
+#include <lib/utils_def.h>
 #include <drivers/auth/crypto_mod.h>
 #include "event_handoff.h"
 #include "tcg.h"
diff --git a/include/lib/libc/aarch32/inttypes_.h b/include/lib/libc/aarch32/inttypes_.h
new file mode 100644
index 0000000..0888bf0
--- /dev/null
+++ b/include/lib/libc/aarch32/inttypes_.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2020 Broadcom
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+/*
+ * Portions copyright (c) 2020, Arm Limited and Contributors.
+ * All rights reserved.
+ */
+
+#ifndef INTTYPES__H
+#define INTTYPES__H
+
+#define PRId64		"lld"	/* int64_t */
+#define PRIi64		"lli"	/* int64_t */
+#define PRIo64		"llo"	/* int64_t */
+#define PRIu64		"llu"	/* uint64_t */
+#define PRIx64		"llx"	/* uint64_t */
+#define PRIX64		"llX"	/* uint64_t */
+
+#define PRIdPTR         "d"     /* intptr_t */
+#define PRIiPTR         "i"     /* intptr_t */
+#define PRIoPTR         "o"     /* intptr_t */
+#define PRIuPTR         "u"     /* uintptr_t */
+#define PRIxPTR         "x"     /* uintptr_t */
+#define PRIXPTR         "X"     /* uintptr_t */
+
+#endif /* INTTYPES__H */
diff --git a/include/lib/libc/aarch64/inttypes_.h b/include/lib/libc/aarch64/inttypes_.h
new file mode 100644
index 0000000..6109084
--- /dev/null
+++ b/include/lib/libc/aarch64/inttypes_.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2020 Broadcom
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+/*
+ * Portions copyright (c) 2020, Arm Limited and Contributors.
+ * All rights reserved.
+ */
+
+#ifndef INTTYPES__H
+#define INTTYPES__H
+
+#define PRId64		"ld"	/* int64_t */
+#define PRIi64		"li"	/* int64_t */
+#define PRIo64		"lo"	/* int64_t */
+#define PRIu64		"lu"	/* uint64_t */
+#define PRIx64		"lx"	/* uint64_t */
+#define PRIX64		"lX"	/* uint64_t */
+
+#define PRIdPTR         "ld"    /* intptr_t */
+#define PRIiPTR         "li"    /* intptr_t */
+#define PRIoPTR         "lo"    /* intptr_t */
+#define PRIuPTR         "lu"    /* uintptr_t */
+#define PRIxPTR         "lx"    /* uintptr_t */
+#define PRIXPTR         "lX"    /* uintptr_t */
+
+#endif /* INTTYPES__H */
diff --git a/include/lib/libc/inttypes.h b/include/lib/libc/inttypes.h
new file mode 100644
index 0000000..344b71c
--- /dev/null
+++ b/include/lib/libc/inttypes.h
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2020 Broadcom
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+/*
+ * Portions copyright (c) 2020, Arm Limited and Contributors.
+ * All rights reserved.
+ */
+
+#ifndef INTTYPES_H
+#define INTTYPES_H
+
+#include <inttypes_.h>
+#include <stdint.h>
+
+#define PRId8		"d"	/* int8_t */
+#define PRId16		"d"	/* int16_t */
+#define PRId32		"d"	/* int32_t */
+
+#define PRIi8		"i"	/* int8_t */
+#define PRIi16		"i"	/* int16_t */
+#define PRIi32		"i"	/* int32_t */
+
+#define PRIo8		"o"	/* int8_t */
+#define PRIo16		"o"	/* int16_t */
+#define PRIo32		"o"	/* int32_t */
+
+#define PRIu8		"u"	/* uint8_t */
+#define PRIu16		"u"	/* uint16_t */
+#define PRIu32		"u"	/* uint32_t */
+
+#define PRIx8		"x"	/* uint8_t */
+#define PRIx16		"x"	/* uint16_t */
+#define PRIx32		"x"	/* uint32_t */
+
+#define PRIX8		"X"	/* uint8_t */
+#define PRIX16		"X"	/* uint16_t */
+#define PRIX32		"X"	/* uint32_t */
+
+#endif
diff --git a/include/lib/transfer_list.h b/include/lib/transfer_list.h
deleted file mode 100644
index eee2b82..0000000
--- a/include/lib/transfer_list.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (c) 2023, Linaro Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#ifndef __TRANSFER_LIST_H
-#define __TRANSFER_LIST_H
-
-#include <stdbool.h>
-#include <stdint.h>
-
-#include <lib/utils_def.h>
-
-#define TRANSFER_LIST_SIGNATURE U(0x4a0fb10b)
-#define TRANSFER_LIST_VERSION U(0x0001)
-
-// Init value of maximum alignment required by any TE data in the TL
-// specified as a power of two
-#define TRANSFER_LIST_INIT_MAX_ALIGN U(3)
-
-// alignment required by TE header start address, in bytes
-#define TRANSFER_LIST_GRANULE U(8)
-
-// version of the register convention used.
-// Set to 1 for both AArch64 and AArch32 according to fw handoff spec v0.9
-#define REGISTER_CONVENTION_VERSION_SHIFT_64	UL(32)
-#define REGISTER_CONVENTION_VERSION_SHIFT_32	UL(24)
-#define REGISTER_CONVENTION_VERSION_MASK	UL(0xff)
-
-#define TRANSFER_LIST_HANDOFF_X1_VALUE(__version) 	\
-	((TRANSFER_LIST_SIGNATURE &	\
-	((1UL << REGISTER_CONVENTION_VERSION_SHIFT_64) - 1)) | 	\
-	(((__version) & REGISTER_CONVENTION_VERSION_MASK) <<	\
-	 REGISTER_CONVENTION_VERSION_SHIFT_64))
-
-#define TRANSFER_LIST_HANDOFF_R1_VALUE(__version) 	\
-	((TRANSFER_LIST_SIGNATURE &	\
-	((1UL << REGISTER_CONVENTION_VERSION_SHIFT_32) - 1)) | 	\
-	(((__version) & REGISTER_CONVENTION_VERSION_MASK) <<	\
-	 REGISTER_CONVENTION_VERSION_SHIFT_32))
-
-#ifndef __ASSEMBLER__
-
-enum transfer_list_tag_id {
-	TL_TAG_EMPTY = 0,
-	TL_TAG_FDT = 1,
-	TL_TAG_HOB_BLOCK = 2,
-	TL_TAG_HOB_LIST = 3,
-	TL_TAG_ACPI_TABLE_AGGREGATE = 4,
-	TL_TAG_TPM_EVLOG = 5,
-};
-
-enum transfer_list_ops {
-	TL_OPS_NON, // invalid for any operation
-	TL_OPS_ALL, // valid for all operations
-};
-
-struct transfer_list_header {
-	uint32_t signature;
-	uint8_t checksum;
-	uint8_t version;
-	uint8_t hdr_size;
-	uint8_t alignment; // max alignment of TE data
-	uint32_t size; // TL header + all TEs
-	uint32_t max_size;
-	/*
-	 * Commented out element used to visualize dynamic part of the
-	 * data structure.
-	 *
-	 * Note that struct transfer_list_entry also is dynamic in size
-	 * so the elements can't be indexed directly but instead must be
-	 * traversed in order
-	 *
-	 * struct transfer_list_entry entries[];
-	 */
-};
-
-struct transfer_list_entry {
-	uint16_t tag_id;
-	uint8_t reserved0; // place holder
-	uint8_t hdr_size;
-	uint32_t data_size;
-	/*
-	 * Commented out element used to visualize dynamic part of the
-	 * data structure.
-	 *
-	 * Note that padding is added at the end of @data to make to reach
-	 * a 8-byte boundary.
-	 *
-	 * uint8_t	data[ROUNDUP(data_size, 8)];
-	 */
-};
-
-struct transfer_list_entry *
-transfer_list_next(struct transfer_list_header *tl,
-		   struct transfer_list_entry *last);
-
-bool transfer_list_verify_checksum(const struct transfer_list_header *tl);
-
-void *transfer_list_entry_data(struct transfer_list_entry *entry);
-
-struct transfer_list_entry *transfer_list_find(struct transfer_list_header *tl,
-					       uint16_t tag_id);
-
-enum transfer_list_ops
-transfer_list_check_header(const struct transfer_list_header *tl);
-
-#endif /*__ASSEMBLER__*/
-#endif /*__TRANSFER_LIST_H*/
diff --git a/lib/libtl/libtl.mk b/lib/libtl/libtl.mk
new file mode 100644
index 0000000..4e685d2
--- /dev/null
+++ b/lib/libtl/libtl.mk
@@ -0,0 +1,15 @@
+#
+# Copyright (c) 2023-2025, Arm Limited and Contributors. All rights reserved.
+#
+# SPDX-License-Identifier: BSD-3-Clause
+#
+
+LIBTL_PATH	?= contrib/libtl
+
+INCLUDES	+= -I$(LIBTL_PATH)/include/ \
+		 -I$(LIBTL_PATH)/include/private/
+
+LIBTL_SOURCES	+= $(addprefix ${LIBTL_PATH}/src/generic/, \
+			transfer_list.c	\
+			logging.c	\
+			)
diff --git a/lib/transfer_list/transfer_list.c b/lib/transfer_list/transfer_list.c
deleted file mode 100644
index 13ff6ff..0000000
--- a/lib/transfer_list/transfer_list.c
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (c) 2023, Arm Limited and Contributors. All rights reserved.
- *
- * SPDX-License-Identifier: BSD-3-Clause
- */
-
-#include <stddef.h>
-
-#include <transfer_list.h>
-
-/*******************************************************************************
- * Search for an existing transfer entry with the specified tag id from a
- * transfer list
- * Return pointer to the found transfer entry or NULL on error
- ******************************************************************************/
-struct transfer_list_entry *transfer_list_find(struct transfer_list_header *tl,
-					       uint16_t tag_id)
-{
-	struct transfer_list_entry *te = NULL;
-
-	do {
-		te = transfer_list_next(tl, te);
-	} while (te && (te->tag_id != tag_id));
-
-	return te;
-}
-
-/*******************************************************************************
- * Enumerate the next transfer entry
- * Return pointer to the next transfer entry or NULL on error
- ******************************************************************************/
-struct transfer_list_entry *transfer_list_next(struct transfer_list_header *tl,
-					       struct transfer_list_entry *last)
-{
-	struct transfer_list_entry *te = NULL;
-	uintptr_t tl_ev = 0;
-	uintptr_t va = 0;
-	uintptr_t ev = 0;
-	size_t sz = 0;
-
-	if (!tl) {
-		return NULL;
-	}
-
-	tl_ev = (uintptr_t)tl + tl->size;
-
-	if (last) {
-		va = (uintptr_t)last;
-		/* check if the total size overflow */
-		if (add_overflow(last->hdr_size, last->data_size, &sz)) {
-			return NULL;
-		}
-		/* roundup to the next entry */
-		if (add_with_round_up_overflow(va, sz, TRANSFER_LIST_GRANULE,
-					       &va)) {
-			return NULL;
-		}
-	} else {
-		va = (uintptr_t)tl + tl->hdr_size;
-	}
-
-	te = (struct transfer_list_entry *)va;
-
-	if (va + sizeof(*te) > tl_ev || te->hdr_size < sizeof(*te) ||
-	    add_overflow(te->hdr_size, te->data_size, &sz) ||
-	    add_overflow(va, sz, &ev) || ev > tl_ev) {
-		return NULL;
-	}
-
-	return te;
-}
-
-void *transfer_list_entry_data(struct transfer_list_entry *entry)
-{
-	return (uint8_t *)entry + entry->hdr_size;
-}
-
-/*******************************************************************************
- * Verifying the header of a transfer list
- * Compliant to 2.4.1 of Firmware handoff specification (v0.9)
- * Return transfer list operation status code
- ******************************************************************************/
-enum transfer_list_ops
-transfer_list_check_header(const struct transfer_list_header *tl)
-{
-	uint8_t byte_sum = 0U;
-	uint8_t *b = (uint8_t *)tl;
-
-	if (tl == NULL) {
-		return TL_OPS_NON;
-	}
-
-	if (tl->signature != TRANSFER_LIST_SIGNATURE ||
-	    tl->size > tl->max_size) {
-		return TL_OPS_NON;
-	}
-
-	for (size_t i = 0; i < tl->size; i++) {
-		byte_sum += b[i];
-	}
-
-	if (byte_sum - tl->checksum == tl->checksum) {
-		return TL_OPS_NON;
-	}
-
-	return TL_OPS_ALL;
-}
diff --git a/tftf/framework/framework.mk b/tftf/framework/framework.mk
index 098f2b8..24742a4 100644
--- a/tftf/framework/framework.mk
+++ b/tftf/framework/framework.mk
@@ -70,7 +70,6 @@
 	lib/smc/${ARCH}/smc.c						\
 	lib/trng/trng.c							\
         lib/errata_abi/errata_abi.c                                     \
-	lib/transfer_list/transfer_list.c				\
 	lib/trusted_os/trusted_os.c					\
 	lib/utils/mp_printf.c						\
 	lib/utils/uuid.c						\
diff --git a/tftf/tests/tests-firmware-handoff.mk b/tftf/tests/tests-firmware-handoff.mk
index 65dfc4b..c7ca2cd 100644
--- a/tftf/tests/tests-firmware-handoff.mk
+++ b/tftf/tests/tests-firmware-handoff.mk
@@ -7,11 +7,12 @@
 ifeq (${TRANSFER_LIST}, 1)
 
 include lib/event_log/event_log.mk
+include lib/libtl/libtl.mk
 
 TESTS_SOURCES	+=	$(addprefix tftf/tests/misc_tests/,		\
 	test_firmware_handoff.c						\
 )
 
-TESTS_SOURCES	+=	${EVENT_LOG_SOURCES}
+TESTS_SOURCES	+=	${EVENT_LOG_SOURCES} ${LIBTL_SOURCES}
 
 endif
