aboutsummaryrefslogtreecommitdiff
path: root/lib/libutee
diff options
context:
space:
mode:
authorJerome Forissier <jerome.forissier@linaro.org>2018-12-05 10:18:37 +0100
committerJérôme Forissier <jerome.forissier@linaro.org>2018-12-11 10:27:03 +0100
commite147a447ccc06a6eca7caeddae22dec06c168d19 (patch)
treed73cb9963e52ed4f3954806bd9d98ceb048bde04 /lib/libutee
parent7309438688816c1f650a5e3a9e12c15b5baf4551 (diff)
Remove Secure Element API support
There is probably no-one using the Secure Element API. We have never heard anyone asking questions about it, have no way to test it and we believe it is not even working right now. Therefore, remove it. - The reserved syscalls are still present, but return TEE_ERROR_NOT_SUPPORTED - The TEE_SE* functions (GlobalPlatform TEE Secure Element API, GPD_SPE_024) are removed from libutee.a and the header file tee_internal_se_api.h is removed as well Signed-off-by: Jerome Forissier <jerome.forissier@linaro.org> Acked-by: Joakim Bech <joakim.bech@linaro.org> Reviewed-by: Jens Wiklander <jens.wiklander@linaro.org> Acked-by: Etienne Carriere <etienne.carriere@linaro.org>
Diffstat (limited to 'lib/libutee')
-rw-r--r--lib/libutee/arch/arm/utee_syscalls_asm.S43
-rw-r--r--lib/libutee/include/tee_internal_se_api.h56
-rw-r--r--lib/libutee/include/tee_syscall_numbers.h32
-rw-r--r--lib/libutee/sub.mk1
-rw-r--r--lib/libutee/tee_api_se.c270
5 files changed, 17 insertions, 385 deletions
diff --git a/lib/libutee/arch/arm/utee_syscalls_asm.S b/lib/libutee/arch/arm/utee_syscalls_asm.S
index b2615971..7cf08942 100644
--- a/lib/libutee/arch/arm/utee_syscalls_asm.S
+++ b/lib/libutee/arch/arm/utee_syscalls_asm.S
@@ -121,47 +121,4 @@
UTEE_SYSCALL utee_cryp_obj_generate_key, \
TEE_SCN_CRYP_OBJ_GENERATE_KEY, 4
- UTEE_SYSCALL utee_se_service_open, TEE_SCN_SE_SERVICE_OPEN, 1
-
- UTEE_SYSCALL utee_se_service_close, TEE_SCN_SE_SERVICE_CLOSE, 1
-
- UTEE_SYSCALL utee_se_service_get_readers, \
- TEE_SCN_SE_SERVICE_GET_READERS, 3
-
- UTEE_SYSCALL utee_se_reader_get_prop, \
- TEE_SCN_SE_READER_GET_PROP, 2
-
- UTEE_SYSCALL utee_se_reader_get_name, \
- TEE_SCN_SE_READER_GET_NAME, 3
-
- UTEE_SYSCALL utee_se_reader_open_session, \
- TEE_SCN_SE_READER_OPEN_SESSION, 2
-
- UTEE_SYSCALL utee_se_reader_close_sessions, \
- TEE_SCN_SE_READER_CLOSE_SESSIONS, 1
-
- UTEE_SYSCALL utee_se_session_is_closed, \
- TEE_SCN_SE_SESSION_IS_CLOSED, 1
-
- UTEE_SYSCALL utee_se_session_get_atr, \
- TEE_SCN_SE_SESSION_GET_ATR, 3
-
- UTEE_SYSCALL utee_se_session_open_channel, \
- TEE_SCN_SE_SESSION_OPEN_CHANNEL, 5
-
- UTEE_SYSCALL utee_se_session_close, \
- TEE_SCN_SE_SESSION_CLOSE, 1
-
- UTEE_SYSCALL utee_se_channel_select_next, \
- TEE_SCN_SE_CHANNEL_SELECT_NEXT, 1
-
- UTEE_SYSCALL utee_se_channel_get_select_resp, \
- TEE_SCN_SE_CHANNEL_GET_SELECT_RESP, 3
-
- UTEE_SYSCALL utee_se_channel_transmit, \
- TEE_SCN_SE_CHANNEL_TRANSMIT, 5
-
- UTEE_SYSCALL utee_se_channel_close, \
- TEE_SCN_SE_CHANNEL_CLOSE, 1
-
UTEE_SYSCALL utee_cache_operation, TEE_SCN_CACHE_OPERATION, 3
diff --git a/lib/libutee/include/tee_internal_se_api.h b/lib/libutee/include/tee_internal_se_api.h
deleted file mode 100644
index 094da70f..00000000
--- a/lib/libutee/include/tee_internal_se_api.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/* SPDX-License-Identifier: BSD-2-Clause */
-/*
- * Copyright (c) 2014, Linaro Limited
- */
-
-/* Based on GP TEE Secure Element API Specification Version 1.00 */
-#ifndef TEE_INTERNAL_SE_API_H
-#define TEE_INTERNAL_SE_API_H
-
-#include <tee_api_defines.h>
-#include <tee_api_types.h>
-
-TEE_Result TEE_SEServiceOpen(TEE_SEServiceHandle *seServiceHandle);
-
-void TEE_SEServiceClose(TEE_SEServiceHandle seServiceHandle);
-
-TEE_Result TEE_SEServiceGetReaders(
- TEE_SEServiceHandle seServiceHandle,
- TEE_SEReaderHandle *seReaderHandleList,
- size_t *seReaderHandleListLen);
-
-void TEE_SEReaderGetProperties(TEE_SEReaderHandle seReaderHandle,
- TEE_SEReaderProperties *readerProperties);
-
-TEE_Result TEE_SEReaderGetName(TEE_SEReaderHandle seReaderHandle,
- char *readerName, size_t *readerNameLen);
-
-TEE_Result TEE_SEReaderOpenSession(TEE_SEReaderHandle seReaderHandle,
- TEE_SESessionHandle *seSessionHandle);
-
-void TEE_SEReaderCloseSessions(TEE_SEReaderHandle seReaderHandle);
-
-TEE_Result TEE_SESessionGetATR(TEE_SESessionHandle seSessionHandle,
- void *atr, size_t *atrLen);
-
-TEE_Result TEE_SESessionIsClosed(TEE_SESessionHandle seSessionHandle);
-
-void TEE_SESessionClose(TEE_SESessionHandle seSessionHandle);
-
-TEE_Result TEE_SESessionOpenBasicChannel(TEE_SESessionHandle seSessionHandle,
- TEE_SEAID *seAID, TEE_SEChannelHandle *seChannelHandle);
-
-TEE_Result TEE_SESessionOpenLogicalChannel(TEE_SESessionHandle seSessionHandle,
- TEE_SEAID *seAID, TEE_SEChannelHandle *seChannelHandle);
-
-TEE_Result TEE_SEChannelSelectNext(TEE_SEChannelHandle seChannelHandle);
-
-TEE_Result TEE_SEChannelGetSelectResponse(TEE_SEChannelHandle seChannelHandle,
- void *response, size_t *responseLen);
-
-TEE_Result TEE_SEChannelTransmit(TEE_SEChannelHandle seChannelHandle,
- void *command, size_t commandLen,
- void *response, size_t *responseLen);
-
-void TEE_SEChannelClose(TEE_SEChannelHandle seChannelHandle);
-#endif
diff --git a/lib/libutee/include/tee_syscall_numbers.h b/lib/libutee/include/tee_syscall_numbers.h
index 0e3afd9f..82d429b3 100644
--- a/lib/libutee/include/tee_syscall_numbers.h
+++ b/lib/libutee/include/tee_syscall_numbers.h
@@ -61,21 +61,23 @@
#define TEE_SCN_STORAGE_OBJ_TRUNC 52
#define TEE_SCN_STORAGE_OBJ_SEEK 53
#define TEE_SCN_CRYP_OBJ_GENERATE_KEY 54
-#define TEE_SCN_SE_SERVICE_OPEN 55
-#define TEE_SCN_SE_SERVICE_CLOSE 56
-#define TEE_SCN_SE_SERVICE_GET_READERS 57
-#define TEE_SCN_SE_READER_GET_PROP 58
-#define TEE_SCN_SE_READER_GET_NAME 59
-#define TEE_SCN_SE_READER_OPEN_SESSION 60
-#define TEE_SCN_SE_READER_CLOSE_SESSIONS 61
-#define TEE_SCN_SE_SESSION_IS_CLOSED 62
-#define TEE_SCN_SE_SESSION_GET_ATR 63
-#define TEE_SCN_SE_SESSION_OPEN_CHANNEL 64
-#define TEE_SCN_SE_SESSION_CLOSE 65
-#define TEE_SCN_SE_CHANNEL_SELECT_NEXT 66
-#define TEE_SCN_SE_CHANNEL_GET_SELECT_RESP 67
-#define TEE_SCN_SE_CHANNEL_TRANSMIT 68
-#define TEE_SCN_SE_CHANNEL_CLOSE 69
+/* Deprecated Secure Element API syscalls return TEE_ERROR_NOT_SUPPORTED */
+#define TEE_SCN_SE_SERVICE_OPEN__DEPRECATED 55
+#define TEE_SCN_SE_SERVICE_CLOSE__DEPRECATED 56
+#define TEE_SCN_SE_SERVICE_GET_READERS__DEPRECATED 57
+#define TEE_SCN_SE_READER_GET_PROP__DEPRECATED 58
+#define TEE_SCN_SE_READER_GET_NAME__DEPRECATED 59
+#define TEE_SCN_SE_READER_OPEN_SESSION__DEPRECATED 60
+#define TEE_SCN_SE_READER_CLOSE_SESSIONS__DEPRECATED 61
+#define TEE_SCN_SE_SESSION_IS_CLOSED__DEPRECATED 62
+#define TEE_SCN_SE_SESSION_GET_ATR__DEPRECATED 63
+#define TEE_SCN_SE_SESSION_OPEN_CHANNEL__DEPRECATED 64
+#define TEE_SCN_SE_SESSION_CLOSE__DEPRECATED 65
+#define TEE_SCN_SE_CHANNEL_SELECT_NEXT__DEPRECATED 66
+#define TEE_SCN_SE_CHANNEL_GET_SELECT_RESP__DEPRECATED 67
+#define TEE_SCN_SE_CHANNEL_TRANSMIT__DEPRECATED 68
+#define TEE_SCN_SE_CHANNEL_CLOSE__DEPRECATED 69
+/* End of deprecated Secure Element API syscalls */
#define TEE_SCN_CACHE_OPERATION 70
#define TEE_SCN_MAX 70
diff --git a/lib/libutee/sub.mk b/lib/libutee/sub.mk
index a9bb3279..c608d5d5 100644
--- a/lib/libutee/sub.mk
+++ b/lib/libutee/sub.mk
@@ -9,7 +9,6 @@ srcs-y += tee_api_arith.c
srcs-y += tee_api.c
srcs-y += tee_api_objects.c
srcs-y += tee_api_operations.c
-srcs-y += tee_api_se.c
srcs-y += tee_api_panic.c
srcs-y += tee_tcpudp_socket.c
srcs-y += tee_socket_pta.c
diff --git a/lib/libutee/tee_api_se.c b/lib/libutee/tee_api_se.c
deleted file mode 100644
index 6b3f026f..00000000
--- a/lib/libutee/tee_api_se.c
+++ /dev/null
@@ -1,270 +0,0 @@
-// SPDX-License-Identifier: BSD-2-Clause
-/*
- * Copyright (c) 2014, Linaro Limited
- */
-
-
-#include <tee_api.h>
-
-#include <tee_internal_se_api.h>
-#include <tee_internal_api_extensions.h>
-#include <utee_defines.h>
-#include <sys/queue.h>
-
-#include <utee_syscalls.h>
-
-#define VERIFY_HANDLE(handle, ops) \
-do { \
- if ((handle) == TEE_HANDLE_NULL) \
- TEE_Panic(0); \
- ret = (ops); \
- if (ret == TEE_ERROR_BAD_PARAMETERS) \
- TEE_Panic(0); \
-} while (0)
-
-TEE_Result TEE_SEServiceOpen(
- TEE_SEServiceHandle *seServiceHandle)
-{
- TEE_Result ret;
- uint32_t s;
-
- if (seServiceHandle == NULL)
- TEE_Panic(0);
-
- ret = utee_se_service_open(&s);
- if (ret == TEE_SUCCESS)
- *seServiceHandle = (TEE_SEServiceHandle)(uintptr_t)s;
- return ret;
-}
-
-void TEE_SEServiceClose(
- TEE_SEServiceHandle seServiceHandle)
-{
- TEE_Result ret;
-
- VERIFY_HANDLE(seServiceHandle,
- utee_se_service_close((unsigned long)seServiceHandle));
-
-}
-
-TEE_Result TEE_SEServiceGetReaders(
- TEE_SEServiceHandle seServiceHandle,
- TEE_SEReaderHandle *seReaderHandleList,
- size_t *seReaderHandleListLen)
-{
- TEE_Result ret = TEE_SUCCESS;
-
- if (seReaderHandleList == NULL ||
- seReaderHandleListLen == NULL)
- TEE_Panic(0);
- else {
- uint64_t rl_len = *seReaderHandleListLen;
- uint32_t rl[rl_len];
- size_t n;
-
- VERIFY_HANDLE(seServiceHandle,
- utee_se_service_get_readers(
- (unsigned long)seServiceHandle, rl, &rl_len));
- if (ret != TEE_SUCCESS)
- return ret;
- for (n = 0; n < rl_len; n++)
- seReaderHandleList[n] =
- (TEE_SEReaderHandle)(uintptr_t)rl[n];
- *seReaderHandleListLen = rl_len;
- }
- return ret;
-}
-
-void TEE_SEReaderGetProperties(TEE_SEReaderHandle seReaderHandle,
- TEE_SEReaderProperties *readerProperties)
-{
- TEE_Result ret;
- uint32_t prop;
-
- VERIFY_HANDLE(seReaderHandle,
- utee_se_reader_get_prop((unsigned long)seReaderHandle, &prop));
-
- readerProperties->sePresent = !!(prop & UTEE_SE_READER_PRESENT);
- readerProperties->teeOnly = !!(prop & UTEE_SE_READER_TEE_ONLY);
- readerProperties->selectResponseEnable =
- !!(prop & UTEE_SE_READER_SELECT_RESPONE_ENABLE);
-}
-
-TEE_Result TEE_SEReaderGetName(TEE_SEReaderHandle seReaderHandle,
- char *readerName, size_t *readerNameLen)
-{
- TEE_Result ret;
- uint64_t nl;
-
- if (readerName == NULL || readerNameLen == NULL ||
- *readerNameLen == 0)
- TEE_Panic(0);
-
- nl = *readerNameLen;
- VERIFY_HANDLE(seReaderHandle,
- utee_se_reader_get_name((unsigned long)seReaderHandle,
- readerName, &nl));
- *readerNameLen = nl;
-
- return ret;
-}
-
-TEE_Result TEE_SEReaderOpenSession(TEE_SEReaderHandle seReaderHandle,
- TEE_SESessionHandle *seSessionHandle)
-{
- TEE_Result ret;
- uint32_t s;
-
- if (seSessionHandle == NULL)
- TEE_Panic(0);
-
- VERIFY_HANDLE(seReaderHandle,
- utee_se_reader_open_session((unsigned long)seReaderHandle, &s));
- if (ret == TEE_SUCCESS)
- *seSessionHandle = (TEE_SESessionHandle)(uintptr_t)s;
- return ret;
-}
-
-
-void TEE_SEReaderCloseSessions(
- TEE_SEReaderHandle seReaderHandle)
-{
- TEE_Result ret;
-
- VERIFY_HANDLE(seReaderHandle,
- utee_se_reader_close_sessions((unsigned long)seReaderHandle));
-}
-
-TEE_Result TEE_SESessionGetATR(TEE_SESessionHandle seSessionHandle,
- void *atr, size_t *atrLen)
-{
- TEE_Result ret;
- uint64_t al;
-
- if (atr == NULL || atrLen == NULL || *atrLen == 0)
- TEE_Panic(0);
-
- al = *atrLen;
- VERIFY_HANDLE(seSessionHandle,
- utee_se_session_get_atr((unsigned long)seSessionHandle,
- atr, &al));
- *atrLen = al;
- return ret;
-}
-
-TEE_Result TEE_SESessionIsClosed(TEE_SESessionHandle seSessionHandle)
-{
- TEE_Result ret;
-
- VERIFY_HANDLE(seSessionHandle,
- utee_se_session_is_closed((unsigned long)seSessionHandle));
- return ret;
-}
-
-void TEE_SESessionClose(TEE_SESessionHandle seSessionHandle)
-{
- TEE_Result ret;
-
- VERIFY_HANDLE(seSessionHandle,
- utee_se_session_close((unsigned long)seSessionHandle));
-}
-
-TEE_Result TEE_SESessionOpenBasicChannel(TEE_SESessionHandle seSessionHandle,
- TEE_SEAID *seAID, TEE_SEChannelHandle *seChannelHandle)
-{
- TEE_Result ret;
- uint32_t s;
- const void *p = NULL;
- size_t l = 0;
-
- if (seChannelHandle == NULL)
- TEE_Panic(0);
-
- if (seAID) {
- p = seAID->buffer;
- l = seAID->bufferLen;
- }
- VERIFY_HANDLE(seSessionHandle,
- utee_se_session_open_channel((unsigned long)seSessionHandle,
- false, p, l, &s));
- if (ret == TEE_SUCCESS)
- *seChannelHandle = (TEE_SEChannelHandle)(uintptr_t)s;
- return ret;
-}
-
-TEE_Result TEE_SESessionOpenLogicalChannel(TEE_SESessionHandle seSessionHandle,
- TEE_SEAID *seAID, TEE_SEChannelHandle *seChannelHandle)
-{
- TEE_Result ret;
- uint32_t s;
- const void *p = NULL;
- size_t l = 0;
-
- if (seChannelHandle == NULL)
- TEE_Panic(0);
-
- if (seAID) {
- p = seAID->buffer;
- l = seAID->bufferLen;
- }
- VERIFY_HANDLE(seSessionHandle,
- utee_se_session_open_channel((unsigned long)seSessionHandle,
- true, p, l, &s));
- if (ret == TEE_SUCCESS)
- *seChannelHandle = (TEE_SEChannelHandle)(uintptr_t)s;
- return ret;
-}
-
-TEE_Result TEE_SEChannelSelectNext(TEE_SEChannelHandle seChannelHandle)
-{
- TEE_Result ret;
-
- VERIFY_HANDLE(seChannelHandle,
- utee_se_channel_select_next((unsigned long)seChannelHandle));
- return ret;
-}
-
-TEE_Result TEE_SEChannelGetSelectResponse(TEE_SEChannelHandle seChannelHandle,
- void *response, size_t *responseLen)
-{
- TEE_Result ret;
- uint64_t rl;
-
- if (!responseLen)
- TEE_Panic(0);
-
- rl = *responseLen;
- VERIFY_HANDLE(seChannelHandle,
- utee_se_channel_get_select_resp((unsigned long)seChannelHandle,
- response, &rl));
- if (ret == TEE_SUCCESS)
- *responseLen = rl;
- return ret;
-}
-
-TEE_Result TEE_SEChannelTransmit(TEE_SEChannelHandle seChannelHandle,
- void *command, size_t commandLen,
- void *response, size_t *responseLen)
-{
- TEE_Result ret;
- uint64_t rl;
-
- if (!responseLen)
- TEE_Panic(0);
-
- rl = *responseLen;
- VERIFY_HANDLE(seChannelHandle,
- utee_se_channel_transmit((unsigned long)seChannelHandle,
- command, commandLen, response, &rl));
- if (ret == TEE_SUCCESS)
- *responseLen = rl;
- return ret;
-}
-
-void TEE_SEChannelClose(TEE_SEChannelHandle seChannelHandle)
-{
- TEE_Result ret;
-
- VERIFY_HANDLE(seChannelHandle,
- utee_se_channel_close((unsigned long)seChannelHandle));
-}