Skip to main content

botan_sys/
tpm2.rs

1use crate::ffi_types::{c_char, c_int};
2use crate::rng::botan_rng_t;
3
4pub enum botan_tpm2_ctx_struct {}
5pub type botan_tpm2_ctx_t = *mut botan_tpm2_ctx_struct;
6
7pub enum botan_tpm2_session_struct {}
8pub type botan_tpm2_session_t = *mut botan_tpm2_session_struct;
9
10pub enum botan_tpm2_crypto_backend_state_struct {}
11pub type botan_tpm2_crypto_backend_state_t = *mut botan_tpm2_crypto_backend_state_struct;
12
13// Opaque ESYS_CONTEXT from tss2
14#[repr(C)]
15pub struct ESYS_CONTEXT {
16    _private: [u8; 0],
17}
18
19botan_ffi_functions! {
20    #[cfg(botan_ffi_20250506)]
21    pub fn botan_tpm2_supports_crypto_backend() -> c_int;
22
23    #[cfg(botan_ffi_20250506)]
24    pub fn botan_tpm2_ctx_init(
25        ctx_out: *mut botan_tpm2_ctx_t,
26        tcti_nameconf: *const c_char,
27    ) -> c_int;
28
29    #[cfg(botan_ffi_20250506)]
30    pub fn botan_tpm2_ctx_init_ex(
31        ctx_out: *mut botan_tpm2_ctx_t,
32        tcti_name: *const c_char,
33        tcti_conf: *const c_char,
34    ) -> c_int;
35
36    #[cfg(botan_ffi_20250506)]
37    pub fn botan_tpm2_ctx_from_esys(
38        ctx_out: *mut botan_tpm2_ctx_t,
39        esys_ctx: *mut ESYS_CONTEXT,
40    ) -> c_int;
41
42    #[cfg(botan_ffi_20250506)]
43    pub fn botan_tpm2_ctx_enable_crypto_backend(ctx: botan_tpm2_ctx_t, rng: botan_rng_t) -> c_int;
44
45    #[cfg(botan_ffi_20250506)]
46    pub fn botan_tpm2_ctx_destroy(ctx: botan_tpm2_ctx_t) -> c_int;
47
48    #[cfg(botan_ffi_20250506)]
49    pub fn botan_tpm2_enable_crypto_backend(
50        cbs_out: *mut botan_tpm2_crypto_backend_state_t,
51        esys_ctx: *mut ESYS_CONTEXT,
52        rng: botan_rng_t,
53    ) -> c_int;
54
55    #[cfg(botan_ffi_20250506)]
56    pub fn botan_tpm2_crypto_backend_state_destroy(cbs: botan_tpm2_crypto_backend_state_t)
57    -> c_int;
58
59    #[cfg(botan_ffi_20250506)]
60    pub fn botan_tpm2_rng_init(
61        rng_out: *mut botan_rng_t,
62        ctx: botan_tpm2_ctx_t,
63        s1: botan_tpm2_session_t,
64        s2: botan_tpm2_session_t,
65        s3: botan_tpm2_session_t,
66    ) -> c_int;
67
68    #[cfg(botan_ffi_20250506)]
69    pub fn botan_tpm2_unauthenticated_session_init(
70        session_out: *mut botan_tpm2_session_t,
71        ctx: botan_tpm2_ctx_t,
72    ) -> c_int;
73
74    #[cfg(botan_ffi_20250506)]
75    pub fn botan_tpm2_session_destroy(session: botan_tpm2_session_t) -> c_int;
76}