diff options
Diffstat (limited to 'lib/libutee')
-rw-r--r-- | lib/libutee/arch/arm/utee_syscalls_asm.S | 43 | ||||
-rw-r--r-- | lib/libutee/include/tee_internal_se_api.h | 56 | ||||
-rw-r--r-- | lib/libutee/include/tee_syscall_numbers.h | 32 | ||||
-rw-r--r-- | lib/libutee/sub.mk | 1 | ||||
-rw-r--r-- | lib/libutee/tee_api_se.c | 270 |
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)); -} |