1 /* 2 * Copyright (c) 2013-2019 Huawei Technologies Co., Ltd. All rights reserved. 3 * Copyright (c) 2020-2021 Huawei Device Co., Ltd. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without modification, 6 * are permitted provided that the following conditions are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright notice, this list of 9 * conditions and the following disclaimer. 10 * 11 * 2. Redistributions in binary form must reproduce the above copyright notice, this list 12 * of conditions and the following disclaimer in the documentation and/or other materials 13 * provided with the distribution. 14 * 15 * 3. Neither the name of the copyright holder nor the names of its contributors may be used 16 * to endorse or promote products derived from this software without specific prior written 17 * permission. 18 * 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 21 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 23 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 24 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 25 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 26 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 27 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 28 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 29 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 30 */ 31 32 #include <linux/types.h> 33 34 #ifndef _TEEK_CLIENT_CONSTANTS_H_ 35 #define _TEEK_CLIENT_CONSTANTS_H_ 36 37 enum GlobalServiceCmdId { 38 GLOBAL_CMD_ID_INVALID = 0x0, 39 GLOBAL_CMD_ID_BOOT_ACK = 0x1, 40 GLOBAL_CMD_ID_OPEN_SESSION = 0x2, 41 GLOBAL_CMD_ID_CLOSE_SESSION = 0x3, 42 /* Global Task dynamically load secure applications */ 43 GLOBAL_CMD_ID_LOAD_SECURE_APP = 0x4, 44 /* Global Task determine whether to load a secure application */ 45 GLOBAL_CMD_ID_NEED_LOAD_APP = 0x5, 46 GLOBAL_CMD_ID_REGISTER_AGENT = 0x6, 47 GLOBAL_CMD_ID_UNREGISTER_AGENT = 0x7, 48 GLOBAL_CMD_ID_REGISTER_NOTIFY_MEMORY = 0x8, 49 GLOBAL_CMD_ID_UNREGISTER_NOTIFY_MEMORY = 0x9, 50 GLOBAL_CMD_ID_INIT_CONTENT_PATH = 0xa, /* Global Task init content path */ 51 /* Global Task free content path */ 52 GLOBAL_CMD_ID_TERMINATE_CONTENT_PATH = 0xb, 53 GLOBAL_CMD_ID_ALLOC_EXCEPTION_MEM = 0xc, 54 GLOBAL_CMD_ID_TEE_TIME = 0xd, 55 GLOBAL_CMD_ID_TEE_INFO = 0xe, 56 GLOBAL_CMD_ID_REGISTER_RDR_MEM = 0xf, 57 GLOBAL_CMD_ID_KILL_TASK = 0x10, /* Global Task Kill session */ 58 GLOBAL_CMD_ID_ADJUST_TIME = 0x12, /* TIME adjust */ 59 GLOBAL_CMD_ID_SET_CA_HASH = 0x13, /* set ca hash info */ 60 GLOBAL_CMD_ID_SET_BUILD_VERSION = 0x14, /* set the build version */ 61 /* get session key for encrypting dialog */ 62 GLOBAL_CMD_ID_GET_SESSION_SECURE_PARAMS = 0x16, 63 GLOBAL_CMD_ID_REGISTER_MAILBOX = 0x17, 64 GLOBAL_CMD_ID_DUMP_MEMINFO = 0x1a, 65 66 /* this cmd will be used to service no ca handle cmd */ 67 GLOBAL_CMD_ID_SET_SERVE_CMD = 0x1b, 68 GLOBAL_CMD_ID_ADD_DYNAMIC_ION = 0x1c, 69 GLOBAL_CMD_ID_DEL_DYNAMIC_ION = 0x1d, 70 GLOBAL_CMD_ID_LOAD_SECURE_APP_ION = 0x1e, 71 GLOBAL_CMD_ID_LATE_INIT = 0x20, 72 GLOBAL_CMD_ID_GET_TEE_VERSION = 0x22, 73 GLOBAL_CMD_ID_UNKNOWN = 0x7FFFFFFE, 74 GLOBAL_CMD_ID_MAX = 0x7FFFFFFF 75 }; 76 77 // Return Codes 78 enum TeecResult { 79 TEEC_SUCCESS = 0x0, 80 TEEC_ERROR_INVALID_CMD = 0x1, 81 TEEC_ERROR_SERVICE_NOT_EXIST = 0x2, 82 TEEC_ERROR_SESSION_NOT_EXIST = 0x3, 83 TEEC_ERROR_SESSION_MAXIMUM, /* security service session is full */ 84 TEEC_ERROR_REGISTER_EXIST_SERVICE, /* register exist service */ 85 TEEC_ERROR_TAGET_DEAD_FATAL, /* security service Global error,(Global is the basic of all services) */ 86 TEEC_ERROR_READ_DATA, /* read file fail */ 87 TEEC_ERROR_WRITE_DATA, /* write file fail */ 88 TEEC_ERROR_TRUNCATE_OBJECT, /* trancate file fail */ 89 TEEC_ERROR_SEEK_DATA, /* seek file fail */ 90 TEEC_ERROR_RENAME_OBJECT, /* renme file fail */ 91 TEEC_ERROR_TRUSTED_APP_LOAD_ERROR, /* load security app fail */ 92 TEEC_ERROR_GENERIC = 0xFFFF0000, 93 TEEC_ERROR_ACCESS_DENIED = 0xFFFF0001, 94 TEEC_ERROR_CANCEL = 0xFFFF0002, 95 TEEC_ERROR_ACCESS_CONFLICT = 0xFFFF0003, 96 TEEC_ERROR_EXCESS_DATA = 0xFFFF0004, 97 TEEC_ERROR_BAD_FORMAT = 0xFFFF0005, 98 TEEC_ERROR_BAD_PARAMETERS = 0xFFFF0006, 99 TEEC_ERROR_BAD_STATE = 0xFFFF0007, 100 TEEC_ERROR_ITEM_NOT_FOUND = 0xFFFF0008, 101 TEEC_ERROR_NOT_IMPLEMENTED = 0xFFFF0009, 102 TEEC_ERROR_NOT_SUPPORTED = 0xFFFF000A, 103 TEEC_ERROR_NO_DATA = 0xFFFF000B, 104 TEEC_ERROR_OUT_OF_MEMORY = 0xFFFF000C, 105 TEEC_ERROR_BUSY = 0xFFFF000D, 106 TEEC_ERROR_COMMUNICATION = 0xFFFF000E, 107 TEEC_ERROR_SECURITY = 0xFFFF000F, 108 TEEC_ERROR_SHORT_BUFFER = 0xFFFF0010, 109 TEEC_PENDING = 0xFFFF2000, 110 TEEC_PENDING2 = 0xFFFF2001, 111 TEE_ERROR_TAGET_DEAD = 0xFFFF3024, 112 TEE_ERROR_GT_DEAD = 0xFFFF3124, 113 TEEC_ERROR_MAC_INVALID = 0xFFFF3071, 114 TEEC_CLIENT_INTR = 0xFFFF4000, 115 TEEC_ERROR_CA_AUTH_FAIL = 0xFFFFCFE5, 116 TEE_ERROR_AUDIT_FAIL = 0xFFFF9112, 117 }; 118 119 // Return Code Origins 120 enum TEEC_ReturnCodeOrigin { 121 TEEC_ORIGIN_API = 0x1, 122 TEEC_ORIGIN_COMMS = 0x2, 123 TEEC_ORIGIN_TEE = 0x3, 124 TEEC_ORIGIN_TRUSTED_APP = 0x4, 125 TEEC_ORIGIN_TRUSTED_APP_TUI = 0x5, 126 }; 127 128 // Shared Memory Control 129 enum TEEC_SharedMemCtl { 130 TEEC_MEM_INPUT = 0x1, 131 TEEC_MEM_OUTPUT = 0x2, 132 TEEC_MEM_INOUT = 0x3, 133 }; 134 135 // API Parameter Types 136 enum TEEC_ParamType { 137 TEEC_NONE = 0x0, 138 TEEC_VALUE_INPUT = 0x01, 139 TEEC_VALUE_OUTPUT = 0x02, 140 TEEC_VALUE_INOUT = 0x03, 141 TEEC_MEMREF_TEMP_INPUT = 0x05, 142 TEEC_MEMREF_TEMP_OUTPUT = 0x06, 143 TEEC_MEMREF_TEMP_INOUT = 0x07, 144 TEEC_ION_INPUT = 0x08, 145 TEEC_ION_SGLIST_INPUT = 0x09, 146 TEEC_MEMREF_WHOLE = 0xc, 147 TEEC_MEMREF_PARTIAL_INPUT = 0xd, 148 TEEC_MEMREF_PARTIAL_OUTPUT = 0xe, 149 TEEC_MEMREF_PARTIAL_INOUT = 0xf 150 }; 151 152 enum TEE_ParamType { 153 TEE_PARAM_TYPE_NONE = 0x0, 154 TEE_PARAM_TYPE_VALUE_INPUT = 0x1, 155 TEE_PARAM_TYPE_VALUE_OUTPUT = 0x2, 156 TEE_PARAM_TYPE_VALUE_INOUT = 0x3, 157 TEE_PARAM_TYPE_MEMREF_INPUT = 0x5, 158 TEE_PARAM_TYPE_MEMREF_OUTPUT = 0x6, 159 TEE_PARAM_TYPE_MEMREF_INOUT = 0x7, 160 TEE_PARAM_TYPE_ION_INPUT = 0x8, 161 TEE_PARAM_TYPE_ION_SGLIST_INPUT = 0x9, 162 }; 163 164 // Session Login Methods 165 enum TEEC_LoginMethod { 166 TEEC_LOGIN_PUBLIC = 0x0, 167 TEEC_LOGIN_USER, 168 TEEC_LOGIN_GROUP, 169 TEEC_LOGIN_APPLICATION = 0x4, 170 TEEC_LOGIN_USER_APPLICATION = 0x5, 171 TEEC_LOGIN_GROUP_APPLICATION = 0x6, 172 TEEC_LOGIN_IDENTIFY = 0x7, 173 }; 174 175 #endif 176