* Copyright (c) 2025 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License"),
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
* @addtogroup TeeTrusted
* @{
*
* @brief TEE(Trusted Excution Environment) API.
* Provides security capability APIs such as trusted storage, encryption and decryption,
* and trusted time for trusted application development.
*
* @since 20
*/
* @file tee_defines.h
*
* @brief Defines basic data types and data structures of TEE.
*
* @library NA
* @kit TEEKit
* @syscap SystemCapability.Tee.TeeClient
* @since 20
*/
#ifndef __TEE_DEFINES_H
#define __TEE_DEFINES_H
#include <stdint.h>
#include <stdbool.h>
#include <stddef.h>
#ifdef __cplusplus
extern "C" {
#endif
#ifndef TA_EXPORT
* @brief Represents the export attribute for Trusted Applications.
*
* @since 20
*/
#define TA_EXPORT
#endif
* @brief Defines the tee mutex handle.
*
* @since 20
*/
typedef int *tee_mutex_handle;
* @brief Represents API level 1.1.1.
*
* @since 20
*/
#define API_LEVEL1_1_1 2
* @brief Represents API level 1.2.
*
* @since 20
*/
#define API_LEVEL1_2 3
* @brief Represents the number of TEE parameters.
*
* @since 20
*/
#define TEE_PARAMS_NUM 4
#ifndef NULL
* @brief Represents a null pointer constant.
*
* @since 20
*/
#define NULL ((void*)0)
#endif
* @brief Marks a parameter as unused.
*
* @since 20
*/
#define PARAM_NOT_USED(val) ((void)(val))
* @brief Enumerates the TEE parameter.
*
* @since 20
*/
typedef union {
* @brief Describes a memory reference.
*
* @since 20
*/
struct {
void *buffer;
size_t size;
} memref;
* @brief Describes value parameters.
*
* @since 20
*/
struct {
unsigned int a;
unsigned int b;
} value;
* @brief Describes shared memory reference.
*
* @since 20
*/
struct {
void *buffer;
size_t size;
} sharedmem;
} TEE_Param;
* @brief Constructs the TEE parameter types from the provided types.
*
* @since 20
*/
#define TEE_PARAM_TYPES(param0Type, param1Type, param2Type, param3Type) \
(((param3Type) << 12) | ((param2Type) << 8) | ((param1Type) << 4) | (param0Type))
* @brief Extracts the parameter type at the specified index from the TEE parameter types.
*
* @since 20
*/
#define TEE_PARAM_TYPE_GET(paramTypes, index) (((paramTypes) >> (4U * (index))) & 0x0F)
* @brief Checks parameter types.
*
* @param param_to_check Indicates the expected parameter values.
* @param valid0 Indicates the first parameter type to check.
* @param valid1 Indicates the second parameter type to check.
* @param valid2 Indicates the third parameter type to check.
* @param valid3 Indicates the fourth parameter type to check.
*
* @return Returns <b>true</b> if the parameter types are correct.
* Returns <b>false</b> otherwise.
* @since 20
*/
static inline bool check_param_type(uint32_t param_to_check, uint32_t valid0, uint32_t valid1, uint32_t valid2,
uint32_t valid3)
{
return (TEE_PARAM_TYPES(valid0, valid1, valid2, valid3) == param_to_check);
}
* @brief Enumerates the types of the TEE parameter.
*
* @since 20
*/
enum TEE_ParamType {
TEE_PARAM_TYPE_NONE = 0x0,
TEE_PARAM_TYPE_VALUE_INPUT = 0x1,
TEE_PARAM_TYPE_VALUE_OUTPUT = 0x2,
TEE_PARAM_TYPE_VALUE_INOUT = 0x3,
TEE_PARAM_TYPE_MEMREF_INPUT = 0x5,
TEE_PARAM_TYPE_MEMREF_OUTPUT = 0x6,
TEE_PARAM_TYPE_MEMREF_INOUT = 0x7,
TEE_PARAM_TYPE_ION_INPUT = 0x8,
TEE_PARAM_TYPE_ION_SGLIST_INPUT = 0x9,
TEE_PARAM_TYPE_MEMREF_SHARED_INOUT = 0xa,
TEE_PARAM_TYPE_RESMEM_INPUT = 0xc,
TEE_PARAM_TYPE_RESMEM_OUTPUT = 0xd,
TEE_PARAM_TYPE_RESMEM_INOUT = 0xe,
};
* @brief Marks a variable as unused.
*
* @since 20
*/
#define S_VAR_NOT_USED(variable) \
do { \
(void)(variable); \
} while (0)
* @brief Defines an object information.
*
* @since 20
*/
typedef struct {
uint32_t objectType;
uint32_t objectSize;
uint32_t maxObjectSize;
uint32_t objectUsage;
uint32_t dataSize;
uint32_t dataPosition;
uint32_t handleFlags;
} TEE_ObjectInfo;
* @brief Defines an object attribute.
*
* @since 20
*/
typedef struct {
uint32_t attributeID;
* @brief Attribute content.
*
* @since 20
*/
union {
* @brief Reference type content.
*
* @since 20
*/
struct {
void *buffer;
size_t length;
} ref;
* @brief Value type content.
*
* @since 20
*/
struct {
uint32_t a;
uint32_t b;
} value;
} content;
} TEE_Attribute;
* @brief Enumerates the types of object attribute.
*
* @since 20
*/
enum TEE_ObjectAttribute {
TEE_ATTR_SECRET_VALUE = 0xC0000000,
TEE_ATTR_RSA_MODULUS = 0xD0000130,
TEE_ATTR_RSA_PUBLIC_EXPONENT = 0xD0000230,
TEE_ATTR_RSA_PRIVATE_EXPONENT = 0xC0000330,
TEE_ATTR_RSA_PRIME1 = 0xC0000430,
TEE_ATTR_RSA_PRIME2 = 0xC0000530,
TEE_ATTR_RSA_EXPONENT1 = 0xC0000630,
TEE_ATTR_RSA_EXPONENT2 = 0xC0000730,
TEE_ATTR_RSA_COEFFICIENT = 0xC0000830,
TEE_ATTR_RSA_MGF1_HASH = 0xF0000830,
TEE_ATTR_DSA_PRIME = 0xD0001031,
TEE_ATTR_DSA_SUBPRIME = 0xD0001131,
TEE_ATTR_DSA_BASE = 0xD0001231,
TEE_ATTR_DSA_PUBLIC_VALUE = 0xD0000131,
TEE_ATTR_DSA_PRIVATE_VALUE = 0xC0000231,
TEE_ATTR_DH_PRIME = 0xD0001032,
TEE_ATTR_DH_SUBPRIME = 0xD0001132,
TEE_ATTR_DH_BASE = 0xD0001232,
TEE_ATTR_DH_X_BITS = 0xF0001332,
TEE_ATTR_DH_PUBLIC_VALUE = 0xD0000132,
TEE_ATTR_DH_PRIVATE_VALUE = 0xC0000232,
TEE_ATTR_RSA_OAEP_LABEL = 0xD0000930,
TEE_ATTR_RSA_PSS_SALT_LENGTH = 0xF0000A30,
TEE_ATTR_ECC_PUBLIC_VALUE_X = 0xD0000141,
TEE_ATTR_ECC_PUBLIC_VALUE_Y = 0xD0000241,
TEE_ATTR_ECC_PRIVATE_VALUE = 0xC0000341,
TEE_ATTR_ECC_CURVE = 0xF0000441,
TEE_ATTR_ED25519_CTX = 0xD0000643,
TEE_ATTR_ED25519_PUBLIC_VALUE = 0xD0000743,
TEE_ATTR_ED25519_PRIVATE_VALUE = 0xC0000843,
TEE_ATTR_ED25519_PH = 0xF0000543,
TEE_ATTR_X25519_PUBLIC_VALUE = 0xD0000944,
TEE_ATTR_X25519_PRIVATE_VALUE = 0xC0000A44,
TEE_ATTR_PBKDF2_HMAC_PASSWORD = 0xD0000133,
TEE_ATTR_PBKDF2_HMAC_SALT = 0xD0000134,
TEE_ATTR_PRF_LABEL = 0xD0000136,
TEE_ATTR_PRF_SEED = 0xD0000137,
TEE_ATTR_PRF_HASH_ALGORITHM = 0xF0000138,
TEE_ATTR_HKDF_SALT = 0xD0000946,
TEE_ATTR_HKDF_INFO = 0xD0000A46,
TEE_ATTR_PBKDF2_HMAC_DIGEST = 0xF0000135,
TEE_ATTR_HKDF_HASH_ALGORITHM = 0xF0000B46,
TEE_ATTR_KDF_KEY_SIZE = 0xF0000C46,
};
* @brief Enumerates the types of object.
*
* @since 20
*/
enum TEE_ObjectType {
TEE_TYPE_AES = 0xA0000010,
TEE_TYPE_DES = 0xA0000011,
TEE_TYPE_DES3 = 0xA0000013,
TEE_TYPE_HMAC_MD5 = 0xA0000001,
TEE_TYPE_HMAC_SHA1 = 0xA0000002,
TEE_TYPE_HMAC_SHA224 = 0xA0000003,
TEE_TYPE_HMAC_SHA256 = 0xA0000004,
TEE_TYPE_HMAC_SHA384 = 0xA0000005,
TEE_TYPE_HMAC_SHA512 = 0xA0000006,
TEE_TYPE_RSA_PUBLIC_KEY = 0xA0000030,
TEE_TYPE_RSA_KEYPAIR = 0xA1000030,
TEE_TYPE_DSA_PUBLIC_KEY = 0xA0000031,
TEE_TYPE_DSA_KEYPAIR = 0xA1000031,
TEE_TYPE_DH_KEYPAIR = 0xA1000032,
TEE_TYPE_GENERIC_SECRET = 0xA0000000,
TEE_TYPE_DATA = 0xA1000033,
TEE_TYPE_DATA_GP1_1 = 0xA00000BF,
TEE_TYPE_ECDSA_PUBLIC_KEY = 0xA0000041,
TEE_TYPE_ECDSA_KEYPAIR = 0xA1000041,
TEE_TYPE_ECDH_PUBLIC_KEY = 0xA0000042,
TEE_TYPE_ECDH_KEYPAIR = 0xA1000042,
TEE_TYPE_ED25519_PUBLIC_KEY = 0xA0000043,
TEE_TYPE_ED25519_KEYPAIR = 0xA1000043,
TEE_TYPE_X25519_PUBLIC_KEY = 0xA0000044,
TEE_TYPE_X25519_KEYPAIR = 0xA1000044,
TEE_TYPE_SM2_DSA_PUBLIC_KEY = 0xA0000045,
TEE_TYPE_SM2_DSA_KEYPAIR = 0xA1000045,
TEE_TYPE_SM2_KEP_PUBLIC_KEY = 0xA0000046,
TEE_TYPE_SM2_KEP_KEYPAIR = 0xA1000046,
TEE_TYPE_SM2_PKE_PUBLIC_KEY = 0xA0000047,
TEE_TYPE_SM2_PKE_KEYPAIR = 0xA1000047,
TEE_TYPE_HMAC_SM3 = 0xA0000007,
TEE_TYPE_SM4 = 0xA0000014,
TEE_TYPE_HKDF = 0xA000004A,
TEE_TYPE_SIP_HASH = 0xF0000002,
TEE_TYPE_PBKDF2_HMAC = 0xF0000004,
TEE_TYPE_PRF = 0xF0000005,
TEE_TYPE_CORRUPTED_OBJECT = 0xA00000BE,
};
* @brief Maximum length for the object name.
*
* @since 20
*/
#define OBJECT_NAME_LEN_MAX 256
* @brief Defines an object handle.
*
* @since 20
*/
struct __TEE_ObjectHandle {
void *dataPtr;
uint32_t dataLen;
uint8_t dataName[OBJECT_NAME_LEN_MAX];
TEE_ObjectInfo *ObjectInfo;
TEE_Attribute *Attribute;
uint32_t attributesLen;
uint32_t CRTMode;
void *infoattrfd;
uint32_t generate_flag;
uint32_t storage_id;
};
* @brief Defines the <b>__TEE_ObjectHandle</b> struct.
*
* @see __TEE_ObjectHandle
*
* @since 20
*/
typedef struct __TEE_ObjectHandle *TEE_ObjectHandle;
* @brief Defines the length of the node.
*
* @since 20
*/
#define NODE_LEN 8
* @brief Defines an UUID of TA.
*
* @since 20
*/
typedef struct tee_uuid {
uint32_t timeLow;
uint16_t timeMid;
uint16_t timeHiAndVersion;
uint8_t clockSeqAndNode[NODE_LEN];
} TEE_UUID;
* @brief Defines the type of spawn UUID.
*
* @since 20
*/
typedef struct spawn_uuid {
uint64_t uuid_valid;
TEE_UUID uuid;
} spawn_uuid_t;
* @brief Enumerates the result codes used in the TEEKit APIs.
*
* @since 20
*/
enum TEE_Result_Value {
TEE_SUCCESS = 0x00000000,
TEE_ERROR_INVALID_CMD = 0x00000001,
TEE_ERROR_SERVICE_NOT_EXIST = 0x00000002,
TEE_ERROR_SESSION_NOT_EXIST = 0x00000003,
TEE_ERROR_SESSION_MAXIMUM = 0x00000004,
TEE_ERROR_REGISTER_EXIST_SERVICE = 0x00000005,
TEE_ERROR_TARGET_DEAD_FATAL = 0x00000006,
TEE_ERROR_READ_DATA = 0x00000007,
TEE_ERROR_WRITE_DATA = 0x00000008,
TEE_ERROR_TRUNCATE_OBJECT = 0x00000009,
TEE_ERROR_SEEK_DATA = 0x0000000A,
TEE_ERROR_SYNC_DATA = 0x0000000B,
TEE_ERROR_RENAME_OBJECT = 0x0000000C,
TEE_ERROR_TRUSTED_APP_LOAD_ERROR = 0x0000000D,
TEE_ERROR_OTRP_LOAD_NOT_MATCHED = 0x80000100,
TEE_ERROR_OTRP_LOAD_EXCEED = 0x80000101,
TEE_ERROR_OTRP_ACCESS_DENIED = 0x80000102,
TEE_ERROR_OTRP_SERVICE_AGED = 0x80000103,
TEE_ERROR_STORAGE_EIO = 0x80001001,
TEE_ERROR_STORAGE_EAGAIN = 0x80001002,
TEE_ERROR_STORAGE_ENOTDIR = 0x80001003,
TEE_ERROR_STORAGE_EISDIR = 0x80001004,
TEE_ERROR_STORAGE_ENFILE = 0x80001005,
TEE_ERROR_STORAGE_EMFILE = 0x80001006,
TEE_ERROR_STORAGE_EROFS = 0x80001007,
TEE_ERROR_STORAGE_EROLLBACK = 0x80001008,
TEE_ERROR_STORAGE_PATH_WRONG = 0x8000100A,
TEE_ERROR_MSG_QUEUE_OVERFLOW = 0x8000100B,
TEE_ERROR_SUBTHREAD_ACCESS = 0x8000100C,
TEE_ERROR_ORIGIN_PARTITION_INACTIVE = 0x8000100D,
TEE_ERROR_BACKUP_PARTITION_INACTIVE = 0x8000100E,
TEE_ERROR_CORRUPT_OBJECT = 0xF0100001,
TEE_ERROR_STORAGE_NOT_AVAILABLE = 0xF0100003,
TEE_ERROR_CIPHERTEXT_INVALID = 0xF0100006,
TEE_ISOCKET_ERROR_PROTOCOL = 0xF1007001,
TEE_ISOCKET_ERROR_REMOTE_CLOSED = 0xF1007002,
TEE_ISOCKET_ERROR_TIMEOUT = 0xF1007003,
TEE_ISOCKET_ERROR_OUT_OF_RESOURCES = 0xF1007004,
TEE_ISOCKET_ERROR_LARGE_BUFFER = 0xF1007005,
TEE_ISOCKET_WARNING_PROTOCOL = 0xF1007006,
TEE_ERROR_GENERIC = 0xFFFF0000,
TEE_ERROR_ACCESS_DENIED = 0xFFFF0001,
TEE_ERROR_CANCEL = 0xFFFF0002,
TEE_ERROR_ACCESS_CONFLICT = 0xFFFF0003,
TEE_ERROR_EXCESS_DATA = 0xFFFF0004,
TEE_ERROR_BAD_FORMAT = 0xFFFF0005,
TEE_ERROR_BAD_PARAMETERS = 0xFFFF0006,
TEE_ERROR_BAD_STATE = 0xFFFF0007,
TEE_ERROR_ITEM_NOT_FOUND = 0xFFFF0008,
TEE_ERROR_NOT_IMPLEMENTED = 0xFFFF0009,
TEE_ERROR_NOT_SUPPORTED = 0xFFFF000A,
TEE_ERROR_NO_DATA = 0xFFFF000B,
TEE_ERROR_OUT_OF_MEMORY = 0xFFFF000C,
TEE_ERROR_BUSY = 0xFFFF000D,
TEE_ERROR_COMMUNICATION = 0xFFFF000E,
TEE_ERROR_SECURITY = 0xFFFF000F,
TEE_ERROR_SHORT_BUFFER = 0xFFFF0010,
TEE_ERROR_EXTERNAL_CANCEL = 0xFFFF0011,
TEE_PENDING = 0xFFFF2000,
TEE_PENDING2 = 0xFFFF2001,
TEE_PENDING3 = 0xFFFF2002,
TEE_ERROR_TIMEOUT = 0xFFFF3001,
TEE_ERROR_OVERFLOW = 0xFFFF300f,
TEE_ERROR_TARGET_DEAD = 0xFFFF3024,
TEE_ERROR_STORAGE_NO_SPACE = 0xFFFF3041,
TEE_ERROR_MAC_INVALID = 0xFFFF3071,
TEE_ERROR_SIGNATURE_INVALID = 0xFFFF3072,
TEE_ERROR_CERTIFICATE_INVALID = 0xFFFF3073,
TEE_CLIENT_INTR = 0xFFFF4000,
TEE_ERROR_TIME_NOT_SET = 0xFFFF5000,
TEE_ERROR_TIME_NEEDS_RESET = 0xFFFF5001,
TEE_FAIL = 0xFFFF5002,
TEE_ERROR_TIMER = 0xFFFF6000,
TEE_ERROR_TIMER_CREATE_FAILED = 0xFFFF6001,
TEE_ERROR_TIMER_DESTROY_FAILED = 0xFFFF6002,
TEE_ERROR_TIMER_NOT_FOUND = 0xFFFF6003,
TEE_ERROR_RPMB_BASE = 0xFFFF7000,
TEE_ERROR_RPMB_GENERIC = 0xFFFF7001,
TEE_ERROR_RPMB_MAC_FAIL = 0xFFFF7002,
TEE_ERROR_RPMB_COUNTER_FAIL = 0xFFFF7003,
TEE_ERROR_RPMB_ADDR_FAIL = 0xFFFF7004,
TEE_ERROR_RPMB_WRITE_FAIL = 0xFFFF7005,
TEE_ERROR_RPMB_READ_FAIL = 0xFFFF7006,
TEE_ERROR_RPMB_KEY_NOT_PROGRAM = 0xFFFF7007,
TEE_ERROR_RPMB_RESP_UNEXPECT_MSGTYPE = 0xFFFF7100,
TEE_ERROR_RPMB_RESP_UNEXPECT_BLKCNT = 0xFFFF7101,
TEE_ERROR_RPMB_RESP_UNEXPECT_BLKIDX = 0xFFFF7102,
TEE_ERROR_RPMB_RESP_UNEXPECT_WRCNT = 0xFFFF7103,
TEE_ERROR_RPMB_RESP_UNEXPECT_NONCE = 0xFFFF7104,
TEE_ERROR_RPMB_RESP_UNEXPECT_MAC = 0xFFFF7105,
TEE_ERROR_RPMB_FILE_NOT_FOUND = 0xFFFF7106,
TEE_ERROR_RPMB_NOSPC = 0xFFFF7107,
TEE_ERROR_RPMB_SPC_CONFLICT = 0xFFFF7108,
TEE_ERROR_RPMB_NOT_AVAILABLE = 0xFFFF7109,
TEE_ERROR_RPMB_DAMAGED = 0xFFFF710A,
TEE_ERROR_TUI_IN_USE = 0xFFFF7110,
TEE_ERROR_TUI_SWITCH_CHANNAL = 0xFFFF7111,
TEE_ERROR_TUI_CFG_DRIVER = 0xFFFF7112,
TEE_ERROR_TUI_INVALID_EVENT = 0xFFFF7113,
TEE_ERROR_TUI_POLL_EVENT = 0xFFFF7114,
TEE_ERROR_TUI_CANCELED = 0xFFFF7115,
TEE_ERROR_TUI_EXIT = 0xFFFF7116,
TEE_ERROR_TUI_NOT_AVAILABLE = 0xFFFF7117,
TEE_ERROR_SEC_FLASH_NOT_AVAILABLE = 0xFFFF7118,
TEE_ERROR_SESRV_NOT_AVAILABLE = 0xFFFF7119,
TEE_ERROR_BIOSRV_NOT_AVAILABLE = 0xFFFF711A,
TEE_ERROR_ROTSRV_NOT_AVAILABLE = 0xFFFF711B,
TEE_ERROR_ARTSRV_NOT_AVAILABLE = 0xFFFF711C,
TEE_ERROR_HSMSRV_NOT_AVAILABLE = 0xFFFF711D,
TEE_ERROR_VRPMB_AGENT_FAIL = 0xFFFF7200,
TEE_ERROR_VRPMB_RW_FAIL = 0xFFFF7201,
TEE_ERROR_VRPMB_SUPER_MAC_FAILED = 0xFFFF7202,
TEE_ERROR_VRPMB_WRITE_REJECT = 0xFFFF7203,
TEE_ERROR_ANTIROOT_RSP_FAIL = 0xFFFF9110,
TEE_ERROR_ANTIROOT_INVOKE_ERROR = 0xFFFF9111,
TEE_ERROR_AUDIT_FAIL = 0xFFFF9112,
TEE_FAIL2 = 0xFFFF9113,
TEE_ERROR_IPC_OVERFLOW = 0xFFFF9114,
TEE_ERROR_APM = 0xFFFF9115,
TEE_ERROR_CA_AUTHFILE_NOT_EXIST = 0xFFFF9116,
TEE_ERROR_CA_CALLER_ACCESS_DENIED = 0xFFFF9117,
TEE_ERROR_INVALID_TA_FORMAT = 0xFFFF9118,
TEE_DSTB_LOCAL_SIGN_REPORT_ERROR = 0xFFFF9200,
TEE_DSTB_REMOTE_SIGN_REPORT_ERROR = 0xFFFF9201,
TEE_DSTB_LOCAL_REPORT_CERT_CHAIN_ERROR = 0xFFFF9202,
TEE_DSTB_REMOTE_REPORT_CERT_CHAIN_ERROR = 0xFFFF9203,
TEE_DSTB_LOCAL_REPORT_VERIFY_ERROR = 0xFFFF9204,
TEE_DSTB_REMOTE_REPORT_VERIFY_ERROR = 0xFFFF9205,
TEE_DSTB_LOCAL_CERT_CHAIN_VERIFY_ERROR = 0xFFFF9206,
TEE_DSTB_REMOTE_CERT_CHAIN_VERIFY_ERROR = 0xFFFF9207,
TEE_DSTB_LOCAL_INVALID_KEY_VERSION_ERROR = 0xFFFF9208,
TEE_DSTB_REMOTE_INVALID_KEY_VERSION_ERROR = 0xFFFF9209,
TEE_DSTB_INVALID_UDID = 0xFFFF920A,
TEE_DSTB_DERIVE_KEY_ERROR = 0xFFFF920B,
TEE_DSTB_REE_SRV_ERROR = 0xFFFF920C,
TEE_ERROR_TA_ANTI_ROLLBACK = 0xFFFF920D,
TEE_ERROR_RETRY_OPEN_SESSION = 0xFFFF920E,
TEE_ERROR_TA_CTRL_FILE_LOAD_FAIL = 0xFFFF920F,
TEE_ERROR_TA_CTRL_FILE_VERIFY_FAIL = 0xFFFF9210,
TEE_ERROR_TA_VER_BELOW_CONTROL_VER = 0xFFFF9211,
TEE_DSTB_LOCAL_CERT_VALIDITY_ERROR = 0xFFFF9212,
TEE_DSTB_REMOTE_CERT_VALIDITY_ERROR = 0xFFFF9213,
};
* @brief Login type definitions
*
* @since 20
*/
enum TEE_LoginMethod {
TEE_LOGIN_PUBLIC = 0x0,
TEE_LOGIN_USER,
TEE_LOGIN_GROUP,
TEE_LOGIN_APPLICATION = 0x4,
TEE_LOGIN_USER_APPLICATION = 0x5,
TEE_LOGIN_GROUP_APPLICATION = 0x6,
TEE_LOGIN_IDENTIFY = 0x7,
TEEK_LOGIN_IDENTIFY = 0x80000001,
};
* @brief Definitions the TEE Identity.
*
* @since 20
*/
typedef struct {
uint32_t login;
TEE_UUID uuid;
} TEE_Identity;
* @brief Defines the return values.
*
* @since 20
*/
typedef uint32_t TEE_Result;
* @brief Defines the return values.
*
* @since 20
*/
typedef TEE_Result TEEC_Result;
* @brief Origin of the TEE.
*
* @since 20
*/
#define TEE_ORIGIN_TEE 0x00000003
* @brief Origin of the Trusted Application.
*
* @since 20
*/
#define TEE_ORIGIN_TRUSTED_APP 0x00000004
#ifndef _TEE_TA_SESSION_HANDLE
* @brief Defines the handle for a TA session.
*
* @since 20
*/
#define _TEE_TA_SESSION_HANDLE
* @brief Defines the handle of TA session.
*
* @since 20
*/
typedef uint32_t TEE_TASessionHandle;
#endif
* @brief Defines the pointer to <b>TEE_ObjectEnumHandle</b>.
*
* @see __TEE_ObjectEnumHandle
*
* @since 20
*/
typedef struct __TEE_ObjectEnumHandle *TEE_ObjectEnumHandle;
* @brief Defines the pointer to <b>__TEE_OperationHandle</b>.
*
* @see __TEE_OperationHandle
*
* @since 20
*/
typedef struct __TEE_OperationHandle *TEE_OperationHandle;
* @brief Defines the infinite timeout value.
*
* @since 20
*/
#define TEE_TIMEOUT_INFINITE (0xFFFFFFFF)
* @brief Definitions the TEE time.
*
* @since 20
*/
typedef struct {
uint32_t seconds;
uint32_t millis;
} TEE_Time;
* @brief Definitions the date time of TEE.
*
* @since 20
*/
typedef struct {
int32_t seconds;
int32_t millis;
int32_t min;
int32_t hour;
int32_t day;
int32_t month;
int32_t year;
} TEE_Date_Time;
#ifdef __cplusplus
}
#endif
#endif