1use crate::{
8 data::{
9 Tpm2bAuth, Tpm2bDigest, Tpm2bMaxBuffer, TpmAlgId, TpmCc, TpmRh, TpmlDigestValues,
10 TpmtTkHashcheck,
11 },
12 tpm_struct, TpmTransient,
13};
14use core::fmt::Debug;
15
16tpm_struct! {
17 #[derive(Debug, PartialEq, Eq, Clone)]
18 kind: Command,
19 name: TpmHmacStartCommand,
20 cc: TpmCc::HmacStart,
21 no_sessions: false,
22 with_sessions: true,
23 handles: {
24 pub handle: crate::data::TpmiDhObject,
25 },
26 parameters: {
27 pub auth: Tpm2bAuth,
28 pub hash_alg: TpmAlgId,
29 }
30}
31
32tpm_struct! {
33 #[derive(Debug, PartialEq, Eq, Clone, Copy)]
34 kind: Response,
35 name: TpmHmacStartResponse,
36 cc: TpmCc::HmacStart,
37 no_sessions: false,
38 with_sessions: true,
39 handles: {
40 pub sequence_handle: TpmTransient,
41 },
42 parameters: {}
43}
44
45tpm_struct! {
46 #[derive(Debug, PartialEq, Eq, Clone)]
47 kind: Command,
48 name: TpmHashSequenceStartCommand,
49 cc: TpmCc::HashSequenceStart,
50 no_sessions: true,
51 with_sessions: true,
52 handles: {},
53 parameters: {
54 pub auth: Tpm2bAuth,
55 pub hash_alg: TpmAlgId,
56 }
57}
58
59tpm_struct! {
60 #[derive(Debug, PartialEq, Eq, Clone, Copy)]
61 kind: Response,
62 name: TpmHashSequenceStartResponse,
63 cc: TpmCc::HashSequenceStart,
64 no_sessions: true,
65 with_sessions: true,
66 handles: {
67 pub sequence_handle: TpmTransient,
68 },
69 parameters: {}
70}
71
72tpm_struct! {
73 #[derive(Debug, PartialEq, Eq, Clone)]
74 kind: Command,
75 name: TpmSequenceUpdateCommand,
76 cc: TpmCc::SequenceUpdate,
77 no_sessions: true,
78 with_sessions: true,
79 handles: {
80 pub sequence_handle: crate::data::TpmiDhObject,
81 },
82 parameters: {
83 pub buffer: Tpm2bMaxBuffer,
84 }
85}
86
87tpm_struct! {
88 #[derive(Debug, Default, PartialEq, Eq, Copy, Clone)]
89 kind: Response,
90 name: TpmSequenceUpdateResponse,
91 cc: TpmCc::SequenceUpdate,
92 no_sessions: true,
93 with_sessions: true,
94 handles: {},
95 parameters: {}
96}
97
98tpm_struct! {
99 #[derive(Debug, PartialEq, Eq, Clone)]
100 kind: Command,
101 name: TpmSequenceCompleteCommand,
102 cc: TpmCc::SequenceComplete,
103 no_sessions: true,
104 with_sessions: true,
105 handles: {
106 pub sequence_handle: crate::data::TpmiDhObject,
107 },
108 parameters: {
109 pub buffer: Tpm2bMaxBuffer,
110 pub hierarchy: TpmRh,
111 }
112}
113
114tpm_struct! {
115 #[derive(Debug, PartialEq, Eq, Clone)]
116 kind: Response,
117 name: TpmSequenceCompleteResponse,
118 cc: TpmCc::SequenceComplete,
119 no_sessions: true,
120 with_sessions: true,
121 handles: {},
122 parameters: {
123 pub result: Tpm2bDigest,
124 pub validation: TpmtTkHashcheck,
125 }
126}
127
128tpm_struct! {
129 #[derive(Debug, PartialEq, Eq, Clone)]
130 kind: Command,
131 name: TpmEventSequenceCompleteCommand,
132 cc: TpmCc::EventSequenceComplete,
133 no_sessions: false,
134 with_sessions: true,
135 handles: {
136 pub pcr_handle: u32,
137 pub sequence_handle: crate::data::TpmiDhObject,
138 },
139 parameters: {
140 pub buffer: Tpm2bMaxBuffer,
141 }
142}
143
144tpm_struct! {
145 #[derive(Debug, Default, PartialEq, Eq, Clone)]
146 kind: Response,
147 name: TpmEventSequenceCompleteResponse,
148 cc: TpmCc::EventSequenceComplete,
149 no_sessions: true,
150 with_sessions: true,
151 handles: {},
152 parameters: {
153 pub results: TpmlDigestValues,
154 }
155}