1*5baee69aSJens Wiklander /* 2*5baee69aSJens Wiklander * Copyright (c) 2017, Linaro Limited 3*5baee69aSJens Wiklander * 4*5baee69aSJens Wiklander * SPDX-License-Identifier: BSD-2-Clause 5*5baee69aSJens Wiklander */ 6*5baee69aSJens Wiklander 7*5baee69aSJens Wiklander #ifndef __TEE_TADB_H 8*5baee69aSJens Wiklander #define __TEE_TADB_H 9*5baee69aSJens Wiklander 10*5baee69aSJens Wiklander #include <tee/tee_fs.h> 11*5baee69aSJens Wiklander 12*5baee69aSJens Wiklander struct tee_tadb_ta_write; 13*5baee69aSJens Wiklander struct tee_tadb_ta_read; 14*5baee69aSJens Wiklander 15*5baee69aSJens Wiklander /* 16*5baee69aSJens Wiklander * struct tee_tadb_property 17*5baee69aSJens Wiklander * @uuid: UUID of Trusted Application (TA) or Security Domain (SD) 18*5baee69aSJens Wiklander * @version: Version of TA or SD 19*5baee69aSJens Wiklander * @custom_size:Size of customized properties, prepended to the encrypted 20*5baee69aSJens Wiklander * TA binary 21*5baee69aSJens Wiklander * @bin_size: Size of the binary TA 22*5baee69aSJens Wiklander */ 23*5baee69aSJens Wiklander struct tee_tadb_property { 24*5baee69aSJens Wiklander TEE_UUID uuid; 25*5baee69aSJens Wiklander uint32_t version; 26*5baee69aSJens Wiklander uint32_t custom_size; 27*5baee69aSJens Wiklander uint32_t bin_size; 28*5baee69aSJens Wiklander }; 29*5baee69aSJens Wiklander 30*5baee69aSJens Wiklander struct tee_fs_rpc_operation; 31*5baee69aSJens Wiklander 32*5baee69aSJens Wiklander struct tee_tadb_file_operations { 33*5baee69aSJens Wiklander TEE_Result (*open)(uint32_t file_number, int *fd); 34*5baee69aSJens Wiklander TEE_Result (*create)(uint32_t file_number, int *fd); 35*5baee69aSJens Wiklander void (*close)(int fd); 36*5baee69aSJens Wiklander TEE_Result (*remove)(uint32_t file_number); 37*5baee69aSJens Wiklander 38*5baee69aSJens Wiklander TEE_Result (*read_init)(struct tee_fs_rpc_operation *op, int fd, 39*5baee69aSJens Wiklander size_t pos, uint8_t **data, size_t bytes); 40*5baee69aSJens Wiklander TEE_Result (*read_final)(struct tee_fs_rpc_operation *op, 41*5baee69aSJens Wiklander size_t *bytes); 42*5baee69aSJens Wiklander 43*5baee69aSJens Wiklander TEE_Result (*write_init)(struct tee_fs_rpc_operation *op, int fd, 44*5baee69aSJens Wiklander size_t pos, uint8_t **data, size_t len); 45*5baee69aSJens Wiklander TEE_Result (*write_final)(struct tee_fs_rpc_operation *op); 46*5baee69aSJens Wiklander }; 47*5baee69aSJens Wiklander 48*5baee69aSJens Wiklander TEE_Result tee_tadb_ta_create(const struct tee_tadb_property *property, 49*5baee69aSJens Wiklander struct tee_tadb_ta_write **ta); 50*5baee69aSJens Wiklander TEE_Result tee_tadb_ta_write(struct tee_tadb_ta_write *ta, const void *buf, 51*5baee69aSJens Wiklander size_t len); 52*5baee69aSJens Wiklander void tee_tadb_ta_close_and_delete(struct tee_tadb_ta_write *ta); 53*5baee69aSJens Wiklander TEE_Result tee_tadb_ta_close_and_commit(struct tee_tadb_ta_write *ta); 54*5baee69aSJens Wiklander 55*5baee69aSJens Wiklander TEE_Result tee_tadb_ta_delete(const TEE_UUID *uuid); 56*5baee69aSJens Wiklander 57*5baee69aSJens Wiklander TEE_Result tee_tadb_ta_open(const TEE_UUID *uuid, struct tee_tadb_ta_read **ta); 58*5baee69aSJens Wiklander const struct tee_tadb_property * 59*5baee69aSJens Wiklander tee_tadb_ta_get_property(struct tee_tadb_ta_read *ta); 60*5baee69aSJens Wiklander TEE_Result tee_tadb_ta_read(struct tee_tadb_ta_read *ta, void *buf, 61*5baee69aSJens Wiklander size_t *len); 62*5baee69aSJens Wiklander void tee_tadb_ta_close(struct tee_tadb_ta_read *ta); 63*5baee69aSJens Wiklander 64*5baee69aSJens Wiklander 65*5baee69aSJens Wiklander #endif /*__TEE_TADB_H*/ 66