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