{
global:
/* GP Trusted Storage API */
TEE_GetObjectInfo1;
TEE_RestrictObjectUsage1;
TEE_GetObjectBufferAttribute;
TEE_GetObjectValueAttribute;
TEE_CloseObject;
TEE_AllocateTransientObject;
TEE_FreeTransientObject;
TEE_ResetTransientObject;
TEE_PopulateTransientObject;
TEE_InitRefAttribute;
TEE_InitValueAttribute;
TEE_CopyObjectAttributes1;
TEE_GenerateKey;
TEE_CreatePersistentObject;
TEE_OpenPersistentObject;
TEE_ReadObjectData;
TEE_WriteObjectData;
TEE_TruncateObjectData;
TEE_SeekObjectData;
TEE_CloseAndDeletePersistentObject;
TEE_CloseAndDeletePersistentObject1;
TEE_RenamePersistentObject;
TEE_AllocatePersistentObjectEnumerator;
TEE_FreePersistentObjectEnumerator;
TEE_ResetPersistentObjectEnumerator;
TEE_StartPersistentObjectEnumerator;
TEE_GetNextPersistentObject;
TEE_SyncPersistentObject;
TEE_InfoObjectData;

/* GP Memory Management Functions */
TEE_Free;
TEE_Malloc;
TEE_MemCompare;
TEE_CheckMemoryAccessRights;
TEE_MemFill;
TEE_MemMove;
TEE_Realloc;
TEE_GetInstanceData;
TEE_SetInstanceData;

/* GP Cryptographic Operations API */
TEE_SetCryptoFlag;
TEE_SetObjectFlag;
TEE_AllocateOperation;
TEE_FreeOperation;
TEE_GetOperationInfo;
TEE_GetOperationInfoMultiple;
TEE_ResetOperation;
TEE_SetOperationKey;
TEE_SetOperationKey2;
TEE_CopyOperation;
TEE_CipherInit;
TEE_CipherUpdate;
TEE_CipherDoFinal;
TEE_DigestUpdate;
TEE_DigestDoFinal;
TEE_MACInit;
TEE_MACUpdate;
TEE_MACComputeFinal;
TEE_MACCompareFinal;
TEE_DeriveKey;
TEE_GenerateRandom;
TEE_AEInit;
TEE_AEUpdateAAD;
TEE_AEUpdate;
TEE_AEEncryptFinal;
TEE_AEDecryptFinal;
TEE_AsymmetricEncrypt;
TEE_AsymmetricDecrypt;
TEE_AsymmetricSignDigest;
TEE_AsymmetricVerifyDigest;
TEE_IsAlgorithmSupported;

/* GP  Arithmetical API */
TEE_BigIntInit;
TEE_BigIntInitFMM;
TEE_BigIntInitFMMContext;
TEE_BigIntInitFMMContext1;
TEE_BigIntFMMSizeInU32;
TEE_BigIntFMMContextSizeInU32;
TEE_BigIntConvertFromOctetString;
TEE_BigIntConvertToOctetString;
TEE_BigIntConvertFromS32;
TEE_BigIntConvertToS32;
TEE_BigIntCmp;
TEE_BigIntCmpS32;
TEE_BigIntShiftRight;
TEE_BigIntGetBit;
TEE_BigIntSetBit;
TEE_BigIntGetBitCount;
TEE_BigIntAssign;
TEE_BigIntAbs;
TEE_BigIntAdd;
TEE_BigIntSub;
TEE_BigIntNeg;
TEE_BigIntMul;
TEE_BigIntSquare;
TEE_BigIntDiv;
TEE_BigIntMod;
TEE_BigIntAddMod;
TEE_BigIntSubMod;
TEE_BigIntInvMod;
TEE_BigIntMulMod;
TEE_BigIntSquareMod;
TEE_BigIntRelativePrime;
TEE_BigIntComputeExtendedGcd;
TEE_BigIntIsProbablePrime;
TEE_BigIntConvertFromFMM;
TEE_BigIntConvertToFMM;
TEE_BigIntComputeFMM;
TEE_BigIntExpMod;

/* GP Trusted Core Framework API */
TEE_Panic;
TEE_OpenTASession;
TEE_CloseTASession;
TEE_InvokeTACommand;

TEE_GetPropertyAsString;
TEE_GetPropertyAsBool;
TEE_GetPropertyAsU32;
TEE_GetPropertyAsU64;
TEE_GetPropertyAsBinaryBlock;
TEE_GetPropertyAsUUID;
TEE_GetPropertyAsIdentity;
TEE_AllocatePropertyEnumerator;
TEE_FreePropertyEnumerator;
TEE_StartPropertyEnumerator;
TEE_ResetPropertyEnumerator;
TEE_GetPropertyName;
TEE_GetNextProperty;

/* GP TIME API */
TEE_GetSystemTime;
TEE_GetREETime;
TEE_GetTAPersistentTime;
TEE_SetTAPersistentTime;
TEE_Wait;

/* TEE AGENT API */
tee_agent_lock;
tee_agent_unlock;
tee_send_agent_cmd;
tee_get_agent_buffer;

/* extend API */
AddCaller_CA;
AddCaller_TA_all;
tee_drv_open;
tee_drv_ioctl;
tee_drv_close;
tee_ext_root_uuid_derive_key;
tee_hal_get_provision_key;
g_debug_prefix;

cs_server_loop;
get_valid_bit;

/* the following apis are exported for gtask dynamic link tee_shared library*/
BN_new;
BN_free;
BN_bin2bn;
BN_sub;
BN_add;
BN_cmp;
BN_mul;
BN_dup;
BN_gcd;
BN_div;
BN_set_word;
BN_sub_word;
BN_mod_inverse;
BN_CTX_new;
BN_CTX_free;
BN_clear_free;
CRYPTO_malloc;
OPENSSL_cleanse;
CRYPTO_free;
ossl_x25519;

RSA_new;
RSA_free;
RSA_size;
RSA_set0_key;
RSA_set0_factors;
RSA_set0_crt_params;
RSA_verify;
RSA_private_decrypt;

EC_POINT;
EC_POINT_new;
EC_POINT_free;
EC_POINT_oct2point;
EC_POINT_mul;
EC_POINT_add;
EC_POINT_is_on_curve;
EC_POINT_is_at_infinity;
EC_POINT_get_affine_coordinates_GFp;
EC_POINT_set_affine_coordinates_GFp;
EC_KEY_new;
EC_GROUP;
EC_GROUP_get0_order;
EC_GROUP_free;
EC_GROUP_new_by_curve_name;
EC_KEY_set_private_key;
EVP_PKEY_assign_RSA;
EC_KEY_set_group;
ECDH_compute_key;
EVP_PKEY_assign;
EVP_PKEY_CTX_new;
EVP_PKEY_encrypt_init;
EVP_PKEY_encrypt;
EVP_PKEY_CTX_free;
EVP_PKEY_decrypt_init;
EVP_PKEY_decrypt;
ECDSA_do_sign;
ECDSA_SIG_get0;
ECDSA_SIG_free;
ECDSA_SIG_new;
ECDSA_SIG_set0;
ECDSA_do_verify;
ED25519_public_from_private;
#ifdef OPENSSL_ENABLE
ED25519_sign;
ED25519_verify;
#endif
#ifdef OPENSSL3_ENABLE
ossl_ed25519_sign;
ossl_ed25519_verify;
#endif

SHA256_Init;
SHA256_Update;
SHA256_Final;
SHA512_Init;
SHA512_Update;
SHA512_Final;

EVP_DecryptInit;
EVP_md5;
EVP_sha1;
EVP_sha224;
EVP_sha384;
EVP_MD_CTX_init;
EVP_DigestInit_ex;
EVP_DigestUpdate;
EVP_MD_CTX_cleanup;
EVP_MD_CTX_reset;
EVP_DigestFinal_ex;
SHA1;
HMAC_Init;
HMAC_Update;
HMAC_Final;
EVP_CIPHER_CTX_cleanup;
EVP_aes_256_ccm;
EVP_CIPHER_CTX_ctrl;
EVP_Cipher;
HMAC_CTX_new;
HMAC_CTX_free;
EVP_aes_256_ctr;
EVP_CIPHER_CTX_new;
EVP_CipherInit_ex;
EVP_CIPHER_CTX_free;
EVP_aes_128_gcm;
EVP_aes_192_gcm;
EVP_aes_256_gcm;
EVP_EncryptUpdate;
EVP_EncryptFinal_ex;
EVP_DecryptUpdate;
EVP_DecryptFinal_ex;

#ifdef SUPPORT_EXPORT_OPENSSL_SYMBOL
BN_rand;
BN_bn2bin;
BN_GENCB_free;
BN_mod_exp;
BN_hex2bn;
BN_num_bits;
PEM_write_bio_RSA_PUBKEY;
BN_num_bytes;
BIO_free;
BN_GENCB_set_old;
BN_set_bit;
BIO_new;
BN_clear;
RSA_generate_key_ex;
RAND_bytes;
EVP_EncryptInit_ex;
EVP_DecryptInit_ex;
BN_GENCB_new;
BIO_read;
BIO_ctrl_pending;
BN_bn2hex;
BIO_s_mem;
OPENSSL_free;
RSAPrivateKey_dup;
HMAC_CTX_copy;
HMAC_Init_ex;
HMAC_CTX_reset;
RAND_priv_bytes;
BIO_new_mem_buf;
EC_GROUP_get_point_conversion_form;
EC_KEY_get0_group;
EC_KEY_get0_public_key;
EC_POINT_point2oct;
EVP_DigestSignFinal;
EVP_DigestSignInit;
EVP_DigestSignUpdate;
EVP_DigestVerify;
EVP_DigestVerifyInit;
EVP_MD_CTX_free;
EVP_MD_CTX_new;
EVP_PKEY_CTX_add1_hkdf_info;
EVP_PKEY_CTX_new_id;
EVP_PKEY_CTX_set_hkdf_md;
EVP_PKEY_CTX_set_rsa_padding;
EVP_PKEY_CTX_set_rsa_pss_saltlen;
EVP_PKEY_CTX_set1_hkdf_key;
EVP_PKEY_CTX_set1_hkdf_salt;
EVP_PKEY_derive;
EVP_PKEY_free;
EVP_PKEY_new;
EVP_PKEY_set1_RSA;
PEM_read_bio_RSAPrivateKey;
PEM_read_bio_RSAPublicKey;
EVP_MD_CTX_destroy;
HMAC_CTX_cleanup;
EVP_CIPHER_CTX_mode;
EVP_aes_192_cbc;
EVP_aes_128_ecb;
EVP_aes_192_ecb;
EVP_aes_256_ecb;
EVP_aes_128_wrap;
EVP_aes_192_wrap;
EVP_aes_256_wrap;
EVP_aes_192_wrap_pad;
EVP_aes_128_wrap_pad;
EVP_aes_256_wrap_pad;
EVP_CIPHER_CTX_set_flags;
RSA_blinding_on;
RSA_sign;
PEM_read_bio_X509;
X509_free;
X509_STORE_new;
X509_STORE_set_flags;
X509_STORE_add_cert;
X509_STORE_CTX_new;
X509_STORE_CTX_init;
X509_verify_cert;
X509_get_pubkey;
EVP_PKEY_get1_RSA;
RSA_public_encrypt;
PKCS8_PRIV_KEY_INFO_free;
OPENSSL_init_crypto;
EVP_CIPHER_flags;
OPENSSL_malloc;
HMAC_CTX_init;
RSA_public_decrypt;
RSA_private_encrypt;
RSA_blinding_off;
RSA_get_default_method;
RSA_set_method;
d2i_PKCS8_PRIV_KEY_INFO;
EVP_PKCS82PKEY;
EVP_PKEY2PKCS8;
i2d_PKCS8_PRIV_KEY_INFO;
RSA_padding_add_PKCS1_PSS;
RSA_verify_PKCS1_PSS;
EVP_MD_size;
EVP_CIPHER_CTX_cipher;
PEM_write_bio_RSAPrivateKey;
EC_POINT_cmp;
EVP_PKEY_CTX_ctrl;
EVP_PKEY_derive_init;
BN_priv_rand;
RSA_pkey_ctx_ctrl;
RSA_get0_n;
RSA_get0_e;
RSA_get0_d;
RSA_get0_p;
RSA_get0_q;
RSA_get0_dmp1;
RSA_get0_dmq1;
RSA_get0_iqmp;
PEM_write_bio_RSAPublicKey;
PEM_read_bio_RSA_PUBKEY;
SHA384;
SHA384_Init;
SHA384_Update;
SHA384_Final;
SHA1_Init;
SHA1_Update;
SHA1_Final;
SHA1_Transform;
SHA224_Init;
SHA224_Update;
SHA224_Final;
SHA224;
SHA256_Transform;
SHA512;
SHA512_Transform;
#endif

EVP_sha256;
EVP_sha512;
SHA256;
HMAC;
EVP_CipherInit;
EVP_CipherUpdate;
EVP_CipherFinal_ex;
EVP_aes_256_cbc;
EVP_CIPHER_CTX_reset;
EVP_CIPHER_CTX_set_padding;
EC_KEY_new_by_curve_name;
EC_KEY_generate_key;
EC_KEY_free;
RSA_get0_key;
RSA_get0_factors;
RSA_get0_crt_params;

/* may not be exported on OH platform */
drv_call_new;
uart_cprintf;
uart_printf_func;
tee_print;
tee_print_driver;
tee_report;
get_global_handle;
set_global_handle;
tee_secure_img_release_verify;
cinit00;
tee_init;
tee_task_entry;
set_log_use_tid_flag;
get_tlv_sharedmem;
tee_ext_get_advsecmode;

sleep;
nanosleep;
localtime;
get_sys_data_time;
adjust_sys_time;
get_sys_rtc_time;
release_timer_event;
set_ta_timer_permission;
tee_time_event_create;
tee_time_event_destroy;
tee_time_event_start;
tee_time_event_stop;
tee_time_event_get_expire;
tee_read_time_stamp;
tee_msleep;

tee_internal_derive_key;
tee_ext_get_dieid;
tee_crypto_derive_root_key;
derive_ecc_private_key_from_huk;
tee_crypto_hmac;
ecc_derive_public_key;
get_effective_size;
rsa_build_public_key;
get_class_ecc_key;
x509_cert_validate;
get_issuer_from_cert;
get_serial_number_from_cert;
x509_crl_validate;
get_issuer_from_crl;
get_revocation_list_from_crl;
get_subject_CN;
get_subject_OU;
get_subject_x509_cn;
get_subject_x509_ou;
get_subject_public_key_new;
import_pub_from_sp;
rsa_verify_digest;
get_validity_from_cert;
ecc_verify_digest;

tee_get_chip_type;

ipc_create_single_channel;
ipc_create_channel_native;
ipc_send_msg_sync;
ipc_msg_qsend;
ipc_msg_snd;
ipc_msg_rcv;
ipc_msg_rcv_safe;
ipc_msg_rcv_a;
ipc_msg_q_recv;

delete_all_ta2ta_session;
clear_session_exception;

/* STUB API Begin */
/* RPMB API */
tee_ext_rpmb_protect_cfg_blk_write;
tee_ext_rpmb_protect_cfg_blk_read;
tee_ext_rpmb_driver_write;
tee_ext_rpmb_driver_read;
tee_ext_rpmb_driver_remove;
tee_ext_rpmb_format;
TEE_RPMB_FS_Init;
TEE_RPMB_FS_Format;
TEE_RPMB_FS_Write;
TEE_RPMB_FS_Write_Attr;
TEE_RPMB_FS_Read;
TEE_RPMB_FS_Rename;
TEE_RPMB_FS_Rm;
TEE_RPMB_FS_Stat;
TEE_RPMB_FS_StatDisk;
TEE_RPMB_FS_SetAttr;
TEE_RPMB_FS_Erase;
TEE_RPMB_KEY_Status;
tee_rpmb_fs_getseclevel;

/* SE API */
TEE_SEServiceOpen;
TEE_SEServiceClose;
TEE_SEServiceGetReaders;
TEE_SEReaderGetProperties;
TEE_SEReaderGetName;
TEE_SEReaderOpenSession;
TEE_SEReaderCloseSessions;
TEE_SESessionGetATR;
TEE_SESessionIsClosed;
TEE_SESessionClose;
TEE_SESessionCloseChannels;
TEE_SESessionOpenBasicChannel;
TEE_SESessionOpenLogicalChannel;
TEE_SEChannelClose;
TEE_SEChannelSelectNext;
TEE_SEChannelGetSelectResponse;
TEE_SEChannelTransmit;
TEE_SESecureChannelOpen;
TEE_SESecureChannelClose;
TEE_SEChannelGetID;

/* TUI API */
TEE_TUIInitSession;
TEE_TUICloseSession;
TEE_TUICheckTextFormat;
TEE_TUIGetScreenInfo;
TEE_TUIDisplayScreen;
TEE_TUINotify_fp;
TEE_TUISetInfo;
TEE_TUISendEvent;
TEE_TUISetLabel;

/* RTC TIME API */
tee_ext_create_timer;
tee_ext_destory_timer;
tee_ext_get_timer_expire;
tee_ext_get_timer_remain;
tee_get_secure_rtc_time;

/* DYN SRV API */
tee_srv_get_uuid_by_sender;
tee_srv_unmap_from_task;
tee_srv_map_from_task;
tee_srv_cs_server_loop;
tee_common_ipc_proc_cmd;

/* Share MEM API */
tee_alloc_sharemem_aux;
tee_alloc_coherent_sharemem_aux;
tee_free_sharemem;
copy_from_sharemem;
copy_to_sharemem;

/* EXTEND API */
tee_ext_get_caller_info;
tee_ext_get_caller_userid;
tee_get_session_type;
tee_ext_get_device_unique_id;
tee_ext_derive_key_iter;
tee_ext_derive_key_iter_by_huk2;
TEE_EXT_DeriveTARootKey;
tee_ext_derive_ta_root_key_by_huk2;
tee_ext_derive_key_iter_by_huk2_enhance;
tee_ext_root_derive_key2_by_huk2;
tee_ext_root_uuid_derive_key_by_huk2;
tee_ext_root_derive_key2_by_huk2_enhance;
tee_ext_root_uuid_derive_key_by_huk2_enhance;
tee_dstb_gen_sharekey;
tee_dstb_pre_attestation;
pthread_attr_settee;
tee_query_ta_measure_report;
tee_query_mspc_measure_report;
tee_ext_derive_ta_platfrom_keys;
spi_notify_set_shadow_priority;
tee_ext_get_recoverymode;
/* STUB API End */

local: *;
};
