tree: 8437715731189f55c8e9a8fc22c2785137f93fb0 [path history] [tgz]
  1. meta/
  2. src/
  3. tests/
  4. BUILD.gn
  5. README.md
src/sys/stash/README.md

stash

Reviewed on: 2022-01-13

Stash exists to hold persistent mutable state for early boot system services that are restricted from using general mutable storage (usually for security reasons). Persisted state takes the form of a key/value store, which can be accessed over FIDL.

Multiple instances of stash are provided, each serving a different fuchsia.stash protocol. An instance of stash cannot securely identify the clients connecting to it and therefore cannot guarantee isolation between those clients. This means that the clients of each protocol must be carefully reviewed to assess the impact of any compromise in one client on the other clients.

It is likely that stash will be deprecated and new clients are no longer being accepted.

Building

To add this project to your build, append --with //src/sys/stash to the fx set invocation.

Running

Stash provides the fuchsia.stash.Store, fuchsia.stash.Store2, and fuchsia.stash.SecureStore services on Fuchsia, and there is a stash_ctl command to demonstrate how to access these services.

$ fx shell run stash_ctl --help

Testing

Unit tests for stash are available in the stash-tests package.

$ fx test stash-tests

Source layout

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.