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