mbed-os/features/storage/cfstore
Mihail Stoyanov 505d1e1fa7 Updated core with IAR fix for --vla and backward compatbility. Fixed config store and bufferedserial when --vla is not present (IAR) 2016-06-15 00:09:11 +01:00
..
configuration-store Updated layout to support features 2016-06-13 19:08:31 +01:00
doc Updated layout to support features 2016-06-13 19:08:31 +01:00
source Updated core with IAR fix for --vla and backward compatbility. Fixed config store and bufferedserial when --vla is not present (IAR) 2016-06-15 00:09:11 +01:00
LICENSE Updated layout to support features 2016-06-13 19:08:31 +01:00
Makefile.scripts Updated layout to support features 2016-06-13 19:08:31 +01:00
README.md Updated layout to support features 2016-06-13 19:08:31 +01:00
VERSION Updated layout to support features 2016-06-13 19:08:31 +01:00
apache-2.0.txt Updated layout to support features 2016-06-13 19:08:31 +01:00
berkeley.txt Updated layout to support features 2016-06-13 19:08:31 +01:00
chernov.txt Updated layout to support features 2016-06-13 19:08:31 +01:00
tatmanjants.txt Updated layout to support features 2016-06-13 19:08:31 +01:00

README.md

Secure Key-Value Storage

Executive Summary

The Configuration Store (CFSTORE) is a secure, associative key-value (KV) store C-Language Hardware Abstraction Layer. CFSTORE provides the secure and persistent storage for:

  • Storing encryption keys data.
  • Storing configuration data.
  • Storing firmware, firmware updates and incremental firmware blocks for assembling into a firmware update.

These services are presented to clients with:

  • A conceptually simple, file-like interface for storing and managing data using (key, value) pairs in persistent storage media.
  • A simple, hardware-independent API to promote portability across multiple platforms and a low attack surface.
  • A very small code/memory footprint so CFSTORE is capable of running on highly-constrained memory systems (~10kB free memory) where typically available SRAM << NV storage.
  • A simple (low complexity) storage capability at the expense of features. For example, CFSTORE only supports the storage of binary blobs rather than a rich set of data types.

Current support includes:

  • NV-backed support. Integration with Flash Abstraction (Flash Journal Strategy Sequential) for persistent storage on the Freescale FRDM K64F target.
  • SRAM backed support.
  • More than 60 test cases with >80% test coverage.
  • Comprehensive documentation.

Configuration-Store Software Architecture

    
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     
    |  Configuration Store Client   |     
    |  e.g. FOTA                    |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     

    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  Configuration Store          |     |  uvisor                       |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     |                               |
                                          |                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     |                               |
    |  Flash Abstraction Layer      |     |                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     |                               |
                                          |                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     |                               |
    |  Flash Driver Layer           |     |                               |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+     +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    SW
    -----------------------------------------------------------------------
    HW

    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
    |  NV Storage Media e.g. Flash  |
    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

    Configuration Store Software Architecture

The above figure shows the following entities (from top to bottom):

  • A Configuration Store client e.g. FOTA.
  • Configuration Store, the associative KV pair store.
  • Flash Abstraction Layer, portable across the driver layer.
  • Flash Driver layer e.g. CMSIS-Driver.
  • NV Storage Media. These are the physical storage media.

Providing Feedback

If you would like to make a contribution to CFSTORE, please provide feedback/designs/comments/code in one of the following ways:

Further Reading