• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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