tss_esapi/structures/clock/
time_info.rs

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