From 2e4e15abbd0ba834c7d6ac37d2182088a2e043a9 Mon Sep 17 00:00:00 2001 From: Robin Krahl Date: Wed, 3 Apr 2024 22:47:22 +0200 Subject: [PATCH] Remove internal re-exports As discussed in #155, this patch removes re-exports from types that are defined inside the crate. This means that all types that are defined in this crate are now only visible under one path. https://github.com/trussed-dev/trussed/issues/155 --- CHANGELOG.md | 1 + derive/src/extension_id.rs | 4 ++-- src/api.rs | 5 +++-- src/api/macros.rs | 8 ++++---- src/client.rs | 8 +++----- src/key.rs | 2 +- src/lib.rs | 7 ------- src/platform.rs | 5 ++--- src/service.rs | 17 ++++++++++------- src/tests.rs | 7 ++++--- src/types.rs | 3 --- src/virt.rs | 3 +-- src/virt/ui.rs | 5 ++++- tests/backends.rs | 3 +-- tests/serde_extensions.rs | 2 +- 15 files changed, 37 insertions(+), 43 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 84d7bc43776..c68e7330da8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -47,6 +47,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Use nonce as IV for Aes256Cbc mechanism. - Reduce re-exports ([#155][]): - Remove most re-exports of external types + - Remove all re-exports of internal types ### Fixed diff --git a/derive/src/extension_id.rs b/derive/src/extension_id.rs index 8c63ecec08d..c9d39b0a6d1 100644 --- a/derive/src/extension_id.rs +++ b/derive/src/extension_id.rs @@ -44,12 +44,12 @@ impl ExtensionId { } impl #impl_generics ::core::convert::TryFrom for #name #ty_generics #where_clause { - type Error = ::trussed::Error; + type Error = ::trussed::error::Error; fn try_from(value: u8) -> ::core::result::Result { match value { #(#try_from)* - _ => Err(::trussed::Error::InternalError), + _ => Err(::trussed::error::Error::InternalError), } } } diff --git a/src/api.rs b/src/api.rs index 47cb0407926..1019fe1cf00 100644 --- a/src/api.rs +++ b/src/api.rs @@ -5,6 +5,7 @@ //! [pkcs11-v3]: https://docs.oasis-open.org/pkcs11/pkcs11-base/v3.0/pkcs11-base-v3.0.html //! [pkcs11-headers]: https://docs.oasis-open.org/pkcs11/pkcs11-base/v3.0/cs01/include/pkcs11-v3.0/ +use crate::error::Error; use crate::types::{ consent, reboot, Bytes, CertId, CounterId, DirEntry, KeyId, KeySerialization, Location, Mechanism, MediumData, Message, PathBuf, SerializedKey, ShortData, Signature, @@ -143,11 +144,11 @@ generate_enums! { SerdeExtension: 0x5E } -pub trait RequestVariant: Into + TryFrom { +pub trait RequestVariant: Into + TryFrom { type Reply: ReplyVariant; } -pub trait ReplyVariant: Into + TryFrom { +pub trait ReplyVariant: Into + TryFrom { type Request: RequestVariant; } diff --git a/src/api/macros.rs b/src/api/macros.rs index 9a486a72e30..13e72babae5 100644 --- a/src/api/macros.rs +++ b/src/api/macros.rs @@ -84,11 +84,11 @@ macro_rules! impl_request { } } impl core::convert::TryFrom for $request { - type Error = crate::Error; + type Error = crate::error::Error; fn try_from(request: Request) -> Result { match request { Request::$request(request) => Ok(request), - _ => Err(crate::Error::InternalError), + _ => Err(crate::error::Error::InternalError), } } } @@ -118,11 +118,11 @@ macro_rules! impl_reply { $(#[$attr])? impl core::convert::TryFrom for $reply { - type Error = crate::Error; + type Error = crate::error::Error; fn try_from(reply: Reply) -> Result { match reply { Reply::$reply(reply) => Ok(reply), - _ => Err(crate::Error::InternalError), + _ => Err(crate::error::Error::InternalError), } } } diff --git a/src/client.rs b/src/client.rs index 40027e00fc9..d53271570a6 100644 --- a/src/client.rs +++ b/src/client.rs @@ -82,17 +82,15 @@ use crate::backend::{BackendId, CoreOnly, Dispatch}; use crate::error::{Error, Result}; use crate::interrupt::InterruptFlag; use crate::pipe::{TrussedRequester, TRUSSED_INTERCHANGE}; +use crate::platform::{Platform, Syscall}; use crate::service::Service; use crate::types::{ consent, reboot, Bytes, CertId, CounterId, KeyId, KeySerialization, Location, Mechanism, - MediumData, Message, PathBuf, Platform, SerializedKey, ShortData, Signature, - SignatureSerialization, StorageAttributes, UserAttribute, + MediumData, Message, PathBuf, SerializedKey, ShortData, Signature, SignatureSerialization, + StorageAttributes, UserAttribute, }; -pub use crate::platform::Syscall; - pub mod mechanisms; -pub use mechanisms::*; // to be fair, this is a programmer error, // and could also just panic diff --git a/src/key.rs b/src/key.rs index ad649a5ef76..be715376173 100644 --- a/src/key.rs +++ b/src/key.rs @@ -7,7 +7,7 @@ use zeroize::Zeroize; use crate::{ config::{MAX_KEY_MATERIAL_LENGTH, MAX_SERIALIZED_KEY_LENGTH}, - Error, + error::Error, }; pub type Material = Vec; diff --git a/src/lib.rs b/src/lib.rs index df9d0e67352..a4defa73dd0 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -40,13 +40,6 @@ pub mod types; #[cfg_attr(docsrs, doc(cfg(feature = "virt")))] pub mod virt; -pub use api::Reply; -pub use client::{Client, ClientImplementation}; -pub use error::Error; -/// The trait that platforms need to implement to use Trussed. -pub use platform::Platform; -pub use service::Service; - pub use cbor_smol::{cbor_deserialize, cbor_serialize_bytes}; pub(crate) use postcard::from_bytes as postcard_deserialize; diff --git a/src/platform.rs b/src/platform.rs index 06faba7b581..b7a16903ac4 100644 --- a/src/platform.rs +++ b/src/platform.rs @@ -8,9 +8,8 @@ use rand_core::{CryptoRng, RngCore}; -pub use crate::store::Store; -pub use crate::types::consent; -pub use crate::types::{reboot, ui}; +use crate::store::Store; +use crate::types::{consent, reboot, ui}; pub trait UserInterface { /// Check if the user has indicated their presence so as to give diff --git a/src/service.rs b/src/service.rs index cdee5d5d2af..7917c432a9a 100644 --- a/src/service.rs +++ b/src/service.rs @@ -11,19 +11,22 @@ use crate::backend::{BackendId, CoreOnly, Dispatch}; use crate::client::{ClientBuilder, ClientImplementation}; use crate::config::{MAX_MESSAGE_LENGTH, MAX_SERVICE_CLIENTS}; use crate::error::{Error, Result}; -pub use crate::key; +use crate::key; use crate::mechanisms; -pub use crate::pipe::ServiceEndpoint; +use crate::pipe::ServiceEndpoint; use crate::pipe::TrussedResponder; -use crate::platform::{consent, ui, Platform, Store, Syscall, UserInterface}; -pub use crate::store::{ - self, +use crate::platform::{Platform, Syscall, UserInterface}; +use crate::store::{ certstore::{Certstore as _, ClientCertstore}, counterstore::{ClientCounterstore, Counterstore as _}, - filestore::{ClientFilestore, Filestore, ReadDirFilesState, ReadDirState}, + filestore::{ClientFilestore, Filestore}, keystore::{ClientKeystore, Keystore}, + Store, +}; +use crate::types::{ + consent, + ui::{self, Status}, }; -use crate::types::ui::Status; use crate::types::{Bytes, Context, CoreContext, Location, Mechanism, MediumData, Message}; use crate::{ api::{reply, request, Reply, Request}, diff --git a/src/tests.rs b/src/tests.rs index 69e4ea610ea..29f7d1067bb 100644 --- a/src/tests.rs +++ b/src/tests.rs @@ -11,8 +11,9 @@ use littlefs2::io::Result as LfsResult; use rand_core::{CryptoRng, RngCore}; use crate::client::{CryptoClient as _, FilesystemClient as _}; +use crate::error::Error; use crate::types::{consent, reboot, ui, Bytes, Location, PathBuf}; -use crate::{api, block, platform, store, Error}; +use crate::{api, block, platform, store}; pub struct MockRng(ChaCha20); @@ -181,7 +182,7 @@ macro_rules! setup { let pc_interface: UserInterface = Default::default(); let platform = $platform::new(rng, store, pc_interface); - let mut trussed: crate::Service<$platform> = crate::service::Service::new(platform); + let mut trussed: crate::service::Service<$platform> = crate::service::Service::new(platform); let (test_trussed_requester, test_trussed_responder) = crate::pipe::TRUSSED_INTERCHANGE .claim() @@ -195,7 +196,7 @@ macro_rules! setup { trussed.set_seed_if_uninitialized(&$seed); let mut $client = { pub type TestClient<'a> = - crate::ClientImplementation<&'a mut crate::Service<$platform>>; + crate::client::ClientImplementation<&'a mut crate::service::Service<$platform>>; TestClient::new(test_trussed_requester, &mut trussed, None) }; }; diff --git a/src/types.rs b/src/types.rs index b6b22d5f03d..e21cf48caca 100644 --- a/src/types.rs +++ b/src/types.rs @@ -16,9 +16,6 @@ use crate::config::*; use crate::store::filestore::{ReadDirFilesState, ReadDirState}; use crate::{interrupt::InterruptFlag, key::Secrecy}; -pub use crate::client::FutureResult; -pub use crate::platform::Platform; - /// An empty struct not storing any data. #[derive(Clone, Copy, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)] pub struct NoData; diff --git a/src/virt.rs b/src/virt.rs index aca130fbef2..99b031b134b 100644 --- a/src/virt.rs +++ b/src/virt.rs @@ -16,10 +16,9 @@ use rand_core::SeedableRng as _; use crate::{ backend::{BackendId, CoreOnly, Dispatch}, - client::ClientBuilder, + client::{ClientBuilder, ClientImplementation}, platform::{self, Syscall}, service::Service, - ClientImplementation, }; pub use store::{Filesystem, Ram, StoreProvider}; diff --git a/src/virt/ui.rs b/src/virt/ui.rs index fd51f774bb1..ef98f32d674 100644 --- a/src/virt/ui.rs +++ b/src/virt/ui.rs @@ -1,4 +1,7 @@ -use crate::platform::{self, consent::Level, reboot::To, ui::Status}; +use crate::{ + platform, + types::{consent::Level, reboot::To, ui::Status}, +}; use std::time::{Duration, Instant}; pub struct UserInterface { diff --git a/tests/backends.rs b/tests/backends.rs index dfbec4d5f80..08eda98f994 100644 --- a/tests/backends.rs +++ b/tests/backends.rs @@ -3,13 +3,12 @@ use trussed::{ api::{reply::ReadFile, Reply, Request}, backend::{self, BackendId}, - client::FilesystemClient as _, + client::{ClientImplementation, FilesystemClient as _}, error::Error, platform, service::{Service, ServiceResources}, types::{CoreContext, Location, Message, PathBuf}, virt::{self, Ram}, - ClientImplementation, }; type Platform = virt::Platform; diff --git a/tests/serde_extensions.rs b/tests/serde_extensions.rs index 78437b28303..a2aafb16124 100644 --- a/tests/serde_extensions.rs +++ b/tests/serde_extensions.rs @@ -28,10 +28,10 @@ use trussed::{ backend::BackendId, + client::ClientImplementation, service::Service, types::ShortData, virt::{self, Ram}, - ClientImplementation, }; use runner::Backends;