1fb7ef469SJerome Forissier /* SPDX-License-Identifier: BSD-2-Clause */ 25baee69aSJens Wiklander /* 35baee69aSJens Wiklander * Copyright (c) 2017, Linaro Limited 45baee69aSJens Wiklander */ 55baee69aSJens Wiklander 65baee69aSJens Wiklander #ifndef __TEE_TADB_H 75baee69aSJens Wiklander #define __TEE_TADB_H 85baee69aSJens Wiklander 95baee69aSJens Wiklander #include <tee/tee_fs.h> 105baee69aSJens Wiklander 115baee69aSJens Wiklander struct tee_tadb_ta_write; 125baee69aSJens Wiklander struct tee_tadb_ta_read; 135baee69aSJens Wiklander 145baee69aSJens Wiklander /* 155baee69aSJens Wiklander * struct tee_tadb_property 165baee69aSJens Wiklander * @uuid: UUID of Trusted Application (TA) or Security Domain (SD) 175baee69aSJens Wiklander * @version: Version of TA or SD 185baee69aSJens Wiklander * @custom_size:Size of customized properties, prepended to the encrypted 195baee69aSJens Wiklander * TA binary 205baee69aSJens Wiklander * @bin_size: Size of the binary TA 215baee69aSJens Wiklander */ 225baee69aSJens Wiklander struct tee_tadb_property { 235baee69aSJens Wiklander TEE_UUID uuid; 245baee69aSJens Wiklander uint32_t version; 255baee69aSJens Wiklander uint32_t custom_size; 265baee69aSJens Wiklander uint32_t bin_size; 275baee69aSJens Wiklander }; 285baee69aSJens Wiklander 295baee69aSJens Wiklander struct tee_fs_rpc_operation; 305baee69aSJens Wiklander 315baee69aSJens Wiklander struct tee_tadb_file_operations { 325baee69aSJens Wiklander TEE_Result (*open)(uint32_t file_number, int *fd); 335baee69aSJens Wiklander TEE_Result (*create)(uint32_t file_number, int *fd); 345baee69aSJens Wiklander void (*close)(int fd); 355baee69aSJens Wiklander TEE_Result (*remove)(uint32_t file_number); 365baee69aSJens Wiklander 375baee69aSJens Wiklander TEE_Result (*read_init)(struct tee_fs_rpc_operation *op, int fd, 385baee69aSJens Wiklander size_t pos, uint8_t **data, size_t bytes); 395baee69aSJens Wiklander TEE_Result (*read_final)(struct tee_fs_rpc_operation *op, 405baee69aSJens Wiklander size_t *bytes); 415baee69aSJens Wiklander 425baee69aSJens Wiklander TEE_Result (*write_init)(struct tee_fs_rpc_operation *op, int fd, 435baee69aSJens Wiklander size_t pos, uint8_t **data, size_t len); 445baee69aSJens Wiklander TEE_Result (*write_final)(struct tee_fs_rpc_operation *op); 455baee69aSJens Wiklander }; 465baee69aSJens Wiklander 475baee69aSJens Wiklander TEE_Result tee_tadb_ta_create(const struct tee_tadb_property *property, 485baee69aSJens Wiklander struct tee_tadb_ta_write **ta); 495baee69aSJens Wiklander TEE_Result tee_tadb_ta_write(struct tee_tadb_ta_write *ta, const void *buf, 505baee69aSJens Wiklander size_t len); 515baee69aSJens Wiklander void tee_tadb_ta_close_and_delete(struct tee_tadb_ta_write *ta); 525baee69aSJens Wiklander TEE_Result tee_tadb_ta_close_and_commit(struct tee_tadb_ta_write *ta); 535baee69aSJens Wiklander 545baee69aSJens Wiklander TEE_Result tee_tadb_ta_delete(const TEE_UUID *uuid); 555baee69aSJens Wiklander 565baee69aSJens Wiklander TEE_Result tee_tadb_ta_open(const TEE_UUID *uuid, struct tee_tadb_ta_read **ta); 575baee69aSJens Wiklander const struct tee_tadb_property * 585baee69aSJens Wiklander tee_tadb_ta_get_property(struct tee_tadb_ta_read *ta); 590b345c6cSJens Wiklander TEE_Result tee_tadb_get_tag(struct tee_tadb_ta_read *ta, uint8_t *tag, 600b345c6cSJens Wiklander unsigned int *tag_len); 61*ef44161fSJens Wiklander TEE_Result tee_tadb_ta_read(struct tee_tadb_ta_read *ta, void *buf_core, 62*ef44161fSJens Wiklander void *buf_user, size_t *len); 635baee69aSJens Wiklander void tee_tadb_ta_close(struct tee_tadb_ta_read *ta); 645baee69aSJens Wiklander 655baee69aSJens Wiklander 665baee69aSJens Wiklander #endif /*__TEE_TADB_H*/ 67