1e656c62eSopenharmony_ci/* 2e656c62eSopenharmony_ci * Copyright (C) 2022 Huawei Technologies Co., Ltd. 3e656c62eSopenharmony_ci * Licensed under the Mulan PSL v2. 4e656c62eSopenharmony_ci * You can use this software according to the terms and conditions of the Mulan PSL v2. 5e656c62eSopenharmony_ci * You may obtain a copy of Mulan PSL v2 at: 6e656c62eSopenharmony_ci * http://license.coscl.org.cn/MulanPSL2 7e656c62eSopenharmony_ci * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR 8e656c62eSopenharmony_ci * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR 9e656c62eSopenharmony_ci * PURPOSE. 10e656c62eSopenharmony_ci * See the Mulan PSL v2 for more details. 11e656c62eSopenharmony_ci */ 12e656c62eSopenharmony_ci 13e656c62eSopenharmony_ci#ifndef SECFILE_LOAD_AGENT_H 14e656c62eSopenharmony_ci#define SECFILE_LOAD_AGENT_H 15e656c62eSopenharmony_ci 16e656c62eSopenharmony_ci#include <sys/ioctl.h> 17e656c62eSopenharmony_ci#include "tee_default_path.h" 18e656c62eSopenharmony_ci#include "tc_ns_client.h" 19e656c62eSopenharmony_ci 20e656c62eSopenharmony_ci#define SECFILE_LOAD_AGENT_ID 0x4c4f4144 // SECFILE-LOAD-AGENT 21e656c62eSopenharmony_ci#define MAX_SEC_FILE_NAME_LEN 32 22e656c62eSopenharmony_ci 23e656c62eSopenharmony_citypedef enum { 24e656c62eSopenharmony_ci LOAD_TA_SEC = 0, 25e656c62eSopenharmony_ci LOAD_SERVICE_SEC, 26e656c62eSopenharmony_ci LOAD_LIB_SEC, 27e656c62eSopenharmony_ci} SecAgentCmd; 28e656c62eSopenharmony_ci 29e656c62eSopenharmony_cistruct SecAgentControlType { 30e656c62eSopenharmony_ci SecAgentCmd cmd; 31e656c62eSopenharmony_ci uint32_t magic; 32e656c62eSopenharmony_ci int32_t ret; 33e656c62eSopenharmony_ci uint32_t error; 34e656c62eSopenharmony_ci union { 35e656c62eSopenharmony_ci struct { 36e656c62eSopenharmony_ci TEEC_UUID uuid; 37e656c62eSopenharmony_ci } TaSec; 38e656c62eSopenharmony_ci struct { 39e656c62eSopenharmony_ci TEEC_UUID uuid; 40e656c62eSopenharmony_ci char serviceName[MAX_SEC_FILE_NAME_LEN]; 41e656c62eSopenharmony_ci } ServiceSec; 42e656c62eSopenharmony_ci struct { 43e656c62eSopenharmony_ci TEEC_UUID uuid; 44e656c62eSopenharmony_ci char libName[MAX_SEC_FILE_NAME_LEN]; 45e656c62eSopenharmony_ci } LibSec; 46e656c62eSopenharmony_ci }; 47e656c62eSopenharmony_ci}; 48e656c62eSopenharmony_ci 49e656c62eSopenharmony_civoid *SecfileLoadAgentThread(void *control); 50e656c62eSopenharmony_ciint32_t LoadSecFile(int tzFd, FILE *fp, enum SecFileType fileType, const TEEC_UUID *uuid); 51e656c62eSopenharmony_ciint GetSecLoadAgentFd(void); 52e656c62eSopenharmony_civoid SetSecLoadAgentFd(int secLoadAgentFd); 53e656c62eSopenharmony_ci 54e656c62eSopenharmony_ci#endif 55