tpm2_protocol/message/
sequence.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//! 17 Hash/HMAC/Event Sequences
6
7use 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    handles: {
22        pub handle: crate::data::TpmiDhObject,
23    },
24    parameters: {
25        pub auth: Tpm2bAuth,
26        pub hash_alg: TpmAlgId,
27    }
28}
29
30tpm_struct! {
31    #[derive(Debug, PartialEq, Eq, Clone, Copy)]
32    kind: Response,
33    name: TpmHmacStartResponse,
34    cc: TpmCc::HmacStart,
35    handles: {
36        pub sequence_handle: TpmTransient,
37    },
38    parameters: {}
39}
40
41tpm_struct! {
42    #[derive(Debug, PartialEq, Eq, Clone)]
43    kind: Command,
44    name: TpmHashSequenceStartCommand,
45    cc: TpmCc::HashSequenceStart,
46    handles: {},
47    parameters: {
48        pub auth: Tpm2bAuth,
49        pub hash_alg: TpmAlgId,
50    }
51}
52
53tpm_struct! {
54    #[derive(Debug, PartialEq, Eq, Clone, Copy)]
55    kind: Response,
56    name: TpmHashSequenceStartResponse,
57    cc: TpmCc::HashSequenceStart,
58    handles: {
59        pub sequence_handle: TpmTransient,
60    },
61    parameters: {}
62}
63
64tpm_struct! {
65    #[derive(Debug, PartialEq, Eq, Clone)]
66    kind: Command,
67    name: TpmSequenceUpdateCommand,
68    cc: TpmCc::SequenceUpdate,
69    handles: {
70        pub sequence_handle: crate::data::TpmiDhObject,
71    },
72    parameters: {
73        pub buffer: Tpm2bMaxBuffer,
74    }
75}
76
77tpm_struct! {
78    #[derive(Debug, Default, PartialEq, Eq, Copy, Clone)]
79    kind: Response,
80    name: TpmSequenceUpdateResponse,
81    cc: TpmCc::SequenceUpdate,
82    handles: {},
83    parameters: {}
84}
85
86tpm_struct! {
87    #[derive(Debug, PartialEq, Eq, Clone)]
88    kind: Command,
89    name: TpmSequenceCompleteCommand,
90    cc: TpmCc::SequenceComplete,
91    handles: {
92        pub sequence_handle: crate::data::TpmiDhObject,
93    },
94    parameters: {
95        pub buffer: Tpm2bMaxBuffer,
96        pub hierarchy: TpmRh,
97    }
98}
99
100tpm_struct! {
101    #[derive(Debug, PartialEq, Eq, Clone)]
102    kind: Response,
103    name: TpmSequenceCompleteResponse,
104    cc: TpmCc::SequenceComplete,
105    handles: {},
106    parameters: {
107        pub result: Tpm2bDigest,
108        pub validation: TpmtTkHashcheck,
109    }
110}
111
112tpm_struct! {
113    #[derive(Debug, PartialEq, Eq, Clone)]
114    kind: Command,
115    name: TpmEventSequenceCompleteCommand,
116    cc: TpmCc::EventSequenceComplete,
117    handles: {
118        pub pcr_handle: u32,
119        pub sequence_handle: crate::data::TpmiDhObject,
120    },
121    parameters: {
122        pub buffer: Tpm2bMaxBuffer,
123    }
124}
125
126tpm_struct! {
127    #[derive(Debug, Default, PartialEq, Eq, Clone)]
128    kind: Response,
129    name: TpmEventSequenceCompleteResponse,
130    cc: TpmCc::EventSequenceComplete,
131    handles: {},
132    parameters: {
133        pub results: TpmlDigestValues,
134    }
135}