blob: db49193fcc85fa295f184be2236d665b388961fd [file] [log] [blame]
/* SPDX-License-Identifier: BSD-2-Clause */
/*
* Copyright (c) 2017, Linaro Limited
*/
#ifndef __TEE_TADB_H
#define __TEE_TADB_H
#include <tee/tee_fs.h>
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*/