psa: Add storage implementation for files

Add new functions, psa_load_persistent_key(),
psa_free_persistent_key_data(), and psa_save_persistent_key(), for
managing persistent keys. These functions load to or save from our
internal representation of key slots. Serialization is a concern of the
storage backend implementation and doesn't abstraction-leak into the
lifetime management code.

An initial implementation for files is provided. Additional storage
backends can implement this interface for other storage types.
This commit is contained in:
Darryl Green 2018-06-15 13:06:04 +01:00
parent d9eee3b417
commit db2b8db715
19 changed files with 1004 additions and 0 deletions

View file

@ -116,6 +116,8 @@ MBEDTLS_MEMORY_BACKTRACE
MBEDTLS_MEMORY_BUFFER_ALLOC_C
MBEDTLS_PLATFORM_TIME_ALT
MBEDTLS_PLATFORM_FPRINTF_ALT
MBEDTLS_PSA_CRYPTO_STORAGE_C
MBEDTLS_PSA_CRYPTO_STORAGE_FILE_C
);
# Things that should be enabled in "full" even if they match @excluded

View file

@ -70,6 +70,10 @@ LIB_FILES := \
platform.c \
platform_util.c \
psa_crypto.c \
psa_crypto_storage.h \
psa_crypto_storage.c \
psa_crypto_storage_backend.h \
psa_crypto_storage_file.c \
ripemd160.c \
rsa_internal.c \
rsa.c \
@ -154,6 +158,8 @@ TEST_FILES := \
tests/suites/test_suite_psa_crypto_hash.function \
tests/suites/test_suite_psa_crypto_metadata.data \
tests/suites/test_suite_psa_crypto_metadata.function \
tests/suites/test_suite_psa_crypto_storage_file.data \
tests/suites/test_suite_psa_crypto_storage_file.function \
# Don't delete this line.
OTHER_FILES := \