tss_esapi/structures/
mod.rs

1// Copyright 2020 Contributors to the Parsec project.
2// SPDX-License-Identifier: Apache-2.0
3
4/// The structures module attempts as far as possible to
5/// reflect the specifications way of defining structures
6/// see:
7///
8/// Trusted Platform Module Library
9/// Part 2: Structures
10/// Family “2.0”
11/// Level 00 Revision 01.59
12/// November 8, 2019
13/// Published
14///
15/// Chapter 10: Structure Definitions
16// ///////////////////////////////////////////////////////
17// The capabilitydata section
18// ///////////////////////////////////////////////////////
19mod capability_data;
20pub use self::capability_data::CapabilityData;
21// ///////////////////////////////////////////////////////
22// The names section
23// ///////////////////////////////////////////////////////
24mod names;
25pub use names::name::Name;
26// ///////////////////////////////////////////////////////
27// The result section
28// ///////////////////////////////////////////////////////
29mod result;
30pub use result::CreateKeyResult;
31pub use result::CreatePrimaryKeyResult;
32// ///////////////////////////////////////////////////////
33// The sized buffers section
34// ///////////////////////////////////////////////////////
35mod buffers;
36pub use self::buffers::{
37    attest::AttestBuffer, auth::Auth, data::Data, digest::Digest, ecc_parameter::EccParameter,
38    encrypted_secret::EncryptedSecret, id_object::IdObject, initial_value::InitialValue,
39    max_buffer::MaxBuffer, max_nv_buffer::MaxNvBuffer, nonce::Nonce, private::Private,
40    private_key_rsa::PrivateKeyRsa, private_vendor_specific::PrivateVendorSpecific,
41    public::PublicBuffer, public_key_rsa::PublicKeyRsa, sensitive::SensitiveBuffer,
42    sensitive_data::SensitiveData, symmetric_key::SymmetricKey, timeout::Timeout,
43};
44// ///////////////////////////////////////////////////////
45// The creation section
46// ///////////////////////////////////////////////////////
47mod creation;
48pub use self::creation::CreationData;
49// ///////////////////////////////////////////////////////
50// The hash section
51// ///////////////////////////////////////////////////////
52mod hash;
53pub use self::hash::agile::HashAgile;
54// ///////////////////////////////////////////////////////
55// The pcr section
56// ///////////////////////////////////////////////////////
57mod pcr;
58
59pub use self::pcr_slot::PcrSlot;
60pub mod pcr_slot {
61    pub use super::pcr::slot::*;
62}
63
64pub use self::pcr_select::PcrSelect;
65pub mod pcr_select {
66    pub use super::pcr::select::*;
67}
68
69pub use self::pcr_selection::PcrSelection;
70pub mod pcr_selection {
71    pub use super::pcr::selection::*;
72}
73
74pub use self::pcr_select_size::PcrSelectSize;
75pub mod pcr_select_size {
76    pub use super::pcr::select_size::*;
77}
78// ///////////////////////////////////////////////////////
79// The lists section
80// ///////////////////////////////////////////////////////
81mod lists;
82pub use self::digest_list::DigestList;
83pub mod digest_list {
84    pub use super::lists::digest::*;
85}
86
87pub use self::digest_values::DigestValues;
88pub mod digest_values {
89    pub use super::lists::digest_values::*;
90}
91
92pub use self::ecc_curves::EccCurveList;
93pub mod ecc_curves {
94    pub use super::lists::ecc_curves::*;
95}
96
97pub use self::handle_list::HandleList;
98pub mod handle_list {
99    pub use super::lists::handles::*;
100}
101
102pub use self::pcr_selection_list::PcrSelectionList;
103pub use self::pcr_selection_list::PcrSelectionListBuilder;
104pub mod pcr_selection_list {
105    pub use super::lists::pcr_selection::*;
106}
107
108pub use self::command_code_list::CommandCodeList;
109pub mod command_code_list {
110    pub use super::lists::command_code::*;
111}
112
113pub use self::tagged_tpm_property_list::TaggedTpmPropertyList;
114pub mod tagged_tpm_property_list {
115    pub use super::lists::tagged_tpm_property::*;
116}
117
118pub use algorithm_property_list::AlgorithmPropertyList;
119pub mod algorithm_property_list {
120    pub use super::lists::algorithm_property::*;
121}
122
123pub use tagged_pcr_property_list::TaggedPcrPropertyList;
124pub mod tagged_pcr_property_list {
125    pub use super::lists::tagged_pcr_property::*;
126}
127
128pub use self::command_code_attributes_list::CommandCodeAttributesList;
129pub mod command_code_attributes_list {
130    pub use super::lists::command_code_attributes::*;
131}
132
133pub(crate) use pcr::slot_collection::PcrSlotCollection;
134// ///////////////////////////////////////////////////////
135// The parameters section
136// ///////////////////////////////////////////////////////
137mod parameters;
138pub use self::parameters::SymmetricCipherParameters;
139// ///////////////////////////////////////////////////////
140// The tickets section
141// ///////////////////////////////////////////////////////
142mod tickets;
143pub use tickets::AuthTicket;
144pub use tickets::CreationTicket;
145pub use tickets::HashcheckTicket;
146pub use tickets::Ticket;
147pub use tickets::VerifiedTicket;
148
149mod schemes;
150pub use schemes::{EcDaaScheme, HashScheme, HmacScheme, XorScheme};
151
152mod tagged;
153pub use tagged::{
154    parameters::PublicParameters,
155    public::{
156        ecc::{PublicEccParameters, PublicEccParametersBuilder},
157        keyed_hash::PublicKeyedHashParameters,
158        rsa::{PublicRsaParameters, PublicRsaParametersBuilder, RsaExponent},
159        Public, PublicBuilder,
160    },
161    schemes::{
162        EccScheme, KeyDerivationFunctionScheme, KeyedHashScheme, RsaDecryptionScheme, RsaScheme,
163        SignatureScheme,
164    },
165    sensitive::Sensitive,
166    signature::Signature,
167    symmetric::{SymmetricDefinition, SymmetricDefinitionObject},
168};
169// ///////////////////////////////////////////////////////
170// ECC structures
171// ///////////////////////////////////////////////////////
172mod ecc;
173pub use ecc::point::EccPoint;
174// ///////////////////////////////////////////////////////
175// Signatures structures
176// ///////////////////////////////////////////////////////
177mod signatures;
178pub use signatures::{EccSignature, RsaSignature};
179// ///////////////////////////////////////////////////////
180// Attestation Structures
181// ///////////////////////////////////////////////////////
182mod attestation;
183pub use attestation::{
184    attest::Attest, attest_info::AttestInfo, certify_info::CertifyInfo,
185    command_audit_info::CommandAuditInfo, creation_info::CreationInfo,
186    nv_certify_info::NvCertifyInfo, nv_digest_certify_info::NvDigestCertifyInfo,
187    quote_info::QuoteInfo, session_audit_info::SessionAuditInfo, time_attest_info::TimeAttestInfo,
188};
189// ///////////////////////////////////////////////////////
190// Clock/Time Structures
191// ///////////////////////////////////////////////////////
192mod clock;
193pub use clock::{clock_info::ClockInfo, time_info::TimeInfo};
194// ///////////////////////////////////////////////////////
195// Property Structures
196// ///////////////////////////////////////////////////////
197mod property;
198pub use property::{
199    algorithm_property::AlgorithmProperty, tagged_pcr_select::TaggedPcrSelect,
200    tagged_property::TaggedProperty,
201};
202
203// ///////////////////////////////////////////////////////
204// NV structures
205// ///////////////////////////////////////////////////////
206mod nv;
207pub use nv::storage::{NvPublic, NvPublicBuilder};