tpm2_protocol/message/
field_upgrade.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//! 27 Field Upgrade
6
7use crate::{
8    data::{Tpm2bDigest, TpmCc, TpmtHa, TpmtSignature},
9    tpm_struct,
10};
11use core::fmt::Debug;
12
13tpm_struct! {
14    #[derive(Debug, PartialEq, Eq, Clone)]
15    kind: Command,
16    name: TpmFieldUpgradeStartCommand,
17    cc: TpmCc::FieldUpgradeStart,
18    handles: {
19        pub authorization: crate::data::TpmiRhHierarchy,
20        pub key_handle: crate::data::TpmiDhObject,
21    },
22    parameters: {
23        pub fu_digest: Tpm2bDigest,
24        pub manifest_signature: TpmtSignature,
25    }
26}
27
28tpm_struct! {
29    #[derive(Debug, Default, PartialEq, Eq, Copy, Clone)]
30    kind: Response,
31    name: TpmFieldUpgradeStartResponse,
32    cc: TpmCc::FieldUpgradeStart,
33    handles: {},
34    parameters: {}
35}
36
37tpm_struct! {
38    #[derive(Debug, PartialEq, Eq, Clone)]
39    kind: Command,
40    name: TpmFieldUpgradeDataCommand,
41    cc: TpmCc::FieldUpgradeData,
42    handles: {},
43    parameters: {
44        pub fu_data: crate::data::Tpm2bMaxBuffer,
45    }
46}
47
48tpm_struct! {
49    #[derive(Debug, PartialEq, Eq, Clone)]
50    kind: Response,
51    name: TpmFieldUpgradeDataResponse,
52    cc: TpmCc::FieldUpgradeData,
53    handles: {},
54    parameters: {
55        pub next_digest: TpmtHa,
56        pub first_digest: TpmtHa,
57    }
58}
59
60tpm_struct! {
61    #[derive(Debug, PartialEq, Eq, Clone, Copy)]
62    kind: Command,
63    name: TpmFirmwareReadCommand,
64    cc: TpmCc::FirmwareRead,
65    handles: {},
66    parameters: {
67        pub sequence_number: u32,
68    }
69}
70
71tpm_struct! {
72    #[derive(Debug, PartialEq, Eq, Clone)]
73    kind: Response,
74    name: TpmFirmwareReadResponse,
75    cc: TpmCc::FirmwareRead,
76    handles: {},
77    parameters: {
78        pub fu_data: crate::data::Tpm2bMaxBuffer,
79    }
80}