blob: 11e78a7dbd2ce88752a0532e8560983baa15a9a0 [file] [log] [blame]
# Copyright (c) 2024 Nordic Semiconductor
# SPDX-License-Identifier: Apache-2.0
menuconfig SECURE_STORAGE
bool "Secure storage subsystem"
depends on !BUILD_WITH_TFM
select EXPERIMENTAL
help
The secure storage subsystem provides an implementation of the PSA Secure Storage API
functions on board targets that don't already have one.
It allows making use of the PSA Secure Storage API and persistent keys in the PSA Crypto
API in a standard and portable way.
It is configurable and different implementations can be used to accommodate the varying
capabilities of different devices.
In addition to providing functional support for the PSA Secure Storage API, depending on
the device-specific security features that are available and used, the subsystem may
secure the data stored through it at rest.
This is however highly dependent on the device and configuration in use, and not a
guarantee of the subsystem.
if SECURE_STORAGE
module = SECURE_STORAGE
module-str = secure_storage
source "subsys/logging/Kconfig.template.log_config"
choice SECURE_STORAGE_ITS_IMPLEMENTATION
prompt "Internal Trusted Storage (ITS) API implementation"
config SECURE_STORAGE_ITS_IMPLEMENTATION_ZEPHYR
bool "Zephyr's ITS implementation"
select SECURE_STORAGE_ITS_TRANSFORM_MODULE
select SECURE_STORAGE_ITS_STORE_MODULE
help
Use Zephyr's implementation of the ITS API.
It calls into the transform and store modules, which
can be configured and have custom implementations.
config SECURE_STORAGE_ITS_IMPLEMENTATION_CUSTOM
bool "Custom ITS implementation"
help
A custom implementation of the ITS API is present.
Implement the functions declared in <zephyr/secure_storage/its.h>.
The header is made available when this Kconfig option is enabled.
endchoice # SECURE_STORAGE_ITS_IMPLEMENTATION
config SECURE_STORAGE_ITS_MAX_DATA_SIZE
int "Maximum data size of an ITS entry in bytes"
default 128
help
The maximum size, in bytes, that the data of an ITS entry can be.
Increasing this value increases the stack usage when serving PSA ITS API calls.
menuconfig SECURE_STORAGE_ITS_TRANSFORM_MODULE
bool "ITS transform module"
help
The module that handles the transformation and validation of the
ITS data before it's written to and after it's read from NVM.
Zephyr's ITS implementation calls into it.
if SECURE_STORAGE_ITS_TRANSFORM_MODULE
rsource "Kconfig.its_transform"
endif
menuconfig SECURE_STORAGE_ITS_STORE_MODULE
bool "ITS store module"
imply FLASH # for FLASH_HAS_DRIVER_ENABLED
help
The module that handles the storage/retrieval of the ITS data to/from NVM.
Zephyr's ITS implementation calls into it.
if SECURE_STORAGE_ITS_STORE_MODULE
rsource "Kconfig.its_store"
endif
choice SECURE_STORAGE_PS_IMPLEMENTATION
prompt "Protected Storage (PS) API implementation"
default SECURE_STORAGE_PS_IMPLEMENTATION_ITS
config SECURE_STORAGE_PS_IMPLEMENTATION_ITS
bool "PS calls directly into the ITS"
help
The PS API doesn't have an implementation of its own, and directly calls into the ITS API.
This means that the implementation of the PS API will be identical to that of the ITS API.
config SECURE_STORAGE_PS_IMPLEMENTATION_CUSTOM
bool "Custom PS implementation"
help
A custom implementation of the PS API is present.
Implement the functions declared in <zephyr/secure_storage/ps.h>.
The header is made available when this Kconfig option is enabled.
endchoice # SECURE_STORAGE_PS_IMPLEMENTATION
config SECURE_STORAGE_PS_SUPPORTS_SET_EXTENDED
bool "PS API implementation supports psa_ps_create() and psa_ps_set_extended()"
depends on SECURE_STORAGE_PS_IMPLEMENTATION_CUSTOM
help
Whether the psa_ps_create() and psa_ps_set_extended() functions are implemented.
endif # SECURE_STORAGE