All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added
init_rawconstructor for types generated by thestore!macro. - Added
FilesystemClient::entry_metadatasyscall. - Added
FilesystemClient::renamesyscall. - Added serializable flag to
StorageAttributesfor key agreement. - Added virtual platform in
virtmodule. - Added methods for creating the client stores to
ServiceResources. - Implemented
unsafe_inject_keyfor Aes256Cbc, Ed255, X255, P256. - Added support for custom backends in
backendmodule. - Added optional support for API extensions in
serde_extensionsmodule behind theserde-extensionsfeature. - Added
types::Pathre-export oflittlefs2::path::Path. - Reduced stack usage of
Service::process.
- Made
StorageAttributesnon-exhaustive. - Changed
KeyStore<P: Platform>toKeyStore<S: Store>. - Replaced the client ID with a
ClientContextstruct. - Always trigger syscall in
PollClient::requestand removePollClient::syscall. - Upgrade the
interchangedependency to version 0.3.0 (#99)- As a consequence the type
pipe::TrussedInterchangebecomes a constpipe::TRUSSED_INTERCHANGE
- As a consequence the type
- Made
Request,Reply,Error,Context,CoreContext,Mechanism,KeySerialization,SignatureSerialization,consent::Error,ui::Statusnon-exhaustive. - Made
postcard_deserialize,postcard_serializeandpostcard_serialize_bytesprivate. - Changed
&PathBufto&Pathwhere possible. - Change store implementations to use littlefs2’s
DynFilesystemtrait instead of being generic over the storage implementation. - Add
nonceargument towrap_keyandunwrap_keysyscalls. - Use nonce as IV for Aes256Cbc mechanism.
- Removed
serde::{Deserialize, Serialize}implementations for the API request and reply structs,types::{consent::{Error, Level}, reboot::To, StorageAttributes, KeySerialization, SignatureSerialization}. - Improved hex formatting of
types::Id:- Removed the unused
Id::hex. - Deprecated
Id::hex_pathand addedId::legacy_hex_pathas a replacement. - Added
Id::clean_hex_pathas an alternative toId::legacy_hex_path. - Changed
Id::hex_cleanto format zero as"00".
- Removed the unused
- Change client and mechanism selection:
- Put all client traits, requests, replies and implementations behind feature flags.
- Put all mechanisms behind feature flags.
- Move
CryptoClient::attestinto newAttestationClient.
- Pass endpoints to
Service::processinstead of storing them in the service. - Added support for non-static channels:
- Added lifetimes to
ClientImplementationandServiceEndpoints. - Added the
pipe::TrussedChanneltype.
- Added lifetimes to
- Refactored the
Storetrait:- Removed the requirement for a static lifetime.
- Removed the
Fswrapper type. - Removed the storage types to return
&dyn DynFilesysteminstead. - Removed the
Copyrequirement. - Removed the
unsafekeyword for theStoretrait.
- Removed the
unsafekeyword for thePlatformtrait. - Replaced the mechanism RPC traits in
servicewith a singleMechanismImpltrait. - Made the
mechanismsmodule private. Mechanism implementation can still be accessed via theMechanismenum. - Changed the
Aes256Cbcmechanism to use no padding instead of zero padding. - Updated dependencies to:
cbor-smol0.5cosey0.4flexiber0.2heapless0.9heapless-bytes0.5littlefs20.7
- Fixed off-by-one error in
RandomBytesrequest. - Fixed a race condition when iterating over the filesystem in more than one client (#64).
- Fixed missing path validation in
Filestorethat allowed clients to escape their namespace (#65). - wrap_key: Don't replace associated data with an empty array
- Removed unused items:
config:MAX_APPLICATION_NAME_LENGTH,MAX_LABEL_LENGTH,MAX_LONG_DATA_LENGTH,MAX_OBJECT_HANDLES,MAX_PATH_LENGTHtypes:Attributes,CertificateTypeDataAttributes,KeyAttributes,Letters,LongData,ObjectType,consent::Urgency
- Removed the
Syscallimplementations forServiceand theSyscall::try_as_new_clientandSyscall::try_new_clientmethods. - Removed
TrussedInterchangeandTRUSSED_INTERCHANGEfrompipe. - Removed the
clients-?features. - Removed the
store!macro. Embedded runners should provide their own implementation. Software runners can usevirt::StoreConfigto create avirt::Store.
0.1.0 - 2022-01-26
Initial release.