Tests added

Signed-off-by: Pascal Brand <pascal.brand@st.com>
diff --git a/scripts/.env b/scripts/.env
new file mode 100644
index 0000000..8259f75
--- /dev/null
+++ b/scripts/.env
@@ -0,0 +1,193 @@
+ERR=0
+red='\e[0;31;1m'
+green='\e[0;32;1m'
+yellow='\e[0;33m'
+blue='\e[0;34m'
+lightblue='\e[0;94m'
+blightblue='\e[0;94;1m'
+bold='\e[0;1m'
+NC='\e[0m' # No Color
+MSGNF="${red}[ NOT FOUND ]${NC}"
+
+LCI_MSG_OK=`printf "%s%10s%s" ${green} "OK" ${NC}`
+LCI_MSG_ERROR=`printf "%s%10s%s" ${red} "ERROR" ${NC}`
+LCI_MSG_INFO=`printf "%s%10s%s" ${lightblue} "Info" ${NC}`
+LCI_MSG_WARNING=`printf "%s%10s%s" ${yellow} "Warning" ${NC}`
+LCI_MSG=`printf "%s%10s%s" "" `
+LCI_MSG_HEADER=`printf "%s%10s%s" ${blightblue} "" ${NC}`
+MSGF="${green}[  FOUND   ]${NC}"
+
+function LCI_QUIT () {
+	printf "${LCI_MSG_ERROR} | ${red}Check/Update your config${NC}\n";
+	LCI_PRINT_SEPARATOR
+	exit;
+}
+
+function LCI_FORCE_QUIT () {
+	printf "${LCI_MSG_ERROR} | ${red}%s${NC}\n" "${1}";
+	LCI_PRINT_SEPARATOR
+	exit;
+}
+
+function LCI_PRINT_MSG () {
+	printf "${LCI_MSG} | %-30s\n" "${1}";
+}
+
+function LCI_PRINT_INFO () {
+	printf "${LCI_MSG_INFO} | %-30s\n" "${1}";
+}
+
+function LCI_PRINT_WARNING () {
+	printf "${LCI_MSG_WARNING} | ${yellow}%-30s${NC}\n" "${1}";
+}
+
+function LCI_PRINT_L1 () {
+	printf "${LCI_MSG_INFO} | ${lightblue}%-30s${NC}\n" "${1}";
+}
+
+function LCI_PRINT_HEADER () {
+	printf "${LCI_MSG_HEADER} | ${blightblue}%-30s${NC}\n" "${1}";
+}
+
+function LCI_PRINT_SEPARATOR () {
+	echo -e "${bold}--------------------------------------------------------------------------${NC}";
+}
+
+function LCI_PRINT_CHECK_OK () {
+	printf "${LCI_MSG_OK} | %-30s : %s\n" ${1} ${!1};
+}
+
+function LCI_PRINT_PATCH_CHECK_OK () {
+	printf "${LCI_MSG_OK} | %s\n" ${1};
+}
+
+function LCI_PRINT_CHECK_WARNING () {
+	printf "${LCI_MSG_WARNING} | %-30s : %s\n" ${1} ${!1};
+}
+
+function LCI_PRINT_PATCH_CHECK_WARNING () {
+	printf "${LCI_MSG_WARNING} | %s NOT FOUND\n" ${1};
+}
+
+function LCI_PRINT_CHECK_ERROR () {
+	printf "${LCI_MSG_ERROR} | %-30s : %s\n" ${1} ${!1};
+	ERR=1;
+}
+
+function LCI_PRINT_PATCH_CHECK_ERROR () {
+	printf "${LCI_MSG_ERROR} | %s\n" ${1};
+	ERR=1;
+}
+
+function LCI_CHECKDIR () {
+if [ ! -z ${!1} ]&&[ -d ${!1} ]; then
+LCI_PRINT_CHECK_OK "${1}"
+else
+LCI_PRINT_CHECK_ERROR "${1}"
+fi
+}
+
+function LCI_CHECKFILE () {
+if [ -f ${!1} ]; then
+LCI_PRINT_CHECK_OK "${1}"
+else
+LCI_PRINT_CHECK_ERROR "${1}"
+fi
+}
+
+function LCI_PATCH_CHECKFILE () {
+if [ -f ${1} ]; then
+LCI_PRINT_PATCH_CHECK_OK "${1}"
+else
+LCI_PRINT_WARNING "${1} NOT FOUND"
+LCI_PRINT_WARNING "Create dummy ${1}"
+touch ${1}
+fi
+}
+
+
+function LCI_CHECKVAR () {
+if [ ! -z ${!1} ]; then
+LCI_PRINT_CHECK_OK "${1}"
+else
+LCI_PRINT_CHECK_ERROR "${1}"
+fi
+}
+
+function LCI_CHECKOPTDIR () {
+if [ ! -z ${!1} ]&&[ -d ${!1} ]; then
+LCI_PRINT_CHECK_OK "${1}"
+else
+LCI_PRINT_CHECK_WARNING "${1}"
+fi
+}
+
+function LCI_CHECKOPTVAR () {
+if [ ! -z ${!1} ]; then
+LCI_PRINT_CHECK_OK "${1}"
+else
+LCI_PRINT_CHECK_WARNING "${1}"
+fi
+}
+
+function LCI_CPF () {
+	#printf "${LCI_MSG} | copy %-s\n" "${1}";
+	#printf "${LCI_MSG} |   to %-s\n" "${2}";
+	cp ${1} ${2};
+}
+
+function LCI_CPD () {
+	#printf "${LCI_MSG} | copy %-s\n" "${1}";
+	#printf "${LCI_MSG} |   to %-s\n" "${2}";
+	cp -r ${1} ${2};
+}
+
+
+LCI_PRINT_SEPARATOR
+LCI_PRINT_SEPARATOR
+LCI_PRINT_HEADER "Linaro"
+
+LCI_PRINT_SEPARATOR
+LCI_PRINT_L1 "User environment"
+LCI_CHECKDIR "CFG_DEV_PATH"
+
+LCI_PRINT_SEPARATOR
+LCI_PRINT_L1 "OP-TEE components"
+LCI_CHECKDIR "TA_DEV_KIT_DIR"
+
+LCI_PRINT_SEPARATOR
+LCI_PRINT_L1 "Global Platform testsuite"
+LCI_CHECKVAR "CFG_GP_TESTSUITE_ENABLE"
+if [ ${CFG_GP_TESTSUITE_ENABLE} == "y" ]; then
+LCI_CHECKVAR "CFG_GP_API"
+LCI_CHECKDIR "CFG_GP_PACKAGE_PATH"
+LCI_CHECKDIR "CFG_GP_XSL_PACKAGE_PATH"
+fi
+
+LCI_PRINT_SEPARATOR
+if [ ${ERR} == 0 ]; then
+	if [ ! -f .conf ]; then
+	while true; do
+		echo -en "\n\t--> Is your TEE user environment setup correct [y/n] ? : "
+		read -p " " answer
+
+		case $answer in
+			[Nn]* ) YES=0; break;;
+			[Yy]* ) YES=1; break;;
+			* ) echo -e "Please enter yes or no.";;
+		esac
+	done
+
+	if [ ${YES} == 0 ]; then
+		if [ -f .conf ]; then
+			rm .conf;
+		fi
+		LCI_QUIT;
+	fi
+	touch .conf
+	fi
+
+else
+	LCI_QUIT;
+
+fi
diff --git a/scripts/enable_gp_testsuite.sh b/scripts/enable_gp_testsuite.sh
new file mode 100755
index 0000000..7712e38
--- /dev/null
+++ b/scripts/enable_gp_testsuite.sh
@@ -0,0 +1,358 @@
+#!/bin/bash
+
+# Initialization
+if [ -f .env ]; then
+. .env
+else
+echo -e " ERROR: .env NOT FOUND";
+echo -e " ERROR: .env must be at the same location as $0";
+exit 0;
+fi;
+
+LCI_PRINT_SEPARATOR
+LCI_PRINT_HEADER "Running `basename $0`"
+LCI_PRINT_SEPARATOR
+LCI_PRINT_HEADER "Enable Global Platform testsuite"
+LCI_PRINT_L1 "global platform package: ${CFG_GP_PACKAGE_PATH}"
+LCI_PRINT_L1 "stm package: ${CFG_GP_XSL_PACKAGE_PATH}"
+LCI_PRINT_L1 "GP api: ${CFG_GP_API}"
+
+LCI_PRINT_SEPARATOR
+echo -e "+ Install"
+echo -e "| Checking \"xalan\" tool ..."
+if [ "" = "`which xalan`" ]; then
+    echo -e "ERROR: \"xalan\" is not detected on the system. Please install it."
+    exit 1
+else
+    echo -e "OK: \"xalan\" is detected on the system."
+fi
+
+echo -e "| Processing ..."
+
+GP_XTEST_OUT_DIR="${CFG_DEV_PATH}/optee_test/host/xtest"
+export GP_XTEST_OUT_DIR
+GP_XTEST_IN_DIR="${GP_XTEST_OUT_DIR}/global_platform/${CFG_GP_API}"
+export GP_XTEST_IN_DIR
+
+GP_USERTA_DIR="${CFG_DEV_PATH}/optee_test/ta"
+export GP_USERTA_DIR
+
+echo -e "| Clean"
+RMFILELIST="adbg_case_declare.h adbg_entry_declare.h \
+		xtest_7000.c xtest_7500.c xtest_8000.c \
+		xtest_8500.c xtest_9000.c \
+		"
+for file in ${RMFILELIST}
+do
+	if [ -f ${GP_XTEST_OUT_DIR}/${file} ]; then
+		echo "${GP_XTEST_OUT_DIR}/${file} DELETED"
+		rm ${GP_XTEST_OUT_DIR}/$file
+	fi
+done
+
+echo -e "| Import"
+if [ ! -d ${GP_XTEST_IN_DIR} ]; then
+	mkdir -p ${GP_XTEST_IN_DIR}
+	fi
+rm ${GP_XTEST_IN_DIR}/*
+
+echo -e "   *.xml in \"${GP_XTEST_IN_DIR}\""
+find ${CFG_GP_PACKAGE_PATH}/packages -type f -name "*.xml" -exec bash -c '\
+									# echo -e "cp -p $0 ${GP_XTEST_IN_DIR}"; \
+									cp -p $0 ${GP_XTEST_IN_DIR}; \
+									' {} \;
+									
+echo -e "   *.xsl in \"${GP_XTEST_IN_DIR}\""
+find ${CFG_GP_XSL_PACKAGE_PATH}/packages -type f -name "*.xsl" -exec bash -c '\
+									# echo -e "cp -p $0 ${GP_XTEST_IN_DIR}"; \
+									cp -p $0 ${GP_XTEST_IN_DIR}; \
+									' {} \;
+
+echo -e "   TTAs in \"${GP_USERTA_DIR}\""
+find ${CFG_GP_PACKAGE_PATH}/TTAs -type d -name "code_files" -exec bash -c '\
+									if [ -d ${GP_USERTA_DIR}/GP_$(basename $(dirname $0)) ]; then \
+									# echo -e "rm ${GP_USERTA_DIR}/GP_$(basename $(dirname $0))/*" ;\
+									rm -rf ${GP_USERTA_DIR}/GP_$(basename $(dirname $0))/* ;\
+									else \
+									# echo -e "mkdir -p ${GP_USERTA_DIR}/GP_$(basename $(dirname $0))" ;\
+									mkdir -p ${GP_USERTA_DIR}/GP_$(basename $(dirname $0)) ;\
+									fi ;\
+									# echo -e "cp -p $0/* ${GP_USERTA_DIR}/GP_$(basename $(dirname $0))" ;\
+									cp -p $0/* ${GP_USERTA_DIR}/GP_$(basename $(dirname $0)) ;\
+									' {} \;
+
+find ${CFG_GP_XSL_PACKAGE_PATH}/TTAs -type d -name "code_files" -exec bash -c '\
+									# echo -e "cp -p $0/* ${GP_USERTA_DIR}/GP_$(basename $(dirname $0))" ;\
+									cp -p $0/* ${GP_USERTA_DIR}/GP_$(basename $(dirname $0)) ;\
+									' {} \;
+
+echo -e "| Generate"
+
+echo -e "   file \"${GP_XTEST_OUT_DIR}/adbg_case_declare.h\""
+xalan -in ${GP_XTEST_IN_DIR}/TEE.xml -xsl ${GP_XTEST_IN_DIR}/adbg_case_declare.xsl -out ${GP_XTEST_OUT_DIR}/adbg_case_declare.h
+
+echo -e "   file \"${GP_XTEST_OUT_DIR}/adbg_entry_declare.h\""
+xalan -in ${GP_XTEST_IN_DIR}/TEE.xml -xsl ${GP_XTEST_IN_DIR}/adbg_entry_declare.xsl -out ${GP_XTEST_OUT_DIR}/adbg_entry_declare.h
+
+echo -e "   file \"${GP_XTEST_OUT_DIR}/xtest_7000.c\""
+xalan -in ${GP_XTEST_IN_DIR}/TEE.xml -xsl ${GP_XTEST_IN_DIR}/TEE.xsl -out ${GP_XTEST_OUT_DIR}/xtest_7000.c
+
+echo -e "   file \"${GP_XTEST_OUT_DIR}/xtest_7500.c\""
+xalan -in ${GP_XTEST_IN_DIR}/TEE_DataStorage_API.xml -xsl ${GP_XTEST_IN_DIR}/TEE_DataStorage_API.xsl -out ${GP_XTEST_OUT_DIR}/xtest_7500.c
+
+echo -e "   file \"${GP_XTEST_OUT_DIR}/xtest_8000.c\""
+xalan -in ${GP_XTEST_IN_DIR}/TEE_Internal_API.xml -xsl ${GP_XTEST_IN_DIR}/TEE_Internal_API.xsl -out ${GP_XTEST_OUT_DIR}/xtest_8000.c
+
+echo -e "   file \"${GP_XTEST_OUT_DIR}/xtest_8500.c\""
+xalan -in ${GP_XTEST_IN_DIR}/TEE_TimeArithm_API.xml -xsl ${GP_XTEST_IN_DIR}/TEE_TimeArithm_API.xsl -out ${GP_XTEST_OUT_DIR}/xtest_8500.c
+
+echo -e "   file \"${GP_XTEST_OUT_DIR}/xtest_9000.c\""
+xalan -in ${GP_XTEST_IN_DIR}/TEE_Crypto_API.xml -xsl ${GP_XTEST_IN_DIR}/TEE_Crypto_API.xsl -out ${GP_XTEST_OUT_DIR}/xtest_9000.c
+
+
+echo -e "| Filtering (known failing/crashing test cases)"
+# Linaro
+TESTFILTERLIST="8058 8059"
+# STM Legacy
+TESTFILTERLIST="${TESTFILTERLIST} 6010"
+TESTFILTERLIST="${TESTFILTERLIST} 7038"
+TESTFILTERLIST="${TESTFILTERLIST} 7522 7538 7540 7546 7557"
+TESTFILTERLIST="${TESTFILTERLIST} 7559 7577 7641 7642 7643"
+TESTFILTERLIST="${TESTFILTERLIST} 7644 7686"
+TESTFILTERLIST="${TESTFILTERLIST} 8025 8030 8066"
+TESTFILTERLIST="${TESTFILTERLIST} 8614 8643 8644 8673 8674"
+TESTFILTERLIST="${TESTFILTERLIST} 9001 9053 9072 9073 9074"
+TESTFILTERLIST="${TESTFILTERLIST} 9075 9079 9080 9081 9082"
+TESTFILTERLIST="${TESTFILTERLIST} 9085 9086 9087 9088 9090"
+TESTFILTERLIST="${TESTFILTERLIST} 9091 9092 9093 9095 9096"
+TESTFILTERLIST="${TESTFILTERLIST} 9098 9099 9104 9109 9110"
+TESTFILTERLIST="${TESTFILTERLIST} 9111 9145 9146 9147 9148"
+TESTFILTERLIST="${TESTFILTERLIST} 9149 9160 9174 9181 9182"
+TESTFILTERLIST="${TESTFILTERLIST} 9183 9184 9186 9187 9195"
+TESTFILTERLIST="${TESTFILTERLIST} 9196 9204 9239"
+
+for TEST in ${TESTFILTERLIST}
+do
+
+	echo -en " ${TEST}"
+
+	sed -i 's|^ADBG_SUITE_ENTRY(XTEST_TEE_'${TEST}', NULL)|/\*ADBG_SUITE_ENTRY(XTEST_TEE_'${TEST}', NULL)\*/|g' ${GP_XTEST_OUT_DIR}/xtest_main.c
+	sed -i 's|    ADBG_SUITE_ENTRY(XTEST_TEE_'${TEST}', NULL)\\|    /\*ADBG_SUITE_ENTRY(XTEST_TEE_'${TEST}', NULL)\*/\\|g' ${GP_XTEST_OUT_DIR}/adbg_entry_declare.h
+	
+	# If this is the first/last test case we must move the init/deinit functions
+	# and we add descriptions about why the test case is disabled.
+	case ${TEST} in
+	    "7038") #766
+	        sed -i 's|/\*d3-ee-b1\*/|/*\n* XTEST test case 7038 fails.\n* TEEC_InvokeCommand: unexpected value 0xffff0000, expected 0xffff0002.\n*/\n\n/\*d3-ee-b1\*/|g' ${GP_XTEST_OUT_DIR}/xtest_7000.c
+		    sed -i '752 c\    xtest_tee_deinit();\n' ${GP_XTEST_OUT_DIR}/xtest_7000.c
+	    ;;
+	    "7522")
+	        sed -i 's|/\*9d-76-9b\*/|/*\n* XTEST test case 7522 fails.\n* Invoke_Simple_Function_Object: unexpected value 0xffff3024, expected 0xffff0008.\n*/\n\n/\*9d-76-9b\*/|g' ${GP_XTEST_OUT_DIR}/xtest_7500.c
+	    ;;
+	    "7538")
+	        sed -i 's|/\*9d-56-33\*/|/*\n* XTEST test case 7538 fails.\n* Invoke_InitObjectAndAttributes: unexpected value 0xf004, expected 0x0.\n*/\n\n/\*9d-56-33\*/|g' ${GP_XTEST_OUT_DIR}/xtest_7500.c
+	    ;;
+	    "7540")
+	        sed -i 's|/\*9d-32-98\*/|/*\n* XTEST test case 7540 fails.\n* Invoke_InitObjectAndAttributes: unexpected value 0xf004, expected 0x0.\n*/\n\n/\*9d-32-98\*/|g' ${GP_XTEST_OUT_DIR}/xtest_7500.c
+	    ;;
+	    "7546")
+	        sed -i 's|/\*9d-2a-87\*/|/*\n* XTEST test case 7546 fails.\n* Invoke_GenerateKey: unexpected value 0xffff3024, expected 0xffff0006.\n*/\n\n/\*9d-2a-87\*/|g' ${GP_XTEST_OUT_DIR}/xtest_7500.c
+	    ;;
+	    "7557")
+	        sed -i 's|/\*9d-0c-88\*/|/*\n* XTEST test case 7557 fails.\n* Invoke_GenerateKey: unexpected value 0x0, expected 0xffff0006.\n*/\n\n/\*9d-0c-88\*/|g' ${GP_XTEST_OUT_DIR}/xtest_7500.c
+	    ;;
+	    "7559")
+	        sed -i 's|/\*9d-36-04\*/|/*\n* XTEST test case 7559 fails.\n* Invoke_InitObjectAndAttributes: unexpected value 0xf004, expected 0x0.\n*/\n\n/\*9d-36-04\*/|g' ${GP_XTEST_OUT_DIR}/xtest_7500.c
+	    ;;
+	    "7577")
+	        sed -i 's|/\*9d-ab-23\*/|/*\n* XTEST test case 7577 fails.\n* Invoke_InitObjectAndAttributes: unexpected value 0xffff3024, expected 0xffff0008.\n*/\n\n/\*9d-ab-23\*/|g' ${GP_XTEST_OUT_DIR}/xtest_7500.c
+	    ;;
+	    "7641")
+	        sed -i 's|/\*9d-bd-3c\*/|/*\n* XTEST test case 7641 fails.\n* Expressions in xml_datastorage_api.h on line 610 and line 613 are false.\n*/\n\n/\*9d-bd-3c\*/|g' ${GP_XTEST_OUT_DIR}/xtest_7500.c
+	    ;;
+	    "7642")
+	        sed -i 's|/\*9d-30-71\*/|/*\n* XTEST test case 7642 fails.\n* Expressions in xml_datastorage_api.h on line 610 and line 613 are false.\n*/\n\n/\*9d-30-71\*/|g' ${GP_XTEST_OUT_DIR}/xtest_7500.c
+	    ;;
+	    "7643")
+	        sed -i 's|/\*9d-e4-58\*/|/*\n* XTEST test case 7643 fails.\n* Expressions in xml_datastorage_api.h on line 610 and line 613 are false.\n*/\n\n/\*9d-e4-58\*/|g' ${GP_XTEST_OUT_DIR}/xtest_7500.c
+	    ;;
+	    "7644")
+	        sed -i 's|/\*9d-30-58\*/|/*\n* XTEST test case 7644 fails.\n* Expressions in xml_datastorage_api.h on line 610 and line 613 are false.\n*/\n\n/\*9d-30-58\*/|g' ${GP_XTEST_OUT_DIR}/xtest_7500.c
+	    ;;
+	    "7686")
+	        sed -i 's|/\*9d-7e-c2\*/|/*\n* XTEST test case 7686 fails.\n* Invoke_SeekWriteReadObjectData: unexpected value 0xffff3024, expected 0xffff300f.\n* Expression in xml_datastorage_api.h on line 610 is false.\n*/\n\n/\*9d-7e-c2\*/|g' ${GP_XTEST_OUT_DIR}/xtest_7500.c
+	    ;;
+	    "8025")
+	        sed -i 's|/\*a7-85-e1\*/|/*\n* XTEST test case 8025 fails.\n* Expression in xml_internal_api.h on line 333 is false.\n*/\n\n/\*a7-85-e1\*/|g' ${GP_XTEST_OUT_DIR}/xtest_8000.c
+	    ;;
+	    "8030")
+	        sed -i 's|/\*a7-54-fd\*/|/*\n* XTEST test case 8030 fails.\n* TEEC_OpenSession: unexpected value 0xffff0008, expected 0x0.\n* Expression in xml_internal_api.h on line 450 is false.\n\* Invoke_ProcessInvokeTAOpenSession: unexpected value 0xffff0000, expected 0xffff000d.\n*/\n\n/\*a7-54-fd\*/|g' ${GP_XTEST_OUT_DIR}/xtest_8000.c
+	    ;;
+	    "8066")
+	        sed -i 's|/\*a7-fe-d5\*/|/*\n* XTEST test case 8066 fails.\n* Invoke_GetCancellationFlag_RequestedCancel: unexpected value 0xffff0000, expected 0xffff0002.\n* Test case is crashing the XTEST application.\n*/\n\n/\*a7-fe-d5\*/|g' ${GP_XTEST_OUT_DIR}/xtest_8000.c
+	        sed -i '1076 c\    xtest_tee_deinit();\n' ${GP_XTEST_OUT_DIR}/xtest_8000.c
+	
+	        # SED seems to have a bug i.e. it doesn't recognize the pattern below (the second one)
+	        # The same two patterns are used in three other files and they work (files xtest_7000.c,
+	        # xtest_8500.c and xtest_9000.c), but here in file xtest_8000.c the pattern doesn't work.
+	        # That's why we use direct insertion on specific line.
+	
+	        #sed -i '{ N; N; s|\n/\*\n\* XTEST test case 8066 fails\.|    xtest_tee_deinit();\n\}\n\n/\*\n\* XTEST test case 8066 fails\.|g; }' ${GP_XTEST_OUT_DIR}/xtest_8000.c
+	        #sed -i -e '{ N; s|}\n    xtest_tee_deinit();|    xtest_tee_deinit();|g; }' ${GP_XTEST_OUT_DIR}/xtest_8000.c
+	    ;;
+	    "8614")
+	        sed -i 's|/\*ce-cb-68\*/|/*\n* XTEST test case 8614 fails.\n* Invoke_Simple_Function: unexpected value 0xffff0010, expected 0xffff300f.\n*/\n\n/\*ce-cb-68\*/|g' ${GP_XTEST_OUT_DIR}/xtest_8500.c
+	    ;;
+	    "8643")
+	        sed -i 's|/\*ce-22-81\*/|/*\n* XTEST test case 8643 fails.\n* Expression in xml_timearithm_api.h on line 1426 is false.\n*/\n\n/\*ce-22-81\*/|g' ${GP_XTEST_OUT_DIR}/xtest_8500.c
+	    ;;
+	    "8644")
+	        sed -i 's|/\*ce-8d-59\*/|/*\n* XTEST test case 8644 fails.\n* Expression in xml_timearithm_api.h on line 1426 is false.\n*/\n\n/\*ce-8d-59\*/|g' ${GP_XTEST_OUT_DIR}/xtest_8500.c
+	    ;;
+	    "8673")
+	        sed -i 's|/\*ce-41-5f\*/|/*\n* XTEST test case 8673 fails.\n* Test case is crashing the XTEST application.\n*/\n\n/\*ce-41-5f\*/|g' ${GP_XTEST_OUT_DIR}/xtest_8500.c
+	    ;;
+	    "8674")
+	        sed -i 's|/\*ce-06-ce\*/|/*\n* XTEST test case 8674 fails.\n* Invoke_Simple_Function: unexpected value 0xffff0000, expected 0x0.\n*/\n\n/\*ce-06-ce\*/|g' ${GP_XTEST_OUT_DIR}/xtest_8500.c
+	        sed -i '2549 c\    xtest_tee_deinit();\n' ${GP_XTEST_OUT_DIR}/xtest_8500.c
+	    ;;
+	    "9001")
+	        sed -i 's|/\*3b-4a-c9\*/|/*\n* XTEST test case 9001 fails.\n* Invoke_Crypto_AllocateOperation: unexpected value 0xffff000a, expected 0xffff000c.\n*/\n\n/\*3b-4a-c9\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	        sed -i '246 c\    xtest_tee_deinit();\n' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9053")
+	        sed -i 's|/\*b6-54-fb\*/|/*\n* XTEST test case 9053 fails.\n* Invoke_Crypto_CipherDoFinal: unexpected value: 0xffff3024, expected 0x0.\n* xml_crypto_api.h at line 1775: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*b6-54-fb\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9072")
+	        sed -i 's|/\*50-b6-4b\*/|/*\n* XTEST test case 9072 fails.\n* Invoke_Crypto_AsymmetricVerifyDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-b6-4b\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9073")
+	        sed -i 's|/\*50-74-49\*/|/*\n* XTEST test case 9073 fails.\n* Invoke_Crypto_AsymmetricVerifyDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-74-49\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9074")
+	        sed -i 's|/\*50-a8-d1\*/|/*\n* XTEST test case 9074 fails.\n* Invoke_Crypto_AsymmetricSignDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-a8-d1\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9075")
+	        sed -i 's|/\*50-98-71\*/|/*\n* XTEST test case 9075 fails.\n* Invoke_Crypto_AsymmetricSignDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-98-71\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9079")
+	        sed -i 's|/\*50-36-58\*/|/*\n* XTEST test case 9079 fails.\n* Invoke_Crypto_AsymmetricVerifyDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-36-58\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9080")
+	        sed -i 's|/\*50-26-cd\*/|/*\n* XTEST test case 9080 fails.\n* Invoke_Crypto_AsymmetricVerifyDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-26-cd\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9081")
+	        sed -i 's|/\*50-d4-60\*/|/*\n* XTEST test case 9081 fails.\n* Invoke_Crypto_AsymmetricSignDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-d4-60\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9082")
+	        sed -i 's|/\*50-05-a3\*/|/*\n* XTEST test case 9082 fails.\n* Invoke_Crypto_AsymmetricSignDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-05-a3\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9085")
+	        sed -i 's|/\*50-13-32\*/|/*\n* XTEST test case 9085 fails.\n* Invoke_Crypto_AsymmetricVerifyDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-13-32\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9086")
+	        sed -i 's|/\*50-1d-5e\*/|/*\n* XTEST test case 9086 fails.\n* Invoke_Crypto_AsymmetricVerifyDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-1d-5e\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9087")
+	        sed -i 's|/\*50-5f-15\*/|/*\n* XTEST test case 9087 fails.\n* Invoke_Crypto_AsymmetricSignDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-5f-15\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9088")
+	        sed -i 's|/\*50-51-f3\*/|/*\n* XTEST test case 9088 fails.\n* Invoke_Crypto_AsymmetricSignDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-51-f3\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9090")
+	        sed -i 's|/\*50-47-84\*/|/*\n* XTEST test case 9090 fails.\n* Invoke_Crypto_AsymmetricVerifyDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-47-84\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9091")
+	        sed -i 's|/\*50-2a-85\*/|/*\n* XTEST test case 9091 fails.\n* Invoke_Crypto_AsymmetricVerifyDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-2a-85\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9092")
+	        sed -i 's|/\*50-df-71\*/|/*\n* XTEST test case 9092 fails.\n* Invoke_Crypto_AsymmetricSignDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-df-71\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9093")
+	        sed -i 's|/\*50-72-8d\*/|/*\n* XTEST test case 9093 fails.\n* Invoke_Crypto_AsymmetricSignDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-72-8d\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9095")
+	        sed -i 's|/\*50-bf-2e\*/|/*\n* XTEST test case 9095 fails.\n* Invoke_Crypto_AsymmetricVerifyDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-bf-2e\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9096")
+	        sed -i 's|/\*50-9c-c4\*/|/*\n* XTEST test case 9096 fails.\n* Invoke_Crypto_AsymmetricVerifyDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-9c-c4\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9098")
+	        sed -i 's|/\*50-e1-70\*/|/*\n* XTEST test case 9098 fails.\n* Invoke_Crypto_AsymmetricVerifyDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-e1-70\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9099")
+	        sed -i 's|/\*50-8d-0a\*/|/*\n* XTEST test case 9099 fails.\n* Invoke_Crypto_AsymmetricSignDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-8d-0a\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9104")
+	        sed -i 's|/\*50-7f-d0\*/|/*\n* XTEST test case 9104 fails.\n* Invoke_Crypto_AsymmetricSignDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-7f-d0\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9109")
+	        sed -i 's|/\*50-d0-59\*/|/*\n* XTEST test case 9109 fails.\n* Invoke_Crypto_AsymmetricVerifyDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-d0-59\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9110")
+	        sed -i 's|/\*50-31-23\*/|/*\n* XTEST test case 9110 fails.\n* Invoke_Crypto_AsymmetricVerifyDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-31-23\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9111")
+	        sed -i 's|/\*50-a9-9d\*/|/*\n* XTEST test case 9111 fails.\n* Invoke_Crypto_AsymmetricSignDigest: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-a9-9d\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9145")
+	        sed -i 's|/\*50-2b-7a\*/|/*\n* XTEST test case 9145 fails.\n* Invoke_Crypto_AsymmetricEncrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AllocateOperation: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-2b-7a\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9146")
+	        sed -i 's|/\*50-e7-57\*/|/*\n* XTEST test case 9146 fails.\n* Invoke_Crypto_AsymmetricEncrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_InitObjectWithKeys: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AllocateOperation: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_SetOperationKey: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AsymmetricDecrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-e7-57\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9147")
+	        sed -i 's|/\*50-49-d8\*/|/*\n* XTEST test case 9147 fails.\n* Invoke_Crypto_AsymmetricEncrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_InitObjectWithKeys: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AllocateOperation: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_SetOperationKey: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AsymmetricDecrypt: unexpected value 0xffff3024, expected 0xffff0010.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-49-d8\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9148")
+	        sed -i 's|/\*50-51-15\*/|/*\n* XTEST test case 9148 fails.\n* Invoke_Crypto_AsymmetricEncrypt: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-51-15\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9149")
+	        sed -i 's|/\*50-6d-0e\*/|/*\n* XTEST test case 9149 fails.\n* Invoke_Crypto_AsymmetricEncrypt: unexpected value 0xffff3024, expected 0xffff0010.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-6d-0e\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9160")
+	        sed -i 's|/\*50-83-fe\*/|/*\n* XTEST test case 9160 fails.\n* xml_crypto_api.h at line 1778: saved_cipher_update.buffer has an unexpected content.\n*/\n\n/\*50-83-fe\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9174")
+	        sed -i 's|/\*50-7b-4d\*/|/*\n* XTEST test case 9174 fails.\n* Invoke_Crypto_AEInit: unexpected value 0x0, expected 0xffff3024.\n*/\n\n/\*50-7b-4d\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9181")
+	        sed -i 's|/\*50-63-e5\*/|/*\n* XTEST test case 9181 fails.\n* Invoke_Crypto_AsymmetricEncrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_InitObjectWithKeys: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AllocateOperation: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_SetOperationKey: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AsymmetricDecrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-63-e5\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9182")
+	        sed -i 's|/\*50-ef-f0\*/|/*\n* XTEST test case 9182 fails.\n* Invoke_Crypto_AsymmetricEncrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_InitObjectWithKeys: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AllocateOperation: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_SetOperationKey: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AsymmetricDecrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-ef-f0\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9183")
+	        sed -i 's|/\*50-eb-0f\*/|/*\n* XTEST test case 9183 fails.\n* Invoke_Crypto_AsymmetricEncrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_InitObjectWithKeys: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AllocateOperation: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_SetOperationKey: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AsymmetricDecrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-eb-0f\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9184")
+	        sed -i 's|/\*50-94-06\*/|/*\n* XTEST test case 9184 fails.\n* Invoke_Crypto_AsymmetricEncrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_InitObjectWithKeys: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AllocateOperation: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_SetOperationKey: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-94-06\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9186")
+	        sed -i 's|/\*50-94-15\*/|/*\n* XTEST test case 9186 fails.\n* Invoke_Crypto_AsymmetricEncrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_InitObjectWithKeys: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AllocateOperation: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_SetOperationKey: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AsymmetricDecrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-94-15\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9187")
+	        sed -i 's|/\*50-ba-29\*/|/*\n* XTEST test case 9187 fails.\n* Invoke_Crypto_AsymmetricEncrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_InitObjectWithKeys: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AllocateOperation: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-ba-29\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9195")
+	        sed -i 's|/\*50-35-98\*/|/*\n* XTEST test case 9195 fails.\n* Invoke_Crypto_AsymmetricEncrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_InitObjectWithKeys: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AllocateOperation: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_SetOperationKey: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AsymmetricDecrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-35-98\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9196")
+	        sed -i 's|/\*50-6f-dd\*/|/*\n* XTEST test case 9196 fails.\n* Invoke_Crypto_AsymmetricEncrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_InitObjectWithKeys: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AllocateOperation: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_SetOperationKey: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_AsymmetricDecrypt: unexpected value 0xffff3024, expected 0x0.\n* Invoke_Crypto_FreeAllKeysAndOperations: unexpected value 0xffff3024, expected 0x0.\n*/\n\n/\*50-6f-dd\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9204")
+	        sed -i 's|/\*50-ea-af\*/|/*\n* XTEST test case 9204 fails.\n* Invoke_Crypto_MACInit: unexpected value 0x0, expected 0xffff3024.\n*/\n\n/\*50-ea-af\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	    "9239")
+	        sed -i 's|/\*50-4a-56\*/|/*\n* XTEST test case 9239 fails.\n* xml_crypto_api.h at line 635: unexpected value 0x60000, expected 0xc0000.\n*/\n\n/\*50-4a-56\*/|g' ${GP_XTEST_OUT_DIR}/xtest_9000.c
+	    ;;
+	esac
+
+done
+
+cd ${CDIR}
+
+echo -e ""
+echo -e "--------------------------------------------------------------------------"
+echo -e "+ `basename $0` finished";
+echo -e "--------------------------------------------------------------------------"
diff --git a/scripts/patch_gp_testsuite.sh b/scripts/patch_gp_testsuite.sh
new file mode 100755
index 0000000..8e15b13
--- /dev/null
+++ b/scripts/patch_gp_testsuite.sh
@@ -0,0 +1,242 @@
+#!/bin/bash
+
+cd $(dirname $0)
+export CDIR=${PWD}
+
+# Initialization
+if [ -f .env ]; then
+. .env
+else
+echo -e " ERROR: .env NOT FOUND";
+echo -e " ERROR: .env must be at the same location as $0";
+exit 0;
+fi;
+
+if [ ${CFG_GP_TESTSUITE_ENABLE} == "y" ]; then
+	cd ${CDIR}
+	echo ${CDIR}
+	./enable_gp_testsuite.sh
+
+	# openssl .h file installation
+	if [ -d /usr/include/openssl ]; then
+		forgpdir=${CFG_DEV_PATH}/optee_test/host/xtest/for_gp/
+		mkdir -p ${forgpdir}/include/openssl ${forgpdir}/lib
+		[ -d /usr/include/x86_64-linux-gnu/openssl ] && LCI_CPD /usr/include/x86_64-linux-gnu/openssl ${forgpdir}/include
+		for f in /usr/include/openssl/*.h ; do
+			LCI_CPF $f ${forgpdir}/include/openssl
+		done
+	else
+		LCI_PRINT_WARNING "ERROR: '/usr/include/openssl' NOT FOUND"
+		exit;
+	fi;
+
+	if [ "${CFG_ARM32}" = "y" ]; then
+		LCI_CPF ${CFG_DEV_PATH}/optee_test/host/lib/armv7/libcrypto.a ${forgpdir}/lib
+	else
+		LCI_CPF ${CFG_DEV_PATH}/optee_test/host/lib/armv8/libcrypto.a ${forgpdir}/lib
+	fi
+fi
+
+LCI_PRINT_SEPARATOR
+LCI_PRINT_HEADER "Running `basename $0`"
+LCI_PRINT_SEPARATOR
+LCI_PRINT_HEADER "Patch Global Platform testsuite"
+LCI_PRINT_L1 "global platform package: ${CFG_GP_PACKAGE_PATH}"
+LCI_PRINT_L1 "stm package: ${CFG_GP_XSL_PACKAGE_PATH}"
+LCI_PRINT_L1 "GP api: ${CFG_GP_API}"
+
+if [ $(basename ${CFG_GP_PACKAGE_PATH}) == "TEE_Initial_Configuration-Test_Suite_v1_1_0_4-2014_11_07" ]; then
+	LCI_PRINT_L1 "GP package $(basename ${CFG_GP_PACKAGE_PATH}) SUPPORTED"
+
+
+else
+	LCI_FORCE_QUIT "$(basename ${CFG_GP_PACKAGE_PATH}) NOT SUPPORTED"
+ 	exit;
+
+fi
+
+
+LCI_PRINT_SEPARATOR
+LCI_PRINT_L1 "Patch directories structure"
+if [ ! -d ${CFG_GP_PACKAGE_PATH}/packages ]; then
+	LCI_PRINT_MSG "mkdir -p ${CFG_GP_PACKAGE_PATH}/packages"
+	mkdir -p ${CFG_GP_PACKAGE_PATH}/packages
+fi
+
+DIRLIST="ClientAPI Crypto DataStorage Time_Arithmetical TrustedCoreFw"
+for dir in ${DIRLIST}
+	do
+		if [ -d ${CFG_GP_PACKAGE_PATH}/${dir} ]; then
+			LCI_PRINT_MSG "mv ${CFG_GP_PACKAGE_PATH}/${dir}"
+			LCI_PRINT_MSG "to ${CFG_GP_PACKAGE_PATH}/packages"
+			mv ${CFG_GP_PACKAGE_PATH}/${dir} \
+			${CFG_GP_PACKAGE_PATH}/packages
+		fi
+done
+
+LCI_PRINT_SEPARATOR
+LCI_PRINT_L1 "Patch XML files"
+
+declare -A ARRAY
+function LCI_PATCHFILE () {
+	#printf "${LCI_MSG} | apply patch %-s\n" "${2}";
+	#printf "${LCI_MSG} |          on %-s\n" "${1}";
+	if [ ! -e ${1}.orig ]; then
+		patch -N -b ${1} < ${2};
+	else
+	LCI_PRINT_WARNING "${1}.orig ALREADY EXISTS"
+	LCI_PRINT_WARNING "PATCH NOT APPLIED"
+	fi
+}
+
+function LCI_PATCH () {
+	LCI_PATCH_CHECKFILE ${1}
+	LCI_PATCH_CHECKFILE "${2}"
+	LCI_PATCHFILE  ${1} ${2}
+}
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/packages/ClientAPI/xmlStable/TEE.xml" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/packages/ClientAPI/xmlpatch/v1_1_0_4-2014_11_07/TEE.xml.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/packages/Crypto/xmlStable/TEE_Crypto_API.xml" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/packages/Crypto/xmlpatch/v1_1_0_4-2014_11_07/TEE_Crypto_API.xml.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/packages/DataStorage/xmlStable/TEE_DataStorage_API.xml" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/packages/DataStorage/xmlpatch/v1_1_0_4-2014_11_07/TEE_DataStorage_API.xml.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/packages/Time_Arithmetical/xmlStable/TEE_TimeArithm_API.xml" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/packages/Time_Arithmetical/xmlpatch/v1_1_0_4-2014_11_07/TEE_TimeArithm_API.xml.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/packages/TrustedCoreFw/xmlStable/TEE_Internal_API.xml" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/packages/TrustedCoreFw/xmlpatch/v1_1_0_4-2014_11_07/TEE_Internal_API.xml.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+LCI_PRINT_SEPARATOR
+LCI_PRINT_L1 "Patch TTAs files"
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TTA_Arithmetical/TTA_Arithmetical/code_files/TTA_Arithmetical.c" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_Arithmetical/code_patches/v1_1_0_4-2014_11_07/TTA_Arithmetical.c.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TTA_Arithmetical/TTA_Arithmetical/code_files/TTA_Arithmetical_protocol.h" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_Arithmetical/code_patches/v1_1_0_4-2014_11_07/TTA_Arithmetical_protocol.h.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_check_OpenSession_with_4_parameters/code_files/TTA_check_OpenSession_with_4_parameters_protocol.h" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_check_OpenSession_with_4_parameters/code_patches/v1_1_0_4-2014_11_07/TTA_check_OpenSession_with_4_parameters_protocol.h.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_testingClientAPI/code_files/TTA_testingClientAPI_protocol.h" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_testingClientAPI/code_patches/v1_1_0_4-2014_11_07/TTA_testingClientAPI_protocol.h.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_answerSuccessTo_OpenSession_Invoke/code_files/TTA_answerSuccessTo_OpenSession_Invoke_protocol.h" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_answerSuccessTo_OpenSession_Invoke/code_patches/v1_1_0_4-2014_11_07/TTA_answerSuccessTo_OpenSession_Invoke_protocol.h.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_answerErrorTo_OpenSession/code_files/TTA_answerErrorTo_OpenSession_protocol.h" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_answerErrorTo_OpenSession/code_patches/v1_1_0_4-2014_11_07/TTA_answerErrorTo_OpenSession_protocol.h.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_answerErrorTo_Invoke/code_files/TTA_answerErrorTo_Invoke_protocol.h" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_ClientAPI/TTA_answerErrorTo_Invoke/code_patches/v1_1_0_4-2014_11_07/TTA_answerErrorTo_Invoke_protocol.h.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TTA_Crypto/TTA_Crypto/code_files/TTA_Crypto.c" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_Crypto/code_patches/v1_1_0_4-2014_11_07/TTA_Crypto.c.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TTA_Crypto/TTA_Crypto/code_files/TTA_Crypto_protocol.h" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_Crypto/code_patches/v1_1_0_4-2014_11_07/TTA_Crypto_protocol.h.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TTA_DS/TTA_DS/code_files/TTA_DS_protocol.h" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_DS/code_patches/v1_1_0_4-2014_11_07/TTA_DS_protocol.h.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TTA_DS/TTA_DS/code_files/TTA_DS.c" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_DS/code_patches/v1_1_0_4-2014_11_07/TTA_DS.c.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TEE_include/tee_internal_api.h"
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TEE_include/code_patches/v1_1_0_4-2014_11_07/tee_internal_api.h.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF_ICA/code_files/TTA_TCF_ICA_protocol.h" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF_ICA/code_patches/v1_1_0_4-2014_11_07/TTA_TCF_ICA_protocol.h.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF_MultipleInstanceTA/code_files/TTA_TCF_MultipleInstanceTA_protocol.h" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF_MultipleInstanceTA/code_patches/v1_1_0_4-2014_11_07/TTA_TCF_MultipleInstanceTA_protocol.h.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF/code_files/TTA_TCF.h" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF/code_patches/v1_1_0_4-2014_11_07/TTA_TCF.h.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF_SingleInstanceTA/code_files/TTA_TCF_SingleInstanceTA_protocol.h" 
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_TCF/TTA_TCF_SingleInstanceTA/code_patches/v1_1_0_4-2014_11_07/TTA_TCF_SingleInstanceTA_protocol.h.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TTA_Time/TTA_Time/code_files/TTA_Time_protocol.h"
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_Time/code_patches/v1_1_0_4-2014_11_07/TTA_Time_protocol.h.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_GP_PACKAGE_PATH}/TTAs/TTA_Time/TTA_Time/code_files/TTA_Time.c"
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/TTAs/TTA_Time/code_patches/v1_1_0_4-2014_11_07/TTA_Time.c.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+LCI_PRINT_L1 "Patch HOST files"
+
+ARRAY=(["FILE"]="${CFG_OPTEE_TEST_PATH}/host/xtest/xtest_6000.c"
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/host/xtest/xtest_6000.c.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_OPTEE_TEST_PATH}/host/xtest/xtest_main.c"
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/host/xtest/xtest_main.c.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_OPTEE_TEST_PATH}/host/xtest/xtest_test.c"
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/host/xtest/xtest_test.c.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+ARRAY=(["FILE"]="${CFG_OPTEE_TEST_PATH}/host/xtest/xtest_test.h"
+	["PATCH"]="${CFG_GP_XSL_PACKAGE_PATH}/host/xtest/xtest_test.h.patch")
+LCI_PATCH  ${ARRAY[FILE]} ${ARRAY[PATCH]}
+LCI_PRINT_SEPARATOR
+
+cd ${CDIR}
+
+LCI_PRINT_SEPARATOR
+LCI_PRINT_HEADER "`basename $0` finished";
+LCI_PRINT_SEPARATOR