xref: /optee_os/core/include/tee/tadb.h (revision ef44161f847bb1f17e6c803e70047d749e7b394e)
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