Skip to main content

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 capability data 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_create::SensitiveCreateBuffer, sensitive_data::SensitiveData,
43    symmetric_key::SymmetricKey, timeout::Timeout, tpm_context_data::TpmContextData,
44};
45// //////////////////////////////////////////////////////
46// The creation section
47// //////////////////////////////////////////////////////
48mod creation;
49pub use self::creation::CreationData;
50// //////////////////////////////////////////////////////
51// The hash section
52// //////////////////////////////////////////////////////
53mod hash;
54pub use self::hash::agile::HashAgile;
55// //////////////////////////////////////////////////////
56// The pcr section
57// //////////////////////////////////////////////////////
58mod pcr;
59
60pub use self::pcr_slot::PcrSlot;
61pub mod pcr_slot {
62    pub use super::pcr::slot::*;
63}
64
65pub use self::pcr_select::PcrSelect;
66pub mod pcr_select {
67    pub use super::pcr::select::*;
68}
69
70pub use self::pcr_selection::PcrSelection;
71pub mod pcr_selection {
72    pub use super::pcr::selection::*;
73}
74
75pub use self::pcr_select_size::PcrSelectSize;
76pub mod pcr_select_size {
77    pub use super::pcr::select_size::*;
78}
79// //////////////////////////////////////////////////////
80// The lists section
81// //////////////////////////////////////////////////////
82mod lists;
83pub use self::digest_list::DigestList;
84pub mod digest_list {
85    pub use super::lists::digest::*;
86}
87
88pub use self::digest_values::DigestValues;
89pub mod digest_values {
90    pub use super::lists::digest_values::*;
91}
92
93pub use self::ecc_curves::EccCurveList;
94pub mod ecc_curves {
95    pub use super::lists::ecc_curves::*;
96}
97
98pub use self::handle_list::HandleList;
99pub mod handle_list {
100    pub use super::lists::handles::*;
101}
102
103pub use self::pcr_selection_list::PcrSelectionList;
104pub use self::pcr_selection_list::PcrSelectionListBuilder;
105pub mod pcr_selection_list {
106    pub use super::lists::pcr_selection::*;
107}
108
109pub use self::command_code_list::CommandCodeList;
110pub mod command_code_list {
111    pub use super::lists::command_code::*;
112}
113
114pub use self::tagged_tpm_property_list::TaggedTpmPropertyList;
115pub mod tagged_tpm_property_list {
116    pub use super::lists::tagged_tpm_property::*;
117}
118
119pub use algorithm_property_list::AlgorithmPropertyList;
120pub mod algorithm_property_list {
121    pub use super::lists::algorithm_property::*;
122}
123
124pub use tagged_pcr_property_list::TaggedPcrPropertyList;
125pub mod tagged_pcr_property_list {
126    pub use super::lists::tagged_pcr_property::*;
127}
128
129pub use self::command_code_attributes_list::CommandCodeAttributesList;
130pub mod command_code_attributes_list {
131    pub use super::lists::command_code_attributes::*;
132}
133
134pub(crate) use pcr::slot_collection::PcrSlotCollection;
135// //////////////////////////////////////////////////////
136// The parameters section
137// //////////////////////////////////////////////////////
138mod parameters;
139pub use self::parameters::SymmetricCipherParameters;
140// //////////////////////////////////////////////////////
141// The tickets section
142// //////////////////////////////////////////////////////
143mod tickets;
144pub use tickets::AuthTicket;
145pub use tickets::CreationTicket;
146pub use tickets::HashcheckTicket;
147pub use tickets::Ticket;
148pub use tickets::VerifiedTicket;
149
150mod schemes;
151pub use schemes::{EcDaaScheme, HashScheme, HmacScheme, XorScheme};
152
153mod tagged;
154pub use tagged::{
155    parameters::PublicParameters,
156    public::{
157        ecc::{PublicEccParameters, PublicEccParametersBuilder},
158        keyed_hash::PublicKeyedHashParameters,
159        rsa::{PublicRsaParameters, PublicRsaParametersBuilder, RsaExponent},
160        Public, PublicBuilder,
161    },
162    schemes::{
163        EccScheme, KeyDerivationFunctionScheme, KeyedHashScheme, RsaDecryptionScheme, RsaScheme,
164        SignatureScheme,
165    },
166    sensitive::Sensitive,
167    signature::Signature,
168    symmetric::{SymmetricDefinition, SymmetricDefinitionObject},
169};
170// //////////////////////////////////////////////////////
171// ECC structures
172// //////////////////////////////////////////////////////
173mod ecc;
174pub use ecc::point::EccPoint;
175// //////////////////////////////////////////////////////
176// Signatures structures
177// //////////////////////////////////////////////////////
178mod signatures;
179pub use signatures::{EccSignature, RsaSignature};
180// //////////////////////////////////////////////////////
181// Attestation Structures
182// //////////////////////////////////////////////////////
183mod attestation;
184pub use attestation::{
185    attest::Attest, attest_info::AttestInfo, certify_info::CertifyInfo,
186    command_audit_info::CommandAuditInfo, creation_info::CreationInfo,
187    nv_certify_info::NvCertifyInfo, nv_digest_certify_info::NvDigestCertifyInfo,
188    quote_info::QuoteInfo, session_audit_info::SessionAuditInfo, time_attest_info::TimeAttestInfo,
189};
190// //////////////////////////////////////////////////////
191// Clock/Time Structures
192// //////////////////////////////////////////////////////
193mod clock;
194pub use clock::{clock_info::ClockInfo, time_info::TimeInfo};
195// //////////////////////////////////////////////////////
196// Property Structures
197// //////////////////////////////////////////////////////
198mod property;
199pub use property::{
200    algorithm_property::AlgorithmProperty, tagged_pcr_select::TaggedPcrSelect,
201    tagged_property::TaggedProperty,
202};
203
204// //////////////////////////////////////////////////////
205// NV structures
206// //////////////////////////////////////////////////////
207mod nv;
208pub use nv::storage::{NvPublic, NvPublicBuilder};
209// //////////////////////////////////////////////////////
210// Algorithm Structures
211// //////////////////////////////////////////////////////
212mod algorithm;
213pub use algorithm::symmetric::sensitive_create::SensitiveCreate;
214// //////////////////////////////////////////////////////
215// TPM context structures
216// //////////////////////////////////////////////////////
217mod tpm_context;
218pub use tpm_context::SavedTpmContext;