diff --git a/host/xtest/CMakeLists.txt b/host/xtest/CMakeLists.txt
index b307d07..9cf5d69 100644
--- a/host/xtest/CMakeLists.txt
+++ b/host/xtest/CMakeLists.txt
@@ -12,6 +12,23 @@
 
 include(GNUInstallDirs)
 
+macro(EMBED_8100FILE prefix infile)
+	add_custom_command(
+		OUTPUT  regression_8100_${prefix}.h
+		COMMAND ../../scripts/file_to_c.py --inf ${infile}
+	--out ${CMAKE_CURRENT_BINARY_DIR}/regression_8100_${prefix}.h
+	--name regression_8100_${prefix}
+		DEPENDS ../../scripts/file_to_c.py ${infile}
+	)
+
+	set_property(SOURCE regression_8100.c APPEND PROPERTY OBJECT_DEPENDS
+		     ${CMAKE_CURRENT_BINARY_DIR}/regression_8100_${prefix}.h)
+endmacro(EMBED_8100FILE)
+
+EMBED_8100FILE(ca_crt ../../cert/ca.crt)
+EMBED_8100FILE(mid_crt ../../cert/mid.crt)
+EMBED_8100FILE(my_crt ../../cert/my.crt)
+
 set (SRC
 	adbg/src/adbg_case.c
 	adbg/src/adbg_enum.c
diff --git a/host/xtest/Makefile b/host/xtest/Makefile
index d25fcb6..6b666a7 100644
--- a/host/xtest/Makefile
+++ b/host/xtest/Makefile
@@ -75,9 +75,7 @@
 CFLAGS += -I./
 CFLAGS += -I./adbg/include
 CFLAGS += -I./xml/include
-ifeq ($(CFG_GCM_NIST_VECTORS),y)
 CFLAGS += -I$(out-dir)/xtest
-endif
 
 CFLAGS += -I$(OPTEE_CLIENT_EXPORT)/include
 CFLAGS += -I$(TA_DEV_KIT_DIR)/host_include
@@ -206,6 +204,19 @@
 	create-nist-gcm-vectors,$v,encrypt)))
 endif
 
+define embed-file
+cleanfiles += $(out-dir)/xtest/$(1).h
+
+$(out-dir)/xtest/$(1).h: $(2)
+	@echo '  GEN     $$@'
+	$(q)../../scripts/file_to_c.py --inf $$< --out $$@ --name $(1)
+
+$(CURDIR)/regression_8100.c: $(out-dir)/xtest/$(1).h
+endef
+
+$(eval $(call embed-file,regression_8100_ca_crt,../../cert/ca.crt))
+$(eval $(call embed-file,regression_8100_mid_crt,../../cert/mid.crt))
+$(eval $(call embed-file,regression_8100_my_crt,../../cert/my.crt))
 
 .PHONY: clean
 clean:
diff --git a/host/xtest/regression_8100.c b/host/xtest/regression_8100.c
index 001f037..52e6003 100644
--- a/host/xtest/regression_8100.c
+++ b/host/xtest/regression_8100.c
@@ -4,9 +4,19 @@
 #include "xtest_test.h"
 #include "xtest_helpers.h"
 
+#include <compiler.h>
+#include <stdarg.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
 #include <ta_crypt.h>
 #include <tee_api_types.h>
-#include <compiler.h>
+
+#include "regression_8100_ca_crt.h"
+#include "regression_8100_mid_crt.h"
+#include "regression_8100_my_crt.h"
+
+#ifdef CFG_TA_MBEDTLS
 
 static void test_8101(ADBG_Case_t *c __maybe_unused)
 {
@@ -27,3 +37,77 @@
 #endif
 }
 ADBG_CASE_DEFINE(regression, 8101, test_8101, "TA mbedTLS self tests");
+
+static int __printf(2, 3) myasprintf(char **strp, const char *fmt, ...)
+{
+	char *str = NULL;
+	int rc = 0;
+	va_list ap;
+
+	va_start(ap, fmt);
+	rc = vsnprintf(str, rc, fmt, ap);
+	if (rc <= 0)
+		goto out;
+
+	str = malloc(rc);
+	if (!str) {
+		rc = -1;
+		goto out;
+	}
+
+	rc = vsnprintf(str, rc, fmt, ap);
+	if (rc <= 0)
+		free(str);
+	else
+		*strp = str;
+
+out:
+	va_end(ap);
+	return rc;
+}
+
+static void test_8102(ADBG_Case_t *c)
+{
+	TEEC_Session session = { 0 };
+	TEEC_Operation op = TEEC_OPERATION_INITIALIZER;
+	uint32_t ret_orig;
+	char *chain = NULL;
+	int clen = 0;
+	char *trust = NULL;
+	int tlen;
+
+	if (!ADBG_EXPECT_TEEC_SUCCESS(c, xtest_teec_open_session(
+					      &session, &crypt_user_ta_uuid,
+					      NULL, &ret_orig)))
+		return;
+
+	clen = myasprintf(&chain, "%*s\n%*s",
+			  (int)sizeof(regression_8100_my_crt),
+			  regression_8100_my_crt,
+			  (int)sizeof(regression_8100_mid_crt),
+			   regression_8100_mid_crt);
+	if (!ADBG_EXPECT_COMPARE_SIGNED(c, clen, !=, -1))
+		goto out;
+	tlen = myasprintf(&trust, "%*s", (int)sizeof(regression_8100_ca_crt),
+			  regression_8100_ca_crt);
+	if (!ADBG_EXPECT_COMPARE_SIGNED(c, tlen, !=, -1))
+		goto out;
+
+	op.params[0].tmpref.buffer = chain;
+	op.params[0].tmpref.size = clen;
+	op.params[1].tmpref.buffer = trust;
+	op.params[1].tmpref.size = tlen;
+	op.paramTypes = TEEC_PARAM_TYPES(TEEC_MEMREF_TEMP_INPUT,
+					 TEEC_MEMREF_TEMP_INPUT,
+					 TEEC_NONE, TEEC_NONE);
+
+	ADBG_EXPECT_TEEC_SUCCESS(c,
+		TEEC_InvokeCommand(&session, TA_CRYPT_CMD_MBEDTLS_CHECK_CERT,
+				   &op, &ret_orig));
+out:
+	free(chain);
+	free(trust);
+	TEEC_CloseSession(&session);
+}
+ADBG_CASE_DEFINE(regression, 8102, test_8102, "TA mbedTLS test cert chain");
+#endif /*CFG_TA_MBEDTLS*/
