1 // Licensed to the Apache Software Foundation (ASF) under one
2 // or more contributor license agreements. See the NOTICE file
3 // distributed with this work for additional information
4 // regarding copyright ownership. The ASF licenses this file
5 // to you under the Apache License, Version 2.0 (the
6 // "License"); you may not use this file except in compliance
7 // with the License. You may obtain a copy of the License at
8 //
9 // http://www.apache.org/licenses/LICENSE-2.0
10 //
11 // Unless required by applicable law or agreed to in writing,
12 // software distributed under the License is distributed on an
13 // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
14 // KIND, either express or implied. See the License for the
15 // specific language governing permissions and limitations
16 // under the License.
17
18 use super::tee_api_types::*;
19 use core::ptr::null;
20
21 pub const TEE_CORE_API_MAJOR_VERSION: u32 = 0x00000001;
22 pub const TEE_CORE_API_MINOR_VERSION: u32 = 0x00000003;
23 pub const TEE_CORE_API_MAINTENANCE_VERSION: u32 = 0x00000001;
24
25 pub const TEE_HANDLE_NULL: *const u32 = null();
26
27 pub const TEE_TIMEOUT_INFINITE: u32 = 0xFFFFFFFF;
28
29 // API Error Codes
30 pub const TEE_SUCCESS: u32 = 0x00000000;
31 pub const TEE_ERROR_CORRUPT_OBJECT: u32 = 0xF0100001;
32 pub const TEE_ERROR_CORRUPT_OBJECT_2: u32 = 0xF0100002;
33 pub const TEE_ERROR_STORAGE_NOT_AVAILABLE: u32 = 0xF0100003;
34 pub const TEE_ERROR_STORAGE_NOT_AVAILABLE_2: u32 = 0xF0100004;
35 pub const TEE_ERROR_UNSUPPORTED_VERSION: u32 = 0xF0100005;
36 pub const TEE_ERROR_CIPHERTEXT_INVALID: u32 = 0xF0100006;
37 pub const TEE_ERROR_GENERIC: u32 = 0xFFFF0000;
38 pub const TEE_ERROR_ACCESS_DENIED: u32 = 0xFFFF0001;
39 pub const TEE_ERROR_CANCEL: u32 = 0xFFFF0002;
40 pub const TEE_ERROR_ACCESS_CONFLICT: u32 = 0xFFFF0003;
41 pub const TEE_ERROR_EXCESS_DATA: u32 = 0xFFFF0004;
42 pub const TEE_ERROR_BAD_FORMAT: u32 = 0xFFFF0005;
43 pub const TEE_ERROR_BAD_PARAMETERS: u32 = 0xFFFF0006;
44 pub const TEE_ERROR_BAD_STATE: u32 = 0xFFFF0007;
45 pub const TEE_ERROR_ITEM_NOT_FOUND: u32 = 0xFFFF0008;
46 pub const TEE_ERROR_NOT_IMPLEMENTED: u32 = 0xFFFF0009;
47 pub const TEE_ERROR_NOT_SUPPORTED: u32 = 0xFFFF000A;
48 pub const TEE_ERROR_NO_DATA: u32 = 0xFFFF000B;
49 pub const TEE_ERROR_OUT_OF_MEMORY: u32 = 0xFFFF000C;
50 pub const TEE_ERROR_BUSY: u32 = 0xFFFF000D;
51 pub const TEE_ERROR_COMMUNICATION: u32 = 0xFFFF000E;
52 pub const TEE_ERROR_SECURITY: u32 = 0xFFFF000F;
53 pub const TEE_ERROR_SHORT_BUFFER: u32 = 0xFFFF0010;
54 pub const TEE_ERROR_EXTERNAL_CANCEL: u32 = 0xFFFF0011;
55 pub const TEE_ERROR_TIMEOUT: u32 = 0xFFFF3001;
56 pub const TEE_ERROR_OVERFLOW: u32 = 0xFFFF300F;
57 pub const TEE_ERROR_TARGET_DEAD: u32 = 0xFFFF3024;
58 pub const TEE_ERROR_STORAGE_NO_SPACE: u32 = 0xFFFF3041;
59 pub const TEE_ERROR_MAC_INVALID: u32 = 0xFFFF3071;
60 pub const TEE_ERROR_SIGNATURE_INVALID: u32 = 0xFFFF3072;
61 pub const TEE_ERROR_TIME_NOT_SET: u32 = 0xFFFF5000;
62 pub const TEE_ERROR_TIME_NEEDS_RESET: u32 = 0xFFFF5001;
63
64 // Parameter Type Constants
65 pub const TEE_PARAM_TYPE_NONE: u32 = 0;
66 pub const TEE_PARAM_TYPE_VALUE_INPUT: u32 = 1;
67 pub const TEE_PARAM_TYPE_VALUE_OUTPUT: u32 = 2;
68 pub const TEE_PARAM_TYPE_VALUE_INOUT: u32 = 3;
69 pub const TEE_PARAM_TYPE_MEMREF_INPUT: u32 = 5;
70 pub const TEE_PARAM_TYPE_MEMREF_OUTPUT: u32 = 6;
71 pub const TEE_PARAM_TYPE_MEMREF_INOUT: u32 = 7;
72
73 // Login Type Constants
74 pub const TEE_LOGIN_PUBLIC: u32 = 0x00000000;
75 pub const TEE_LOGIN_USER: u32 = 0x00000001;
76 pub const TEE_LOGIN_GROUP: u32 = 0x00000002;
77 pub const TEE_LOGIN_APPLICATION: u32 = 0x00000004;
78 pub const TEE_LOGIN_APPLICATION_USER: u32 = 0x00000005;
79 pub const TEE_LOGIN_APPLICATION_GROUP: u32 = 0x00000006;
80 pub const TEE_LOGIN_TRUSTED_APP: u32 = 0xF0000000;
81
82 // Origin Code Constants
83 pub const TEE_ORIGIN_API: u32 = 0x00000001;
84 pub const TEE_ORIGIN_COMMS: u32 = 0x00000002;
85 pub const TEE_ORIGIN_TEE: u32 = 0x00000003;
86 pub const TEE_ORIGIN_TRUSTED_APP: u32 = 0x00000004;
87
88 // Property Sets pseudo handles
89 pub const TEE_PROPSET_TEE_IMPLEMENTATION: TEE_PropSetHandle = 0xFFFFFFFD as *mut _;
90 pub const TEE_PROPSET_CURRENT_CLIENT: TEE_PropSetHandle = 0xFFFFFFFE as *mut _;
91 pub const TEE_PROPSET_CURRENT_TA: TEE_PropSetHandle = 0xFFFFFFFF as *mut _;
92
93 // Memory Access Rights Constants
94 pub const TEE_MEMORY_ACCESS_READ: u32 = 0x00000001;
95 pub const TEE_MEMORY_ACCESS_WRITE: u32 = 0x00000002;
96 pub const TEE_MEMORY_ACCESS_ANY_OWNER: u32 = 0x00000004;
97
98 // Memory Management Constants
99 pub const TEE_MALLOC_FILL_ZERO: u32 = 0x00000000;
100 pub const TEE_MALLOC_NO_FILL: u32 = 0x00000001;
101 pub const TEE_MALLOC_NO_SHARE: u32 = 0x00000002;
102
103 // TEE_Whence Constants
104 pub const TEE_DATA_SEEK_SET: u32 = 0x00000000;
105 pub const TEE_DATA_SEEK_CUR: u32 = 0x00000001;
106 pub const TEE_DATA_SEEK_END: u32 = 0x00000002;
107 pub const TEE_WHENCE_ILLEGAL_VALUE: u32 = 0x7FFFFFFF;
108
109 // TEE_OperationMode Values
110 pub const TEE_MODE_ENCRYPT: u32 = 0x00000000;
111 pub const TEE_MODE_DECRYPT: u32 = 0x00000001;
112 pub const TEE_MODE_SIGN: u32 = 0x00000002;
113 pub const TEE_MODE_VERIFY: u32 = 0x00000003;
114 pub const TEE_MODE_MAC: u32 = 0x00000004;
115 pub const TEE_MODE_DIGEST: u32 = 0x00000005;
116 pub const TEE_MODE_DERIVE: u32 = 0x00000006;
117 pub const TEE_MODE_ILLEGAL_VALUE: u32 = 0x7FFFFFFF;
118
119 // Other constants
120 pub const TEE_STORAGE_PRIVATE: u32 = 0x00000001;
121
122 pub const TEE_DATA_FLAG_ACCESS_READ: u32 = 0x00000001;
123 pub const TEE_DATA_FLAG_ACCESS_WRITE: u32 = 0x00000002;
124 pub const TEE_DATA_FLAG_ACCESS_WRITE_META: u32 = 0x00000004;
125 pub const TEE_DATA_FLAG_SHARE_READ: u32 = 0x00000010;
126 pub const TEE_DATA_FLAG_SHARE_WRITE: u32 = 0x00000020;
127 pub const TEE_DATA_FLAG_OVERWRITE: u32 = 0x00000400;
128 pub const TEE_DATA_MAX_POSITION: u32 = 0xFFFFFFFF;
129 pub const TEE_OBJECT_ID_MAX_LEN: u32 = 64;
130 pub const TEE_USAGE_EXTRACTABLE: u32 = 0x00000001;
131 pub const TEE_USAGE_ENCRYPT: u32 = 0x00000002;
132 pub const TEE_USAGE_DECRYPT: u32 = 0x00000004;
133 pub const TEE_USAGE_MAC: u32 = 0x00000008;
134 pub const TEE_USAGE_SIGN: u32 = 0x00000010;
135 pub const TEE_USAGE_VERIFY: u32 = 0x00000020;
136 pub const TEE_USAGE_DERIVE: u32 = 0x00000040;
137 pub const TEE_HANDLE_FLAG_PERSISTENT: u32 = 0x00010000;
138 pub const TEE_HANDLE_FLAG_INITIALIZED: u32 = 0x00020000;
139 pub const TEE_HANDLE_FLAG_KEY_SET: u32 = 0x00040000;
140 pub const TEE_HANDLE_FLAG_EXPECT_TWO_KEYS: u32 = 0x00080000;
141 pub const TEE_HANDLE_FLAG_EXTRACTING: u32 = 0x00100000;
142 pub const TEE_OPERATION_CIPHER: u32 = 1;
143 pub const TEE_OPERATION_MAC: u32 = 3;
144 pub const TEE_OPERATION_AE: u32 = 4;
145 pub const TEE_OPERATION_DIGEST: u32 = 5;
146 pub const TEE_OPERATION_ASYMMETRIC_CIPHER: u32 = 6;
147 pub const TEE_OPERATION_ASYMMETRIC_SIGNATURE: u32 = 7;
148 pub const TEE_OPERATION_KEY_DERIVATION: u32 = 8;
149 pub const TEE_OPERATION_STATE_INITIAL: u32 = 0x00000000;
150 pub const TEE_OPERATION_STATE_ACTIVE: u32 = 0x00000001;
151 pub const TEE_OPERATION_STATE_EXTRACTING: u32 = 0x00000002;
152
153 // below constants are not updated to 1.3.1
154 // Algorithm Identifiers
155 pub const TEE_ALG_AES_ECB_NOPAD: u32 = 0x10000010;
156 pub const TEE_ALG_AES_CBC_NOPAD: u32 = 0x10000110;
157 pub const TEE_ALG_AES_CTR: u32 = 0x10000210;
158 pub const TEE_ALG_AES_CTS: u32 = 0x10000310;
159 pub const TEE_ALG_AES_XTS: u32 = 0x10000410;
160 pub const TEE_ALG_AES_CBC_MAC_NOPAD: u32 = 0x30000110;
161 pub const TEE_ALG_AES_CBC_MAC_PKCS5: u32 = 0x30000510;
162 pub const TEE_ALG_AES_CMAC: u32 = 0x30000610;
163 pub const TEE_ALG_AES_CCM: u32 = 0x40000710;
164 pub const TEE_ALG_AES_GCM: u32 = 0x40000810;
165 pub const TEE_ALG_DES_ECB_NOPAD: u32 = 0x10000011;
166 pub const TEE_ALG_DES_CBC_NOPAD: u32 = 0x10000111;
167 pub const TEE_ALG_DES_CBC_MAC_NOPAD: u32 = 0x30000111;
168 pub const TEE_ALG_DES_CBC_MAC_PKCS5: u32 = 0x30000511;
169 pub const TEE_ALG_DES3_ECB_NOPAD: u32 = 0x10000013;
170 pub const TEE_ALG_DES3_CBC_NOPAD: u32 = 0x10000113;
171 pub const TEE_ALG_DES3_CBC_MAC_NOPAD: u32 = 0x30000113;
172 pub const TEE_ALG_DES3_CBC_MAC_PKCS5: u32 = 0x30000513;
173 pub const TEE_ALG_SM4_ECB_NOPAD: u32 = 0x10000014;
174 pub const TEE_ALG_SM4_CBC_NOPAD: u32 = 0x10000114;
175 pub const TEE_ALG_SM4_CTR: u32 = 0x10000214;
176 pub const TEE_ALG_RSASSA_PKCS1_V1_5_MD5: u32 = 0x70001830;
177 pub const TEE_ALG_RSASSA_PKCS1_V1_5_SHA1: u32 = 0x70002830;
178 pub const TEE_ALG_RSASSA_PKCS1_V1_5_SHA224: u32 = 0x70003830;
179 pub const TEE_ALG_RSASSA_PKCS1_V1_5_SHA256: u32 = 0x70004830;
180 pub const TEE_ALG_RSASSA_PKCS1_V1_5_SHA384: u32 = 0x70005830;
181 pub const TEE_ALG_RSASSA_PKCS1_V1_5_SHA512: u32 = 0x70006830;
182 pub const TEE_ALG_RSASSA_PKCS1_V1_5_MD5SHA1: u32 = 0x7000F830;
183 pub const TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA1: u32 = 0x70212930;
184 pub const TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA224: u32 = 0x70313930;
185 pub const TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA256: u32 = 0x70414930;
186 pub const TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA384: u32 = 0x70515930;
187 pub const TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA512: u32 = 0x70616930;
188 pub const TEE_ALG_RSAES_PKCS1_V1_5: u32 = 0x60000130;
189 pub const TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA1: u32 = 0x60210230;
190 pub const TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA224: u32 = 0x60310230;
191 pub const TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA256: u32 = 0x60410230;
192 pub const TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA384: u32 = 0x60510230;
193 pub const TEE_ALG_RSAES_PKCS1_OAEP_MGF1_SHA512: u32 = 0x60610230;
194 pub const TEE_ALG_RSA_NOPAD: u32 = 0x60000030;
195 pub const TEE_ALG_DSA_SHA1: u32 = 0x70002131;
196 pub const TEE_ALG_DSA_SHA224: u32 = 0x70003131;
197 pub const TEE_ALG_DSA_SHA256: u32 = 0x70004131;
198 pub const TEE_ALG_SM2_DSA_SM3: u32 = 0x70006045;
199 pub const TEE_ALG_DH_DERIVE_SHARED_SECRET: u32 = 0x80000032;
200 pub const TEE_ALG_SM2_KEP: u32 = 0x60000045;
201 pub const TEE_ALG_MD5: u32 = 0x50000001;
202 pub const TEE_ALG_SHA1: u32 = 0x50000002;
203 pub const TEE_ALG_SHA224: u32 = 0x50000003;
204 pub const TEE_ALG_SHA256: u32 = 0x50000004;
205 pub const TEE_ALG_SHA384: u32 = 0x50000005;
206 pub const TEE_ALG_SHA512: u32 = 0x50000006;
207 pub const TEE_ALG_MD5SHA1: u32 = 0x5000000F;
208 pub const TEE_ALG_HMAC_MD5: u32 = 0x30000001;
209 pub const TEE_ALG_HMAC_SHA1: u32 = 0x30000002;
210 pub const TEE_ALG_HMAC_SHA224: u32 = 0x30000003;
211 pub const TEE_ALG_HMAC_SHA256: u32 = 0x30000004;
212 pub const TEE_ALG_HMAC_SHA384: u32 = 0x30000005;
213 pub const TEE_ALG_HMAC_SHA512: u32 = 0x30000006;
214 pub const TEE_ALG_HMAC_SM3: u32 = 0x30000007;
215 pub const TEE_ALG_ECDSA_P192: u32 = 0x70001041;
216 pub const TEE_ALG_ECDSA_P224: u32 = 0x70002041;
217 pub const TEE_ALG_ECDSA_P256: u32 = 0x70003041;
218 pub const TEE_ALG_ECDSA_P384: u32 = 0x70004041;
219 pub const TEE_ALG_ECDSA_P521: u32 = 0x70005041;
220 pub const TEE_ALG_ECDH_P192: u32 = 0x80001042;
221 pub const TEE_ALG_ECDH_P224: u32 = 0x80002042;
222 pub const TEE_ALG_ECDH_P256: u32 = 0x80003042;
223 pub const TEE_ALG_ECDH_P384: u32 = 0x80004042;
224 pub const TEE_ALG_ECDH_P521: u32 = 0x80005042;
225 pub const TEE_ALG_SM2_PKE: u32 = 0x80000045;
226 pub const TEE_ALG_SM3: u32 = 0x50000007;
227 pub const TEE_ALG_ILLEGAL_VALUE: u32 = 0xEFFFFFFF;
228
229 // Object Types
230 pub const TEE_TYPE_AES: u32 = 0xA0000010;
231 pub const TEE_TYPE_DES: u32 = 0xA0000011;
232 pub const TEE_TYPE_DES3: u32 = 0xA0000013;
233 pub const TEE_TYPE_SM4: u32 = 0xA0000014;
234 pub const TEE_TYPE_HMAC_MD5: u32 = 0xA0000001;
235 pub const TEE_TYPE_HMAC_SHA1: u32 = 0xA0000002;
236 pub const TEE_TYPE_HMAC_SHA224: u32 = 0xA0000003;
237 pub const TEE_TYPE_HMAC_SHA256: u32 = 0xA0000004;
238 pub const TEE_TYPE_HMAC_SHA384: u32 = 0xA0000005;
239 pub const TEE_TYPE_HMAC_SHA512: u32 = 0xA0000006;
240 pub const TEE_TYPE_HMAC_SM3: u32 = 0xA0000007;
241 pub const TEE_TYPE_RSA_PUBLIC_KEY: u32 = 0xA0000030;
242 pub const TEE_TYPE_RSA_KEYPAIR: u32 = 0xA1000030;
243 pub const TEE_TYPE_DSA_PUBLIC_KEY: u32 = 0xA0000031;
244 pub const TEE_TYPE_DSA_KEYPAIR: u32 = 0xA1000031;
245 pub const TEE_TYPE_DH_KEYPAIR: u32 = 0xA1000032;
246 pub const TEE_TYPE_ECDSA_PUBLIC_KEY: u32 = 0xA0000041;
247 pub const TEE_TYPE_ECDSA_KEYPAIR: u32 = 0xA1000041;
248 pub const TEE_TYPE_ECDH_PUBLIC_KEY: u32 = 0xA0000042;
249 pub const TEE_TYPE_ECDH_KEYPAIR: u32 = 0xA1000042;
250 pub const TEE_TYPE_SM2_DSA_PUBLIC_KEY: u32 = 0xA0000045;
251 pub const TEE_TYPE_SM2_DSA_KEYPAIR: u32 = 0xA1000045;
252 pub const TEE_TYPE_SM2_KEP_PUBLIC_KEY: u32 = 0xA0000046;
253 pub const TEE_TYPE_SM2_KEP_KEYPAIR: u32 = 0xA1000046;
254 pub const TEE_TYPE_SM2_PKE_PUBLIC_KEY: u32 = 0xA0000047;
255 pub const TEE_TYPE_SM2_PKE_KEYPAIR: u32 = 0xA1000047;
256 pub const TEE_TYPE_GENERIC_SECRET: u32 = 0xA0000000;
257 pub const TEE_TYPE_CORRUPTED_OBJECT: u32 = 0xA00000BE;
258 pub const TEE_TYPE_DATA: u32 = 0xA00000BF;
259
260 // List of Object or Operation Attributes
261 pub const TEE_ATTR_SECRET_VALUE: u32 = 0xC0000000;
262 pub const TEE_ATTR_RSA_MODULUS: u32 = 0xD0000130;
263 pub const TEE_ATTR_RSA_PUBLIC_EXPONENT: u32 = 0xD0000230;
264 pub const TEE_ATTR_RSA_PRIVATE_EXPONENT: u32 = 0xC0000330;
265 pub const TEE_ATTR_RSA_PRIME1: u32 = 0xC0000430;
266 pub const TEE_ATTR_RSA_PRIME2: u32 = 0xC0000530;
267 pub const TEE_ATTR_RSA_EXPONENT1: u32 = 0xC0000630;
268 pub const TEE_ATTR_RSA_EXPONENT2: u32 = 0xC0000730;
269 pub const TEE_ATTR_RSA_COEFFICIENT: u32 = 0xC0000830;
270 pub const TEE_ATTR_DSA_PRIME: u32 = 0xD0001031;
271 pub const TEE_ATTR_DSA_SUBPRIME: u32 = 0xD0001131;
272 pub const TEE_ATTR_DSA_BASE: u32 = 0xD0001231;
273 pub const TEE_ATTR_DSA_PUBLIC_VALUE: u32 = 0xD0000131;
274 pub const TEE_ATTR_DSA_PRIVATE_VALUE: u32 = 0xC0000231;
275 pub const TEE_ATTR_DH_PRIME: u32 = 0xD0001032;
276 pub const TEE_ATTR_DH_SUBPRIME: u32 = 0xD0001132;
277 pub const TEE_ATTR_DH_BASE: u32 = 0xD0001232;
278 pub const TEE_ATTR_DH_X_BITS: u32 = 0xF0001332;
279 pub const TEE_ATTR_DH_PUBLIC_VALUE: u32 = 0xD0000132;
280 pub const TEE_ATTR_DH_PRIVATE_VALUE: u32 = 0xC0000232;
281 pub const TEE_ATTR_RSA_OAEP_LABEL: u32 = 0xD0000930;
282 pub const TEE_ATTR_RSA_PSS_SALT_LENGTH: u32 = 0xF0000A30;
283 pub const TEE_ATTR_ECC_PUBLIC_VALUE_X: u32 = 0xD0000141;
284 pub const TEE_ATTR_ECC_PUBLIC_VALUE_Y: u32 = 0xD0000241;
285 pub const TEE_ATTR_ECC_PRIVATE_VALUE: u32 = 0xC0000341;
286 pub const TEE_ATTR_ECC_CURVE: u32 = 0xF0000441;
287 pub const TEE_ATTR_SM2_ID_INITIATOR: u32 = 0xD0000446;
288 pub const TEE_ATTR_SM2_ID_RESPONDER: u32 = 0xD0000546;
289 pub const TEE_ATTR_SM2_KEP_USER: u32 = 0xF0000646;
290 pub const TEE_ATTR_SM2_KEP_CONFIRMATION_IN: u32 = 0xD0000746;
291 pub const TEE_ATTR_SM2_KEP_CONFIRMATION_OUT: u32 = 0xD0000846;
292 pub const TEE_ATTR_ECC_EPHEMERAL_PUBLIC_VALUE_X: u32 = 0xD0000946;
293 pub const TEE_ATTR_ECC_EPHEMERAL_PUBLIC_VALUE_Y: u32 = 0xD0000A46;
294 pub const TEE_ATTR_FLAG_PUBLIC: u32 = 1 << 28;
295 pub const TEE_ATTR_FLAG_VALUE: u32 = 1 << 29;
296 // Deprecated, but kept for backwards compatibility
297 pub const TEE_ATTR_BIT_PROTECTED: u32 = 1 << 28;
298 pub const TEE_ATTR_BIT_VALUE: u32 = 1 << 29;
299
300 // List of Supported ECC Curves
301 pub const TEE_CRYPTO_ELEMENT_NONE: u32 = 0x00000000;
302 pub const TEE_ECC_CURVE_NIST_P192: u32 = 0x00000001;
303 pub const TEE_ECC_CURVE_NIST_P224: u32 = 0x00000002;
304 pub const TEE_ECC_CURVE_NIST_P256: u32 = 0x00000003;
305 pub const TEE_ECC_CURVE_NIST_P384: u32 = 0x00000004;
306 pub const TEE_ECC_CURVE_NIST_P521: u32 = 0x00000005;
307 pub const TEE_ECC_CURVE_SM2: u32 = 0x00000300;
308
309 // Panicked Functions Identification
310 // TA Interface
311 pub const TEE_PANIC_ID_TA_CLOSESESSIONENTRYPOINT: u32 = 0x00000101;
312 pub const TEE_PANIC_ID_TA_CREATEENTRYPOINT: u32 = 0x00000102;
313 pub const TEE_PANIC_ID_TA_DESTROYENTRYPOINT: u32 = 0x00000103;
314 pub const TEE_PANIC_ID_TA_INVOKECOMMANDENTRYPOINT: u32 = 0x00000104;
315 pub const TEE_PANIC_ID_TA_OPENSESSIONENTRYPOINT: u32 = 0x00000105;
316 /* Property Access */
317 pub const TEE_PANIC_ID_TEE_ALLOCATEPROPERTYENUMERATOR: u32 = 0x00000201;
318 pub const TEE_PANIC_ID_TEE_FREEPROPERTYENUMERATOR: u32 = 0x00000202;
319 pub const TEE_PANIC_ID_TEE_GETNEXTPROPERTY: u32 = 0x00000203;
320 pub const TEE_PANIC_ID_TEE_GETPROPERTYASBINARYBLOCK: u32 = 0x00000204;
321 pub const TEE_PANIC_ID_TEE_GETPROPERTYASBOOL: u32 = 0x00000205;
322 pub const TEE_PANIC_ID_TEE_GETPROPERTYASIDENTITY: u32 = 0x00000206;
323 pub const TEE_PANIC_ID_TEE_GETPROPERTYASSTRING: u32 = 0x00000207;
324 pub const TEE_PANIC_ID_TEE_GETPROPERTYASU32: u32 = 0x00000208;
325 pub const TEE_PANIC_ID_TEE_GETPROPERTYASUUID: u32 = 0x00000209;
326 pub const TEE_PANIC_ID_TEE_GETPROPERTYNAME: u32 = 0x0000020A;
327 pub const TEE_PANIC_ID_TEE_RESETPROPERTYENUMERATOR: u32 = 0x0000020B;
328 pub const TEE_PANIC_ID_TEE_STARTPROPERTYENUMERATOR: u32 = 0x0000020C;
329 // Panic Function
330 pub const TEE_PANIC_ID_TEE_PANIC: u32 = 0x00000301;
331 // Internal Client API
332 pub const TEE_PANIC_ID_TEE_CLOSETASESSION: u32 = 0x00000401;
333 pub const TEE_PANIC_ID_TEE_INVOKETACOMMAND: u32 = 0x00000402;
334 pub const TEE_PANIC_ID_TEE_OPENTASESSION: u32 = 0x00000403;
335 // Cancellation
336 pub const TEE_PANIC_ID_TEE_GETCANCELLATIONFLAG: u32 = 0x00000501;
337 pub const TEE_PANIC_ID_TEE_MASKCANCELLATION: u32 = 0x00000502;
338 pub const TEE_PANIC_ID_TEE_UNMASKCANCELLATION: u32 = 0x00000503;
339 // Memory Management
340 pub const TEE_PANIC_ID_TEE_CHECKMEMORYACCESSRIGHTS: u32 = 0x00000601;
341 pub const TEE_PANIC_ID_TEE_FREE: u32 = 0x00000602;
342 pub const TEE_PANIC_ID_TEE_GETINSTANCEDATA: u32 = 0x00000603;
343 pub const TEE_PANIC_ID_TEE_MALLOC: u32 = 0x00000604;
344 pub const TEE_PANIC_ID_TEE_MEMCOMPARE: u32 = 0x00000605;
345 pub const TEE_PANIC_ID_TEE_MEMFILL: u32 = 0x00000606;
346 pub const TEE_PANIC_ID_TEE_MEMMOVE: u32 = 0x00000607;
347 pub const TEE_PANIC_ID_TEE_REALLOC: u32 = 0x00000608;
348 pub const TEE_PANIC_ID_TEE_SETINSTANCEDATA: u32 = 0x00000609;
349 // Generic Object
350 pub const TEE_PANIC_ID_TEE_CLOSEOBJECT: u32 = 0x00000701;
351 pub const TEE_PANIC_ID_TEE_GETOBJECTBUFFERATTRIBUTE: u32 = 0x00000702;
352 // deprecated
353 pub const TEE_PANIC_ID_TEE_GETOBJECTINFO: u32 = 0x00000703;
354 pub const TEE_PANIC_ID_TEE_GETOBJECTVALUEATTRIBUTE: u32 = 0x00000704;
355 // deprecated
356 pub const TEE_PANIC_ID_TEE_RESTRICTOBJECTUSAGE: u32 = 0x00000705;
357 pub const TEE_PANIC_ID_TEE_GETOBJECTINFO1: u32 = 0x00000706;
358 pub const TEE_PANIC_ID_TEE_RESTRICTOBJECTUSAGE1: u32 = 0x00000707;
359 // Transient Object
360 pub const TEE_PANIC_ID_TEE_ALLOCATETRANSIENTOBJECT: u32 = 0x00000801;
361 // deprecated
362 pub const TEE_PANIC_ID_TEE_COPYOBJECTATTRIBUTES: u32 = 0x00000802;
363 pub const TEE_PANIC_ID_TEE_FREETRANSIENTOBJECT: u32 = 0x00000803;
364 pub const TEE_PANIC_ID_TEE_GENERATEKEY: u32 = 0x00000804;
365 pub const TEE_PANIC_ID_TEE_INITREFATTRIBUTE: u32 = 0x00000805;
366 pub const TEE_PANIC_ID_TEE_INITVALUEATTRIBUTE: u32 = 0x00000806;
367 pub const TEE_PANIC_ID_TEE_POPULATETRANSIENTOBJECT: u32 = 0x00000807;
368 pub const TEE_PANIC_ID_TEE_RESETTRANSIENTOBJECT: u32 = 0x00000808;
369 pub const TEE_PANIC_ID_TEE_COPYOBJECTATTRIBUTES1: u32 = 0x00000809;
370 // Persistent Object
371 // deprecated
372 pub const TEE_PANIC_ID_TEE_CLOSEANDDELETEPERSISTENTOBJECT: u32 = 0x00000901;
373 pub const TEE_PANIC_ID_TEE_CREATEPERSISTENTOBJECT: u32 = 0x00000902;
374 pub const TEE_PANIC_ID_TEE_OPENPERSISTENTOBJECT: u32 = 0x00000903;
375 pub const TEE_PANIC_ID_TEE_RENAMEPERSISTENTOBJECT: u32 = 0x00000904;
376 pub const TEE_PANIC_ID_TEE_CLOSEANDDELETEPERSISTENTOBJECT1: u32 = 0x00000905;
377 // Persistent Object Enumeration
378 pub const TEE_PANIC_ID_TEE_ALLOCATEPERSISTENTOBJECTENUMERATOR: u32 = 0x00000A01;
379 pub const TEE_PANIC_ID_TEE_FREEPERSISTENTOBJECTENUMERATOR: u32 = 0x00000A02;
380 pub const TEE_PANIC_ID_TEE_GETNEXTPERSISTENTOBJECT: u32 = 0x00000A03;
381 pub const TEE_PANIC_ID_TEE_RESETPERSISTENTOBJECTENUMERATOR: u32 = 0x00000A04;
382 pub const TEE_PANIC_ID_TEE_STARTPERSISTENTOBJECTENUMERATOR: u32 = 0x00000A05;
383 // Data Stream Access
384 pub const TEE_PANIC_ID_TEE_READOBJECTDATA: u32 = 0x00000B01;
385 pub const TEE_PANIC_ID_TEE_SEEKOBJECTDATA: u32 = 0x00000B02;
386 pub const TEE_PANIC_ID_TEE_TRUNCATEOBJECTDATA: u32 = 0x00000B03;
387 pub const TEE_PANIC_ID_TEE_WRITEOBJECTDATA: u32 = 0x00000B04;
388 // Generic Operation
389 pub const TEE_PANIC_ID_TEE_ALLOCATEOPERATION: u32 = 0x00000C01;
390 pub const TEE_PANIC_ID_TEE_COPYOPERATION: u32 = 0x00000C02;
391 pub const TEE_PANIC_ID_TEE_FREEOPERATION: u32 = 0x00000C03;
392 pub const TEE_PANIC_ID_TEE_GETOPERATIONINFO: u32 = 0x00000C04;
393 pub const TEE_PANIC_ID_TEE_RESETOPERATION: u32 = 0x00000C05;
394 pub const TEE_PANIC_ID_TEE_SETOPERATIONKEY: u32 = 0x00000C06;
395 pub const TEE_PANIC_ID_TEE_SETOPERATIONKEY2: u32 = 0x00000C07;
396 pub const TEE_PANIC_ID_TEE_GETOPERATIONINFOMULTIPLE: u32 = 0x00000C08;
397 // Message Digest
398 pub const TEE_PANIC_ID_TEE_DIGESTDOFINAL: u32 = 0x00000D01;
399 pub const TEE_PANIC_ID_TEE_DIGESTUPDATE: u32 = 0x00000D02;
400 // Symmetric Cipher
401 pub const TEE_PANIC_ID_TEE_CIPHERDOFINAL: u32 = 0x00000E01;
402 pub const TEE_PANIC_ID_TEE_CIPHERINIT: u32 = 0x00000E02;
403 pub const TEE_PANIC_ID_TEE_CIPHERUPDATE: u32 = 0x00000E03;
404 // MAC
405 pub const TEE_PANIC_ID_TEE_MACCOMPAREFINAL: u32 = 0x00000F01;
406 pub const TEE_PANIC_ID_TEE_MACCOMPUTEFINAL: u32 = 0x00000F02;
407 pub const TEE_PANIC_ID_TEE_MACINIT: u32 = 0x00000F03;
408 pub const TEE_PANIC_ID_TEE_MACUPDATE: u32 = 0x00000F04;
409 // Authenticated Encryption
410 pub const TEE_PANIC_ID_TEE_AEDECRYPTFINAL: u32 = 0x00001001;
411 pub const TEE_PANIC_ID_TEE_AEENCRYPTFINAL: u32 = 0x00001002;
412 pub const TEE_PANIC_ID_TEE_AEINIT: u32 = 0x00001003;
413 pub const TEE_PANIC_ID_TEE_AEUPDATE: u32 = 0x00001004;
414 pub const TEE_PANIC_ID_TEE_AEUPDATEAAD: u32 = 0x00001005;
415 // Asymmetric
416 pub const TEE_PANIC_ID_TEE_ASYMMETRICDECRYPT: u32 = 0x00001101;
417 pub const TEE_PANIC_ID_TEE_ASYMMETRICENCRYPT: u32 = 0x00001102;
418 pub const TEE_PANIC_ID_TEE_ASYMMETRICSIGNDIGEST: u32 = 0x00001103;
419 pub const TEE_PANIC_ID_TEE_ASYMMETRICVERIFYDIGEST: u32 = 0x00001104;
420 // Key Derivation
421 pub const TEE_PANIC_ID_TEE_DERIVEKEY: u32 = 0x00001201;
422 // Random Data Generation
423 pub const TEE_PANIC_ID_TEE_GENERATERANDOM: u32 = 0x00001301;
424 // Time
425 pub const TEE_PANIC_ID_TEE_GETREETIME: u32 = 0x00001401;
426 pub const TEE_PANIC_ID_TEE_GETSYSTEMTIME: u32 = 0x00001402;
427 pub const TEE_PANIC_ID_TEE_GETTAPERSISTENTTIME: u32 = 0x00001403;
428 pub const TEE_PANIC_ID_TEE_SETTAPERSISTENTTIME: u32 = 0x00001404;
429 pub const TEE_PANIC_ID_TEE_WAIT: u32 = 0x00001405;
430 // Memory Allocation and Size of Objects
431 pub const TEE_PANIC_ID_TEE_BIGINTFMMCONTEXTSIZEINU32: u32 = 0x00001501;
432 pub const TEE_PANIC_ID_TEE_BIGINTFMMSIZEINU32: u32 = 0x00001502;
433 // Initialization
434 pub const TEE_PANIC_ID_TEE_BIGINTINIT: u32 = 0x00001601;
435 pub const TEE_PANIC_ID_TEE_BIGINTINITFMM: u32 = 0x00001602;
436 pub const TEE_PANIC_ID_TEE_BIGINTINITFMMCONTEXT: u32 = 0x00001603;
437 // Converter
438 pub const TEE_PANIC_ID_TEE_BIGINTCONVERTFROMOCTETSTRING: u32 = 0x00001701;
439 pub const TEE_PANIC_ID_TEE_BIGINTCONVERTFROMS32: u32 = 0x00001702;
440 pub const TEE_PANIC_ID_TEE_BIGINTCONVERTTOOCTETSTRING: u32 = 0x00001703;
441 pub const TEE_PANIC_ID_TEE_BIGINTCONVERTTOS32: u32 = 0x00001704;
442 // Logical Operation
443 pub const TEE_PANIC_ID_TEE_BIGINTCMP: u32 = 0x00001801;
444 pub const TEE_PANIC_ID_TEE_BIGINTCMPS32: u32 = 0x00001802;
445 pub const TEE_PANIC_ID_TEE_BIGINTGETBIT: u32 = 0x00001803;
446 pub const TEE_PANIC_ID_TEE_BIGINTGETBITCOUNT: u32 = 0x00001804;
447 pub const TEE_PANIC_ID_TEE_BIGINTSHIFTRIGHT: u32 = 0x00001805;
448 // Basic Arithmetic
449 pub const TEE_PANIC_ID_TEE_BIGINTADD: u32 = 0x00001901;
450 pub const TEE_PANIC_ID_TEE_BIGINTDIV: u32 = 0x00001902;
451 pub const TEE_PANIC_ID_TEE_BIGINTMUL: u32 = 0x00001903;
452 pub const TEE_PANIC_ID_TEE_BIGINTNEG: u32 = 0x00001904;
453 pub const TEE_PANIC_ID_TEE_BIGINTSQUARE: u32 = 0x00001905;
454 pub const TEE_PANIC_ID_TEE_BIGINTSUB: u32 = 0x00001906;
455 // Modular Arithmetic
456 pub const TEE_PANIC_ID_TEE_BIGINTADDMOD: u32 = 0x00001A01;
457 pub const TEE_PANIC_ID_TEE_BIGINTINVMOD: u32 = 0x00001A02;
458 pub const TEE_PANIC_ID_TEE_BIGINTMOD: u32 = 0x00001A03;
459 pub const TEE_PANIC_ID_TEE_BIGINTMULMOD: u32 = 0x00001A04;
460 pub const TEE_PANIC_ID_TEE_BIGINTSQUAREMOD: u32 = 0x00001A05;
461 pub const TEE_PANIC_ID_TEE_BIGINTSUBMOD: u32 = 0x00001A06;
462 // Other Arithmetic
463 pub const TEE_PANIC_ID_TEE_BIGINTCOMPUTEEXTENDEDGCD: u32 = 0x00001B01;
464 pub const TEE_PANIC_ID_TEE_BIGINTISPROBABLEPRIME: u32 = 0x00001B02;
465 pub const TEE_PANIC_ID_TEE_BIGINTRELATIVEPRIME: u32 = 0x00001B03;
466 // Fast Modular Multiplication
467 pub const TEE_PANIC_ID_TEE_BIGINTCOMPUTEFMM: u32 = 0x00001C01;
468 pub const TEE_PANIC_ID_TEE_BIGINTCONVERTFROMFMM: u32 = 0x00001C02;
469 pub const TEE_PANIC_ID_TEE_BIGINTCONVERTTOFMM: u32 = 0x00001C03;
470
TEE_PARAM_TYPES(t0: u32, t1: u32, t2: u32, t3: u32) -> u32471 pub fn TEE_PARAM_TYPES(t0: u32, t1: u32, t2: u32, t3: u32) -> u32 {
472 t0 | t1 << 4 | t2 << 8 | t3 << 12
473 }
474
475 pub const TEE_NUM_PARAMS: u32 = 4;
476