1*758e9fbaSOystein Eftevaag /* 2*758e9fbaSOystein Eftevaag * SPDX-License-Identifier: BSD-2-Clause 3*758e9fbaSOystein Eftevaag * Copyright 2019, Intel Corporation 4*758e9fbaSOystein Eftevaag * All rights reserved. 5*758e9fbaSOystein Eftevaag */ 6*758e9fbaSOystein Eftevaag #ifndef TCTILDR_H 7*758e9fbaSOystein Eftevaag #define TCTILDR_H 8*758e9fbaSOystein Eftevaag 9*758e9fbaSOystein Eftevaag #include "tss2_tpm2_types.h" 10*758e9fbaSOystein Eftevaag #include "tss2_tcti.h" 11*758e9fbaSOystein Eftevaag 12*758e9fbaSOystein Eftevaag #define TCTI_SUFFIX ".so" 13*758e9fbaSOystein Eftevaag #define TCTI_SUFFIX_0 TCTI_SUFFIX".0" 14*758e9fbaSOystein Eftevaag #define LIB_PREFIX "lib" 15*758e9fbaSOystein Eftevaag #define TCTI_PREFIX LIB_PREFIX"tss2-tcti" 16*758e9fbaSOystein Eftevaag #define TCTI_NAME_TEMPLATE TCTI_PREFIX"-%s"TCTI_SUFFIX 17*758e9fbaSOystein Eftevaag #define TCTI_NAME_TEMPLATE_0 TCTI_PREFIX"-%s"TCTI_SUFFIX_0 18*758e9fbaSOystein Eftevaag #define DEFAULT_TCTI_LIBRARY_NAME TCTI_PREFIX"-default"TCTI_SUFFIX 19*758e9fbaSOystein Eftevaag 20*758e9fbaSOystein Eftevaag #define TCTILDR_MAGIC 0xbc44a31ca74b4aafULL 21*758e9fbaSOystein Eftevaag 22*758e9fbaSOystein Eftevaag typedef void* TSS2_TCTI_LIBRARY_HANDLE; 23*758e9fbaSOystein Eftevaag typedef struct { 24*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT_COMMON_V2 v2; 25*758e9fbaSOystein Eftevaag TSS2_TCTI_LIBRARY_HANDLE library_handle; 26*758e9fbaSOystein Eftevaag TSS2_TCTI_INFO *info; 27*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tcti; 28*758e9fbaSOystein Eftevaag } TSS2_TCTILDR_CONTEXT; 29*758e9fbaSOystein Eftevaag 30*758e9fbaSOystein Eftevaag TSS2_RC 31*758e9fbaSOystein Eftevaag tcti_from_init(TSS2_TCTI_INIT_FUNC init, 32*758e9fbaSOystein Eftevaag const char* conf, 33*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT **tcti); 34*758e9fbaSOystein Eftevaag TSS2_RC 35*758e9fbaSOystein Eftevaag tcti_from_info(TSS2_TCTI_INFO_FUNC infof, 36*758e9fbaSOystein Eftevaag const char* conf, 37*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT **tcti); 38*758e9fbaSOystein Eftevaag TSS2_RC 39*758e9fbaSOystein Eftevaag tctildr_conf_parse (const char *name_conf, 40*758e9fbaSOystein Eftevaag char *name, 41*758e9fbaSOystein Eftevaag char *conf); 42*758e9fbaSOystein Eftevaag TSS2_RC 43*758e9fbaSOystein Eftevaag tctildr_transmit ( 44*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tctiContext, 45*758e9fbaSOystein Eftevaag size_t command_size, 46*758e9fbaSOystein Eftevaag const uint8_t *command_buffer); 47*758e9fbaSOystein Eftevaag TSS2_RC 48*758e9fbaSOystein Eftevaag tctildr_receive ( 49*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tctiContext, 50*758e9fbaSOystein Eftevaag size_t *response_size, 51*758e9fbaSOystein Eftevaag uint8_t *response_buffer, 52*758e9fbaSOystein Eftevaag int32_t timeout); 53*758e9fbaSOystein Eftevaag void 54*758e9fbaSOystein Eftevaag tctildr_finalize ( 55*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tctiContext); 56*758e9fbaSOystein Eftevaag TSS2_RC 57*758e9fbaSOystein Eftevaag tctildr_cancel ( 58*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tctiContext); 59*758e9fbaSOystein Eftevaag TSS2_RC 60*758e9fbaSOystein Eftevaag tctildr_get_poll_handles ( 61*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tctiContext, 62*758e9fbaSOystein Eftevaag TSS2_TCTI_POLL_HANDLE *handles, 63*758e9fbaSOystein Eftevaag size_t *num_handles); 64*758e9fbaSOystein Eftevaag TSS2_RC 65*758e9fbaSOystein Eftevaag tctildr_set_locality ( 66*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tctiContext, 67*758e9fbaSOystein Eftevaag uint8_t locality); 68*758e9fbaSOystein Eftevaag TSS2_RC 69*758e9fbaSOystein Eftevaag tctildr_make_sticky ( 70*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT *tctiContext, 71*758e9fbaSOystein Eftevaag TPM2_HANDLE *handle, 72*758e9fbaSOystein Eftevaag uint8_t sticky); 73*758e9fbaSOystein Eftevaag TSS2_RC 74*758e9fbaSOystein Eftevaag tcti_from_info (TSS2_TCTI_INFO_FUNC infof, 75*758e9fbaSOystein Eftevaag const char *conf, 76*758e9fbaSOystein Eftevaag TSS2_TCTI_CONTEXT **context); 77*758e9fbaSOystein Eftevaag TSS2_RC 78*758e9fbaSOystein Eftevaag copy_info (const TSS2_TCTI_INFO *info_src, 79*758e9fbaSOystein Eftevaag TSS2_TCTI_INFO *info_dst); 80*758e9fbaSOystein Eftevaag 81*758e9fbaSOystein Eftevaag #endif /* TCTILDR_H */ 82