ta: add subkey test TAs

A few subkeys and TAs are added to test different subkey cases. For
details on the subkeys see subkey_notes.txt

Reviewed-by: Jerome Forissier <jerome.forissier@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
diff --git a/ta/CMakeLists.txt b/ta/CMakeLists.txt
index b8df063..044d41a 100644
--- a/ta/CMakeLists.txt
+++ b/ta/CMakeLists.txt
@@ -23,4 +23,6 @@
 	INTERFACE bti_test/include
 	INTERFACE supp_plugin/include
 	INTERFACE large/include
+	INTERFACE subkey1/include
+	INTERFACE subkey2/include
 )
diff --git a/ta/identity_subkey2.bin b/ta/identity_subkey2.bin
new file mode 100644
index 0000000..0730389
--- /dev/null
+++ b/ta/identity_subkey2.bin
Binary files differ
diff --git a/ta/identity_subkey2.pem b/ta/identity_subkey2.pem
new file mode 100644
index 0000000..f6f81be
--- /dev/null
+++ b/ta/identity_subkey2.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC763IBu3IGr6Ik
+EQ05B3A48R2WO9RLNV8TM6hDgGdF9h4CBN6yDbYoxK54hqz1vKKIiAuWxsdKEt2z
+ac3kWC/91fH7pSsTZERiW8NZHGm0I3fecp8N+85rlQUKBa1Ejbaa3yWm3UZYOg2r
+jFrGg3nJiFEI2ORsfYongfvAbWZh22rjD9fSOaBPZQTXRpNKt+qbYxXYj/l26YKS
+yi7lgd6nGqqQklDXPToFOZqXxrKGVmtH7YPFpOs5MbVHxV7nESELLAMlRG/w00+l
+ytj9l11LSYQM5W1Y7xxCPKc0jZ7oEMSg2dqazKXQRLmnXqYFzxzVtn0wsmb6e3HF
+qy5ak6QNAgMBAAECggEARD5k0Kw55KOzxlVK8AL7hjJKBF0F46omNNr1qE3hM08F
+5sXN+etw061ZjvuZpEQ04lBFpSPbC9N+H8G0u9Aq3YvsrO52jjxDeVTJxHrFCF45
+EdeeW32uoPMlOVaGbfbo8aVIDykcer3aaQo3jRACEmYmx4e8rImKun5B5sfT/oUI
+6Jp8i5zRF2M+yqczmqRbonqoRVa9WWyGT8pxfm5uaYg7/BFE9p6XfwTE8Y1qYyxI
+r19uGIqnS5mR3E2qPyizs4DkabMWmKNflOr0Y28h7TgEqwTcJaSM7wDrSlQnCNF4
+FGdKOY/omRHtxx2z9bd9XQ0fjZmloxIBLO3fX4pUIQKBgQDnq7x87j/aFk8HlAi6
+KzmtxPTu/bwxiLvcNDtDz6l7K1+icl1kuQ6zQP827u7IS/l2MRbkred70Dt5OGOs
+XWysCQZM9kl8Cq7uXJ7vnu9xT+2R5v7sqaqgVAY8hxW4zFtGrrfT8sZgRWTXILBR
+UlsWfy2EwqAwNA7FB0AdJMVWdwKBgQDPp3+zoQOIkM+ImdR0gp+kzI2H1WqvO25y
+3WNy8xTqfy/qNlST6tuCDzfZ6S8KqaP+V+QomgMjRjAsggGCNiRMFtYHpTgLm9wC
+XnwYtv3qIMUqTmnpH3hCPQ7PEEKedfht9p1D1DtBZsrQncqFtoORFqisawvlwDuU
+kzstSlqGmwKBgExhQ5CQ4D5f0oh2FvaCH88Zu4M75psSMJWmJs/xnDf+kdY2DHKT
+zLPuvvX2ioVA/ysnfhvA9ivM+H67x6jhWF3Tz9756DpcL1Zo9QGdjeX26yWKWgve
+2GFpsnCsPM4jmghQvEzFov/EgT2oClmVZHCjV3eIz1V1JFVzUYEKSYF7AoGAXR9S
+h223tfCrASlrO2ywxyjsd3PfygGvAFgEFzKnuJmdFT2UJFl4YxUMCO8np3J4FsG3
+kfWvXoxFYlBS+N/q2yyKgxc20Q3uVimlITg/GlXj1Zsgp+jy91GGaJl0Jrfk1vt3
+f0mX4TaF0ZRRlDFLQy+UKO5AgaH5liGIskDb4+0CgYBQJgTr44ymDm7bBvtOtNhn
+DLUPV1DtllwlCE8SJDuK26xyru63+/jzHTR0ofRod4uzHVhLNkVnYvtB1qxqXuLw
+9eNkxZoIFmTrtaE8YSCqloGPMCPzKtsj1XwwzxJL09bnP7/2hhI+B21Z1bx38ChE
+WDZvUMeBvqiaIph64XI8yQ==
+-----END PRIVATE KEY-----
diff --git a/ta/mid_level_subkey.bin b/ta/mid_level_subkey.bin
new file mode 100644
index 0000000..bf33282
--- /dev/null
+++ b/ta/mid_level_subkey.bin
Binary files differ
diff --git a/ta/mid_level_subkey.pem b/ta/mid_level_subkey.pem
new file mode 100644
index 0000000..cf1757c
--- /dev/null
+++ b/ta/mid_level_subkey.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCl1sCRM+jO0pnx
+71oh6TZWIc0B3tHd0Sf3ncAGTPe7nuTzkCoGSKAL2O0i3URoJy1TkJFUAnTt5Shc
+K0SrKQekEK20619VJyD/STVbYJlu9K1j0hOf0rsthAlig/eYBk6Der0wyRqoR/Mv
+eVUv6B+hs+rHy9RpeZmNuf2GVVTcdkWw/hJyw1Tt7u+f7uYG2x2wEp7AmaHaLXN5
+aFogoCEa6lwSYa42e4DpCB0+Yn6Rl6HY5tB//4TgXLUOeY8cGmoAF6QqEfuSFDLs
+C/NdzAdIZqWzmDXEnt/ct9+g1PspuMgdgYztvIXQR7eHOjYnVoNgqkwH4zGZ8UPd
+T1s5aAnFAgMBAAECgf9hi4gWkz8d1dKizxRjvWWoTC03aFy37Z3n7ZK+QoNs0khf
+K/kqiEQtr7otnQDKUsL2+HmPI1ijykkp9bcO3cQk2yiOcOfZFABCaY5IIwm7WGTV
+UA8y1GWBq2dPmU/uzJopCSNXcEgG6HPnVieiuvSCqJhBxEtrji0nYrrbVzE/2Eo3
+vVesMCiCNRCOKk48nL/mvg0I2cCC64HgEmPEPrtSw5onW9qffr0U3T9v+YIh03cU
+XZX50zb7WahO8zc8dElG7pYPBBLkNj+OJaf+uY8CLZtCXvZeMR0PStcclRY4jSNM
+gTdthynRwaUv8YvP/AvmO7di364Q5210IvJMhYECgYEAwDclFy+8lWoF5cvfW353
+okUItN24kiiFFUYcPL59Cn47gYj2OpHfDHgAhIOwrQRUewTRe7FnHv3ZspbIA3Wo
+3thcl/ktzjV5qJ+OGfx3oLhhKT3QE4yM8kAf0qsn+FgonTmzhmk7A4/moZeAVJKc
+K08ZO/NdhEseIPfM2LAktkECgYEA3N7mPLCCZqCODYml4raXv+XuiW1cpBSGPVsn
+08Vq9EO0awJ2iw6ZCJWYizIiDMr2oVQmArdWMDANerrFzDUOrw7GktolyJ6fzssH
+td5F+uJX9h+nneuSvEyiJr7ujysfkRwxGrkaicUp9cVNT+UpHgtX1PCxodVartfy
+0Z6i2oUCgYBjmW9/tz2p0nlh3KVNPJfzHoBnb+he294x6tVg6HfUgxqEgZrNOJ7y
+UBA8mhxnWrIH2LRPutorZfBzKMxVdpddeZFpMjX4/x6eMKcqcfbu8ftuqlfyeUbj
+lDSpLgUVG2FYLvkGceqhauRf4SgfKqT/kAoMVYukrGPdQ2oC8irjwQKBgQClsASR
+ZGv+JtVJbIfnocgGqaseps6HO+pT3qzq3T7VjHCskcVxnXrJiMdNLEeEx0DqVyDI
+itX6AiIqfi/hd6/TPMdT5JfRfsUtMPtQwDRI90C7HpX0DoMeBHLjk/mLpvLgPYDM
+pi01SpWmi+LqW2NT6XhzAjiOyWlknhTGkTVjrQKBgQCJVvrVYee7hlpBakLXxD2b
+IxKqN10sFvyYqRIzFpPN7gfYbAdMR+XXqeZNrELuUfu7tc+/owxEsD4/acU11Iw2
++20qRTXPXQPDpojBBZO6wjF2gDac1orASVLgs5ty5wq1GUdNJ08X5hdHEJBhjLFq
+c/T1OLxYSMmMqDQ1pqYsYA==
+-----END PRIVATE KEY-----
diff --git a/ta/subkey1/Makefile b/ta/subkey1/Makefile
new file mode 100644
index 0000000..bc9378f
--- /dev/null
+++ b/ta/subkey1/Makefile
@@ -0,0 +1,8 @@
+BINARY =  5c206987-16a3-59cc-ab0f-64b9cfc9e758
+
+TA_SIGN_KEY = ../mid_level_subkey.pem
+TA_SUBKEY_BIN = ../mid_level_subkey.bin
+TA_SUBKEY_ARGS = --subkey $(TA_SUBKEY_BIN) --name subkey1_ta
+TA_SUBKEY_DEPS = $(TA_SUBKEY_BIN)
+
+include ../ta_common.mk
diff --git a/ta/subkey1/include/ta_subkey1.h b/ta/subkey1/include/ta_subkey1.h
new file mode 100644
index 0000000..b8a13d9
--- /dev/null
+++ b/ta/subkey1/include/ta_subkey1.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+/*
+ * Copyright (c) 2022, Linaro Limited
+ */
+
+#ifndef TA_SUBKEY1_H
+#define TA_SUBKEY1_H
+
+#define TA_SUBKEY1_UUID { 0x5c206987, 0x16a3, 0x59cc, \
+	{ 0xab, 0x0f, 0x64, 0xb9, 0xcf, 0xc9, 0xe7, 0x58 } }
+
+#endif /*TA_SUBKEY1_H */
diff --git a/ta/subkey1/include/user_ta_header_defines.h b/ta/subkey1/include/user_ta_header_defines.h
new file mode 100644
index 0000000..5c6e779
--- /dev/null
+++ b/ta/subkey1/include/user_ta_header_defines.h
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+/*
+ * Copyright (c) 2022, Linaro Limited
+ */
+
+#ifndef USER_TA_HEADER_DEFINES_H
+#define USER_TA_HEADER_DEFINES_H
+
+#include <ta_subkey1.h>
+#include <user_ta_header.h>
+
+#define TA_UUID TA_SUBKEY1_UUID
+
+#define TA_FLAGS	(TA_FLAG_MULTI_SESSION)
+#define TA_STACK_SIZE	(2 * 1024)
+#define TA_DATA_SIZE	(2 * 1024)
+
+#endif /*USER_TA_HEADER_DEFINES_H*/
diff --git a/ta/subkey1/sub.mk b/ta/subkey1/sub.mk
new file mode 100644
index 0000000..d5e3f32
--- /dev/null
+++ b/ta/subkey1/sub.mk
@@ -0,0 +1,2 @@
+global-incdirs-y += include
+srcs-y += ta_entry.c
diff --git a/ta/subkey1/ta_entry.c b/ta/subkey1/ta_entry.c
new file mode 100644
index 0000000..9699fc7
--- /dev/null
+++ b/ta/subkey1/ta_entry.c
@@ -0,0 +1,35 @@
+// SPDX-License-Identifier: BSD-2-Clause
+/*
+ * Copyright (c) 2022, Linaro Limited
+ */
+
+#include <ta_subkey1.h>
+#include <tee_internal_api.h>
+
+TEE_Result TA_CreateEntryPoint(void)
+{
+	return TEE_SUCCESS;
+}
+
+void TA_DestroyEntryPoint(void)
+{
+}
+
+TEE_Result TA_OpenSessionEntryPoint(uint32_t param_types __unused,
+				    TEE_Param params[4] __unused,
+				    void **session_ctx __unused)
+{
+	return TEE_SUCCESS;
+}
+
+void TA_CloseSessionEntryPoint(void *session_ctx __unused)
+{
+}
+
+TEE_Result TA_InvokeCommandEntryPoint(void *session_ctx __unused,
+				      uint32_t cmd_id __unused,
+				      uint32_t param_types __unused,
+				      TEE_Param params[4] __unused)
+{
+	return TEE_SUCCESS;
+}
diff --git a/ta/subkey2/Makefile b/ta/subkey2/Makefile
new file mode 100644
index 0000000..aaa3453
--- /dev/null
+++ b/ta/subkey2/Makefile
@@ -0,0 +1,8 @@
+BINARY =  a720ccbb-51da-417d-b82e-e5445d474a7a
+
+TA_SIGN_KEY = ../identity_subkey2.pem
+TA_SUBKEY_BIN = ../identity_subkey2.bin
+TA_SUBKEY_ARGS = --subkey $(TA_SUBKEY_BIN)
+TA_SUBKEY_DEPS = $(TA_SUBKEY_BIN)
+
+include ../ta_common.mk
diff --git a/ta/subkey2/include/ta_subkey2.h b/ta/subkey2/include/ta_subkey2.h
new file mode 100644
index 0000000..31e906d
--- /dev/null
+++ b/ta/subkey2/include/ta_subkey2.h
@@ -0,0 +1,12 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+/*
+ * Copyright (c) 2021, Linaro Limited
+ */
+
+#ifndef TA_SUBKEY2_H
+#define TA_SUBKEY2_H
+
+#define TA_SUBKEY2_UUID { 0xa720ccbb, 0x51da, 0x417d, \
+	{ 0xb8, 0x2e, 0xe5, 0x44, 0x5d, 0x47, 0x4a, 0x7a } }
+
+#endif /*TA_SUBKEY2_H */
diff --git a/ta/subkey2/include/user_ta_header_defines.h b/ta/subkey2/include/user_ta_header_defines.h
new file mode 100644
index 0000000..5409748
--- /dev/null
+++ b/ta/subkey2/include/user_ta_header_defines.h
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: BSD-2-Clause */
+/*
+ * Copyright (c) 2022, Linaro Limited
+ */
+
+#ifndef USER_TA_HEADER_DEFINES_H
+#define USER_TA_HEADER_DEFINES_H
+
+#include <ta_subkey2.h>
+#include <user_ta_header.h>
+
+#define TA_UUID TA_SUBKEY2_UUID
+
+#define TA_FLAGS	(TA_FLAG_MULTI_SESSION)
+#define TA_STACK_SIZE	(2 * 1024)
+#define TA_DATA_SIZE	(2 * 1024)
+
+#endif /*USER_TA_HEADER_DEFINES_H*/
diff --git a/ta/subkey2/sub.mk b/ta/subkey2/sub.mk
new file mode 100644
index 0000000..d5e3f32
--- /dev/null
+++ b/ta/subkey2/sub.mk
@@ -0,0 +1,2 @@
+global-incdirs-y += include
+srcs-y += ta_entry.c
diff --git a/ta/subkey2/ta_entry.c b/ta/subkey2/ta_entry.c
new file mode 100644
index 0000000..a88d70e
--- /dev/null
+++ b/ta/subkey2/ta_entry.c
@@ -0,0 +1,35 @@
+// SPDX-License-Identifier: BSD-2-Clause
+/*
+ * Copyright (c) 2022, Linaro Limited
+ */
+
+#include <ta_subkey2.h>
+#include <tee_internal_api.h>
+
+TEE_Result TA_CreateEntryPoint(void)
+{
+	return TEE_SUCCESS;
+}
+
+void TA_DestroyEntryPoint(void)
+{
+}
+
+TEE_Result TA_OpenSessionEntryPoint(uint32_t param_types __unused,
+				    TEE_Param params[4] __unused,
+				    void **session_ctx __unused)
+{
+	return TEE_SUCCESS;
+}
+
+void TA_CloseSessionEntryPoint(void *session_ctx __unused)
+{
+}
+
+TEE_Result TA_InvokeCommandEntryPoint(void *session_ctx __unused,
+				      uint32_t cmd_id __unused,
+				      uint32_t param_types __unused,
+				      TEE_Param params[4] __unused)
+{
+	return TEE_SUCCESS;
+}
diff --git a/ta/subkey_notes.txt b/ta/subkey_notes.txt
new file mode 100644
index 0000000..4e61d9f
--- /dev/null
+++ b/ta/subkey_notes.txt
@@ -0,0 +1,73 @@
+Subkey
+======
+
+A TA or a subkey can be signed with a subkey instead of the root key.  Here
+we're trying to describe the relationship between the different subkeys and
+keys used for the subkey test TAs.
+
+We start with a two level subkey hierachy to be able to test more when the
+subkey chain consist of more than a single subkey signed with the root key.
+
+The relationship of the different subkeys and TAs are as follows:
+root_key
+|-- identity_subkey2
+|   `-- subkey2_ta
+`-- top_level_subkey
+    `-- mid_level_subkey
+        `-- subkey1_ta
+
+The keys themselves where generated using:
+
+openssl genrsa -out top_level_subkey.pem
+openssl genrsa -out mid_level_subkey.pem
+openssl genrsa -out identity_subkey2.pem
+
+The top level subkey is signed with the root key using (where the UUID is
+generated):
+
+../../optee_os/scripts/sign_encrypt.py sign-subkey \
+	--uuid f04fa996-148a-453c-b037-1dcfbad120a6 \
+	--key ../../optee_os/keys/default_ta.pem --in top_level_subkey.pem \
+	--out top_level_subkey.bin --max-depth 4 --name-size 64 \
+	--subkey-version 1
+
+The mid level subkey has to have a UUID in the namespace of the top level
+level subkey. The UUID is determined as
+UUIDv5_SHA512(f04fa996-148a-453c-b037-1dcfbad120a6, "mid_level_subkey") =
+1a5948c5-1aa0-518c-86f4-be6f6a057b16
+where UUIDv5_SHA512() denotes the UUIDv5 scheme with SHA512 used instead of
+SHA1 and truncated to 20 bytes
+
+The sign script can do this with:
+
+../../optee_os/scripts/sign_encrypt.py subkey-uuid --in top_level_subkey.bin  \
+	--name mid_level_subkey
+Subkey UUID: f04fa996-148a-453c-b037-1dcfbad120a6
+Next subkey UUID: 1a5948c5-1aa0-518c-86f4-be6f6a057b16
+
+The mid level subkey is signed using:
+
+../../optee_os/scripts/sign_encrypt.py sign-subkey \
+	--uuid 1a5948c5-1aa0-518c-86f4-be6f6a057b16 \
+	--key top_level_subkey.pem --subkey top_level_subkey.bin \
+	--name-size 64 --subkey-version 1 \
+	--name mid_level_subkey \
+	--in mid_level_subkey.pem --out mid_level_subkey.bin
+
+The UUID of subkey1 TA is calculated using:
+
+../../optee_os/scripts/sign_encrypt.py subkey-uuid --in mid_level_subkey.bin  \
+	--name subkey1_ta
+Subkey UUID: f04fa996-148a-453c-b037-1dcfbad120a6
+Subkey UUID: 1a5948c5-1aa0-518c-86f4-be6f6a057b16
+Next subkey UUID: 5c206987-16a3-59cc-ab0f-64b9cfc9e758
+
+Subkey1 TA is signed as part of the build process.
+
+The identity_subkey2 subkey is signed using (where the UUID is generated):
+
+../../optee_os/scripts/sign_encrypt.py sign-subkey \
+	--uuid a720ccbb-51da-417d-b82e-e5445d474a7a \
+	--key ../../optee_os/keys/default_ta.pem --in identity_subkey2.pem \
+	--out identity_subkey2.bin --max-depth 0 --name-size 0 \
+	--subkey-version 1
diff --git a/ta/top_level_subkey.bin b/ta/top_level_subkey.bin
new file mode 100644
index 0000000..5e6d13d
--- /dev/null
+++ b/ta/top_level_subkey.bin
Binary files differ
diff --git a/ta/top_level_subkey.pem b/ta/top_level_subkey.pem
new file mode 100644
index 0000000..e24bb8f
--- /dev/null
+++ b/ta/top_level_subkey.pem
@@ -0,0 +1,28 @@
+-----BEGIN PRIVATE KEY-----
+MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQDrXwzAyWVRd2IV
+F42Ku+/GS/c5vipsNl8Ylqk+xZIXBi24pHh2nXaAdWfpI2n4H+WYjgZzPZsl8PZl
+4d597vc+HvS+oXT5Lpq6cS/q1AcPW7VUqdw4pCtqYvXycicV98aIfBM1VAnTV9oU
+0s+0YMOAnPcjdeXacFhOuLCC5BAzZLZb8YEO0sg5wFz0ltpscNHN/jh2MXMN0wJy
+WNAoLrenCpwoNVxTkkvkRjlH7TcJTiyBODCIanWoov64MwV/rAVWwyzaxf2HF0q5
+wzW5lblEgj2TcRTP9EASX9K0TzEMDdLbRfpUeA27crm8//liM6uxIkIKRxwFWkvo
+d/8+f9g3AgMBAAECggEAR1Wu4U0Ikoi6psbVJJtx/6jtXEhIxjQyXRroX3h0ntrG
+B6R9SAHQNP2gSRXtG4DbToGY7dtZhsXBf75VdthygZbTOWVotM7NoT0Ft0ecfiie
+y/KRJm+HIv6sKNc1BmDqgFoOXkbClZWWKGJ+Bd6f0f6AnnQwfiQ3d2BdSsZBLLm/
+/VpGJ+/z85+9ZRGgkgi73omMtMC7NJqgkCzQXo2rnnpczH5zr7CqWPN7YQsgD/Gg
+uOHMc+9Y3HOpn4CtxludDnG+DPfGzWZtjmQL/sGDb2GC1qJ6qwRjTCPAYWGfhkim
+wJSZRnWSeTKuOcNF9cqVawEfpgd3mn29Arfb67jlPQKBgQDvKTGBZlXeY/EbH3dl
+e1CDfPKv6y9cdvQ4MofmYwgkifpQ5vgzSiD0S8iRlclpRCdy1bQv87RhctyGQgIx
+vYx6vpElxH1EZur2AT3wAcsJqS0+iKyBgZb2qeAtuVdyHFUbvzkWPuOjiku296SB
+EgzNn8UG7WRhi0oGYpNS+bBOTQKBgQD78YywYlCDerQ5GlqP6mnro00bg6zjfPW6
+x3AjcsdxDbASC02ke253r9JIqvX6GyXnmtgND32ffk/jUARo0i8RGxGmzMuivglM
+3hVHOntszM4+NrUeOd1F5Uxi3dOZ2B0hRSJ82IWc9O2p+BmKt5oH6n9/76A1Zwd0
+q4yLlrNqkwKBgDHHiDdf3pWohcHYfdiQn0SPGFCHilcbp1+fHOxWRpacZY67VIQQ
+dOWEdJ3g6IhRmEhttNCaUDxMVRxY1u4Vfwz5Z2rOCCjZpyRHQ+YV6XX8UZ+HgSh/
+mbWDzFaYElx9CzX4SmCX/HfIzFOsHgCDikiubaswdEldXa4QjIujzw+tAoGARon5
+twS/wCAhx38ebf7Wyxe8pgB27nZ1ImdmeTZQqtGHQ3YQtgWtByud96SOHAlv0mmj
+Jfz5Uid+XIlxwptefC6VAZuDRDxqxC/Fy1yPZAXvlLGigiT3U/OAMIolDYTZmxAN
+OOEyf6B/zj/dft4q7R51ti80Lt960eqZ/hcigqsCgYAIPhl6ctItLaDJFgmYvBUf
+25woVlzIMgQlLo+YNhX/Kn+BFjOeKP2AlEa+4VJBoHLoBGeIjL1pWOGFYQf3hDWW
+BOnaeaVqmLGdvjWgWHMRiPL/HxWH1wVH/1SUfrzxwoYJMU6WUaeRH4qQR0vCqvTA
+vOIVA8zQNiPC6XXxTeICPw==
+-----END PRIVATE KEY-----