1use crate::{
11 data::{
12 Tpm2bDigest, Tpm2bIv, Tpm2bMaxBuffer, TpmAlgId, TpmCc, TpmRh, TpmiAlgHash, TpmiYesNo,
13 TpmtTkHashcheck,
14 },
15 tpm_struct,
16};
17use core::fmt::Debug;
18
19pub type TpmiAlgCipherMode = TpmAlgId;
20
21tpm_struct! {
22 #[derive(Debug, PartialEq, Eq, Clone)]
23 kind: Command,
24 name: TpmEncryptDecryptCommand,
25 cc: TpmCc::EncryptDecrypt,
26 no_sessions: false,
27 with_sessions: true,
28 handles: {
29 pub key_handle: crate::data::TpmiDhObject,
30 },
31 parameters: {
32 pub decrypt: TpmiYesNo,
33 pub mode: TpmiAlgCipherMode,
34 pub iv_in: Tpm2bIv,
35 pub in_data: Tpm2bMaxBuffer,
36 }
37}
38
39tpm_struct! {
40 #[derive(Debug, PartialEq, Eq, Clone)]
41 kind: Response,
42 name: TpmEncryptDecryptResponse,
43 cc: TpmCc::EncryptDecrypt,
44 no_sessions: false,
45 with_sessions: true,
46 handles: {},
47 parameters: {
48 pub out_data: Tpm2bMaxBuffer,
49 pub iv_out: Tpm2bIv,
50 }
51}
52
53tpm_struct! {
54 #[derive(Debug, PartialEq, Eq, Clone)]
55 kind: Command,
56 name: TpmEncryptDecrypt2Command,
57 cc: TpmCc::EncryptDecrypt2,
58 no_sessions: false,
59 with_sessions: true,
60 handles: {
61 pub key_handle: crate::data::TpmiDhObject,
62 },
63 parameters: {
64 pub in_data: Tpm2bMaxBuffer,
65 pub decrypt: TpmiYesNo,
66 pub mode: TpmAlgId,
67 pub iv_in: Tpm2bIv,
68 }
69}
70
71tpm_struct! {
72 #[derive(Debug, PartialEq, Eq, Clone)]
73 kind: Response,
74 name: TpmEncryptDecrypt2Response,
75 cc: TpmCc::EncryptDecrypt2,
76 no_sessions: false,
77 with_sessions: true,
78 handles: {},
79 parameters: {
80 pub out_data: Tpm2bMaxBuffer,
81 pub iv_out: Tpm2bIv,
82 }
83}
84
85tpm_struct! {
86 #[derive(Debug, PartialEq, Eq, Clone)]
87 kind: Command,
88 name: TpmHashCommand,
89 cc: TpmCc::Hash,
90 no_sessions: true,
91 with_sessions: false,
92 handles: {},
93 parameters: {
94 pub data: Tpm2bMaxBuffer,
95 pub hash_alg: TpmAlgId,
96 pub hierarchy: TpmRh,
97 }
98}
99
100tpm_struct! {
101 #[derive(Debug, PartialEq, Eq, Clone)]
102 kind: Response,
103 name: TpmHashResponse,
104 cc: TpmCc::Hash,
105 no_sessions: true,
106 with_sessions: false,
107 handles: {},
108 parameters: {
109 pub out_hash: Tpm2bDigest,
110 pub validation: TpmtTkHashcheck,
111 }
112}
113
114tpm_struct! {
115 #[derive(Debug, PartialEq, Eq, Clone)]
116 kind: Command,
117 name: TpmHmacCommand,
118 cc: TpmCc::Hmac,
119 no_sessions: false,
120 with_sessions: true,
121 handles: {
122 pub handle: crate::data::TpmiDhObject,
123 },
124 parameters: {
125 pub buffer: Tpm2bMaxBuffer,
126 pub hash_alg: TpmiAlgHash,
127 }
128}
129
130tpm_struct! {
131 #[derive(Debug, PartialEq, Eq, Clone)]
132 kind: Response,
133 name: TpmHmacResponse,
134 cc: TpmCc::Hmac,
135 no_sessions: false,
136 with_sessions: true,
137 handles: {},
138 parameters: {
139 pub out_hmac: Tpm2bDigest,
140 }
141}