tss_esapi/structures/attestation/
time_attest_info.rs

1// Copyright 2021 Contributors to the Parsec project.
2// SPDX-License-Identifier: Apache-2.0
3
4use crate::{structures::TimeInfo, tss2_esys::TPMS_TIME_ATTEST_INFO, Error, Result};
5use std::convert::{TryFrom, TryInto};
6
7/// This type is holding attested data for the command TPM2_GetTime
8///
9/// # Details
10/// This corresponds to the TPMS_TIME_ATTEST_INFO.
11#[derive(Debug, Clone, Copy, PartialEq, Eq)]
12pub struct TimeAttestInfo {
13    time_info: TimeInfo,
14    firmware_version: u64,
15}
16
17impl TimeAttestInfo {
18    /// Returns the time info
19    pub const fn time_info(&self) -> &TimeInfo {
20        &self.time_info
21    }
22
23    /// Returns the firmware version
24    pub const fn firmware_version(&self) -> u64 {
25        self.firmware_version
26    }
27}
28
29impl From<TimeAttestInfo> for TPMS_TIME_ATTEST_INFO {
30    fn from(time_attest_info: TimeAttestInfo) -> Self {
31        TPMS_TIME_ATTEST_INFO {
32            time: time_attest_info.time_info.into(),
33            firmwareVersion: time_attest_info.firmware_version,
34        }
35    }
36}
37
38impl TryFrom<TPMS_TIME_ATTEST_INFO> for TimeAttestInfo {
39    type Error = Error;
40
41    fn try_from(tpms_time_attest_info: TPMS_TIME_ATTEST_INFO) -> Result<Self> {
42        Ok(TimeAttestInfo {
43            time_info: tpms_time_attest_info.time.try_into()?,
44            firmware_version: tpms_time_attest_info.firmwareVersion,
45        })
46    }
47}