xref: /aosp_15_r20/external/tpm2-tss/src/tss2-tcti/tctildr.h (revision 758e9fba6fc9adbf15340f70c73baee7b168b1c9)
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