tss_esapi/structures/
parameters.rs

1// Copyright 2021 Contributors to the Parsec project.
2// SPDX-License-Identifier: Apache-2.0
3
4use crate::{
5    structures::SymmetricDefinitionObject, tss2_esys::TPMS_SYMCIPHER_PARMS, Error, Result,
6};
7
8use std::convert::{TryFrom, TryInto};
9
10/// Symmetric cipher parameters
11///
12/// # Details
13/// Corresponds to TPMS_SYMCIPHER_PARMS
14#[derive(Clone, Debug, Copy, PartialEq, Eq)]
15pub struct SymmetricCipherParameters {
16    symmetric_definition_object: SymmetricDefinitionObject,
17}
18
19impl SymmetricCipherParameters {
20    /// Creates a new [SymmetricDefinitionObject]
21    pub const fn new(
22        symmetric_definition_object: SymmetricDefinitionObject,
23    ) -> SymmetricCipherParameters {
24        SymmetricCipherParameters {
25            symmetric_definition_object,
26        }
27    }
28
29    /// Returns the [SymmetricDefinitionObject].
30    pub const fn symmetric_definition_object(&self) -> SymmetricDefinitionObject {
31        self.symmetric_definition_object
32    }
33}
34
35impl TryFrom<TPMS_SYMCIPHER_PARMS> for SymmetricCipherParameters {
36    type Error = Error;
37    fn try_from(tpms_symcipher_params: TPMS_SYMCIPHER_PARMS) -> Result<SymmetricCipherParameters> {
38        Ok(SymmetricCipherParameters {
39            symmetric_definition_object: tpms_symcipher_params.sym.try_into()?,
40        })
41    }
42}
43
44impl From<SymmetricCipherParameters> for TPMS_SYMCIPHER_PARMS {
45    fn from(symmetric_cipher_parameters: SymmetricCipherParameters) -> TPMS_SYMCIPHER_PARMS {
46        TPMS_SYMCIPHER_PARMS {
47            sym: symmetric_cipher_parameters
48                .symmetric_definition_object
49                .into(),
50        }
51    }
52}