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    no_sessions: false,
19    with_sessions: true,
20    handles: {
21        pub authorization: crate::data::TpmiRhHierarchy,
22        pub key_handle: crate::data::TpmiDhObject,
23    },
24    parameters: {
25        pub fu_digest: Tpm2bDigest,
26        pub manifest_signature: TpmtSignature,
27    }
28}
29
30tpm_struct! {
31    #[derive(Debug, Default, PartialEq, Eq, Copy, Clone)]
32    kind: Response,
33    name: TpmFieldUpgradeStartResponse,
34    cc: TpmCc::FieldUpgradeStart,
35    no_sessions: false,
36    with_sessions: true,
37    handles: {},
38    parameters: {}
39}
40
41tpm_struct! {
42    #[derive(Debug, PartialEq, Eq, Clone)]
43    kind: Command,
44    name: TpmFieldUpgradeDataCommand,
45    cc: TpmCc::FieldUpgradeData,
46    no_sessions: true,
47    with_sessions: true,
48    handles: {},
49    parameters: {
50        pub fu_data: crate::data::Tpm2bMaxBuffer,
51    }
52}
53
54tpm_struct! {
55    #[derive(Debug, PartialEq, Eq, Clone)]
56    kind: Response,
57    name: TpmFieldUpgradeDataResponse,
58    cc: TpmCc::FieldUpgradeData,
59    no_sessions: true,
60    with_sessions: true,
61    handles: {},
62    parameters: {
63        pub next_digest: TpmtHa,
64        pub first_digest: TpmtHa,
65    }
66}
67
68tpm_struct! {
69    #[derive(Debug, PartialEq, Eq, Clone, Copy)]
70    kind: Command,
71    name: TpmFirmwareReadCommand,
72    cc: TpmCc::FirmwareRead,
73    no_sessions: true,
74    with_sessions: true,
75    handles: {},
76    parameters: {
77        pub sequence_number: u32,
78    }
79}
80
81tpm_struct! {
82    #[derive(Debug, PartialEq, Eq, Clone)]
83    kind: Response,
84    name: TpmFirmwareReadResponse,
85    cc: TpmCc::FirmwareRead,
86    no_sessions: true,
87    with_sessions: true,
88    handles: {},
89    parameters: {
90        pub fu_data: crate::data::Tpm2bMaxBuffer,
91    }
92}