stash
Reviewed on: 2020-03-23
Stash exists to hold persistent mutable state for early boot system services that are restricted from using mutable storage (usually for security reasons). Stash may be used to store device-wide state. Stash must not be used to store user-specific state, since data isn't saved to a user-encrypted partition.
Persisted state takes the form of a key/value store, which can be accessed over FIDL. More details on writing a program that uses stash is available here.
To add this project to your build, append --with //src/sys/stash
to the fx set
invocation.
Stash provides the fuchsia.stash.Store
and fuchsia.stash.SecureStore
service on Fuchsia, and there is a stash_ctl
command to demonstrate how to access these services.
$ fx shell run stash_ctl --help
Unit tests for stash are available in the stash-tests
package.
$ fx test stash-tests
The entrypoint is located in src/main.rs
, the FIDL service implementation exists in src/instance.rs
and src/accessor.rs
, and the logic for storing bytes on disk is located in src/store.rs
. Unit tests are co-located with the implementation.