blob: f631067dc405e61a280e75238c460faa5914378c [file] [log] [blame]
/* SPDX-License-Identifier: BSD-2-Clause */
/*******************************************************************************
* Copyright 2018-2019, Fraunhofer SIT sponsored by Infineon Technologies AG
* All rights reserved.
******************************************************************************/
#ifndef IFAPI_IO_H
#define IFAPI_IO_H
#include <stdio.h>
#include <stdbool.h>
#include "tss2_common.h"
#include "tss2_fapi.h"
typedef struct IFAPI_IO {
FILE *stream;
short pollevents;
const char *char_buffer;
char *char_rbuffer;
size_t buffer_length;
size_t buffer_idx;
} IFAPI_IO;
#ifdef TEST_FAPI_ASYNC
#define _IFAPI_IO_RETRIES 1
#else /* TEST_FAPI_ASYNC */
#define _IFAPI_IO_RETRIES 0
#endif /* TEST_FAPI_ASYNC */
static int _ifapi_io_retry __attribute__((unused)) = _IFAPI_IO_RETRIES;
#define IFAPI_IO_STREAM context->io.stream
#define IFAPI_IO_BUFF context->io.char_buffer
#define IFAPI_IO_RBUFF context->io.char_rbuffer
#define IFAPI_IO_BUFFLEN context->io.buffer_length
#define IFAPI_IO_BUFFIDX context->io.buffer_idx
TSS2_RC
ifapi_io_read_async(
struct IFAPI_IO *io,
const char *filename);
TSS2_RC
ifapi_io_read_finish(
struct IFAPI_IO *io,
uint8_t **buffer,
size_t *length);
TSS2_RC
ifapi_io_write_async(
struct IFAPI_IO *io,
const char *filename,
const uint8_t *buffer,
size_t length);
TSS2_RC
ifapi_io_write_finish(
struct IFAPI_IO *io);
TSS2_RC
ifapi_io_check_file_writeable(
const char *file);
TSS2_RC
ifapi_io_check_create_dir(
const char *dirname, int mode);
TSS2_RC
ifapi_io_remove_file(
const char *file);
TSS2_RC
ifapi_io_remove_directories(
const char *dirname,
const char *keystore_path,
const char *sub_dir);
TSS2_RC
ifapi_io_dirfiles(
const char *dirname,
char ***files,
size_t *numfiles);
TSS2_RC
ifapi_io_dirfiles_all(
const char *searchPath,
char ***pathlist,
size_t *numPaths);
bool
ifapi_io_path_exists(const char *path);
TSS2_RC
ifapi_io_poll(IFAPI_IO * io);
TSS2_RC
ifapi_io_poll_handles(IFAPI_IO *io, FAPI_POLL_HANDLE **handles, size_t *num_handles);
#endif /* IFAPI_IO_H */