tpm2_protocol/message/
attached.rs

1// SPDX-License-Identifier: MIT OR Apache-2.0
2// Copyright (c) 2025 Opinsys Oy
3// Copyright (c) 2024-2025 Jarkko Sakkinen
4
5//! 32 Attached Components
6
7use crate::{
8    data::{Tpm2bMaxBuffer, Tpm2bName, TpmAt, TpmCc, TpmiYesNo, TpmlAcCapabilities, TpmsAcOutput},
9    tpm_struct,
10};
11use core::fmt::Debug;
12
13tpm_struct! {
14    #[derive(Debug, PartialEq, Eq, Clone, Copy)]
15    kind: Command,
16    name: TpmAcGetCapabilityCommand,
17    cc: TpmCc::AcGetCapability,
18    no_sessions: true,
19    with_sessions: false,
20    handles: {
21        pub ac: u32,
22    },
23    parameters: {
24        pub capability: TpmAt,
25        pub count: u32,
26    }
27}
28
29tpm_struct! {
30    #[derive(Debug, PartialEq, Eq, Clone)]
31    kind: Response,
32    name: TpmAcGetCapabilityResponse,
33    cc: TpmCc::AcGetCapability,
34    no_sessions: true,
35    with_sessions: false,
36    handles: {},
37    parameters: {
38        pub more_data: TpmiYesNo,
39        pub capabilities_data: TpmlAcCapabilities,
40    }
41}
42
43tpm_struct! {
44    #[derive(Debug, PartialEq, Eq, Clone)]
45    kind: Command,
46    name: TpmAcSendCommand,
47    cc: TpmCc::AcSend,
48    no_sessions: false,
49    with_sessions: true,
50    handles: {
51        pub send_object: crate::data::TpmiDhObject,
52        pub auth_handle: crate::data::TpmiDhObject,
53        pub ac: u32,
54    },
55    parameters: {
56        pub ac_data_in: Tpm2bMaxBuffer,
57    }
58}
59
60tpm_struct! {
61    #[derive(Debug, PartialEq, Eq, Clone)]
62    kind: Response,
63    name: TpmAcSendResponse,
64    cc: TpmCc::AcSend,
65    no_sessions: false,
66    with_sessions: true,
67    handles: {},
68    parameters: {
69        pub ac_data_out: TpmsAcOutput,
70    }
71}
72
73tpm_struct! {
74    #[derive(Debug, PartialEq, Eq, Clone)]
75    kind: Command,
76    name: TpmPolicyAcSendSelectCommand,
77    cc: TpmCc::PolicyAcSendSelect,
78    no_sessions: false,
79    with_sessions: true,
80    handles: {
81        pub policy_session: crate::data::TpmiShAuthSession,
82    },
83    parameters: {
84        pub object_name: Tpm2bName,
85        pub auth_handle_name: Tpm2bName,
86        pub ac_name: Tpm2bName,
87        pub include_object: TpmiYesNo,
88    }
89}
90
91tpm_struct! {
92    #[derive(Debug, Default, PartialEq, Eq, Clone, Copy)]
93    kind: Response,
94    name: TpmPolicyAcSendSelectResponse,
95    cc: TpmCc::PolicyAcSendSelect,
96    no_sessions: false,
97    with_sessions: true,
98    handles: {},
99    parameters: {}
100}
101
102tpm_struct! {
103    #[derive(Debug, PartialEq, Eq, Clone, Copy)]
104    kind: Command,
105    name: TpmActSetTimeoutCommand,
106    cc: TpmCc::ActSetTimeout,
107    no_sessions: false,
108    with_sessions: true,
109    handles: {
110        pub act_handle: u32,
111    },
112    parameters: {
113        pub start_timeout: u32,
114    }
115}
116
117tpm_struct! {
118    #[derive(Debug, Default, PartialEq, Eq, Clone, Copy)]
119    kind: Response,
120    name: TpmActSetTimeoutResponse,
121    cc: TpmCc::ActSetTimeout,
122    no_sessions: false,
123    with_sessions: true,
124    handles: {},
125    parameters: {}
126}