/* SPDX-License-Identifier: BSD-2-Clause */ /* * Copyright (c) 2017, Linaro Limited */ #ifndef __TEE_TADB_H #define __TEE_TADB_H #include struct tee_tadb_ta_write; struct tee_tadb_ta_read; /* * struct tee_tadb_property * @uuid: UUID of Trusted Application (TA) or Security Domain (SD) * @version: Version of TA or SD * @custom_size:Size of customized properties, prepended to the encrypted * TA binary * @bin_size: Size of the binary TA */ struct tee_tadb_property { TEE_UUID uuid; uint32_t version; uint32_t custom_size; uint32_t bin_size; }; struct tee_fs_rpc_operation; struct tee_tadb_file_operations { TEE_Result (*open)(uint32_t file_number, int *fd); TEE_Result (*create)(uint32_t file_number, int *fd); void (*close)(int fd); TEE_Result (*remove)(uint32_t file_number); TEE_Result (*read_init)(struct tee_fs_rpc_operation *op, int fd, size_t pos, uint8_t **data, size_t bytes); TEE_Result (*read_final)(struct tee_fs_rpc_operation *op, size_t *bytes); TEE_Result (*write_init)(struct tee_fs_rpc_operation *op, int fd, size_t pos, uint8_t **data, size_t len); TEE_Result (*write_final)(struct tee_fs_rpc_operation *op); }; TEE_Result tee_tadb_ta_create(const struct tee_tadb_property *property, struct tee_tadb_ta_write **ta); TEE_Result tee_tadb_ta_write(struct tee_tadb_ta_write *ta, const void *buf, size_t len); void tee_tadb_ta_close_and_delete(struct tee_tadb_ta_write *ta); TEE_Result tee_tadb_ta_close_and_commit(struct tee_tadb_ta_write *ta); TEE_Result tee_tadb_ta_delete(const TEE_UUID *uuid); TEE_Result tee_tadb_ta_open(const TEE_UUID *uuid, struct tee_tadb_ta_read **ta); const struct tee_tadb_property * tee_tadb_ta_get_property(struct tee_tadb_ta_read *ta); TEE_Result tee_tadb_get_tag(struct tee_tadb_ta_read *ta, uint8_t *tag, unsigned int *tag_len); TEE_Result tee_tadb_ta_read(struct tee_tadb_ta_read *ta, void *buf, size_t *len); void tee_tadb_ta_close(struct tee_tadb_ta_read *ta); #endif /*__TEE_TADB_H*/