From 76e911c5efb5ff85b4db4ca94ca6a06c25fd6219 Mon Sep 17 00:00:00 2001 From: Devaraj Ranganna Date: Tue, 1 Oct 2019 13:50:43 +0100 Subject: [PATCH] psa: Replace Mbed PSA with TF-M Add TF-M to Mbed OS, replacing the previous PSA implementation for TF-M-capable targets. This commit adds files imported from TF-M, without modification. The version of TF-M imported can be found in `features/FEATURE_PSA/TARGET_TFM/VERSION.txt`. These changes switch to TF-M as the sole PSA implementation for v8-M and dual core targets, with TF-M running on the secure side and Mbed OS running on the non-secure side. Single core v7-M targets will continue to have PSA implemented via PSA emulation, implemented by Mbed OS. Move or remove many PSA-implementing files, as PSA will be provided by TF-M on non-single-v7-M targets. Delete any files that are not relevant for PSA emulation mode. - Remove imported TF-M SPM - Remove Mbed SPM and tests - Remove Mbed-implemented PSA services and tests - Remove PSA_SRV_IMPL, PSA_SRV_IPC, PSA_SRV_EMUL and NSPE. - Replace PSA_SRV_EMUL and PSA_SRV_IMPL with MBED_PSA_SRV - Remove any files autogenerated by "tools/psa/generate_partition_code.py", which no longer exists. Add new feature `PSA` to support PSA in Mbed OS. Move the Mbed OS implementation of PSA services for v7-M targets (which employ PSA emulation, and don't yet use TF-M) to features/FEATURE_PSA/TARGET_MBED_PSA_SRV. Update the `requires` attribute in TESTS/configs/baremetal.json to avoid breaking baremetal testing builds. Update .astyleignore to match new directory structure Update Mbed TLS importer to place files into FEATURE_PSA Create the following generic PSA targets: * `PSA_Target` (Root level PSA generic target) * `PSA_V7_M` (Single v7-M PSA generic target) * `PSA_DUAL_CORE` (Dual-core PSA generic target) * `PSA_V8_M` (v8-M PSA generic target) Flatten MUSCA_NS and private MUSCA targets into public MUSCA targets. Move mcuboot.bin to flat location (removing prebuilt folder) Signed-off-by: Devaraj Ranganna Signed-off-by: Jaeden Amero --- .astyleignore | 9 +- .gitignore | 3 + LICENSE.md | 5 +- TESTS/configs/baremetal.json | 1 + TESTS/mbed_hal/trng/main.cpp | 32 +- TESTS/mbedtls/sanity/main.cpp | 13 +- TESTS/mbedtls/selftest/main.cpp | 32 +- cmsis/TARGET_CORTEX_M/mbed_tz_context.c | 6 +- .../TESTS/attestation/main.cpp | 4 +- .../psa_attestation_testlist.md | 0 .../compliance_attestation/test_a001/main.c | 0 .../test_a001/test_a001.c | 0 .../test_a001/test_a001.h | 0 .../test_a001/test_data.h | 0 .../test_a001/test_entry.c | 0 .../TESTS/compliance_its/psa_its_testlist.md | 0 .../TESTS/compliance_its/test_s001/main.c | 0 .../compliance_its/test_s001/test_entry.c | 0 .../compliance_its/test_s001/test_its_data.h | 0 .../compliance_its/test_s001/test_ps_data.h | 0 .../compliance_its/test_s001/test_s001.c | 0 .../compliance_its/test_s001/test_s001.h | 0 .../TESTS/compliance_its/test_s002/main.c | 0 .../compliance_its/test_s002/test_entry.c | 0 .../compliance_its/test_s002/test_its_data.h | 0 .../compliance_its/test_s002/test_ps_data.h | 0 .../compliance_its/test_s002/test_s002.c | 0 .../compliance_its/test_s002/test_s002.h | 0 .../TESTS/compliance_its/test_s003/main.c | 0 .../compliance_its/test_s003/test_entry.c | 0 .../compliance_its/test_s003/test_its_data.h | 0 .../compliance_its/test_s003/test_ps_data.h | 0 .../compliance_its/test_s003/test_s003.c | 0 .../compliance_its/test_s003/test_s003.h | 0 .../TESTS/compliance_its/test_s004/main.c | 0 .../compliance_its/test_s004/test_entry.c | 0 .../compliance_its/test_s004/test_its_data.h | 0 .../compliance_its/test_s004/test_ps_data.h | 0 .../compliance_its/test_s004/test_s004.c | 0 .../compliance_its/test_s004/test_s004.h | 0 .../TESTS/compliance_its/test_s005/main.c | 0 .../compliance_its/test_s005/test_entry.c | 0 .../compliance_its/test_s005/test_its_data.h | 0 .../compliance_its/test_s005/test_ps_data.h | 0 .../compliance_its/test_s005/test_s005.c | 0 .../compliance_its/test_s005/test_s005.h | 0 .../TESTS/compliance_its/test_s006/main.c | 0 .../compliance_its/test_s006/test_entry.c | 0 .../compliance_its/test_s006/test_its_data.h | 0 .../compliance_its/test_s006/test_ps_data.h | 0 .../compliance_its/test_s006/test_s006.c | 0 .../compliance_its/test_s006/test_s006.h | 0 .../TESTS/compliance_its/test_s007/main.c | 0 .../compliance_its/test_s007/test_entry.c | 0 .../compliance_its/test_s007/test_its_data.h | 0 .../compliance_its/test_s007/test_ps_data.h | 0 .../compliance_its/test_s007/test_s007.c | 0 .../compliance_its/test_s007/test_s007.h | 0 .../TESTS/compliance_its/test_s008/main.c | 0 .../compliance_its/test_s008/test_entry.c | 0 .../compliance_its/test_s008/test_its_data.h | 0 .../compliance_its/test_s008/test_ps_data.h | 0 .../compliance_its/test_s008/test_s008.c | 0 .../compliance_its/test_s008/test_s008.h | 0 .../TESTS/compliance_its/test_s009/main.c | 0 .../compliance_its/test_s009/test_entry.c | 0 .../compliance_its/test_s009/test_its_data.h | 0 .../compliance_its/test_s009/test_ps_data.h | 0 .../compliance_its/test_s009/test_s009.c | 0 .../compliance_its/test_s009/test_s009.h | 0 .../TESTS/compliance_its/test_s010/main.c | 0 .../compliance_its/test_s010/test_entry.c | 0 .../compliance_its/test_s010/test_its_data.h | 0 .../compliance_its/test_s010/test_ps_data.h | 0 .../compliance_its/test_s010/test_s010.c | 0 .../compliance_its/test_s010/test_s010.h | 0 .../TESTS/crypto_init/main.cpp | 30 +- .../TESTS/entropy_inject/main.cpp | 0 .../TARGET_MBED_PSA_SRV/TESTS/its_ps/main.cpp | 0 .../TARGET_MBED_PSA_SRV/inc/psa/client.h | 4 +- .../TARGET_MBED_PSA_SRV/inc/psa/crypto.h | 0 .../inc/psa/crypto_accel_driver.h | 0 .../inc/psa/crypto_compat.h | 0 .../inc/psa/crypto_driver_common.h | 0 .../inc/psa/crypto_entropy_driver.h | 0 .../inc/psa/crypto_extra.h | 0 .../inc/psa/crypto_platform.h | 0 .../inc/psa/crypto_se_driver.h | 0 .../inc/psa/crypto_sizes.h | 0 .../inc/psa/crypto_types.h | 0 .../inc/psa/crypto_values.h | 0 .../TARGET_MBED_PSA_SRV/inc/psa/error.h | 0 .../inc/psa/internal_trusted_storage.h | 0 .../TARGET_MBED_PSA_SRV/inc/psa/lifecycle.h | 0 .../inc/psa/protected_storage.h | 0 .../TARGET_MBED_PSA_SRV/inc/psa/service.h | 4 +- .../inc/psa/storage_common.h | 0 .../TARGET_MBED_PSA_SRV}/mbed_lib.json | 0 .../mbedtls}/crypto_struct.h | 0 .../TARGET_MBED_PSA_SRV/mbedtls}/psa_crypto.c | 0 .../mbedtls}/psa_crypto_core.h | 0 .../mbedtls}/psa_crypto_invasive.h | 0 .../mbedtls}/psa_crypto_its.h | 0 .../mbedtls}/psa_crypto_se.c | 0 .../mbedtls}/psa_crypto_se.h | 0 .../mbedtls}/psa_crypto_service_integration.h | 0 .../mbedtls}/psa_crypto_slot_management.c | 0 .../mbedtls}/psa_crypto_slot_management.h | 0 .../mbedtls}/psa_crypto_storage.c | 0 .../mbedtls}/psa_crypto_storage.h | 0 .../mbedtls}/psa_its_file.c | 0 .../pal}/pal_attestation_eat.c | 0 .../pal}/pal_attestation_eat.h | 0 .../pal/pal_attestation_intf.c | 0 .../pal/pal_attestation_intf.h | 0 .../pal/pal_client_api_empty_intf.c | 6 +- .../pal/pal_client_api_intf.c | 0 .../pal/pal_client_api_intf.h | 14 +- .../TARGET_MBED_PSA_SRV}/pal/pal_common.h | 0 .../pal}/pal_interfaces_ns.h | 0 .../pal/pal_internal_trusted_storage_intf.c | 0 .../pal/pal_internal_trusted_storage_intf.h | 0 .../pal/pal_mbed_os_intf.cpp | 19 +- .../pal/pal_mbed_os_intf.h | 0 .../pal/pal_protected_storage_intf.c | 0 .../pal/pal_protected_storage_intf.h | 0 .../services/attestation}/LICENSE | 0 .../attestation}/LICENSE-BSD-3-Clause | 0 .../attestation}/attest_boot_status_loader.c | 0 .../services/attestation}/attest_crypto.c | 0 .../attestation}/attest_crypto_keys.c | 0 .../attestation}/attest_iat_claims_loader.c | 0 .../services/attestation/attestation.h | 0 .../attestation_bootloader_data.c | 0 .../attestation_bootloader_data.h | 0 .../attestation}/psa_attest_inject_key.c | 0 .../attestation/psa_attest_inject_key.h | 0 .../attestation}/psa_attestation_stubs.c | 0 .../psa_initial_attestation_api.c | 0 .../attestation/psa_initial_attestation_api.h | 0 .../psa_inject_attestation_key_impl.c | 0 .../psa_inject_attestation_key_impl.h | 0 .../services/attestation/qcbor/.mbedignore | 0 .../services/attestation/qcbor/CMakeLists.txt | 0 .../services/attestation/qcbor/README.md | 0 .../attestation/qcbor/inc/UsefulBuf.h | 0 .../services/attestation/qcbor/inc/qcbor.h | 0 .../attestation/qcbor/inc/useful_buf.h | 0 .../attestation/qcbor/src/UsefulBuf.c | 0 .../services/attestation/qcbor/src/ieee754.c | 0 .../services/attestation/qcbor/src/ieee754.h | 0 .../attestation/qcbor/src/qcbor_decode.c | 0 .../attestation/qcbor/src/qcbor_encode.c | 0 .../attestation/qcbor/test/UsefulBuf_Tests.c | 0 .../attestation/qcbor/test/UsefulBuf_Tests.h | 0 .../attestation/qcbor/test/float_tests.c | 0 .../attestation/qcbor/test/float_tests.h | 0 .../qcbor/test/half_to_double_from_rfc7049.c | 0 .../qcbor/test/half_to_double_from_rfc7049.h | 0 .../qcbor/test/qcbor_decode_tests.c | 0 .../qcbor/test/qcbor_decode_tests.h | 0 .../qcbor/test/qcbor_encode_tests.c | 0 .../qcbor/test/qcbor_encode_tests.h | 0 .../attestation/qcbor/test/run_tests.c | 0 .../attestation/qcbor/test/run_tests.h | 0 .../services/attestation/tfm_client.h | 0 .../tfm_impl/attest_eat_defines.h | 0 .../attestation}/tfm_impl/attest_token.c | 0 .../attestation}/tfm_impl/attest_token.h | 0 .../attestation}/tfm_impl/attestation_core.c | 0 .../tfm_impl/t_cose/CMakeLists.txt | 0 .../attestation}/tfm_impl/t_cose/README.md | 0 .../tfm_impl/t_cose/inc/t_cose_common.h | 0 .../tfm_impl/t_cose/inc/t_cose_sign1_sign.h | 0 .../tfm_impl/t_cose/src/t_cose_crypto.h | 0 .../tfm_impl/t_cose/src/t_cose_defines.h | 0 .../tfm_impl/t_cose/src/t_cose_sign1_sign.c | 0 .../tfm_impl/t_cose/src/t_cose_util.c | 0 .../tfm_impl/t_cose/src/t_cose_util.h | 0 .../attestation}/tfm_impl/tfm_attest_hal.h | 0 .../attestation}/tfm_impl/tfm_boot_status.h | 0 .../tfm_impl/tfm_plat_boot_seed.h | 0 .../tfm_impl/tfm_plat_crypto_keys.h | 0 .../attestation}/tfm_impl/tfm_plat_defs.h | 0 .../tfm_impl/tfm_plat_device_id.h | 0 .../services/attestation}/tfm_memory_utils.h | 0 .../services/platform}/platform_emul.c | 0 .../services/platform}/platform_srv_impl.c | 0 .../services/platform}/platform_srv_impl.h | 0 .../common/psa_storage_common_impl.cpp | 0 .../storage/common/psa_storage_common_impl.h | 0 .../services/storage/its}/its_tfm_impl.cpp | 0 .../services/storage/its}/pits_impl.cpp | 0 .../services/storage/its}/pits_impl.h | 0 .../its}/psa_prot_internal_storage.cpp | 0 .../storage/its/psa_prot_internal_storage.h | 0 .../storage/ps}/protected_storage.cpp | 0 .../src/default_random_seed.cpp | 0 .../TARGET_MBED_PSA_SRV/val}/val.h | 0 .../val}/val_attestation.c | 0 .../val}/val_attestation.h | 0 .../val}/val_client_defs.h | 0 .../TARGET_MBED_PSA_SRV/val}/val_entry.h | 0 .../TARGET_MBED_PSA_SRV/val}/val_framework.h | 0 .../TARGET_MBED_PSA_SRV/val}/val_greentea.cpp | 0 .../TARGET_MBED_PSA_SRV/val}/val_greentea.h | 0 .../TARGET_MBED_PSA_SRV/val}/val_interfaces.c | 0 .../TARGET_MBED_PSA_SRV/val}/val_interfaces.h | 0 .../val}/val_internal_trusted_storage.c | 0 .../val}/val_internal_trusted_storage.h | 0 .../val}/val_protected_storage.c | 0 .../val}/val_protected_storage.h | 0 .../TARGET_MBED_PSA_SRV/val}/val_target.h | 0 .../src/platform_multicore.c | 131 + .../src/platform_ns_mailbox.c | 309 + .../src/tfm_multi_core_api.c | 45 + .../src/tfm_multi_core_psa_ns_api.c | 224 + .../TARGET_TFM_DUALCPU/src/tfm_ns_mailbox.c | 425 + .../TARGET_TFM_V8M/src}/cmsis_nvic_virtual.c | 6 +- .../TARGET_TFM_V8M/src/tfm_ns_interface.c | 64 + .../TARGET_TFM_V8M}/src/tfm_psa_ns_api.c | 44 +- .../FEATURE_PSA/TARGET_TFM/VERSION.txt | 1 + .../TARGET_TFM/include}/cmsis_nvic_virtual.h | 0 .../TARGET_TFM/include/ns_ipc_config.h | 22 + .../TARGET_TFM/include/platform_multicore.h | 102 + .../TARGET_TFM/include/psa/client.h} | 97 +- .../TARGET_TFM/include/psa/crypto.h | 3770 +++++ .../TARGET_TFM/include/psa/crypto_compat.h | 111 + .../TARGET_TFM/include/psa/crypto_extra.h | 57 + .../TARGET_TFM/include/psa/crypto_platform.h | 51 + .../TARGET_TFM/include/psa/crypto_sizes.h | 650 + .../TARGET_TFM/include/psa/crypto_struct.h} | 89 +- .../TARGET_TFM/include/psa/crypto_types.h | 313 + .../TARGET_TFM/include/psa/crypto_values.h | 1701 ++ .../TARGET_TFM/include/psa/error.h | 57 + .../include/psa/initial_attestation.h | 228 + .../include/psa/internal_trusted_storage.h | 164 + .../include/psa/protected_storage.h | 282 + .../TARGET_TFM/include/psa/storage_common.h | 49 + .../TARGET_TFM/include/psa_manifest/sid.h | 147 + .../FEATURE_PSA/TARGET_TFM/include/tfm_api.h | 142 + .../TARGET_TFM/include/tfm_crypto_defs.h | 164 + .../TARGET_TFM/include/tfm_mailbox.h | 180 + .../TARGET_TFM/include/tfm_multi_core_api.h | 61 + .../TARGET_TFM/include/tfm_ns_interface.h | 54 + .../TARGET_TFM/include/tfm_ns_mailbox.h | 229 + .../TARGET_TFM}/include/tfm_ns_svc.h | 2 +- .../TARGET_TFM/include/tfm_platform_api.h | 98 + .../TARGET_TFM/include/tfm_veneers.h | 180 + .../TARGET_TFM/src/tfm_crypto_ipc_api.c | 1875 +++ .../src/tfm_initial_attestation_ipc_api.c | 105 + .../TARGET_TFM/src/tfm_its_ipc_api.c | 137 + .../TARGET_TFM/src/tfm_platform_ipc_api.c | 78 + .../TARGET_TFM/src/tfm_sst_ipc_api.c | 183 + .../inc/default_random_seed.h | 0 .../inc/psa/tfm_platform_api.h | 0 .../{TARGET_PSA => FEATURE_PSA}/mbed_lib.json | 0 .../src/psa_hrng.c | 5 - .../interface/src/tfm_ns_lock_rtx.c | 91 - .../interface/include/psa_service.h | 250 - .../TARGET_TFM/interface/include/tfm_api.h | 136 - .../interface/include/tfm_ns_lock.h | 42 - .../interface/include/tfm_nspm_svc_handler.h | 30 - .../TARGET_TFM/mbed_lib.json | 29 - .../inc/psa_manifest/sid.h | 23 - .../psa_attest_inject_key.c | 55 - .../psa_initial_attestation_api.c | 79 - .../services/attestation/LICENSE | 2 - .../services/attestation/LICENSE-BSD-3-Clause | 26 - .../crypto_platform_spe.h | 179 - .../COMPONENT_PSA_SRV_IPC/crypto_struct.h | 17 - .../COMPONENT_PSA_SRV_IPC/psa_crypto_spm.c | 1636 -- .../services/inc/autogen_sid.h | 111 - .../services/inc/mbed_spm_partitions.h | 310 - .../COMPONENT_PSA_SRV_IPC/platform_ipc.c | 118 - .../psa_prot_internal_storage.c | 137 - features/mbedtls/importer/Makefile | 28 +- features/mbedtls/inc/mbedtls/config.h | 5 + features/mbedtls/platform/inc/platform_mbed.h | 6 +- platform/source/mbed_retarget.cpp | 4 +- rtos/source/TARGET_CORTEX/mbed_rtos_rtx.c | 8 +- .../LICENSE-permissive-binary-license-1.0.txt | 0 .../TARGET_ARM_SSG/TARGET_MUSCA_A1/README.md | 25 + .../TARGET_MUSCA_A1/mcuboot.bin | Bin 0 -> 21724 bytes .../TARGET_MUSCA_A1/prebuilt/README.md | 43 - .../TARGET_MUSCA_A1/prebuilt/cmse_lib.o | Bin 644 -> 0 bytes .../prebuilt/crypto_access_control.bin | Bin 521888 -> 0 bytes .../TARGET_MUSCA_A1/prebuilt/mcuboot.bin | Bin 37312 -> 0 bytes .../TARGET_MUSCA_A1/prebuilt/spm_client.bin | Bin 521888 -> 0 bytes .../TARGET_MUSCA_A1/prebuilt/spm_server.bin | Bin 521888 -> 0 bytes .../TARGET_MUSCA_A1/prebuilt/spm_smoke.bin | Bin 521888 -> 0 bytes .../TARGET_MUSCA_A1/prebuilt/tfm.bin | Bin 521888 -> 0 bytes .../s_veneers.o} | Bin 644 -> 644 bytes .../TARGET_ARM_SSG/TARGET_MUSCA_A1/tfm_s.axf | Bin 0 -> 445852 bytes .../TARGET_ARM_SSG/TARGET_MUSCA_A1/tfm_s.bin | Bin 0 -> 521504 bytes .../TARGET_MUSCA_B1/mcuboot.bin | Bin 0 -> 19684 bytes .../LICENSE-permissive-binary-license-1.0.txt | 49 - .../TARGET_MUSCA_B1/prebuilt/README.md | 49 - .../prebuilt/crypto_access_control.bin | Bin 324832 -> 0 bytes .../TARGET_MUSCA_B1/prebuilt/mcuboot.bin | Bin 34912 -> 0 bytes .../TARGET_MUSCA_B1/prebuilt/spm_client.bin | Bin 324832 -> 0 bytes .../TARGET_MUSCA_B1/prebuilt/spm_server.bin | Bin 324832 -> 0 bytes .../TARGET_MUSCA_B1/prebuilt/spm_smoke.bin | Bin 324832 -> 0 bytes .../TARGET_MUSCA_B1/s_veneers.o | Bin 0 -> 644 bytes .../TARGET_ARM_SSG/TARGET_MUSCA_B1/tfm_s.axf | Bin 0 -> 362020 bytes .../{prebuilt/tfm.bin => tfm_s.bin} | Bin 324832 -> 389408 bytes .../TARGET_CY8CKIT_064S2_4343W/tfm_s.axf | Bin 0 -> 516008 bytes .../TARGET_CY8CKIT_064S2_4343W/tfm_s.hex | 13677 ++++++++++++++++ targets/targets.json | 349 +- tools/config/__init__.py | 4 +- tools/psa/__init__.py | 36 - tools/targets/ARM_MUSCA_A1.py | 4 +- tools/targets/ARM_MUSCA_B1.py | 2 +- tools/targets/__init__.py | 49 +- tools/test/targets/target_test.py | 41 +- tools/tests.py | 17 +- tools/toolchains/gcc.py | 5 +- 317 files changed, 26543 insertions(+), 3943 deletions(-) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/attestation/main.cpp (97%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/psa_attestation_testlist.md (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/main.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_a001.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_a001.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_entry.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/psa_its_testlist.md (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/main.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_entry.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_its_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_ps_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_s001.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_s001.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/main.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_entry.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_its_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_ps_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_s002.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_s002.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/main.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_entry.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_its_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_ps_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_s003.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_s003.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/main.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_entry.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_its_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_ps_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_s004.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_s004.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/main.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_entry.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_its_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_ps_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_s005.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_s005.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/main.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_entry.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_its_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_ps_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_s006.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_s006.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/main.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_entry.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_its_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_ps_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_s007.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_s007.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/main.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_entry.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_its_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_ps_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_s008.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_s008.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/main.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_entry.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_its_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_ps_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_s009.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_s009.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/main.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_entry.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_its_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_ps_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_s010.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_s010.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/crypto_init/main.cpp (73%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/entropy_inject/main.cpp (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/TESTS/its_ps/main.cpp (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/client.h (97%) rename features/FEATURE_EXPERIMENTAL_API/{ => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/crypto.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{ => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/crypto_accel_driver.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{ => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/crypto_compat.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{ => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/crypto_driver_common.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{ => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/crypto_entropy_driver.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{ => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/crypto_extra.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{ => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/crypto_platform.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{ => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/crypto_se_driver.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{ => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/crypto_sizes.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{ => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/crypto_types.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{ => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/crypto_values.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/error.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/internal_trusted_storage.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/lifecycle.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/protected_storage.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/service.h (92%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/inc/psa/storage_common.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV}/mbed_lib.json (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/COMPONENT_NSPE => FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls}/crypto_struct.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls}/psa_crypto.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls}/psa_crypto_core.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls}/psa_crypto_invasive.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls}/psa_crypto_its.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls}/psa_crypto_se.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls}/psa_crypto_se.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls}/psa_crypto_service_integration.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls}/psa_crypto_slot_management.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls}/psa_crypto_slot_management.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls}/psa_crypto_storage.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls}/psa_crypto_storage.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls}/psa_its_file.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/pal}/pal_attestation_eat.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/pal}/pal_attestation_eat.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV}/pal/pal_attestation_intf.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV}/pal/pal_attestation_intf.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV}/pal/pal_client_api_empty_intf.c (96%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV}/pal/pal_client_api_intf.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV}/pal/pal_client_api_intf.h (80%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV}/pal/pal_common.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/pal}/pal_interfaces_ns.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV}/pal/pal_internal_trusted_storage_intf.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV}/pal/pal_internal_trusted_storage_intf.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV}/pal/pal_mbed_os_intf.cpp (85%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV}/pal/pal_mbed_os_intf.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV}/pal/pal_protected_storage_intf.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV}/pal/pal_protected_storage_intf.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/LICENSE (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/LICENSE-BSD-3-Clause (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/attest_boot_status_loader.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/attest_crypto.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/attest_crypto_keys.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/attest_iat_claims_loader.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/attestation.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/attestation_bootloader_data.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/attestation_bootloader_data.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_EMUL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/psa_attest_inject_key.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/psa_attest_inject_key.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/psa_attestation_stubs.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_EMUL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/psa_initial_attestation_api.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/psa_initial_attestation_api.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/psa_inject_attestation_key_impl.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/psa_inject_attestation_key_impl.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/.mbedignore (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/CMakeLists.txt (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/README.md (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/inc/UsefulBuf.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/inc/qcbor.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/inc/useful_buf.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/UsefulBuf.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/ieee754.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/ieee754.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/qcbor_decode.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/qcbor_encode.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/UsefulBuf_Tests.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/UsefulBuf_Tests.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/float_tests.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/float_tests.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/half_to_double_from_rfc7049.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/half_to_double_from_rfc7049.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_decode_tests.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_decode_tests.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_encode_tests.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_encode_tests.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/run_tests.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/run_tests.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/attestation/tfm_client.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/attest_eat_defines.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/attest_token.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/attest_token.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/attestation_core.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/t_cose/CMakeLists.txt (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/t_cose/README.md (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/t_cose/inc/t_cose_common.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/t_cose/inc/t_cose_sign1_sign.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/t_cose/src/t_cose_crypto.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/t_cose/src/t_cose_defines.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/t_cose/src/t_cose_sign1_sign.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/t_cose/src/t_cose_util.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/t_cose/src/t_cose_util.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/tfm_attest_hal.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/tfm_boot_status.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/tfm_plat_boot_seed.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/tfm_plat_crypto_keys.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/tfm_plat_defs.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_impl/tfm_plat_device_id.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation}/tfm_memory_utils.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/platform/COMPONENT_PSA_SRV_EMUL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/platform}/platform_emul.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/platform/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/platform}/platform_srv_impl.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/platform/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/platform}/platform_srv_impl.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/storage/common/psa_storage_common_impl.cpp (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/storage/common/psa_storage_common_impl.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/COMPONENT_PSA_SRV_IMPL/TARGET_TFM => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/its}/its_tfm_impl.cpp (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/its}/pits_impl.cpp (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/its}/pits_impl.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/COMPONENT_PSA_SRV_EMUL => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/its}/psa_prot_internal_storage.cpp (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/TARGET_MBED_PSA_SRV/services/storage/its/psa_prot_internal_storage.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/ps/COMPONENT_NSPE => FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/ps}/protected_storage.cpp (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA/TARGET_MBED_PSA_SRV}/src/default_random_seed.cpp (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/val}/val.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/val}/val_attestation.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/val}/val_attestation.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/val}/val_client_defs.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/val}/val_entry.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/val}/val_framework.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/val}/val_greentea.cpp (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/val}/val_greentea.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/val}/val_interfaces.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/val}/val_interfaces.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/val}/val_internal_trusted_storage.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/val}/val_internal_trusted_storage.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/val}/val_protected_storage.c (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/val}/val_protected_storage.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA/TARGET_MBED_PSA_SRV/val}/val_target.h (100%) create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/platform_multicore.c create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/platform_ns_mailbox.c create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/tfm_multi_core_api.c create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/tfm_multi_core_psa_ns_api.c create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/tfm_ns_mailbox.c rename {targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/device => features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_V8M/src}/cmsis_nvic_virtual.c (86%) create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_V8M/src/tfm_ns_interface.c rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/COMPONENT_NSPE/interface => FEATURE_PSA/TARGET_TFM/TARGET_TFM_V8M}/src/tfm_psa_ns_api.c (53%) create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/VERSION.txt rename {targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/device => features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include}/cmsis_nvic_virtual.h (100%) create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/ns_ipc_config.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/platform_multicore.h rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/psa_client.h => FEATURE_PSA/TARGET_TFM/include/psa/client.h} (58%) create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_compat.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_extra.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_platform.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_sizes.h rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_struct_ipc.h => FEATURE_PSA/TARGET_TFM/include/psa/crypto_struct.h} (75%) create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_types.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_values.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/error.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/initial_attestation.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/internal_trusted_storage.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/protected_storage.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/storage_common.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa_manifest/sid.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_api.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_crypto_defs.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_mailbox.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_multi_core_api.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_ns_interface.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_ns_mailbox.h rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface => FEATURE_PSA/TARGET_TFM}/include/tfm_ns_svc.h (97%) create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_platform_api.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_veneers.h create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_crypto_ipc_api.c create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_initial_attestation_ipc_api.c create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_its_ipc_api.c create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_platform_ipc_api.c create mode 100644 features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_sst_ipc_api.c rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/COMPONENT_PSA_SRV_IMPL => FEATURE_PSA}/inc/default_random_seed.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/inc/psa/tfm_platform_api.h (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA => FEATURE_PSA}/mbed_lib.json (100%) rename features/FEATURE_EXPERIMENTAL_API/{TARGET_PSA/COMPONENT_NSPE => FEATURE_PSA}/src/psa_hrng.c (88%) delete mode 100644 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/COMPONENT_NSPE/interface/src/tfm_ns_lock_rtx.c delete mode 100644 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/psa_service.h delete mode 100644 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/tfm_api.h delete mode 100644 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/tfm_ns_lock.h delete mode 100644 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/tfm_nspm_svc_handler.h delete mode 100644 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/mbed_lib.json delete mode 100644 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa_manifest/sid.h delete mode 100755 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IPC/psa_attest_inject_key.c delete mode 100755 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IPC/psa_initial_attestation_api.c delete mode 100644 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/LICENSE delete mode 100644 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/LICENSE-BSD-3-Clause delete mode 100644 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_platform_spe.h delete mode 100644 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_struct.h delete mode 100644 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/crypto/COMPONENT_PSA_SRV_IPC/psa_crypto_spm.c delete mode 100644 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/inc/autogen_sid.h delete mode 100644 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/inc/mbed_spm_partitions.h delete mode 100644 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/platform/COMPONENT_PSA_SRV_IPC/platform_ipc.c delete mode 100644 features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/COMPONENT_PSA_SRV_IPC/psa_prot_internal_storage.c rename targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/{prebuilt => }/LICENSE-permissive-binary-license-1.0.txt (100%) create mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/README.md create mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/mcuboot.bin delete mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/README.md delete mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/cmse_lib.o delete mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/crypto_access_control.bin delete mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/mcuboot.bin delete mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/spm_client.bin delete mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/spm_server.bin delete mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/spm_smoke.bin delete mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/tfm.bin rename targets/TARGET_ARM_SSG/{TARGET_MUSCA_B1/prebuilt/cmse_lib.o => TARGET_MUSCA_A1/s_veneers.o} (69%) create mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/tfm_s.axf create mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/tfm_s.bin create mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/mcuboot.bin delete mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/prebuilt/LICENSE-permissive-binary-license-1.0.txt delete mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/prebuilt/README.md delete mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/prebuilt/crypto_access_control.bin delete mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/prebuilt/mcuboot.bin delete mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/prebuilt/spm_client.bin delete mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/prebuilt/spm_server.bin delete mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/prebuilt/spm_smoke.bin create mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/s_veneers.o create mode 100644 targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/tfm_s.axf rename targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/{prebuilt/tfm.bin => tfm_s.bin} (52%) create mode 100644 targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_064S2_4343W/tfm_s.axf create mode 100644 targets/TARGET_Cypress/TARGET_PSOC6/TARGET_CY8CKIT_064S2_4343W/tfm_s.hex diff --git a/.astyleignore b/.astyleignore index 8f596204b7..2bc09892b6 100644 --- a/.astyleignore +++ b/.astyleignore @@ -2,13 +2,8 @@ ^cmsis ^features/cryptocell ^features/FEATURE_BLE -^features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV -^features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/attestation.h -^features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl -^features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor -^features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_struct_ipc.h -^features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM -^features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS +^features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV +^features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM ^features/frameworks ^features/lwipstack/lwip ^features/lwipstack/lwip-sys diff --git a/.gitignore b/.gitignore index e89472c010..ad52c208f8 100644 --- a/.gitignore +++ b/.gitignore @@ -97,3 +97,6 @@ test_suite.json # default delivery dir DELIVERY/ + +# Directory used to clone and build TF-M +features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_IGNORE/ diff --git a/LICENSE.md b/LICENSE.md index 6c226bea93..b0c86f0bf6 100644 --- a/LICENSE.md +++ b/LICENSE.md @@ -5,11 +5,12 @@ Folders containing files under different permissive license than Apache 2.0 are - [cmsis](./cmsis) - MIT, BSD-3-Clause - [components/802.15.4_RF/mcr20a-rf-driver](./components/802.15.4_RF/mcr20a-rf-driver) - BSD-3-Clause -- [components/TARGET_PSA/TARGET_TFM](./components/TARGET_PSA/TARGET_TFM) - BSD-3-Clause -- [components/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation](./components/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation) - BSD-3-Clause - [features/cryptocell/FEATURE_CRYPTOCELL310](./features/cryptocell/FEATURE_CRYPTOCELL310) - ARM Object Code and Header Files License - [features/FEATURE_BOOTLOADER](./features/FEATURE_BOOTLOADER) - PBL - [features/FEATURE_BLE/targets](./features/FEATURE_BLE/targets) - BSD-style, PBL, MIT-style +- [features/FEATURE_PSA/FEATURE_TFM](./features/FEATURE_PSA/FEATURE_TFM) - BSD-3-Clause +- [features/FEATURE_PSA/FEATURE_MBED_PSA_SRV/services/attestation](./features/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation) - BSD-3-Clause +- [features/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor](./features/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor) - BSD-3-Clause - [features/lorawan](./features/lorawan) - Revised BSD - [features/lwipstack](./features/lwipstack) - BSD-style, MIT-style - [features/nanostack/sal-stack-nanostack](./features/nanostack/sal-stack-nanostack) - BSD-3-Clause diff --git a/TESTS/configs/baremetal.json b/TESTS/configs/baremetal.json index fccf94dcff..4f210ae06d 100644 --- a/TESTS/configs/baremetal.json +++ b/TESTS/configs/baremetal.json @@ -5,6 +5,7 @@ "utest", "unity", "psa", + "psa-services", "mbedtls", "psa-compliance-framework", "filesystem", diff --git a/TESTS/mbed_hal/trng/main.cpp b/TESTS/mbed_hal/trng/main.cpp index edd5dff70e..40147e8fd0 100644 --- a/TESTS/mbed_hal/trng/main.cpp +++ b/TESTS/mbed_hal/trng/main.cpp @@ -1,5 +1,5 @@ /* -* Copyright (c) 2018 ARM Limited. All rights reserved. +* Copyright (c) 2018-2020 ARM Limited. All rights reserved. * SPDX-License-Identifier: Apache-2.0 * Licensed under the Apache License, Version 2.0 (the License); you may * not use this file except in compliance with the License. @@ -69,33 +69,6 @@ using namespace utest::v1; -#if (defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C)) -#include "entropy.h" -#include "entropy_poll.h" -#include "crypto.h" -#if !defined(MAX) -#define MAX(a,b) (((a)>(b))?(a):(b)) -#endif - -/* Calculating the minimum allowed entropy size in bytes */ -#define MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE \ - MAX(MBEDTLS_ENTROPY_MIN_PLATFORM, MBEDTLS_ENTROPY_BLOCK_SIZE) - -void inject_entropy_for_psa() -{ - if (psa_crypto_init() == PSA_ERROR_INSUFFICIENT_ENTROPY) { - uint8_t seed[MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE] = {0}; - /* inject some a seed for test*/ - for (int i = 0; i < MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE; ++i) { - seed[i] = i; - } - - /* don't really care if this succeed this is just to make crypto init pass*/ - mbedtls_psa_inject_entropy(seed, MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE); - } -} -#endif // (defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C)) - static int fill_buffer_trng(uint8_t *buffer, trng_t *trng_obj, size_t trng_len) { size_t temp_size = 0, output_length = 0; @@ -275,9 +248,6 @@ int main() #if defined(MBEDTLS_PLATFORM_C) ret = mbedtls_platform_setup(NULL); #endif /* MBEDTLS_PLATFORM_C */ -#if (defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C)) - inject_entropy_for_psa(); -#endif ret = !Harness::run(specification); #if defined(MBEDTLS_PLATFORM_C) mbedtls_platform_teardown(NULL); diff --git a/TESTS/mbedtls/sanity/main.cpp b/TESTS/mbedtls/sanity/main.cpp index d255ecc022..c01fa150e2 100644 --- a/TESTS/mbedtls/sanity/main.cpp +++ b/TESTS/mbedtls/sanity/main.cpp @@ -1,5 +1,5 @@ /* - * Copyright (c) 2018, Arm Limited and affiliates + * Copyright (c) 2018-2020, Arm Limited and affiliates * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,12 +15,11 @@ * limitations under the License. */ -#if ((!defined(TARGET_PSA)) || (!defined(MBEDTLS_PSA_CRYPTO_C))) +#if ((!defined(FEATURE_PSA)) || (!defined(MBEDTLS_PSA_CRYPTO_C))) #error [NOT_SUPPORTED] Mbed Crypto is OFF - skipping. #else #include "psa/crypto.h" - #include #include "mbed.h" #include "greentea-client/test_env.h" @@ -31,7 +30,7 @@ using namespace utest::v1; -#if defined(MBEDTLS_ENTROPY_NV_SEED) || defined(COMPONENT_PSA_SRV_IPC) +#if defined(MBEDTLS_ENTROPY_NV_SEED) #if !defined(MAX) #define MAX(a,b) (((a)>(b))?(a):(b)) @@ -48,7 +47,7 @@ void inject_entropy() } mbedtls_psa_inject_entropy(seed, MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE); } -#endif // defined(MBEDTLS_ENTROPY_NV_SEED) || defined(COMPONENT_PSA_SRV_IPC) +#endif // defined(MBEDTLS_ENTROPY_NV_SEED) void test_crypto_random(void) { @@ -431,12 +430,12 @@ void test_crypto_hash_clone(void) utest::v1::status_t case_setup_handler(const Case *const source, const size_t index_of_case) { psa_status_t status = psa_crypto_init(); -#if defined(MBEDTLS_ENTROPY_NV_SEED) || defined(COMPONENT_PSA_SRV_IPC) +#if defined(MBEDTLS_ENTROPY_NV_SEED) if (status == PSA_ERROR_INSUFFICIENT_ENTROPY) { inject_entropy(); status = psa_crypto_init(); } -#endif /* defined(MBEDTLS_ENTROPY_NV_SEED) || defined(COMPONENT_PSA_SRV_IPC) */ +#endif /* defined(MBEDTLS_ENTROPY_NV_SEED) */ TEST_ASSERT_EQUAL(PSA_SUCCESS, status); return greentea_case_setup_handler(source, index_of_case); } diff --git a/TESTS/mbedtls/selftest/main.cpp b/TESTS/mbedtls/selftest/main.cpp index 207681ca74..1f98c25755 100644 --- a/TESTS/mbedtls/selftest/main.cpp +++ b/TESTS/mbedtls/selftest/main.cpp @@ -1,5 +1,5 @@ /* mbed Microcontroller Library - * Copyright (c) 2016 ARM Limited + * Copyright (c) 2016-2020 ARM Limited * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -87,32 +87,6 @@ Case cases[] = { #endif /* MBEDTLS_SELF_TEST */ }; -#if (defined(MBEDTLS_ENTROPY_C) && defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C)) -#include "crypto.h" -#if !defined(MAX) -#define MAX(a,b) (((a)>(b))?(a):(b)) -#endif - -/* Calculating the minimum allowed entropy size in bytes */ -#define MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE \ - MAX(MBEDTLS_ENTROPY_MIN_PLATFORM, MBEDTLS_ENTROPY_BLOCK_SIZE) - -void inject_entropy_for_psa() -{ - if (psa_crypto_init() == PSA_ERROR_INSUFFICIENT_ENTROPY) { - uint8_t seed[MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE] = {0}; - /* inject some a seed for test*/ - for (int i = 0; i < MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE; ++i) { - seed[i] = i; - } - - /* don't really care if this succeed this is just to make crypto init pass*/ - mbedtls_psa_inject_entropy(seed, MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE); - } -} -#endif // (defined(MBEDTLS_ENTROPY_C) && defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C)) - - utest::v1::status_t test_setup(const size_t num_cases) { GREENTEA_SETUP(120, "default_auto"); @@ -131,10 +105,6 @@ int main() } #endif -#if (defined(MBEDTLS_ENTROPY_C) && defined(TARGET_PSA) && defined(COMPONENT_PSA_SRV_IPC) && defined(MBEDTLS_PSA_CRYPTO_C)) - inject_entropy_for_psa(); -#endif - ret = (Harness::run(specification) ? 0 : 1); #if defined(MBEDTLS_PLATFORM_C) mbedtls_platform_teardown(NULL); diff --git a/cmsis/TARGET_CORTEX_M/mbed_tz_context.c b/cmsis/TARGET_CORTEX_M/mbed_tz_context.c index 17bf625afe..917eeaeece 100644 --- a/cmsis/TARGET_CORTEX_M/mbed_tz_context.c +++ b/cmsis/TARGET_CORTEX_M/mbed_tz_context.c @@ -5,7 +5,7 @@ * @date 10. January 2018 ******************************************************************************/ /* - * Copyright (c) 2016-2018 Arm Limited. All rights reserved. + * Copyright (c) 2016-2020 Arm Limited. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 * @@ -22,7 +22,7 @@ * limitations under the License. */ -#if !TARGET_TFM +#if !FEATURE_TFM #if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U) @@ -204,4 +204,4 @@ uint32_t TZ_StoreContext_S (TZ_MemoryId_t id) { } #endif -#endif // !TARGET_TFM +#endif // !FEATURE_TFM diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/attestation/main.cpp b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/attestation/main.cpp similarity index 97% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/attestation/main.cpp rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/attestation/main.cpp index c7305cae25..866123c784 100755 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/attestation/main.cpp +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/attestation/main.cpp @@ -1,5 +1,5 @@ /* -* Copyright (c) 2019 ARM Limited. All rights reserved. +* Copyright (c) 2019-2020 ARM Limited. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 * @@ -135,7 +135,7 @@ utest::v1::status_t case_setup_handler(const Case *const source, const size_t in psa_status_t status; status = mbed_psa_reboot_and_request_new_security_state(PSA_LIFECYCLE_ASSEMBLY_AND_TEST); TEST_ASSERT_EQUAL(PSA_SUCCESS, status); -#if (defined(COMPONENT_PSA_SRV_IPC) || defined(MBEDTLS_ENTROPY_NV_SEED)) +#if defined(MBEDTLS_ENTROPY_NV_SEED) uint8_t seed[MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE] = {0}; /* inject some seed for test*/ for (int i = 0; i < MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE; ++i) { diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/psa_attestation_testlist.md b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/psa_attestation_testlist.md similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/psa_attestation_testlist.md rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/psa_attestation_testlist.md diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/main.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/main.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/main.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/main.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_a001.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_a001.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_a001.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_a001.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_a001.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_a001.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_a001.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_a001.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_entry.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_entry.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_entry.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_attestation/test_a001/test_entry.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/psa_its_testlist.md b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/psa_its_testlist.md similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/psa_its_testlist.md rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/psa_its_testlist.md diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/main.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/main.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/main.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/main.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_entry.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_entry.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_entry.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_entry.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_its_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_its_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_its_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_its_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_ps_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_ps_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_ps_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_ps_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_s001.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_s001.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_s001.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_s001.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_s001.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_s001.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_s001.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s001/test_s001.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/main.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/main.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/main.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/main.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_entry.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_entry.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_entry.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_entry.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_its_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_its_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_its_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_its_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_ps_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_ps_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_ps_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_ps_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_s002.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_s002.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_s002.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_s002.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_s002.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_s002.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_s002.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s002/test_s002.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/main.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/main.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/main.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/main.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_entry.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_entry.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_entry.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_entry.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_its_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_its_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_its_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_its_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_ps_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_ps_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_ps_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_ps_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_s003.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_s003.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_s003.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_s003.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_s003.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_s003.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_s003.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s003/test_s003.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/main.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/main.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/main.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/main.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_entry.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_entry.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_entry.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_entry.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_its_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_its_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_its_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_its_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_ps_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_ps_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_ps_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_ps_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_s004.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_s004.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_s004.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_s004.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_s004.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_s004.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_s004.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s004/test_s004.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/main.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/main.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/main.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/main.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_entry.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_entry.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_entry.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_entry.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_its_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_its_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_its_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_its_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_ps_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_ps_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_ps_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_ps_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_s005.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_s005.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_s005.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_s005.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_s005.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_s005.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_s005.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s005/test_s005.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/main.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/main.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/main.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/main.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_entry.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_entry.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_entry.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_entry.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_its_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_its_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_its_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_its_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_ps_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_ps_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_ps_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_ps_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_s006.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_s006.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_s006.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_s006.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_s006.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_s006.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_s006.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s006/test_s006.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/main.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/main.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/main.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/main.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_entry.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_entry.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_entry.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_entry.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_its_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_its_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_its_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_its_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_ps_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_ps_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_ps_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_ps_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_s007.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_s007.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_s007.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_s007.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_s007.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_s007.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_s007.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s007/test_s007.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/main.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/main.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/main.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/main.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_entry.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_entry.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_entry.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_entry.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_its_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_its_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_its_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_its_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_ps_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_ps_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_ps_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_ps_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_s008.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_s008.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_s008.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_s008.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_s008.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_s008.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_s008.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s008/test_s008.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/main.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/main.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/main.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/main.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_entry.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_entry.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_entry.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_entry.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_its_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_its_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_its_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_its_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_ps_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_ps_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_ps_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_ps_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_s009.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_s009.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_s009.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_s009.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_s009.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_s009.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_s009.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s009/test_s009.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/main.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/main.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/main.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/main.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_entry.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_entry.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_entry.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_entry.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_its_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_its_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_its_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_its_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_ps_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_ps_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_ps_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_ps_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_s010.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_s010.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_s010.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_s010.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_s010.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_s010.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_s010.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/compliance_its/test_s010/test_s010.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/crypto_init/main.cpp b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/crypto_init/main.cpp similarity index 73% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/crypto_init/main.cpp rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/crypto_init/main.cpp index c585449927..778b0fb6af 100644 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/crypto_init/main.cpp +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/crypto_init/main.cpp @@ -1,5 +1,5 @@ /* -* Copyright (c) 2018 ARM Limited. All rights reserved. +* Copyright (c) 2018-2020 ARM Limited. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 * @@ -46,31 +46,6 @@ utest::v1::status_t greentea_test_setup(const size_t number_of_cases) return greentea_test_setup_handler(number_of_cases); } -static void check_multi_crypto_init_deinit() -{ -#if !defined(COMPONENT_PSA_SRV_IPC) - TEST_SKIP(); -#endif - uint8_t output[TEST_RANDOM_SIZE] = {0}; - - psa_status_t status = psa_crypto_init(); - TEST_ASSERT_EQUAL(PSA_SUCCESS, status); - - status = psa_crypto_init(); - TEST_ASSERT_EQUAL(PSA_SUCCESS, status); - - status = psa_generate_random(output, sizeof(output)); - TEST_ASSERT_NOT_EQUAL(PSA_ERROR_BAD_STATE, status); - - mbedtls_psa_crypto_free(); - status = psa_generate_random(output, sizeof(output)); - TEST_ASSERT_NOT_EQUAL(PSA_ERROR_BAD_STATE, status); - - mbedtls_psa_crypto_free(); - status = psa_generate_random(output, sizeof(output)); - TEST_ASSERT_EQUAL(PSA_ERROR_BAD_STATE, status); -} - static void check_crypto_init_deinit() { psa_status_t status; @@ -93,14 +68,13 @@ static void check_crypto_init_deinit() Case cases[] = { Case("PSA crypto-init De-init", check_crypto_init_deinit), - Case("PSA crypto- multiple init De-init", check_multi_crypto_init_deinit), }; Specification specification(greentea_test_setup, cases, greentea_test_teardown_handler); int main() { -#if (defined(COMPONENT_PSA_SRV_IPC) || defined(MBEDTLS_ENTROPY_NV_SEED)) +#if defined(MBEDTLS_ENTROPY_NV_SEED) uint8_t seed[MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE] = {0}; /* inject some a seed for test*/ for (int i = 0; i < MBEDTLS_PSA_INJECT_ENTROPY_MIN_SIZE; ++i) { diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/entropy_inject/main.cpp b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/entropy_inject/main.cpp similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/entropy_inject/main.cpp rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/entropy_inject/main.cpp diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/its_ps/main.cpp b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/its_ps/main.cpp similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TESTS/its_ps/main.cpp rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/TESTS/its_ps/main.cpp diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa/client.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/client.h similarity index 97% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa/client.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/client.h index effc0ced3e..1d3cdae2eb 100644 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa/client.h +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/client.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2020 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * @@ -15,7 +15,7 @@ * limitations under the License. */ -#if defined(TARGET_TFM) +#if defined(FEATURE_TFM) #include "interface/include/psa_client.h" #else diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_accel_driver.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_accel_driver.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_accel_driver.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_accel_driver.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_compat.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_compat.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_compat.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_compat.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_driver_common.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_driver_common.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_driver_common.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_driver_common.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_entropy_driver.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_entropy_driver.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_entropy_driver.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_entropy_driver.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_extra.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_extra.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_extra.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_extra.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_platform.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_platform.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_platform.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_platform.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_se_driver.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_se_driver.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_se_driver.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_se_driver.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_sizes.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_sizes.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_sizes.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_sizes.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_types.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_types.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_types.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_types.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_values.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_values.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/inc/psa/crypto_values.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/crypto_values.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa/error.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/error.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa/error.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/error.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa/internal_trusted_storage.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/internal_trusted_storage.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa/internal_trusted_storage.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/internal_trusted_storage.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa/lifecycle.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/lifecycle.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa/lifecycle.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/lifecycle.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa/protected_storage.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/protected_storage.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa/protected_storage.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/protected_storage.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa/service.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/service.h similarity index 92% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa/service.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/service.h index 355c966dd0..ff54f1c28b 100644 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa/service.h +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/service.h @@ -1,4 +1,4 @@ -/* Copyright (c) 2017-2018 ARM Limited +/* Copyright (c) 2017-2020 ARM Limited * * SPDX-License-Identifier: Apache-2.0 * @@ -15,7 +15,7 @@ * limitations under the License. */ -#if defined(TARGET_TFM) +#if defined(FEATURE_TFM) #include "interface/include/psa_service.h" #include "secure_fw/core/ipc/include/tfm_utils.h" diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa/storage_common.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/storage_common.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa/storage_common.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/inc/psa/storage_common.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/COMPONENT_PSA_SRV_IMPL/mbed_lib.json b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbed_lib.json similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/COMPONENT_PSA_SRV_IMPL/mbed_lib.json rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbed_lib.json diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/COMPONENT_NSPE/crypto_struct.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/crypto_struct.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/COMPONENT_NSPE/crypto_struct.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/crypto_struct.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_core.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_core.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_core.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_core.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_invasive.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_invasive.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_invasive.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_invasive.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_its.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_its.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_its.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_its.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_se.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_se.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_se.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_se.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_se.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_se.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_se.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_se.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_service_integration.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_service_integration.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_service_integration.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_service_integration.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_slot_management.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_slot_management.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_slot_management.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_slot_management.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_slot_management.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_slot_management.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_slot_management.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_slot_management.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_storage.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_storage.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_storage.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_crypto_storage.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_crypto_storage.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_its_file.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_its_file.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_MBED_PSA_SRV/COMPONENT_PSA_SRV_IMPL/psa_its_file.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls/psa_its_file.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal_attestation_eat.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_attestation_eat.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal_attestation_eat.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_attestation_eat.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal_attestation_eat.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_attestation_eat.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal_attestation_eat.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_attestation_eat.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_attestation_intf.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_attestation_intf.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_attestation_intf.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_attestation_intf.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_attestation_intf.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_attestation_intf.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_attestation_intf.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_attestation_intf.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_client_api_empty_intf.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_client_api_empty_intf.c similarity index 96% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_client_api_empty_intf.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_client_api_empty_intf.c index eb8fb2e3cd..8e9b90dcda 100644 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_client_api_empty_intf.c +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_client_api_empty_intf.c @@ -1,5 +1,5 @@ /** @file - * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved. + * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved. * SPDX-License-Identifier : Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -15,8 +15,6 @@ * limitations under the License. **/ -#ifndef COMPONENT_PSA_SRV_IPC - #include "pal_common.h" #include "pal_client_api_intf.h" @@ -94,5 +92,3 @@ void pal_ipc_close(psa_handle_t handle) { return; } - -#endif diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_client_api_intf.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_client_api_intf.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_client_api_intf.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_client_api_intf.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_client_api_intf.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_client_api_intf.h similarity index 80% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_client_api_intf.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_client_api_intf.h index e5cf884cf0..3c53f5ea42 100644 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_client_api_intf.h +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_client_api_intf.h @@ -1,5 +1,5 @@ /** @file - * Copyright (c) 2018, Arm Limited or its affiliates. All rights reserved. + * Copyright (c) 2018-2020, Arm Limited or its affiliates. All rights reserved. * SPDX-License-Identifier : Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -18,17 +18,6 @@ #ifndef _PAL_CLIENT_API_H_ #define _PAL_CLIENT_API_H_ -#if PSA_IPC_IMPLEMENTED -/* psa/client.h: Contains the Client API elements. Accessible to all applications */ -#include "psa/client.h" - -/* psa_manifest/sid.h: Macro definitions derived from manifest files that map from RoT Service - * names to Service IDs (SIDs). - * Partition manifest parse build tool must provide the implementation of this file. -*/ -#include "psa_manifest/sid.h" - -#else #include "pal_common.h" #define PSA_VERSION_NONE (0) @@ -59,7 +48,6 @@ psa_status_t psa_call(psa_handle_t handle, psa_outvec *out_vec, size_t out_len); void psa_close(psa_handle_t handle); -#endif /* PSA_IPC_IMPLEMENTED */ uint32_t pal_ipc_framework_version(void); uint32_t pal_ipc_version(uint32_t sid); diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_common.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_common.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_common.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_common.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal_interfaces_ns.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_interfaces_ns.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal_interfaces_ns.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_interfaces_ns.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_internal_trusted_storage_intf.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_internal_trusted_storage_intf.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_internal_trusted_storage_intf.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_internal_trusted_storage_intf.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_internal_trusted_storage_intf.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_internal_trusted_storage_intf.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_internal_trusted_storage_intf.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_internal_trusted_storage_intf.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_mbed_os_intf.cpp b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_mbed_os_intf.cpp similarity index 85% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_mbed_os_intf.cpp rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_mbed_os_intf.cpp index 9a797f480d..be1c70e255 100644 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_mbed_os_intf.cpp +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_mbed_os_intf.cpp @@ -1,4 +1,21 @@ -#include "mbed.h" +/* + * Copyright (c) 2019-2020 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + #include "rtos.h" #include "mbed_assert.h" #include "val_interfaces.h" diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_mbed_os_intf.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_mbed_os_intf.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_mbed_os_intf.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_mbed_os_intf.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_protected_storage_intf.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_protected_storage_intf.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_protected_storage_intf.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_protected_storage_intf.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_protected_storage_intf.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_protected_storage_intf.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/pal/pal_protected_storage_intf.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/pal/pal_protected_storage_intf.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/LICENSE b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/LICENSE similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/LICENSE rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/LICENSE diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/LICENSE-BSD-3-Clause b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/LICENSE-BSD-3-Clause similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/LICENSE-BSD-3-Clause rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/LICENSE-BSD-3-Clause diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/attest_boot_status_loader.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/attest_boot_status_loader.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/attest_boot_status_loader.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/attest_boot_status_loader.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/attest_crypto.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/attest_crypto.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/attest_crypto.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/attest_crypto.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/attest_crypto_keys.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/attest_crypto_keys.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/attest_crypto_keys.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/attest_crypto_keys.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/attest_iat_claims_loader.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/attest_iat_claims_loader.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/attest_iat_claims_loader.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/attest_iat_claims_loader.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/attestation.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/attestation.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/attestation.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/attestation.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/attestation_bootloader_data.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/attestation_bootloader_data.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/attestation_bootloader_data.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/attestation_bootloader_data.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/attestation_bootloader_data.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/attestation_bootloader_data.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/attestation_bootloader_data.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/attestation_bootloader_data.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_EMUL/psa_attest_inject_key.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_attest_inject_key.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_EMUL/psa_attest_inject_key.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_attest_inject_key.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_attest_inject_key.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_attest_inject_key.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_attest_inject_key.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_attest_inject_key.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/psa_attestation_stubs.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_attestation_stubs.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/psa_attestation_stubs.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_attestation_stubs.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_EMUL/psa_initial_attestation_api.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_initial_attestation_api.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_EMUL/psa_initial_attestation_api.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_initial_attestation_api.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_initial_attestation_api.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_initial_attestation_api.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_initial_attestation_api.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_initial_attestation_api.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/psa_inject_attestation_key_impl.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_inject_attestation_key_impl.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/psa_inject_attestation_key_impl.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_inject_attestation_key_impl.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/psa_inject_attestation_key_impl.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_inject_attestation_key_impl.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/psa_inject_attestation_key_impl.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/psa_inject_attestation_key_impl.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/.mbedignore b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/.mbedignore similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/.mbedignore rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/.mbedignore diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/CMakeLists.txt b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/CMakeLists.txt similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/CMakeLists.txt rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/CMakeLists.txt diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/README.md b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/README.md similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/README.md rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/README.md diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/inc/UsefulBuf.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/inc/UsefulBuf.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/inc/UsefulBuf.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/inc/UsefulBuf.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/inc/qcbor.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/inc/qcbor.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/inc/qcbor.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/inc/qcbor.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/inc/useful_buf.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/inc/useful_buf.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/inc/useful_buf.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/inc/useful_buf.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/UsefulBuf.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/UsefulBuf.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/UsefulBuf.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/UsefulBuf.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/ieee754.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/ieee754.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/ieee754.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/ieee754.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/ieee754.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/ieee754.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/ieee754.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/ieee754.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/qcbor_decode.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/qcbor_decode.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/qcbor_decode.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/qcbor_decode.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/qcbor_encode.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/qcbor_encode.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/qcbor_encode.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/src/qcbor_encode.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/UsefulBuf_Tests.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/UsefulBuf_Tests.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/UsefulBuf_Tests.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/UsefulBuf_Tests.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/UsefulBuf_Tests.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/UsefulBuf_Tests.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/UsefulBuf_Tests.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/UsefulBuf_Tests.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/float_tests.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/float_tests.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/float_tests.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/float_tests.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/float_tests.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/float_tests.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/float_tests.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/float_tests.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/half_to_double_from_rfc7049.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/half_to_double_from_rfc7049.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/half_to_double_from_rfc7049.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/half_to_double_from_rfc7049.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/half_to_double_from_rfc7049.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/half_to_double_from_rfc7049.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/half_to_double_from_rfc7049.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/half_to_double_from_rfc7049.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_decode_tests.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_decode_tests.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_decode_tests.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_decode_tests.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_decode_tests.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_decode_tests.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_decode_tests.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_decode_tests.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_encode_tests.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_encode_tests.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_encode_tests.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_encode_tests.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_encode_tests.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_encode_tests.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_encode_tests.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/qcbor_encode_tests.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/run_tests.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/run_tests.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/run_tests.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/run_tests.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/run_tests.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/run_tests.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/run_tests.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/qcbor/test/run_tests.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_client.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_client.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_client.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_client.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/attest_eat_defines.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/attest_eat_defines.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/attest_eat_defines.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/attest_eat_defines.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/attest_token.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/attest_token.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/attest_token.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/attest_token.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/attest_token.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/attest_token.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/attest_token.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/attest_token.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/attestation_core.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/attestation_core.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/attestation_core.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/attestation_core.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/CMakeLists.txt b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/CMakeLists.txt similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/CMakeLists.txt rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/CMakeLists.txt diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/README.md b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/README.md similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/README.md rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/README.md diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/inc/t_cose_common.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/inc/t_cose_common.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/inc/t_cose_common.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/inc/t_cose_common.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/inc/t_cose_sign1_sign.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/inc/t_cose_sign1_sign.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/inc/t_cose_sign1_sign.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/inc/t_cose_sign1_sign.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/src/t_cose_crypto.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/src/t_cose_crypto.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/src/t_cose_crypto.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/src/t_cose_crypto.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/src/t_cose_defines.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/src/t_cose_defines.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/src/t_cose_defines.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/src/t_cose_defines.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/src/t_cose_sign1_sign.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/src/t_cose_sign1_sign.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/src/t_cose_sign1_sign.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/src/t_cose_sign1_sign.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/src/t_cose_util.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/src/t_cose_util.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/src/t_cose_util.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/src/t_cose_util.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/src/t_cose_util.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/src/t_cose_util.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/t_cose/src/t_cose_util.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/t_cose/src/t_cose_util.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/tfm_attest_hal.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/tfm_attest_hal.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/tfm_attest_hal.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/tfm_attest_hal.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/tfm_boot_status.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/tfm_boot_status.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/tfm_boot_status.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/tfm_boot_status.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/tfm_plat_boot_seed.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/tfm_plat_boot_seed.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/tfm_plat_boot_seed.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/tfm_plat_boot_seed.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/tfm_plat_crypto_keys.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/tfm_plat_crypto_keys.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/tfm_plat_crypto_keys.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/tfm_plat_crypto_keys.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/tfm_plat_defs.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/tfm_plat_defs.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/tfm_plat_defs.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/tfm_plat_defs.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/tfm_plat_device_id.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/tfm_plat_device_id.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_impl/tfm_plat_device_id.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_impl/tfm_plat_device_id.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_memory_utils.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_memory_utils.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IMPL/tfm_memory_utils.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/attestation/tfm_memory_utils.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/platform/COMPONENT_PSA_SRV_EMUL/platform_emul.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/platform/platform_emul.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/platform/COMPONENT_PSA_SRV_EMUL/platform_emul.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/platform/platform_emul.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/platform/COMPONENT_PSA_SRV_IMPL/platform_srv_impl.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/platform/platform_srv_impl.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/platform/COMPONENT_PSA_SRV_IMPL/platform_srv_impl.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/platform/platform_srv_impl.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/platform/COMPONENT_PSA_SRV_IMPL/platform_srv_impl.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/platform/platform_srv_impl.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/platform/COMPONENT_PSA_SRV_IMPL/platform_srv_impl.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/platform/platform_srv_impl.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/common/psa_storage_common_impl.cpp b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/common/psa_storage_common_impl.cpp similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/common/psa_storage_common_impl.cpp rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/common/psa_storage_common_impl.cpp diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/common/psa_storage_common_impl.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/common/psa_storage_common_impl.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/common/psa_storage_common_impl.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/common/psa_storage_common_impl.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/COMPONENT_PSA_SRV_IMPL/TARGET_TFM/its_tfm_impl.cpp b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/its/its_tfm_impl.cpp similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/COMPONENT_PSA_SRV_IMPL/TARGET_TFM/its_tfm_impl.cpp rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/its/its_tfm_impl.cpp diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/COMPONENT_PSA_SRV_IMPL/pits_impl.cpp b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/its/pits_impl.cpp similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/COMPONENT_PSA_SRV_IMPL/pits_impl.cpp rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/its/pits_impl.cpp diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/COMPONENT_PSA_SRV_IMPL/pits_impl.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/its/pits_impl.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/COMPONENT_PSA_SRV_IMPL/pits_impl.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/its/pits_impl.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/COMPONENT_PSA_SRV_EMUL/psa_prot_internal_storage.cpp b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/its/psa_prot_internal_storage.cpp similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/COMPONENT_PSA_SRV_EMUL/psa_prot_internal_storage.cpp rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/its/psa_prot_internal_storage.cpp diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/psa_prot_internal_storage.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/its/psa_prot_internal_storage.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/psa_prot_internal_storage.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/its/psa_prot_internal_storage.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/ps/COMPONENT_NSPE/protected_storage.cpp b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/ps/protected_storage.cpp similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/ps/COMPONENT_NSPE/protected_storage.cpp rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/services/storage/ps/protected_storage.cpp diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/src/default_random_seed.cpp b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/src/default_random_seed.cpp similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/src/default_random_seed.cpp rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/src/default_random_seed.cpp diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_attestation.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_attestation.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_attestation.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_attestation.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_attestation.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_attestation.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_attestation.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_attestation.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_client_defs.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_client_defs.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_client_defs.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_client_defs.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_entry.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_entry.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_entry.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_entry.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_framework.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_framework.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_framework.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_framework.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_greentea.cpp b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_greentea.cpp similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_greentea.cpp rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_greentea.cpp diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_greentea.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_greentea.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_greentea.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_greentea.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_interfaces.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_interfaces.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_interfaces.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_interfaces.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_interfaces.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_interfaces.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_interfaces.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_interfaces.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_internal_trusted_storage.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_internal_trusted_storage.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_internal_trusted_storage.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_internal_trusted_storage.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_internal_trusted_storage.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_internal_trusted_storage.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_internal_trusted_storage.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_internal_trusted_storage.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_protected_storage.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_protected_storage.c similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_protected_storage.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_protected_storage.c diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_protected_storage.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_protected_storage.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_protected_storage.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_protected_storage.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_target.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_target.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/val_target.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_MBED_PSA_SRV/val/val_target.h diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/platform_multicore.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/platform_multicore.c new file mode 100644 index 0000000000..e860ae03e9 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/platform_multicore.c @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2019 Arm Limited. All rights reserved. + * Copyright (c) 2019 Cypress Semiconductor Corporation. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#include "cmsis_compiler.h" + +#include "platform_multicore.h" +#include "tfm_multi_core_api.h" +#include "tfm_ns_mailbox.h" + +#include "cy_ipc_drv.h" +#include "cy_sysint.h" +#if CY_SYSTEM_CPU_CM0P +#include "spe_ipc_config.h" +#else +#include "ns_ipc_config.h" +#endif + +int platform_mailbox_fetch_msg_ptr(void **msg_ptr) +{ + cy_en_ipcdrv_status_t status; + + if (!msg_ptr) { + return PLATFORM_MAILBOX_INVAL_PARAMS; + } + + status = Cy_IPC_Drv_ReadMsgPtr(Cy_IPC_Drv_GetIpcBaseAddress(IPC_RX_CHAN), + msg_ptr); + if (status != CY_IPC_DRV_SUCCESS) { + return PLATFORM_MAILBOX_RX_ERROR; + } + + Cy_IPC_Drv_ReleaseNotify(Cy_IPC_Drv_GetIpcBaseAddress(IPC_RX_CHAN), + IPC_RX_RELEASE_MASK); + return PLATFORM_MAILBOX_SUCCESS; +} + +int platform_mailbox_fetch_msg_data(uint32_t *data_ptr) +{ + cy_en_ipcdrv_status_t status; + + if (!data_ptr) { + return PLATFORM_MAILBOX_INVAL_PARAMS; + } + + status = Cy_IPC_Drv_ReadMsgWord(Cy_IPC_Drv_GetIpcBaseAddress(IPC_RX_CHAN), + data_ptr); + if (status != CY_IPC_DRV_SUCCESS) { + return PLATFORM_MAILBOX_RX_ERROR; + } + + Cy_IPC_Drv_ReleaseNotify(Cy_IPC_Drv_GetIpcBaseAddress(IPC_RX_CHAN), + IPC_RX_RELEASE_MASK); + return PLATFORM_MAILBOX_SUCCESS; +} + +int platform_mailbox_send_msg_ptr(const void *msg_ptr) +{ + cy_en_ipcdrv_status_t status; + + if (!msg_ptr) + return PLATFORM_MAILBOX_INVAL_PARAMS; + + status = Cy_IPC_Drv_SendMsgPtr(Cy_IPC_Drv_GetIpcBaseAddress(IPC_TX_CHAN), + IPC_TX_NOTIFY_MASK, msg_ptr); + if (status != CY_IPC_DRV_SUCCESS) { + return PLATFORM_MAILBOX_TX_ERROR; + } + + return PLATFORM_MAILBOX_SUCCESS; +} + +int platform_mailbox_send_msg_data(uint32_t data) +{ + cy_en_ipcdrv_status_t status; + + status = Cy_IPC_Drv_SendMsgWord(Cy_IPC_Drv_GetIpcBaseAddress(IPC_TX_CHAN), + IPC_TX_NOTIFY_MASK, data); + if (status != CY_IPC_DRV_SUCCESS) { + return PLATFORM_MAILBOX_TX_ERROR; + } + + return PLATFORM_MAILBOX_SUCCESS; +} + +void platform_mailbox_wait_for_notify(void) +{ + uint32_t status; + + while (1) { + status = Cy_IPC_Drv_GetInterruptStatusMasked( + Cy_IPC_Drv_GetIntrBaseAddr(IPC_RX_INTR_STRUCT)); + status >>= CY_IPC_NOTIFY_SHIFT; + if (status & IPC_RX_INT_MASK) { + break; + } + } + + Cy_IPC_Drv_ClearInterrupt(Cy_IPC_Drv_GetIntrBaseAddr(IPC_RX_INTR_STRUCT), + 0, IPC_RX_INT_MASK); +} + +int platform_ns_ipc_init(void) +{ + Cy_IPC_Drv_SetInterruptMask(Cy_IPC_Drv_GetIntrBaseAddr(IPC_RX_INTR_STRUCT), + 0, IPC_RX_INT_MASK); + return PLATFORM_MAILBOX_SUCCESS; +} + +int32_t tfm_platform_ns_wait_for_s_cpu_ready(void) +{ + uint32_t data = 0; + + if (platform_ns_ipc_init() != PLATFORM_MAILBOX_SUCCESS) { + return PLATFORM_MAILBOX_INVAL_PARAMS; + } + while(data != IPC_SYNC_MAGIC) + { + platform_mailbox_wait_for_notify(); + platform_mailbox_fetch_msg_data(&data); + } + + if (platform_mailbox_send_msg_data(~IPC_SYNC_MAGIC) != + PLATFORM_MAILBOX_SUCCESS) { + return PLATFORM_MAILBOX_RX_ERROR; + } + return PLATFORM_MAILBOX_SUCCESS; +} diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/platform_ns_mailbox.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/platform_ns_mailbox.c new file mode 100644 index 0000000000..af08ac1a39 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/platform_ns_mailbox.c @@ -0,0 +1,309 @@ +/* + * Copyright (c) 2019-2020, Arm Limited. All rights reserved. + * Copyright (c) 2019, Cypress Semiconductor Corporation. All rights reserved + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +/* -------------------------------------- Includes ----------------------------------- */ +#include +#include + +#include "cmsis_compiler.h" + +#include "cy_ipc_drv.h" +#include "cy_sysint.h" +#include "cy_ipc_sema.h" + +#include "ns_ipc_config.h" +#include "tfm_ns_mailbox.h" +#include "platform_multicore.h" +#include "cmsis_os2.h" + +static uint8_t saved_irq_state = 1; + +/* -------------------------------------- HAL API ------------------------------------ */ + +static void mailbox_ipc_init(void) +{ + Cy_IPC_Drv_SetInterruptMask(Cy_IPC_Drv_GetIntrBaseAddr(IPC_RX_INTR_STRUCT), + 0, IPC_RX_INT_MASK); +} + +static void mailbox_ipc_config(void) +{ + NVIC_SetPriority(PSA_CLIENT_REPLY_NVIC_IRQn, PSA_CLIENT_REPLY_IRQ_PRIORITY); + + NVIC_EnableIRQ(PSA_CLIENT_REPLY_NVIC_IRQn); +} + +int32_t tfm_ns_mailbox_hal_notify_peer(void) +{ + cy_en_ipcdrv_status_t status; + + status = Cy_IPC_Drv_SendMsgWord(Cy_IPC_Drv_GetIpcBaseAddress(IPC_TX_CHAN), + IPC_TX_NOTIFY_MASK, + PSA_CLIENT_CALL_REQ_MAGIC); + + if (status == CY_IPC_DRV_SUCCESS) { + return MAILBOX_SUCCESS; + } else { + return MAILBOX_CHAN_BUSY; + } +} + +static int32_t mailbox_sema_init(void) +{ + /* semaphore data */ + static uint32_t tfm_sema __attribute__((section("TFM_SHARED_DATA"))); + + if (Cy_IPC_Sema_Init(PLATFORM_MAILBOX_IPC_CHAN_SEMA, + sizeof(tfm_sema) * CHAR_BIT, + &tfm_sema) != CY_IPC_SEMA_SUCCESS) { + return PLATFORM_MAILBOX_INIT_ERROR; + } + return PLATFORM_MAILBOX_SUCCESS; +} + +int32_t tfm_ns_mailbox_hal_init(struct ns_mailbox_queue_t *queue) +{ + uint32_t stage; + + if (!queue) { + return MAILBOX_INVAL_PARAMS; + } + + /* Init semaphores used for critical sections */ + if (mailbox_sema_init() != PLATFORM_MAILBOX_SUCCESS) + return MAILBOX_INIT_ERROR; + + /* + * FIXME + * Further verification of mailbox queue address may be required according + * to diverse NSPE implementations. + */ + + mailbox_ipc_init(); + + /* + * Wait until SPE mailbox library is ready to receive NSPE mailbox queue + * address. + */ + while (1) { + platform_mailbox_wait_for_notify(); + + platform_mailbox_fetch_msg_data(&stage); + if (stage == NS_MAILBOX_INIT_ENABLE) { + break; + } + } + + /* Send out the address */ + platform_mailbox_send_msg_ptr(queue); + + /* Wait until SPE mailbox service is ready */ + while (1) { + platform_mailbox_wait_for_notify(); + + platform_mailbox_fetch_msg_data(&stage); + if (stage == S_MAILBOX_READY) { + break; + } + } + + mailbox_ipc_config(); + + return MAILBOX_SUCCESS; +} + +const void *tfm_ns_mailbox_get_task_handle(void) +{ +#ifdef TFM_MULTI_CORE_MULTI_CLIENT_CALL + return osThreadGetId(); +#else + return NULL; +#endif +} + +void tfm_ns_mailbox_hal_wait_reply(mailbox_msg_handle_t handle) +{ + osThreadFlagsWait(handle, osFlagsWaitAll, osWaitForever); +} + +static cy_en_ipcsema_status_t mailbox_raw_spin_lock(uint32_t ipc_channel, + uint32_t sema_num) +{ + uint32_t semaIndex; + uint32_t semaMask; + cy_stc_ipc_sema_t *semaStruct; + cy_en_ipcdrv_status_t acqStatus; + cy_en_ipcsema_status_t ret = CY_IPC_SEMA_BAD_PARAM; + bool is_lock = false; + IPC_STRUCT_Type *semaIpcStruct; + + /* Get IPC register structure */ + semaIpcStruct = Cy_IPC_Drv_GetIpcBaseAddress(ipc_channel); + /* Get pointer to structure */ + semaStruct = (cy_stc_ipc_sema_t *)Cy_IPC_Drv_ReadDataValue(semaIpcStruct); + + if (sema_num < semaStruct->maxSema) { + semaIndex = sema_num / CY_IPC_SEMA_PER_WORD; + semaMask = (uint32_t)(1ul << (sema_num - \ + (semaIndex * CY_IPC_SEMA_PER_WORD))); + + while (!is_lock) { + /* Check to make sure the IPC channel is released + If so, check if specific channel can be locked. */ + do { + acqStatus = Cy_IPC_Drv_LockAcquire(semaIpcStruct); + } while (acqStatus != CY_IPC_DRV_SUCCESS); + + if ((semaStruct->arrayPtr[semaIndex] & semaMask) == 0ul) { + semaStruct->arrayPtr[semaIndex] |= semaMask; + is_lock = true; + } + + /* Release, but do not trigger a release event */ + (void)Cy_IPC_Drv_LockRelease(semaIpcStruct, + CY_IPC_NO_NOTIFICATION); + + if (!is_lock) { + /* + * The secure core is occupying this lock. Insert a small delay + * to give the secure core a chance to acquire the IPC channel + * and release the lock. + * Otherwise, the secure core may not be able to release the + * lock if non-secure core has higher CPU frequency. It will + * generate a deadlock. + * This delay won't harm performance too much since non-secure + * core has to busy wait here anyway. + * Alternatively, non-secure core can wait for release + * notification event from secure core. However, it is more + * complex and requires more code and more modifications. + */ + volatile uint32_t count = 1000; + while(count > 0) { + count--; + } + Cy_IPC_Sema_Status(sema_num); + } + } + + ret = CY_IPC_SEMA_SUCCESS; + } + + return ret; +} + +static cy_en_ipcsema_status_t mailbox_raw_spin_unlock(uint32_t ipc_channel, + uint32_t sema_num) +{ + uint32_t semaIndex; + uint32_t semaMask; + cy_stc_ipc_sema_t *semaStruct; + cy_en_ipcdrv_status_t acqStatus; + cy_en_ipcsema_status_t ret = CY_IPC_SEMA_BAD_PARAM; + bool is_unlock = false; + IPC_STRUCT_Type *semaIpcStruct; + + /* Get IPC register structure */ + semaIpcStruct = Cy_IPC_Drv_GetIpcBaseAddress(ipc_channel); + /* Get pointer to structure */ + semaStruct = (cy_stc_ipc_sema_t *)Cy_IPC_Drv_ReadDataValue(semaIpcStruct); + + if (sema_num < semaStruct->maxSema) { + semaIndex = sema_num / CY_IPC_SEMA_PER_WORD; + semaMask = (uint32_t)(1ul << (sema_num - \ + (semaIndex * CY_IPC_SEMA_PER_WORD))); + + while (!is_unlock) { + /* Check to make sure the IPC channel is released + If so, check if specific channel can be locked. */ + do { + acqStatus = Cy_IPC_Drv_LockAcquire(semaIpcStruct); + } while (acqStatus != CY_IPC_DRV_SUCCESS); + + if ((semaStruct->arrayPtr[semaIndex] & semaMask) != 0ul) { + semaStruct->arrayPtr[semaIndex] &= ~semaMask; + is_unlock = true; + } + + /* Release, but do not trigger a release event */ + (void)Cy_IPC_Drv_LockRelease(semaIpcStruct, + CY_IPC_NO_NOTIFICATION); + } + + ret = CY_IPC_SEMA_SUCCESS; + } + + return ret; +} + +void tfm_ns_mailbox_hal_enter_critical(void) +{ + saved_irq_state = Cy_SysLib_EnterCriticalSection(); + + mailbox_raw_spin_lock(CY_IPC_CHAN_SEMA, MAILBOX_SEMAPHORE_NUM); +} + +void tfm_ns_mailbox_hal_exit_critical(void) +{ + mailbox_raw_spin_unlock(CY_IPC_CHAN_SEMA, MAILBOX_SEMAPHORE_NUM); + + Cy_SysLib_ExitCriticalSection(saved_irq_state); +} + +void tfm_ns_mailbox_hal_enter_critical_isr(void) +{ + mailbox_raw_spin_lock(CY_IPC_CHAN_SEMA, MAILBOX_SEMAPHORE_NUM); +} + +void tfm_ns_mailbox_hal_exit_critical_isr(void) +{ + mailbox_raw_spin_unlock(CY_IPC_CHAN_SEMA, MAILBOX_SEMAPHORE_NUM); +} + +static bool mailbox_clear_intr(void) +{ + uint32_t status; + + status = Cy_IPC_Drv_GetInterruptStatusMasked( + Cy_IPC_Drv_GetIntrBaseAddr(IPC_RX_INTR_STRUCT)); + status >>= CY_IPC_NOTIFY_SHIFT; + if ((status & IPC_RX_INT_MASK) == 0) { + return false; + } + + Cy_IPC_Drv_ClearInterrupt(Cy_IPC_Drv_GetIntrBaseAddr(IPC_RX_INTR_STRUCT), + 0, IPC_RX_INT_MASK); + return true; +} + +void cpuss_interrupts_ipc_5_IRQHandler(void) +{ + uint32_t magic; + mailbox_msg_handle_t handle; + osThreadId_t task_handle; + + if (!mailbox_clear_intr()) + return; + + platform_mailbox_fetch_msg_data(&magic); + if (magic == PSA_CLIENT_CALL_REPLY_MAGIC) { + /* Handle all the pending replies */ + while (1) { + handle = tfm_ns_mailbox_fetch_reply_msg_isr(); + if (handle == MAILBOX_MSG_NULL_HANDLE) { + break; + } + + task_handle = (osThreadId_t)tfm_ns_mailbox_get_msg_owner(handle); + if (task_handle) { + /* According to the description of CMSIS-RTOS v2 Thread Flags, + * osThreadFlagsSet() can be called inside Interrupt Service + * Routine. */ + osThreadFlagsSet(task_handle, handle); + } + } + } +} diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/tfm_multi_core_api.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/tfm_multi_core_api.c new file mode 100644 index 0000000000..b58738feb3 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/tfm_multi_core_api.c @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include "tfm_api.h" +#include "tfm_mailbox.h" +#include "tfm_multi_core_api.h" +#include "cmsis_os2.h" + +#define MAX_SEMAPHORE_COUNT NUM_MAILBOX_QUEUE_SLOT + +static osSemaphoreId_t ns_lock_handle = NULL; + +__attribute__((weak)) +enum tfm_status_e tfm_ns_interface_init(void) +{ + osSemaphoreAttr_t sema_attrib = {0}; + + ns_lock_handle = osSemaphoreNew(MAX_SEMAPHORE_COUNT, + MAX_SEMAPHORE_COUNT, + &sema_attrib); + if (!ns_lock_handle) { + return TFM_ERROR_GENERIC; + } + + return TFM_SUCCESS; +} + +int32_t tfm_ns_wait_for_s_cpu_ready(void) +{ + return tfm_platform_ns_wait_for_s_cpu_ready(); +} + +uint32_t tfm_ns_multi_core_lock_acquire(void) +{ + return osSemaphoreAcquire(ns_lock_handle, osWaitForever); +} + +uint32_t tfm_ns_multi_core_lock_release(void) +{ + return osSemaphoreRelease(ns_lock_handle); +} diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/tfm_multi_core_psa_ns_api.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/tfm_multi_core_psa_ns_api.c new file mode 100644 index 0000000000..3af3af8512 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/tfm_multi_core_psa_ns_api.c @@ -0,0 +1,224 @@ +/* + * Copyright (c) 2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include +#include + +#include "psa/client.h" +#include "psa/error.h" +#include "tfm_api.h" +#include "tfm_multi_core_api.h" +#include "tfm_ns_mailbox.h" + +/* + * TODO + * Currently, force all the non-secure client to share the same ID. + * + * It requires a more clear mechanism to synchronize the non-secure client + * ID with SPE in dual core scenario. + * In current design, the value is transferred to SPE via mailbox message. + * A dedicated routine to receive the non-secure client information in + * TF-M core/SPM in dual core scenario should be added besides current + * implementation for single Armv8-M. + * The non-secure client identification is shared with SPE in + * single Armv8-M scenario via CMSIS TrustZone context management API, + * which may not work in dual core scenario. + */ +#define NON_SECURE_CLIENT_ID (1) + +/* + * TODO + * Require a formal definition of errors related to mailbox in PSA client call. + */ +#define PSA_INTER_CORE_COMM_ERR (INT32_MIN + 0xFF) + +static void mailbox_wait_reply(mailbox_msg_handle_t handle) +{ + /* + * If the system can support multiple outstanding NS PSA Client calls, call + * tfm_ns_mailbox_wait_reply() to sleep and wait for reply. The NS side + * should implement tfm_ns_mailbox_hal_wait_reply() and wake-up mechanism. + * Otherwise, by default, call tfm_ns_mailbox_is_msg_replied() to simply + * poll the reply status of the mailbox message of current thread. + */ +#ifdef TFM_MULTI_CORE_MULTI_CLIENT_CALL + tfm_ns_mailbox_wait_reply(handle); +#else + while (!tfm_ns_mailbox_is_msg_replied(handle)) { + } +#endif +} + +/**** API functions ****/ + +uint32_t psa_framework_version(void) +{ + struct psa_client_params_t params; + mailbox_msg_handle_t handle; + uint32_t version; + int32_t ret; + + if (tfm_ns_multi_core_lock_acquire() != TFM_SUCCESS) { + return PSA_VERSION_NONE; + } + + handle = tfm_ns_mailbox_tx_client_req(MAILBOX_PSA_FRAMEWORK_VERSION, + ¶ms, NON_SECURE_CLIENT_ID); + if (handle < 0) { + tfm_ns_multi_core_lock_release(); + return PSA_VERSION_NONE; + } + + mailbox_wait_reply(handle); + + ret = tfm_ns_mailbox_rx_client_reply(handle, (int32_t *)&version); + if (ret != MAILBOX_SUCCESS) { + version = PSA_VERSION_NONE; + } + + if (tfm_ns_multi_core_lock_release() != TFM_SUCCESS) { + return PSA_VERSION_NONE; + } + + return version; +} + +uint32_t psa_version(uint32_t sid) +{ + struct psa_client_params_t params; + mailbox_msg_handle_t handle; + uint32_t version; + int32_t ret; + + params.psa_version_params.sid = sid; + + if (tfm_ns_multi_core_lock_acquire() != TFM_SUCCESS) { + return PSA_VERSION_NONE; + } + + handle = tfm_ns_mailbox_tx_client_req(MAILBOX_PSA_VERSION, ¶ms, + NON_SECURE_CLIENT_ID); + if (handle < 0) { + tfm_ns_multi_core_lock_release(); + return PSA_VERSION_NONE; + } + + mailbox_wait_reply(handle); + + ret = tfm_ns_mailbox_rx_client_reply(handle, (int32_t *)&version); + if (ret != MAILBOX_SUCCESS) { + version = PSA_VERSION_NONE; + } + + if (tfm_ns_multi_core_lock_release() != TFM_SUCCESS) { + return PSA_VERSION_NONE; + } + + return version; +} + +psa_handle_t psa_connect(uint32_t sid, uint32_t version) +{ + struct psa_client_params_t params; + mailbox_msg_handle_t handle; + psa_handle_t psa_handle; + int32_t ret; + + params.psa_connect_params.sid = sid; + params.psa_connect_params.version = version; + + if (tfm_ns_multi_core_lock_acquire() != TFM_SUCCESS) { + return PSA_NULL_HANDLE; + } + + handle = tfm_ns_mailbox_tx_client_req(MAILBOX_PSA_CONNECT, ¶ms, + NON_SECURE_CLIENT_ID); + if (handle < 0) { + tfm_ns_multi_core_lock_release(); + return PSA_NULL_HANDLE; + } + + mailbox_wait_reply(handle); + + ret = tfm_ns_mailbox_rx_client_reply(handle, (int32_t *)&psa_handle); + if (ret != MAILBOX_SUCCESS) { + psa_handle = PSA_NULL_HANDLE; + } + + if (tfm_ns_multi_core_lock_release() != TFM_SUCCESS) { + return PSA_NULL_HANDLE; + } + + return psa_handle; +} + +psa_status_t psa_call(psa_handle_t handle, int32_t type, + const psa_invec *in_vec, size_t in_len, + psa_outvec *out_vec, size_t out_len) +{ + struct psa_client_params_t params; + mailbox_msg_handle_t msg_handle; + int32_t ret; + psa_status_t status; + + params.psa_call_params.handle = handle; + params.psa_call_params.type = type; + params.psa_call_params.in_vec = in_vec; + params.psa_call_params.in_len = in_len; + params.psa_call_params.out_vec = out_vec; + params.psa_call_params.out_len = out_len; + + if (tfm_ns_multi_core_lock_acquire() != TFM_SUCCESS) { + return PSA_ERROR_GENERIC_ERROR; + } + + msg_handle = tfm_ns_mailbox_tx_client_req(MAILBOX_PSA_CALL, ¶ms, + NON_SECURE_CLIENT_ID); + if (msg_handle < 0) { + tfm_ns_multi_core_lock_release(); + return PSA_INTER_CORE_COMM_ERR; + } + + mailbox_wait_reply(msg_handle); + + ret = tfm_ns_mailbox_rx_client_reply(msg_handle, (int32_t *)&status); + if (ret != MAILBOX_SUCCESS) { + status = PSA_INTER_CORE_COMM_ERR; + } + + if (tfm_ns_multi_core_lock_release() != TFM_SUCCESS) { + return PSA_ERROR_GENERIC_ERROR; + } + + return status; +} + +void psa_close(psa_handle_t handle) +{ + struct psa_client_params_t params; + mailbox_msg_handle_t msg_handle; + int32_t reply; + + params.psa_close_params.handle = handle; + + if (tfm_ns_multi_core_lock_acquire() != TFM_SUCCESS) { + return; + } + + msg_handle = tfm_ns_mailbox_tx_client_req(MAILBOX_PSA_CLOSE, ¶ms, + NON_SECURE_CLIENT_ID); + if (msg_handle < 0) { + tfm_ns_multi_core_lock_release(); + return; + } + + mailbox_wait_reply(msg_handle); + + (void)tfm_ns_mailbox_rx_client_reply(msg_handle, &reply); + + tfm_ns_multi_core_lock_release(); +} diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/tfm_ns_mailbox.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/tfm_ns_mailbox.c new file mode 100644 index 0000000000..f7326f0926 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_DUALCPU/src/tfm_ns_mailbox.c @@ -0,0 +1,425 @@ +/* + * Copyright (c) 2019-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include +#include "tfm_ns_mailbox.h" + +/* The pointer to NSPE mailbox queue */ +static struct ns_mailbox_queue_t *mailbox_queue_ptr = NULL; + +static inline void clear_queue_slot_empty(uint8_t idx) +{ + if (idx < NUM_MAILBOX_QUEUE_SLOT) { + mailbox_queue_ptr->empty_slots &= ~(1 << idx); + } +} + +static inline void set_queue_slot_empty(uint8_t idx) +{ + if (idx < NUM_MAILBOX_QUEUE_SLOT) { + mailbox_queue_ptr->empty_slots |= (1 << idx); + } +} + +static inline void set_queue_slot_pend(uint8_t idx) +{ + if (idx < NUM_MAILBOX_QUEUE_SLOT) { + mailbox_queue_ptr->pend_slots |= (1 << idx); + } +} + +static inline int32_t get_mailbox_msg_handle(uint8_t idx, + mailbox_msg_handle_t *handle) +{ + if ((idx >= NUM_MAILBOX_QUEUE_SLOT) || !handle) { + return MAILBOX_INVAL_PARAMS; + } + + *handle = (mailbox_msg_handle_t)(idx + 1); + + return MAILBOX_SUCCESS; +} + +static inline int32_t get_mailbox_msg_idx(mailbox_msg_handle_t handle, + uint8_t *idx) +{ + if ((handle == MAILBOX_MSG_NULL_HANDLE) || !idx) { + return MAILBOX_INVAL_PARAMS; + } + + *idx = (uint8_t)(handle - 1); + + return MAILBOX_SUCCESS; +} + +static inline void clear_queue_slot_replied(uint8_t idx) +{ + if (idx < NUM_MAILBOX_QUEUE_SLOT) { + mailbox_queue_ptr->replied_slots &= ~(1 << idx); + } +} + +static inline void set_queue_slot_woken(uint8_t idx) +{ + if (idx < NUM_MAILBOX_QUEUE_SLOT) { + mailbox_queue_ptr->queue[idx].is_woken = true; + } +} + +static inline bool is_queue_slot_woken(uint8_t idx) +{ + if (idx < NUM_MAILBOX_QUEUE_SLOT) { + return mailbox_queue_ptr->queue[idx].is_woken; + } + + return false; +} + +static inline void clear_queue_slot_woken(uint8_t idx) +{ + if (idx < NUM_MAILBOX_QUEUE_SLOT) { + mailbox_queue_ptr->queue[idx].is_woken = false; + } +} + +static uint8_t acquire_empty_slot(const struct ns_mailbox_queue_t *queue) +{ + uint8_t idx; + mailbox_queue_status_t status; + + tfm_ns_mailbox_hal_enter_critical(); + status = queue->empty_slots; + + if (!status) { + /* No empty slot */ + tfm_ns_mailbox_hal_exit_critical(); + return NUM_MAILBOX_QUEUE_SLOT; + } + + for (idx = 0; idx < NUM_MAILBOX_QUEUE_SLOT; idx++) { + if (status & (1 << idx)) { + break; + } + } + + clear_queue_slot_empty(idx); + + tfm_ns_mailbox_hal_exit_critical(); + + return idx; +} + +static void set_msg_owner(uint8_t idx, const void *owner) +{ + if (idx < NUM_MAILBOX_QUEUE_SLOT) { + mailbox_queue_ptr->queue[idx].owner = owner; + } +} + +#ifdef TFM_MULTI_CORE_TEST +void tfm_ns_mailbox_tx_stats_init(void) +{ + if (!mailbox_queue_ptr) { + return; + } + + tfm_ns_mailbox_hal_enter_critical(); + + mailbox_queue_ptr->nr_tx = 0; + mailbox_queue_ptr->nr_used_slots = 0; + + tfm_ns_mailbox_hal_exit_critical(); +} + +static void mailbox_tx_stats_update(struct ns_mailbox_queue_t *ns_queue) +{ + mailbox_queue_status_t empty_status; + uint8_t idx, nr_empty = 0; + + if (!ns_queue) { + return; + } + + tfm_ns_mailbox_hal_enter_critical(); + + ns_queue->nr_tx++; + + /* Count the number of used slots when this tx arrives */ + empty_status = ns_queue->empty_slots; + tfm_ns_mailbox_hal_exit_critical(); + + if (empty_status) { + for (idx = 0; idx < NUM_MAILBOX_QUEUE_SLOT; idx++) { + if (empty_status & (0x1UL << idx)) { + nr_empty++; + } + } + } + + tfm_ns_mailbox_hal_enter_critical(); + ns_queue->nr_used_slots += (NUM_MAILBOX_QUEUE_SLOT - nr_empty); + tfm_ns_mailbox_hal_exit_critical(); +} + +void tfm_ns_mailbox_stats_avg_slot(struct ns_mailbox_stats_res_t *stats_res) +{ + uint32_t nr_used_slots, nr_tx; + + if (!mailbox_queue_ptr || !stats_res) { + return; + } + + tfm_ns_mailbox_hal_enter_critical(); + nr_used_slots = mailbox_queue_ptr->nr_used_slots; + nr_tx = mailbox_queue_ptr->nr_tx; + tfm_ns_mailbox_hal_exit_critical(); + + stats_res->avg_nr_slots = nr_used_slots / nr_tx; + nr_used_slots %= nr_tx; + stats_res->avg_nr_slots_tenths = nr_used_slots * 10 / nr_tx; +} +#endif + +mailbox_msg_handle_t tfm_ns_mailbox_tx_client_req(uint32_t call_type, + const struct psa_client_params_t *params, + int32_t client_id) +{ + uint8_t idx; + struct mailbox_msg_t *msg_ptr; + mailbox_msg_handle_t handle; + const void *task_handle; + + if (!mailbox_queue_ptr) { + return MAILBOX_MSG_NULL_HANDLE; + } + + if (!params) { + return MAILBOX_MSG_NULL_HANDLE; + } + + idx = acquire_empty_slot(mailbox_queue_ptr); + if (idx >= NUM_MAILBOX_QUEUE_SLOT) { + return MAILBOX_QUEUE_FULL; + } + +#ifdef TFM_MULTI_CORE_TEST + mailbox_tx_stats_update(mailbox_queue_ptr); +#endif + + /* Fill the mailbox message */ + msg_ptr = &mailbox_queue_ptr->queue[idx].msg; + + msg_ptr->call_type = call_type; + memcpy(&msg_ptr->params, params, sizeof(msg_ptr->params)); + msg_ptr->client_id = client_id; + + /* + * Fetch the current task handle. The task will be woken up according the + * handle value set in the owner field. + */ + task_handle = tfm_ns_mailbox_get_task_handle(); + set_msg_owner(idx, task_handle); + + get_mailbox_msg_handle(idx, &handle); + + tfm_ns_mailbox_hal_enter_critical(); + set_queue_slot_pend(idx); + tfm_ns_mailbox_hal_exit_critical(); + + tfm_ns_mailbox_hal_notify_peer(); + + return handle; +} + +int32_t tfm_ns_mailbox_rx_client_reply(mailbox_msg_handle_t handle, + int32_t *reply) +{ + uint8_t idx; + int32_t ret; + + if (!mailbox_queue_ptr) { + return MAILBOX_INVAL_PARAMS; + } + + if ((handle == MAILBOX_MSG_NULL_HANDLE) || (!reply)) { + return MAILBOX_INVAL_PARAMS; + } + + ret = get_mailbox_msg_idx(handle, &idx); + if (ret != MAILBOX_SUCCESS) { + return ret; + } + + *reply = mailbox_queue_ptr->queue[idx].reply.return_val; + + /* Clear up the owner field */ + set_msg_owner(idx, NULL); + + tfm_ns_mailbox_hal_enter_critical(); + clear_queue_slot_replied(idx); + clear_queue_slot_woken(idx); + /* + * Make sure that the empty flag is set after all the other status flags are + * re-initialized. + */ + set_queue_slot_empty(idx); + tfm_ns_mailbox_hal_exit_critical(); + + return MAILBOX_SUCCESS; +} + +bool tfm_ns_mailbox_is_msg_replied(mailbox_msg_handle_t handle) +{ + uint8_t idx; + int32_t ret; + mailbox_queue_status_t status; + + if (!mailbox_queue_ptr) { + return false; + } + + if (handle == MAILBOX_MSG_NULL_HANDLE) { + return false; + } + + ret = get_mailbox_msg_idx(handle, &idx); + if (ret != MAILBOX_SUCCESS) { + return false; + } + + tfm_ns_mailbox_hal_enter_critical(); + status = mailbox_queue_ptr->replied_slots; + tfm_ns_mailbox_hal_exit_critical(); + + if (status & (1 << idx)) { + return true; + } + + return false; +} + +mailbox_msg_handle_t tfm_ns_mailbox_fetch_reply_msg_isr(void) +{ + uint8_t idx; + mailbox_msg_handle_t handle; + mailbox_queue_status_t replied_status; + + if (!mailbox_queue_ptr) { + return MAILBOX_MSG_NULL_HANDLE; + } + + tfm_ns_mailbox_hal_enter_critical_isr(); + replied_status = mailbox_queue_ptr->replied_slots; + tfm_ns_mailbox_hal_exit_critical_isr(); + + if (!replied_status) { + return MAILBOX_MSG_NULL_HANDLE; + } + + for (idx = 0; idx < NUM_MAILBOX_QUEUE_SLOT; idx++) { + /* Find the first replied message in queue */ + if (replied_status & (0x1UL << idx)) { + tfm_ns_mailbox_hal_enter_critical_isr(); + clear_queue_slot_replied(idx); + set_queue_slot_woken(idx); + tfm_ns_mailbox_hal_exit_critical_isr(); + + if (get_mailbox_msg_handle(idx, &handle) == MAILBOX_SUCCESS) { + return handle; + } + } + } + + return MAILBOX_MSG_NULL_HANDLE; +} + +const void *tfm_ns_mailbox_get_msg_owner(mailbox_msg_handle_t handle) +{ + uint8_t idx; + + if (get_mailbox_msg_idx(handle, &idx) != MAILBOX_SUCCESS) { + return NULL; + } + + if (idx < NUM_MAILBOX_QUEUE_SLOT) { + return mailbox_queue_ptr->queue[idx].owner; + } + + return NULL; +} + +int32_t tfm_ns_mailbox_init(struct ns_mailbox_queue_t *queue) +{ + int32_t ret; + + if (!queue) { + return MAILBOX_INVAL_PARAMS; + } + + /* + * Further verification of mailbox queue address may be required according + * to non-secure memory assignment. + */ + + memset(queue, 0, sizeof(*queue)); + + /* Initialize empty bitmask */ + queue->empty_slots = + (mailbox_queue_status_t)((1UL << (NUM_MAILBOX_QUEUE_SLOT - 1)) - 1); + queue->empty_slots += + (mailbox_queue_status_t)(1UL << (NUM_MAILBOX_QUEUE_SLOT - 1)); + + mailbox_queue_ptr = queue; + + /* Platform specific initialization. */ + ret = tfm_ns_mailbox_hal_init(queue); + +#ifdef TFM_MULTI_CORE_TEST + tfm_ns_mailbox_tx_stats_init(); +#endif + + return ret; +} + +#ifdef TFM_MULTI_CORE_MULTI_CLIENT_CALL +int32_t tfm_ns_mailbox_wait_reply(mailbox_msg_handle_t handle) +{ + uint8_t idx; + int32_t ret; + + if (!mailbox_queue_ptr) { + return MAILBOX_INVAL_PARAMS; + } + + if (handle == MAILBOX_MSG_NULL_HANDLE) { + return MAILBOX_INVAL_PARAMS; + } + + ret = get_mailbox_msg_idx(handle, &idx); + if (ret != MAILBOX_SUCCESS) { + return ret; + } + + while (1) { + tfm_ns_mailbox_hal_wait_reply(handle); + + /* + * Woken up from sleep + * Check the completed flag to make sure that the current thread is + * woken up by reply event, rather than other events. + */ + tfm_ns_mailbox_hal_enter_critical(); + if (is_queue_slot_woken(idx)) { + tfm_ns_mailbox_hal_exit_critical(); + break; + } + tfm_ns_mailbox_hal_exit_critical(); + } + + return MAILBOX_SUCCESS; +} +#endif diff --git a/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/device/cmsis_nvic_virtual.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_V8M/src/cmsis_nvic_virtual.c similarity index 86% rename from targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/device/cmsis_nvic_virtual.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_V8M/src/cmsis_nvic_virtual.c index 6a8ef8dc54..bee8597957 100644 --- a/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/device/cmsis_nvic_virtual.c +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_V8M/src/cmsis_nvic_virtual.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2019 Arm Limited + * Copyright (c) 2019-2020 Arm Limited * * SPDX-License-Identifier: Apache-2.0 * @@ -17,9 +17,9 @@ */ #include "cmsis_nvic_virtual.h" -#include "psa/lifecycle.h" +#include "tfm_platform_api.h" void NVIC_SystemReset(void) { - mbed_psa_system_reset(); + tfm_platform_system_reset(); } diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_V8M/src/tfm_ns_interface.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_V8M/src/tfm_ns_interface.c new file mode 100644 index 0000000000..9759145590 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_V8M/src/tfm_ns_interface.c @@ -0,0 +1,64 @@ +/* + * Copyright (c) 2017-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#include +#include + +#include "tfm_api.h" +#include "tfm_ns_interface.h" +#include "cmsis_os2.h" + +/** + * \brief the ns_lock ID + */ +static osMutexId_t ns_lock_handle = NULL; + +__attribute__((weak)) +int32_t tfm_ns_interface_dispatch(veneer_fn fn, + uint32_t arg0, uint32_t arg1, + uint32_t arg2, uint32_t arg3) +{ + int32_t result; + osStatus_t status; + + /* TFM request protected by NS lock */ + status = osMutexAcquire(ns_lock_handle, osWaitForever); + if (status != osOK) { + return (int32_t)TFM_ERROR_GENERIC; + } + + result = fn(arg0, arg1, arg2, arg3); + + status = osMutexRelease(ns_lock_handle); + if (status != osOK) { + return (int32_t)TFM_ERROR_GENERIC; + } + + return result; +} + +__attribute__((weak)) +enum tfm_status_e tfm_ns_interface_init(void) +{ + const osMutexAttr_t attr = { + .name = NULL, + .attr_bits = osMutexPrioInherit, /* Priority inheritance is recommended + * to enable if it is supported. + * For recursive mutex and the ability + * of auto release when owner being + * terminated is not required. + */ + .cb_mem = NULL, + .cb_size = 0U + }; + + ns_lock_handle = osMutexNew(&attr); + if (!ns_lock_handle) { + return TFM_ERROR_GENERIC; + } + + return TFM_SUCCESS; +} diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/COMPONENT_NSPE/interface/src/tfm_psa_ns_api.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_V8M/src/tfm_psa_ns_api.c similarity index 53% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/COMPONENT_NSPE/interface/src/tfm_psa_ns_api.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_V8M/src/tfm_psa_ns_api.c index 159eef9088..9a677a2cd3 100644 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/COMPONENT_NSPE/interface/src/tfm_psa_ns_api.c +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/TARGET_TFM_V8M/src/tfm_psa_ns_api.c @@ -1,19 +1,20 @@ /* - * Copyright (c) 2018, Arm Limited. All rights reserved. + * Copyright (c) 2018-2019, Arm Limited. All rights reserved. * * SPDX-License-Identifier: BSD-3-Clause * */ -#include "interface/include/psa_client.h" -#include "tfm_ns_lock.h" +#include "psa/client.h" +#include "tfm_ns_interface.h" #include "tfm_api.h" /**** API functions ****/ uint32_t psa_framework_version(void) { - return tfm_ns_lock_dispatch((veneer_fn)tfm_psa_framework_version_veneer, + return tfm_ns_interface_dispatch( + (veneer_fn)tfm_psa_framework_version_veneer, 0, 0, 0, @@ -22,23 +23,25 @@ uint32_t psa_framework_version(void) uint32_t psa_version(uint32_t sid) { - return tfm_ns_lock_dispatch((veneer_fn)tfm_psa_version_veneer, + return tfm_ns_interface_dispatch( + (veneer_fn)tfm_psa_version_veneer, sid, 0, 0, 0); } -psa_handle_t psa_connect(uint32_t sid, uint32_t minor_version) +psa_handle_t psa_connect(uint32_t sid, uint32_t version) { - return tfm_ns_lock_dispatch((veneer_fn)tfm_psa_connect_veneer, + return tfm_ns_interface_dispatch( + (veneer_fn)tfm_psa_connect_veneer, sid, - minor_version, + version, 0, 0); } -psa_status_t psa_call(psa_handle_t handle, +psa_status_t psa_call(psa_handle_t handle, int32_t type, const psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, @@ -51,25 +54,26 @@ psa_status_t psa_call(psa_handle_t handle, /* Due to v8M restrictions, TF-M NS API needs to add another layer of * serialization in order for NS to pass arguments to S */ - psa_invec in_vecs, out_vecs; + const struct tfm_control_parameter_t ctrl_param = { + .type = type, + .in_len = in_len, + .out_len = out_len, + }; - in_vecs.base = in_vec; - in_vecs.len = in_len; - out_vecs.base = out_vec; - out_vecs.len = out_len; - return tfm_ns_lock_dispatch((veneer_fn)tfm_psa_call_veneer, + return tfm_ns_interface_dispatch( + (veneer_fn)tfm_psa_call_veneer, (uint32_t)handle, - (uint32_t)&in_vecs, - (uint32_t)&out_vecs, - 0); + (uint32_t)&ctrl_param, + (uint32_t)in_vec, + (uint32_t)out_vec); } void psa_close(psa_handle_t handle) { - tfm_ns_lock_dispatch((veneer_fn)tfm_psa_close_veneer, + (void)tfm_ns_interface_dispatch( + (veneer_fn)tfm_psa_close_veneer, (uint32_t)handle, 0, 0, 0); } - diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/VERSION.txt b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/VERSION.txt new file mode 100644 index 0000000000..32a958e6c4 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/VERSION.txt @@ -0,0 +1 @@ +1d1faca481c3 diff --git a/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/device/cmsis_nvic_virtual.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/cmsis_nvic_virtual.h similarity index 100% rename from targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/device/cmsis_nvic_virtual.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/cmsis_nvic_virtual.h diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/ns_ipc_config.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/ns_ipc_config.h new file mode 100644 index 0000000000..e1cd7b7430 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/ns_ipc_config.h @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2019 Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + */ + +#ifndef _IPC_CONFIG_H_ +#define _IPC_CONFIG_H_ + +#include "platform_multicore.h" + +#define IPC_RX_CHAN IPC_PSA_CLIENT_REPLY_CHAN +#define IPC_RX_INTR_STRUCT IPC_PSA_CLIENT_REPLY_INTR_STRUCT +#define IPC_RX_INT_MASK IPC_PSA_CLIENT_REPLY_INTR_MASK + +#define IPC_TX_CHAN IPC_PSA_CLIENT_CALL_CHAN +#define IPC_TX_NOTIFY_MASK IPC_PSA_CLIENT_CALL_NOTIFY_MASK + +#define PSA_CLIENT_REPLY_NVIC_IRQn IPC_PSA_CLIENT_REPLY_IPC_INTR +#define PSA_CLIENT_REPLY_IRQ_PRIORITY 3 + +#endif diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/platform_multicore.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/platform_multicore.h new file mode 100644 index 0000000000..f90fb1e279 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/platform_multicore.h @@ -0,0 +1,102 @@ +/* + * Copyright (c) 2019, Arm Limited. All rights reserved. + * Copyright (c) 2019, Cypress Semiconductor Corporation. All rights reserved + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef _TFM_PLATFORM_MULTICORE_ +#define _TFM_PLATFORM_MULTICORE_ + +#include +#include "cy_device_headers.h" + +#define IPC_PSA_CLIENT_CALL_CHAN (8) +#define IPC_PSA_CLIENT_CALL_INTR_STRUCT (6) +#define IPC_PSA_CLIENT_CALL_INTR_MASK (1 << IPC_PSA_CLIENT_CALL_CHAN) +#define IPC_PSA_CLIENT_CALL_NOTIFY_MASK (1 << IPC_PSA_CLIENT_CALL_INTR_STRUCT) +#define IPC_PSA_CLIENT_CALL_IPC_INTR cpuss_interrupts_ipc_6_IRQn + +#define IPC_PSA_CLIENT_REPLY_CHAN (9) +#define IPC_PSA_CLIENT_REPLY_INTR_STRUCT (5) +#define IPC_PSA_CLIENT_REPLY_INTR_MASK (1 << IPC_PSA_CLIENT_REPLY_CHAN) +#define IPC_PSA_CLIENT_REPLY_NOTIFY_MASK (1 << IPC_PSA_CLIENT_REPLY_INTR_STRUCT) +#define IPC_PSA_CLIENT_REPLY_IPC_INTR cpuss_interrupts_ipc_5_IRQn + +#define IPC_RX_RELEASE_MASK (0) + +#define CY_IPC_NOTIFY_SHIFT (16) + +#define PSA_CLIENT_CALL_REQ_MAGIC (0xA5CF50C6) +#define PSA_CLIENT_CALL_REPLY_MAGIC (0xC605FC5A) + +#define NS_MAILBOX_INIT_ENABLE (0xAE) +#define S_MAILBOX_READY (0xC3) + +#define PLATFORM_MAILBOX_SUCCESS (0x0) +#define PLATFORM_MAILBOX_INVAL_PARAMS (INT32_MIN + 1) +#define PLATFORM_MAILBOX_TX_ERROR (INT32_MIN + 2) +#define PLATFORM_MAILBOX_RX_ERROR (INT32_MIN + 3) +#define PLATFORM_MAILBOX_INIT_ERROR (INT32_MIN + 4) + +/* Inter-Processor Communication (IPC) data channel for the Semaphores */ +#define PLATFORM_MAILBOX_IPC_CHAN_SEMA CY_IPC_CHAN_SEMA +#define MAILBOX_SEMAPHORE_NUM (16) + +#define IPC_SYNC_MAGIC 0x7DADE011 + +/** + * \brief Fetch a pointer from mailbox message + * + * \param[out] msg_ptr The address to write the pointer value to. + * + * \retval 0 The operation succeeds. + * \retval else The operation fails. + */ +int platform_mailbox_fetch_msg_ptr(void **msg_ptr); + +/** + * \brief Fetch a data value from mailbox message + * + * \param[out] data_ptr The address to write the pointer value to. + * + * \retval 0 The operation succeeds. + * \retval else The operation fails. + */ +int platform_mailbox_fetch_msg_data(uint32_t *data_ptr); + +/** + * \brief Send a pointer via mailbox message + * + * \param[in] msg_ptr The pointer value to be sent. + * + * \retval 0 The operation succeeds. + * \retval else The operation fails. + */ +int platform_mailbox_send_msg_ptr(const void *msg_ptr); + +/** + * \brief Send a data value via mailbox message + * + * \param[in] data The data value to be sent + * + * \retval 0 The operation succeeds. + * \retval else The operation fails. + */ +int platform_mailbox_send_msg_data(uint32_t data); + +/** + * \brief Wait for a mailbox notify event. + */ +void platform_mailbox_wait_for_notify(void); + +/** + * \brief IPC initialization + * + * \retval 0 The operation succeeds. + * \retval else The operation fails. + */ +int platform_ns_ipc_init(void); + +#endif diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/psa_client.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/client.h similarity index 58% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/psa_client.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/client.h index 71adb802e3..4115f930e9 100644 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/psa_client.h +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/client.h @@ -8,29 +8,56 @@ #ifndef __PSA_CLIENT_H__ #define __PSA_CLIENT_H__ +#include +#include + +#include "psa/error.h" + #ifdef __cplusplus extern "C" { #endif -#include -#include - /*********************** PSA Client Macros and Types *************************/ -#define PSA_FRAMEWORK_VERSION (0x0100) +/** + * The version of the PSA Framework API that is being used to build the calling + * firmware. + */ +#define PSA_FRAMEWORK_VERSION (0x0100u) -#define PSA_VERSION_NONE (0) +/** + * Return value from psa_version() if the requested RoT Service is not present + * in the system. + */ +#define PSA_VERSION_NONE (0u) -/* PSA response types */ -#define PSA_SUCCESS (0) -#define PSA_CONNECTION_REFUSED (INT32_MIN + 1) -#define PSA_CONNECTION_BUSY (INT32_MIN + 2) -#define PSA_DROP_CONNECTION (INT32_MIN) +/** + * The zero-value null handle can be assigned to variables used in clients and + * RoT Services, indicating that there is no current connection or message. + */ +#define PSA_NULL_HANDLE ((psa_handle_t)0) -/* PSA message handles */ -#define PSA_NULL_HANDLE ((psa_handle_t)0) +/** + * Tests whether a handle value returned by psa_connect() is valid. + */ +#define PSA_HANDLE_IS_VALID(handle) ((psa_handle_t)(handle) > 0) + +/** + * Converts the handle value returned from a failed call psa_connect() into + * an error code. + */ +#define PSA_HANDLE_TO_ERROR(handle) ((psa_status_t)(handle)) + +/** + * Maximum number of input and output vectors for a request to psa_call(). + */ +#define PSA_MAX_IOVEC (4u) + +/** + * An IPC message type that indicates a generic client request. + */ +#define PSA_IPC_CALL (0) -typedef int32_t psa_status_t; typedef int32_t psa_handle_t; /** @@ -64,15 +91,14 @@ typedef struct psa_outvec { uint32_t psa_framework_version(void); /** - * \brief Retrieve the minor version of an RoT Service or indicate that it is - * not present on this system. + * \brief Retrieve the version of an RoT Service or indicate that it is not + * present on this system. * * \param[in] sid ID of the RoT Service to query. * * \retval PSA_VERSION_NONE The RoT Service is not implemented, or the * caller is not permitted to access the service. - * \retval > 0 The minor version of the implemented RoT - * Service. + * \retval > 0 The version of the implemented RoT Service. */ uint32_t psa_version(uint32_t sid); @@ -80,23 +106,28 @@ uint32_t psa_version(uint32_t sid); * \brief Connect to an RoT Service by its SID. * * \param[in] sid ID of the RoT Service to connect to. - * \param[in] minor_version Requested version of the RoT Service. + * \param[in] version Requested version of the RoT Service. * * \retval > 0 A handle for the connection. - * \retval PSA_CONNECTION_REFUSED The SPM or RoT Service has refused the + * \retval PSA_ERROR_CONNECTION_REFUSED The SPM or RoT Service has refused the * connection. - * \retval PSA_CONNECTION_BUSY The SPM or RoT Service cannot make the + * \retval PSA_ERROR_CONNECTION_BUSY The SPM or RoT Service cannot make the * connection at the moment. - * \retval "Does not return" The RoT Service ID and version are not - * supported, or the caller is not permitted to - * access the service. + * \retval "PROGRAMMER ERROR" The call is a PROGRAMMER ERROR if one or more + * of the following are true: + * \arg The RoT Service ID is not present. + * \arg The RoT Service version is not supported. + * \arg The caller is not allowed to access the RoT + * service. */ -psa_handle_t psa_connect(uint32_t sid, uint32_t minor_version); +psa_handle_t psa_connect(uint32_t sid, uint32_t version); /** * \brief Call an RoT Service on an established connection. * * \param[in] handle A handle to an established connection. + * \param[in] type The reuqest type. + * Must be zero( \ref PSA_IPC_CALL) or positive. * \param[in] in_vec Array of input \ref psa_invec structures. * \param[in] in_len Number of input \ref psa_invec structures. * \param[in/out] out_vec Array of output \ref psa_outvec structures. @@ -104,19 +135,18 @@ psa_handle_t psa_connect(uint32_t sid, uint32_t minor_version); * * \retval >=0 RoT Service-specific status value. * \retval <0 RoT Service-specific error code. - * \retval PSA_DROP_CONNECTION The connection has been dropped by the RoT - * Service. This indicates that either this or - * a previous message was invalid. - * \retval "Does not return" The call is invalid, one or more of the - * following are true: + * \retval PSA_ERROR_PROGRAMMER_ERROR The connection has been terminated by the + * RoT Service. The call is a PROGRAMMER ERROR if + * one or more of the following are true: * \arg An invalid handle was passed. * \arg The connection is already handling a request. + * \arg type < 0. * \arg An invalid memory reference was provided. * \arg in_len + out_len > PSA_MAX_IOVEC. * \arg The message is unrecognized by the RoT * Service or incorrectly formatted. */ -psa_status_t psa_call(psa_handle_t handle, +psa_status_t psa_call(psa_handle_t handle, int32_t type, const psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, @@ -129,11 +159,12 @@ psa_status_t psa_call(psa_handle_t handle, * null handle. * * \retval void Success. - * \retval "Does not return" The call is invalid, one or more of the - * following are true: + * \retval "PROGRAMMER ERROR" The call is a PROGRAMMER ERROR if one or more + * of the following are true: * \arg An invalid handle was provided that is not * the null handle. - * \arg The connection is handling a request. + * \arg The connection is currently handling a + * request. */ void psa_close(psa_handle_t handle); diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto.h new file mode 100644 index 0000000000..91581172c2 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto.h @@ -0,0 +1,3770 @@ +/* + * Copyright (c) 2018-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +/** + * \file psa/crypto.h + * \brief Platform Security Architecture cryptography module + */ + +#ifndef PSA_CRYPTO_H +#define PSA_CRYPTO_H + +#include "psa/crypto_platform.h" + +#include + +#ifdef __DOXYGEN_ONLY__ +/* This __DOXYGEN_ONLY__ block contains mock definitions for things that + * must be defined in the crypto_platform.h header. These mock definitions + * are present in this file as a convenience to generate pretty-printed + * documentation that includes those definitions. */ + +/** \defgroup platform Implementation-specific definitions + * @{ + */ + +/** \brief Key handle. + * + * This type represents open handles to keys. It must be an unsigned integral + * type. The choice of type is implementation-dependent. + * + * 0 is not a valid key handle. How other handle values are assigned is + * implementation-dependent. + */ +typedef _unsigned_integral_type_ psa_key_handle_t; + +/**@}*/ +#endif /* __DOXYGEN_ONLY__ */ + +#ifdef __cplusplus +extern "C" { +#endif + +/* The file "crypto_types.h" declares types that encode errors, + * algorithms, key types, policies, etc. */ +#include "psa/crypto_types.h" + +/** \defgroup version API version + * @{ + */ + +/** + * The major version of this implementation of the PSA Crypto API + */ +#define PSA_CRYPTO_API_VERSION_MAJOR 1 + +/** + * The minor version of this implementation of the PSA Crypto API + */ +#define PSA_CRYPTO_API_VERSION_MINOR 0 + +/**@}*/ + +/* The file "crypto_values.h" declares macros to build and analyze values + * of integral types defined in "crypto_types.h". */ +#include "psa/crypto_values.h" + +/** \defgroup initialization Library initialization + * @{ + */ + +/** + * \brief Library initialization. + * + * Applications must call this function before calling any other + * function in this module. + * + * Applications may call this function more than once. Once a call + * succeeds, subsequent calls are guaranteed to succeed. + * + * If the application calls other functions before calling psa_crypto_init(), + * the behavior is undefined. Implementations are encouraged to either perform + * the operation as if the library had been initialized or to return + * #PSA_ERROR_BAD_STATE or some other applicable error. In particular, + * implementations should not return a success status if the lack of + * initialization may have security implications, for example due to improper + * seeding of the random number generator. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + */ +psa_status_t psa_crypto_init(void); + +/**@}*/ + +/** \addtogroup attributes + * @{ + */ + +/** \def PSA_KEY_ATTRIBUTES_INIT + * + * This macro returns a suitable initializer for a key attribute structure + * of type #psa_key_attributes_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_KEY_ATTRIBUTES_INIT {0} +#endif + +/** Return an initial value for a key attributes structure. + */ +static psa_key_attributes_t psa_key_attributes_init(void); + +/** Declare a key as persistent and set its key identifier. + * + * If the attribute structure currently declares the key as volatile (which + * is the default content of an attribute structure), this function sets + * the lifetime attribute to #PSA_KEY_LIFETIME_PERSISTENT. + * + * This function does not access storage, it merely stores the given + * value in the structure. + * The persistent key will be written to storage when the attribute + * structure is passed to a key creation function such as + * psa_import_key(), psa_generate_key(), + * psa_key_derivation_output_key() or psa_copy_key(). + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param id The persistent identifier for the key. + */ +static void psa_set_key_id(psa_key_attributes_t *attributes, + psa_key_id_t id); + +/** Set the location of a persistent key. + * + * To make a key persistent, you must give it a persistent key identifier + * with psa_set_key_id(). By default, a key that has a persistent identifier + * is stored in the default storage area identifier by + * #PSA_KEY_LIFETIME_PERSISTENT. Call this function to choose a storage + * area, or to explicitly declare the key as volatile. + * + * This function does not access storage, it merely stores the given + * value in the structure. + * The persistent key will be written to storage when the attribute + * structure is passed to a key creation function such as + * psa_import_key(), psa_generate_key(), + * psa_key_derivation_output_key() or psa_copy_key(). + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param lifetime The lifetime for the key. + * If this is #PSA_KEY_LIFETIME_VOLATILE, the + * key will be volatile, and the key identifier + * attribute is reset to 0. + */ +static void psa_set_key_lifetime(psa_key_attributes_t *attributes, + psa_key_lifetime_t lifetime); + +/** Retrieve the key identifier from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The persistent identifier stored in the attribute structure. + * This value is unspecified if the attribute structure declares + * the key as volatile. + */ +static psa_key_id_t psa_get_key_id(const psa_key_attributes_t *attributes); + +/** Retrieve the lifetime from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The lifetime value stored in the attribute structure. + */ +static psa_key_lifetime_t psa_get_key_lifetime( + const psa_key_attributes_t *attributes); + +/** Declare usage flags for a key. + * + * Usage flags are part of a key's usage policy. They encode what + * kind of operations are permitted on the key. For more details, + * refer to the documentation of the type #psa_key_usage_t. + * + * This function overwrites any usage flags + * previously set in \p attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param usage_flags The usage flags to write. + */ +static void psa_set_key_usage_flags(psa_key_attributes_t *attributes, + psa_key_usage_t usage_flags); + +/** Retrieve the usage flags from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The usage flags stored in the attribute structure. + */ +static psa_key_usage_t psa_get_key_usage_flags( + const psa_key_attributes_t *attributes); + +/** Declare the permitted algorithm policy for a key. + * + * The permitted algorithm policy of a key encodes which algorithm or + * algorithms are permitted to be used with this key. The following + * algorithm policies are supported: + * - 0 does not allow any cryptographic operation with the key. The key + * may be used for non-cryptographic actions such as exporting (if + * permitted by the usage flags). + * - An algorithm value permits this particular algorithm. + * - An algorithm wildcard built from #PSA_ALG_ANY_HASH allows the specified + * signature scheme with any hash algorithm. + * + * This function overwrites any algorithm policy + * previously set in \p attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param alg The permitted algorithm policy to write. + */ +static void psa_set_key_algorithm(psa_key_attributes_t *attributes, + psa_algorithm_t alg); + + +/** Retrieve the algorithm policy from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The algorithm stored in the attribute structure. + */ +static psa_algorithm_t psa_get_key_algorithm( + const psa_key_attributes_t *attributes); + +/** Declare the type of a key. + * + * This function overwrites any key type + * previously set in \p attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param type The key type to write. + * If this is 0, the key type in \p attributes + * becomes unspecified. + */ +static void psa_set_key_type(psa_key_attributes_t *attributes, + psa_key_type_t type); + + +/** Declare the size of a key. + * + * This function overwrites any key size previously set in \p attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate each of its arguments exactly once. + * + * \param[out] attributes The attribute structure to write to. + * \param bits The key size in bits. + * If this is 0, the key size in \p attributes + * becomes unspecified. Keys of size 0 are + * not supported. + */ +static void psa_set_key_bits(psa_key_attributes_t *attributes, + size_t bits); + +/** Retrieve the key type from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The key type stored in the attribute structure. + */ +static psa_key_type_t psa_get_key_type(const psa_key_attributes_t *attributes); + +/** Retrieve the key size from key attributes. + * + * This function may be declared as `static` (i.e. without external + * linkage). This function may be provided as a function-like macro, + * but in this case it must evaluate its argument exactly once. + * + * \param[in] attributes The key attribute structure to query. + * + * \return The key size stored in the attribute structure, in bits. + */ +static size_t psa_get_key_bits(const psa_key_attributes_t *attributes); + +/** Retrieve the attributes of a key. + * + * This function first resets the attribute structure as with + * psa_reset_key_attributes(). It then copies the attributes of + * the given key into the given attribute structure. + * + * \note This function may allocate memory or other resources. + * Once you have called this function on an attribute structure, + * you must call psa_reset_key_attributes() to free these resources. + * + * \param[in] handle Handle to the key to query. + * \param[in,out] attributes On success, the attributes of the key. + * On failure, equivalent to a + * freshly-initialized structure. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_get_key_attributes(psa_key_handle_t handle, + psa_key_attributes_t *attributes); + +/** Reset a key attribute structure to a freshly initialized state. + * + * You must initialize the attribute structure as described in the + * documentation of the type #psa_key_attributes_t before calling this + * function. Once the structure has been initialized, you may call this + * function at any time. + * + * This function frees any auxiliary resources that the structure + * may contain. + * + * \param[in,out] attributes The attribute structure to reset. + */ +void psa_reset_key_attributes(psa_key_attributes_t *attributes); + +/**@}*/ + +/** \defgroup key_management Key management + * @{ + */ + +/** Open a handle to an existing persistent key. + * + * Open a handle to a persistent key. A key is persistent if it was created + * with a lifetime other than #PSA_KEY_LIFETIME_VOLATILE. A persistent key + * always has a nonzero key identifier, set with psa_set_key_id() when + * creating the key. Implementations may provide additional pre-provisioned + * keys that can be opened with psa_open_key(). Such keys have a key identifier + * in the vendor range, as documented in the description of #psa_key_id_t. + * + * The application must eventually close the handle with psa_close_key() or + * psa_destroy_key() to release associated resources. If the application dies + * without calling one of these functions, the implementation should perform + * the equivalent of a call to psa_close_key(). + * + * Some implementations permit an application to open the same key multiple + * times. If this is successful, each call to psa_open_key() will return a + * different key handle. + * + * \note Applications that rely on opening a key multiple times will not be + * portable to implementations that only permit a single key handle to be + * opened. See also :ref:\`key-handles\`. + * + * \param id The persistent identifier of the key. + * \param[out] handle On success, a handle to the key. + * + * \retval #PSA_SUCCESS + * Success. The application can now use the value of `*handle` + * to access the key. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * The implementation does not have sufficient resources to open the + * key. This can be due to reaching an implementation limit on the + * number of open keys, the number of open key handles, or available + * memory. + * \retval #PSA_ERROR_DOES_NOT_EXIST + * There is no persistent key with key identifier \p id. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p id is not a valid persistent key identifier. + * \retval #PSA_ERROR_NOT_PERMITTED + * The specified key exists, but the application does not have the + * permission to access it. Note that this specification does not + * define any way to create such a key, but it may be possible + * through implementation-specific means. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_open_key(psa_key_id_t id, + psa_key_handle_t *handle); + + +/** Close a key handle. + * + * If the handle designates a volatile key, this will destroy the key material + * and free all associated resources, just like psa_destroy_key(). + * + * If this is the last open handle to a persistent key, then closing the handle + * will free all resources associated with the key in volatile memory. The key + * data in persistent storage is not affected and can be opened again later + * with a call to psa_open_key(). + * + * Closing the key handle makes the handle invalid, and the key handle + * must not be used again by the application. + * + * \note If the key handle was used to set up an active + * :ref:\`multipart operation \`, then closing the + * key handle can cause the multipart operation to fail. Applications should + * maintain the key handle until after the multipart operation has finished. + * + * \param handle The key handle to close. + * If this is \c 0, do nothing and return \c PSA_SUCCESS. + * + * \retval #PSA_SUCCESS + * \p handle was a valid handle or \c 0. It is now closed. + * \retval #PSA_ERROR_INVALID_HANDLE + * \p handle is not a valid handle nor \c 0. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_close_key(psa_key_handle_t handle); + +/** Make a copy of a key. + * + * Copy key material from one location to another. + * + * This function is primarily useful to copy a key from one location + * to another, since it populates a key using the material from + * another key which may have a different lifetime. + * + * This function may be used to share a key with a different party, + * subject to implementation-defined restrictions on key sharing. + * + * The policy on the source key must have the usage flag + * #PSA_KEY_USAGE_COPY set. + * This flag is sufficient to permit the copy if the key has the lifetime + * #PSA_KEY_LIFETIME_VOLATILE or #PSA_KEY_LIFETIME_PERSISTENT. + * Some secure elements do not provide a way to copy a key without + * making it extractable from the secure element. If a key is located + * in such a secure element, then the key must have both usage flags + * #PSA_KEY_USAGE_COPY and #PSA_KEY_USAGE_EXPORT in order to make + * a copy of the key outside the secure element. + * + * The resulting key may only be used in a way that conforms to + * both the policy of the original key and the policy specified in + * the \p attributes parameter: + * - The usage flags on the resulting key are the bitwise-and of the + * usage flags on the source policy and the usage flags in \p attributes. + * - If both allow the same algorithm or wildcard-based + * algorithm policy, the resulting key has the same algorithm policy. + * - If either of the policies allows an algorithm and the other policy + * allows a wildcard-based algorithm policy that includes this algorithm, + * the resulting key allows the same algorithm. + * - If the policies do not allow any algorithm in common, this function + * fails with the status #PSA_ERROR_INVALID_ARGUMENT. + * + * The effect of this function on implementation-defined attributes is + * implementation-defined. + * + * \param source_handle The key to copy. It must be a valid key handle. + * \param[in] attributes The attributes for the new key. + * They are used as follows: + * - The key type and size may be 0. If either is + * nonzero, it must match the corresponding + * attribute of the source key. + * - The key location (the lifetime and, for + * persistent keys, the key identifier) is + * used directly. + * - The policy constraints (usage flags and + * algorithm policy) are combined from + * the source key and \p attributes so that + * both sets of restrictions apply, as + * described in the documentation of this function. + * \param[out] target_handle On success, a handle to the newly created key. + * \c 0 on failure. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \p source_handle is invalid. + * \retval #PSA_ERROR_ALREADY_EXISTS + * This is an attempt to create a persistent key, and there is + * already a persistent key with the given identifier. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The lifetime or identifier in \p attributes are invalid. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The policy constraints on the source and specified in + * \p attributes are incompatible. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p attributes specifies a key type or key size + * which does not match the attributes of the source key. + * \retval #PSA_ERROR_NOT_PERMITTED + * The source key does not have the #PSA_KEY_USAGE_COPY usage flag. + * \retval #PSA_ERROR_NOT_PERMITTED + * The source key is not exportable and its lifetime does not + * allow copying it to the target's lifetime. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_copy_key(psa_key_handle_t source_handle, + const psa_key_attributes_t *attributes, + psa_key_handle_t *target_handle); + + +/** + * \brief Destroy a key. + * + * This function destroys a key from both volatile + * memory and, if applicable, non-volatile storage. Implementations shall + * make a best effort to ensure that that the key material cannot be recovered. + * + * This function also erases any metadata such as policies and frees + * resources associated with the key. To free all resources associated with + * the key, all handles to the key must be closed or destroyed. + * + * Destroying the key makes the handle invalid, and the key handle + * must not be used again by the application. Using other open handles to the + * destroyed key in a cryptographic operation will result in an error. + * + * If a key is currently in use in a multipart operation, then destroying the + * key will cause the multipart operation to fail. + * + * \param handle Handle to the key to erase. + * If this is \c 0, do nothing and return \c PSA_SUCCESS. + * + * \retval #PSA_SUCCESS + * \p handle was a valid handle and the key material that it + * referred to has been erased. + * Alternatively, \p handle is \c 0. + * \retval #PSA_ERROR_NOT_PERMITTED + * The key cannot be erased because it is + * read-only, either due to a policy or due to physical restrictions. + * \retval #PSA_ERROR_INVALID_HANDLE + * \p handle is not a valid handle nor \c 0. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * There was an failure in communication with the cryptoprocessor. + * The key material may still be present in the cryptoprocessor. + * \retval #PSA_ERROR_STORAGE_FAILURE + * The storage is corrupted. Implementations shall make a best effort + * to erase key material even in this stage, however applications + * should be aware that it may be impossible to guarantee that the + * key material is not recoverable in such cases. + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * An unexpected condition which is not a storage corruption or + * a communication failure occurred. The cryptoprocessor may have + * been compromised. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_destroy_key(psa_key_handle_t handle); + +/**@}*/ + +/** \defgroup import_export Key import and export + * @{ + */ + +/** + * \brief Import a key in binary format. + * + * This function supports any output from psa_export_key(). Refer to the + * documentation of psa_export_public_key() for the format of public keys + * and to the documentation of psa_export_key() for the format for + * other key types. + * + * The key data determines the key size. The attributes may optionally + * specify a key size; in this case it must match the size determined + * from the key data. A key size of 0 in \p attributes indicates that + * the key size is solely determined by the key data. + * + * Implementations must reject an attempt to import a key of size 0. + * + * This specification supports a single format for each key type. + * Implementations may support other formats as long as the standard + * format is supported. Implementations that support other formats + * should ensure that the formats are clearly unambiguous so as to + * minimize the risk that an invalid input is accidentally interpreted + * according to a different format. + * + * \param[in] attributes The attributes for the new key. + * The key size is always determined from the + * \p data buffer. + * If the key size in \p attributes is nonzero, + * it must be equal to the size from \p data. + * \param[out] handle On success, a handle to the newly created key. + * \c 0 on failure. + * \param[in] data Buffer containing the key data. The content of this + * buffer is interpreted according to the type declared + * in \p attributes. + * All implementations must support at least the format + * described in the documentation + * of psa_export_key() or psa_export_public_key() for + * the chosen type. Implementations may allow other + * formats, but should be conservative: implementations + * should err on the side of rejecting content if it + * may be erroneous (e.g. wrong type or truncated data). + * \param data_length Size of the \p data buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * If the key is persistent, the key material and the key's metadata + * have been saved to persistent storage. + * \retval #PSA_ERROR_ALREADY_EXISTS + * This is an attempt to create a persistent key, and there is + * already a persistent key with the given identifier. + * \retval #PSA_ERROR_NOT_SUPPORTED + * The key type or key size is not supported, either by the + * implementation in general or in this particular persistent location. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The key attributes, as a whole, are invalid. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The key data is not correctly formatted. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The size in \p attributes is nonzero and does not match the size + * of the key data. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_import_key(const psa_key_attributes_t *attributes, + const uint8_t *data, + size_t data_length, + psa_key_handle_t *handle); + + + +/** + * \brief Export a key in binary format. + * + * The output of this function can be passed to psa_import_key() to + * create an equivalent object. + * + * If the implementation of psa_import_key() supports other formats + * beyond the format specified here, the output from psa_export_key() + * must use the representation specified here, not the original + * representation. + * + * For standard key types, the output format is as follows: + * + * - For symmetric keys (including MAC keys), the format is the + * raw bytes of the key. + * - For DES, the key data consists of 8 bytes. The parity bits must be + * correct. + * - For Triple-DES, the format is the concatenation of the + * two or three DES keys. + * - For RSA key pairs (#PSA_KEY_TYPE_RSA_KEY_PAIR), the format + * is the non-encrypted DER encoding of the representation defined by + * PKCS\#1 (RFC 8017) as `RSAPrivateKey`, version 0. + * ``` + * RSAPrivateKey ::= SEQUENCE { + * version INTEGER, -- must be 0 + * modulus INTEGER, -- n + * publicExponent INTEGER, -- e + * privateExponent INTEGER, -- d + * prime1 INTEGER, -- p + * prime2 INTEGER, -- q + * exponent1 INTEGER, -- d mod (p-1) + * exponent2 INTEGER, -- d mod (q-1) + * coefficient INTEGER, -- (inverse of q) mod p + * } + * ``` + * - For elliptic curve key pairs (key types for which + * #PSA_KEY_TYPE_IS_ECC_KEY_PAIR is true), the format is + * a representation of the private value as a `ceiling(m/8)`-byte string + * where `m` is the bit size associated with the curve, i.e. the bit size + * of the order of the curve's coordinate field. This byte string is + * in little-endian order for Montgomery curves (curve types + * `PSA_ECC_CURVE_CURVEXXX`), and in big-endian order for Weierstrass + * curves (curve types `PSA_ECC_CURVE_SECTXXX`, `PSA_ECC_CURVE_SECPXXX` + * and `PSA_ECC_CURVE_BRAINPOOL_PXXX`). + * This is the content of the `privateKey` field of the `ECPrivateKey` + * format defined by RFC 5915. + * - For Diffie-Hellman key exchange key pairs (key types for which + * #PSA_KEY_TYPE_IS_DH_KEY_PAIR is true), the + * format is the representation of the private key `x` as a big-endian byte + * string. The length of the byte string is the private key size in bytes + * (leading zeroes are not stripped). + * - For public keys (key types for which #PSA_KEY_TYPE_IS_PUBLIC_KEY is + * true), the format is the same as for psa_export_public_key(). + * + * The policy on the key must have the usage flag #PSA_KEY_USAGE_EXPORT set. + * + * \param handle Handle to the key to export. + * \param[out] data Buffer where the key data is to be written. + * \param data_size Size of the \p data buffer in bytes. + * \param[out] data_length On success, the number of bytes + * that make up the key data. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * The key does not have the #PSA_KEY_USAGE_EXPORT flag. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p data buffer is too small. You can determine a + * sufficient buffer size by calling + * #PSA_KEY_EXPORT_MAX_SIZE(\c type, \c bits) + * where \c type is the key type + * and \c bits is the key size in bits. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_export_key(psa_key_handle_t handle, + uint8_t *data, + size_t data_size, + size_t *data_length); + +/** + * \brief Export a public key or the public part of a key pair in binary format. + * + * The output of this function can be passed to psa_import_key() to + * create an object that is equivalent to the public key. + * + * This specification supports a single format for each key type. + * Implementations may support other formats as long as the standard + * format is supported. Implementations that support other formats + * should ensure that the formats are clearly unambiguous so as to + * minimize the risk that an invalid input is accidentally interpreted + * according to a different format. + * + * For standard key types, the output format is as follows: + * - For RSA public keys (#PSA_KEY_TYPE_RSA_PUBLIC_KEY), the DER encoding of + * the representation defined by RFC 3279 §2.3.1 as `RSAPublicKey`. + * ``` + * RSAPublicKey ::= SEQUENCE { + * modulus INTEGER, -- n + * publicExponent INTEGER } -- e + * ``` + * - For elliptic curve public keys (key types for which + * #PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY is true), the format is the uncompressed + * representation defined by SEC1 §2.3.3 as the content of an ECPoint. + * Let `m` be the bit size associated with the curve, i.e. the bit size of + * `q` for a curve over `F_q`. The representation consists of: + * - The byte 0x04; + * - `x_P` as a `ceiling(m/8)`-byte string, big-endian; + * - `y_P` as a `ceiling(m/8)`-byte string, big-endian. + * - For Diffie-Hellman key exchange public keys (key types for which + * #PSA_KEY_TYPE_IS_DH_PUBLIC_KEY is true), + * the format is the representation of the public key `y = g^x mod p` as a + * big-endian byte string. The length of the byte string is the length of the + * base prime `p` in bytes. + * + * Exporting a public key object or the public part of a key pair is + * always permitted, regardless of the key's usage flags. + * + * \param handle Handle to the key to export. + * \param[out] data Buffer where the key data is to be written. + * \param data_size Size of the \p data buffer in bytes. + * \param[out] data_length On success, the number of bytes + * that make up the key data. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The key is neither a public key nor a key pair. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p data buffer is too small. You can determine a + * sufficient buffer size by calling + * #PSA_KEY_EXPORT_MAX_SIZE(#PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(\c type), \c bits) + * where \c type is the key type + * and \c bits is the key size in bits. + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_export_public_key(psa_key_handle_t handle, + uint8_t *data, + size_t data_size, + size_t *data_length); + + + +/**@}*/ + +/** \defgroup hash Message digests + * @{ + */ + +/** Calculate the hash (digest) of a message. + * + * \note To verify the hash of a message against an + * expected value, use psa_hash_compare() instead. + * + * \param alg The hash algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_HASH(\p alg) is true). + * \param[in] input Buffer containing the message to hash. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] hash Buffer where the hash is to be written. + * \param hash_size Size of the \p hash buffer in bytes. + * \param[out] hash_length On success, the number of bytes + * that make up the hash value. This is always + * #PSA_HASH_SIZE(\p alg). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a hash algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \p hash_size is too small + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_compute(psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *hash, + size_t hash_size, + size_t *hash_length); + +/** Calculate the hash (digest) of a message and compare it with a + * reference value. + * + * \param alg The hash algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_HASH(\p alg) is true). + * \param[in] input Buffer containing the message to hash. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] hash Buffer containing the expected hash value. + * \param hash_length Size of the \p hash buffer in bytes. + * + * \retval #PSA_SUCCESS + * The expected hash is identical to the actual hash of the input. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The hash of the message was calculated successfully, but it + * differs from the expected hash. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a hash algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p input_length or \p hash_length do not match the hash size for \p alg + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_compare(psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *hash, + const size_t hash_length); + +/** The type of the state data structure for multipart hash operations. + * + * Before calling any function on a hash operation object, the application must + * initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_hash_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_hash_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_HASH_OPERATION_INIT, + * for example: + * \code + * psa_hash_operation_t operation = PSA_HASH_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_hash_operation_init() + * to the structure, for example: + * \code + * psa_hash_operation_t operation; + * operation = psa_hash_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. */ +typedef struct psa_hash_operation_s psa_hash_operation_t; + +/** \def PSA_HASH_OPERATION_INIT + * + * This macro returns a suitable initializer for a hash operation object + * of type #psa_hash_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_HASH_OPERATION_INIT {0} +#endif + +/** Return an initial value for a hash operation object. + */ +static psa_hash_operation_t psa_hash_operation_init(void); + +/** Set up a multipart hash operation. + * + * The sequence of operations to calculate a hash (message digest) + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_hash_operation_t, e.g. #PSA_HASH_OPERATION_INIT. + * -# Call psa_hash_setup() to specify the algorithm. + * -# Call psa_hash_update() zero, one or more times, passing a fragment + * of the message each time. The hash that is calculated is the hash + * of the concatenation of these messages in order. + * -# To calculate the hash, call psa_hash_finish(). + * To compare the hash with an expected value, call psa_hash_verify(). + * + * If an error occurs at any step after a call to psa_hash_setup(), the + * operation will need to be reset by a call to psa_hash_abort(). The + * application may call psa_hash_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_hash_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A successful call to psa_hash_finish() or psa_hash_verify(). + * - A call to psa_hash_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_hash_operation_t and not yet in use. + * \param alg The hash algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_HASH(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not a supported hash algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p alg is not a hash algorithm. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_setup(psa_hash_operation_t *operation, + psa_algorithm_t alg); + +/** Add a message fragment to a multipart hash operation. + * + * The application must call psa_hash_setup() before calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_hash_abort(). + * + * \param[in,out] operation Active hash operation. + * \param[in] input Buffer containing the message fragment to hash. + * \param input_length Size of the \p input buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it muct be active). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_update(psa_hash_operation_t *operation, + const uint8_t *input, + size_t input_length); + +/** Finish the calculation of the hash of a message. + * + * The application must call psa_hash_setup() before calling this function. + * This function calculates the hash of the message formed by concatenating + * the inputs passed to preceding calls to psa_hash_update(). + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_hash_abort(). + * + * \warning Applications should not call this function if they expect + * a specific value for the hash. Call psa_hash_verify() instead. + * Beware that comparing integrity or authenticity data such as + * hash values with a function such as \c memcmp is risky + * because the time taken by the comparison may leak information + * about the hashed data which could allow an attacker to guess + * a valid hash and thereby bypass security controls. + * + * \param[in,out] operation Active hash operation. + * \param[out] hash Buffer where the hash is to be written. + * \param hash_size Size of the \p hash buffer in bytes. + * \param[out] hash_length On success, the number of bytes + * that make up the hash value. This is always + * #PSA_HASH_SIZE(\c alg) where \c alg is the + * hash algorithm that is calculated. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p hash buffer is too small. You can determine a + * sufficient buffer size by calling #PSA_HASH_SIZE(\c alg) + * where \c alg is the hash algorithm that is calculated. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_finish(psa_hash_operation_t *operation, + uint8_t *hash, + size_t hash_size, + size_t *hash_length); + +/** Finish the calculation of the hash of a message and compare it with + * an expected value. + * + * The application must call psa_hash_setup() before calling this function. + * This function calculates the hash of the message formed by concatenating + * the inputs passed to preceding calls to psa_hash_update(). It then + * compares the calculated hash with the expected hash passed as a + * parameter to this function. + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_hash_abort(). + * + * \note Implementations shall make the best effort to ensure that the + * comparison between the actual hash and the expected hash is performed + * in constant time. + * + * \param[in,out] operation Active hash operation. + * \param[in] hash Buffer containing the expected hash value. + * \param hash_length Size of the \p hash buffer in bytes. + * + * \retval #PSA_SUCCESS + * The expected hash is identical to the actual hash of the message. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The hash of the message was calculated successfully, but it + * differs from the expected hash. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_verify(psa_hash_operation_t *operation, + const uint8_t *hash, + size_t hash_length); + +/** Abort a hash operation. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation by calling + * psa_hash_setup() again. + * + * You may call this function any time after the operation object has + * been initialized by one of the methods described in #psa_hash_operation_t. + * + * In particular, calling psa_hash_abort() after the operation has been + * terminated by a call to psa_hash_abort(), psa_hash_finish() or + * psa_hash_verify() is safe and has no effect. + * + * \param[in,out] operation Initialized hash operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_abort(psa_hash_operation_t *operation); + +/** Clone a hash operation. + * + * This function copies the state of an ongoing hash operation to + * a new operation object. In other words, this function is equivalent + * to calling psa_hash_setup() on \p target_operation with the same + * algorithm that \p source_operation was set up for, then + * psa_hash_update() on \p target_operation with the same input that + * that was passed to \p source_operation. After this function returns, the + * two objects are independent, i.e. subsequent calls involving one of + * the objects do not affect the other object. + * + * \param[in] source_operation The active hash operation to clone. + * \param[in,out] target_operation The operation object to set up. + * It must be initialized but not active. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_BAD_STATE + * The \p source_operation state is not valid (it must be active). + * \retval #PSA_ERROR_BAD_STATE + * The \p target_operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_hash_clone(const psa_hash_operation_t *source_operation, + psa_hash_operation_t *target_operation); + +/**@}*/ + +/** \defgroup MAC Message authentication codes + * @{ + */ + +/** Calculate the MAC (message authentication code) of a message. + * + * \note To verify the MAC of a message against an + * expected value, use psa_mac_verify() instead. + * Beware that comparing integrity or authenticity data such as + * MAC values with a function such as \c memcmp is risky + * because the time taken by the comparison may leak information + * about the MAC value which could allow an attacker to guess + * a valid MAC and thereby bypass security controls. + * + * \param handle Handle to the key to use for the operation. + * \param alg The MAC algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_MAC(\p alg) is true). + * \param[in] input Buffer containing the input message. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] mac Buffer where the MAC value is to be written. + * \param mac_size Size of the \p mac buffer in bytes. + * \param[out] mac_length On success, the number of bytes + * that make up the MAC value. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a MAC algorithm. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \p mac_size is too small + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * The key could not be retrieved from storage. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_compute(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *mac, + size_t mac_size, + size_t *mac_length); + +/** Calculate the MAC of a message and compare it with a reference value. + * + * \param handle Handle to the key to use for the operation. + * \param alg The MAC algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_MAC(\p alg) is true). + * \param[in] input Buffer containing the input message. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] mac Buffer containing the expected MAC value. + * \param mac_length Size of the \p mac buffer in bytes. + * + * \retval #PSA_SUCCESS + * The expected MAC is identical to the actual MAC of the input. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The MAC of the message was calculated successfully, but it + * differs from the expected value. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a MAC algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * The key could not be retrieved from storage. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_verify(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *mac, + const size_t mac_length); + +/** The type of the state data structure for multipart MAC operations. + * + * Before calling any function on a MAC operation object, the application must + * initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_mac_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_mac_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_MAC_OPERATION_INIT, + * for example: + * \code + * psa_mac_operation_t operation = PSA_MAC_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_mac_operation_init() + * to the structure, for example: + * \code + * psa_mac_operation_t operation; + * operation = psa_mac_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. */ +typedef struct psa_mac_operation_s psa_mac_operation_t; + +/** \def PSA_MAC_OPERATION_INIT + * + * This macro returns a suitable initializer for a MAC operation object of type + * #psa_mac_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_MAC_OPERATION_INIT {0} +#endif + +/** Return an initial value for a MAC operation object. + */ +static psa_mac_operation_t psa_mac_operation_init(void); + +/** Set up a multipart MAC calculation operation. + * + * This function sets up the calculation of the MAC + * (message authentication code) of a byte string. + * To verify the MAC of a message against an + * expected value, use psa_mac_verify_setup() instead. + * + * The sequence of operations to calculate a MAC is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_mac_operation_t, e.g. #PSA_MAC_OPERATION_INIT. + * -# Call psa_mac_sign_setup() to specify the algorithm and key. + * -# Call psa_mac_update() zero, one or more times, passing a fragment + * of the message each time. The MAC that is calculated is the MAC + * of the concatenation of these messages in order. + * -# At the end of the message, call psa_mac_sign_finish() to finish + * calculating the MAC value and retrieve it. + * + * If an error occurs at any step after a call to psa_mac_sign_setup(), the + * operation will need to be reset by a call to psa_mac_abort(). The + * application may call psa_mac_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_mac_sign_setup(), the application must + * eventually terminate the operation through one of the following methods: + * - A successful call to psa_mac_sign_finish(). + * - A call to psa_mac_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_mac_operation_t and not yet in use. + * \param handle Handle to the key to use for the operation. + * It must remain valid until the operation + * terminates. + * \param alg The MAC algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_MAC(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a MAC algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * The key could not be retrieved from storage. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_sign_setup(psa_mac_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg); + +/** Set up a multipart MAC verification operation. + * + * This function sets up the verification of the MAC + * (message authentication code) of a byte string against an expected value. + * + * The sequence of operations to verify a MAC is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_mac_operation_t, e.g. #PSA_MAC_OPERATION_INIT. + * -# Call psa_mac_verify_setup() to specify the algorithm and key. + * -# Call psa_mac_update() zero, one or more times, passing a fragment + * of the message each time. The MAC that is calculated is the MAC + * of the concatenation of these messages in order. + * -# At the end of the message, call psa_mac_verify_finish() to finish + * calculating the actual MAC of the message and verify it against + * the expected value. + * + * If an error occurs at any step after a call to psa_mac_verify_setup(), the + * operation will need to be reset by a call to psa_mac_abort(). The + * application may call psa_mac_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_mac_verify_setup(), the application must + * eventually terminate the operation through one of the following methods: + * - A successful call to psa_mac_verify_finish(). + * - A call to psa_mac_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_mac_operation_t and not yet in use. + * \param handle Handle to the key to use for the operation. + * It must remain valid until the operation + * terminates. + * \param alg The MAC algorithm to compute (\c PSA_ALG_XXX value + * such that #PSA_ALG_IS_MAC(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c key is not compatible with \c alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \c alg is not supported or is not a MAC algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * The key could not be retrieved from storage + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_verify_setup(psa_mac_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg); + +/** Add a message fragment to a multipart MAC operation. + * + * The application must call psa_mac_sign_setup() or psa_mac_verify_setup() + * before calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_mac_abort(). + * + * \param[in,out] operation Active MAC operation. + * \param[in] input Buffer containing the message fragment to add to + * the MAC calculation. + * \param input_length Size of the \p input buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_update(psa_mac_operation_t *operation, + const uint8_t *input, + size_t input_length); + +/** Finish the calculation of the MAC of a message. + * + * The application must call psa_mac_sign_setup() before calling this function. + * This function calculates the MAC of the message formed by concatenating + * the inputs passed to preceding calls to psa_mac_update(). + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_mac_abort(). + * + * \warning Applications should not call this function if they expect + * a specific value for the MAC. Call psa_mac_verify_finish() instead. + * Beware that comparing integrity or authenticity data such as + * MAC values with a function such as \c memcmp is risky + * because the time taken by the comparison may leak information + * about the MAC value which could allow an attacker to guess + * a valid MAC and thereby bypass security controls. + * + * \param[in,out] operation Active MAC operation. + * \param[out] mac Buffer where the MAC value is to be written. + * \param mac_size Size of the \p mac buffer in bytes. + * \param[out] mac_length On success, the number of bytes + * that make up the MAC value. This is always + * #PSA_MAC_FINAL_SIZE(\c key_type, \c key_bits, \c alg) + * where \c key_type and \c key_bits are the type and + * bit-size respectively of the key and \c alg is the + * MAC algorithm that is calculated. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active mac sign + * operation). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p mac buffer is too small. You can determine a + * sufficient buffer size by calling PSA_MAC_FINAL_SIZE(). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_sign_finish(psa_mac_operation_t *operation, + uint8_t *mac, + size_t mac_size, + size_t *mac_length); + +/** Finish the calculation of the MAC of a message and compare it with + * an expected value. + * + * The application must call psa_mac_verify_setup() before calling this function. + * This function calculates the MAC of the message formed by concatenating + * the inputs passed to preceding calls to psa_mac_update(). It then + * compares the calculated MAC with the expected MAC passed as a + * parameter to this function. + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_mac_abort(). + * + * \note Implementations shall make the best effort to ensure that the + * comparison between the actual MAC and the expected MAC is performed + * in constant time. + * + * \param[in,out] operation Active MAC operation. + * \param[in] mac Buffer containing the expected MAC value. + * \param mac_length Size of the \p mac buffer in bytes. + * + * \retval #PSA_SUCCESS + * The expected MAC is identical to the actual MAC of the message. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The MAC of the message was calculated successfully, but it + * differs from the expected MAC. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active mac verify + * operation). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_verify_finish(psa_mac_operation_t *operation, + const uint8_t *mac, + size_t mac_length); + +/** Abort a MAC operation. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation by calling + * psa_mac_sign_setup() or psa_mac_verify_setup() again. + * + * You may call this function any time after the operation object has + * been initialized by one of the methods described in #psa_mac_operation_t. + * + * In particular, calling psa_mac_abort() after the operation has been + * terminated by a call to psa_mac_abort(), psa_mac_sign_finish() or + * psa_mac_verify_finish() is safe and has no effect. + * + * \param[in,out] operation Initialized MAC operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_mac_abort(psa_mac_operation_t *operation); + +/**@}*/ + +/** \defgroup cipher Symmetric ciphers + * @{ + */ + +/** Encrypt a message using a symmetric cipher. + * + * This function encrypts a message with a random IV (initialization + * vector). Use the multipart operation interface with a + * #psa_cipher_operation_t object to provide other forms of IV. + * + * \param handle Handle to the key to use for the operation. + * It must remain valid until the operation + * terminates. + * \param alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * \param[in] input Buffer containing the message to encrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] output Buffer where the output is to be written. + * The output contains the IV followed by + * the ciphertext proper. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a cipher algorithm. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_encrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** Decrypt a message using a symmetric cipher. + * + * This function decrypts a message encrypted with a symmetric cipher. + * + * \param handle Handle to the key to use for the operation. + * It must remain valid until the operation + * terminates. + * \param alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * \param[in] input Buffer containing the message to decrypt. + * This consists of the IV followed by the + * ciphertext proper. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] output Buffer where the plaintext is to be written. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a cipher algorithm. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_decrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** The type of the state data structure for multipart cipher operations. + * + * Before calling any function on a cipher operation object, the application + * must initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_cipher_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_cipher_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_CIPHER_OPERATION_INIT, + * for example: + * \code + * psa_cipher_operation_t operation = PSA_CIPHER_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_cipher_operation_init() + * to the structure, for example: + * \code + * psa_cipher_operation_t operation; + * operation = psa_cipher_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. */ +typedef struct psa_cipher_operation_s psa_cipher_operation_t; + +/** \def PSA_CIPHER_OPERATION_INIT + * + * This macro returns a suitable initializer for a cipher operation object of + * type #psa_cipher_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_CIPHER_OPERATION_INIT {0} +#endif + +/** Return an initial value for a cipher operation object. + */ +static psa_cipher_operation_t psa_cipher_operation_init(void); + +/** Set the key for a multipart symmetric encryption operation. + * + * The sequence of operations to encrypt a message with a symmetric cipher + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_cipher_operation_t, e.g. + * #PSA_CIPHER_OPERATION_INIT. + * -# Call psa_cipher_encrypt_setup() to specify the algorithm and key. + * -# Call either psa_cipher_generate_iv() or psa_cipher_set_iv() to + * generate or set the IV (initialization vector). You should use + * psa_cipher_generate_iv() unless the protocol you are implementing + * requires a specific IV value. + * -# Call psa_cipher_update() zero, one or more times, passing a fragment + * of the message each time. + * -# Call psa_cipher_finish(). + * + * If an error occurs at any step after a call to psa_cipher_encrypt_setup(), + * the operation will need to be reset by a call to psa_cipher_abort(). The + * application may call psa_cipher_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_cipher_encrypt_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A successful call to psa_cipher_finish(). + * - A call to psa_cipher_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_cipher_operation_t and not yet in use. + * \param handle Handle to the key to use for the operation. + * It must remain valid until the operation + * terminates. + * \param alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a cipher algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg); + +/** Set the key for a multipart symmetric decryption operation. + * + * The sequence of operations to decrypt a message with a symmetric cipher + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_cipher_operation_t, e.g. + * #PSA_CIPHER_OPERATION_INIT. + * -# Call psa_cipher_decrypt_setup() to specify the algorithm and key. + * -# Call psa_cipher_set_iv() with the IV (initialization vector) for the + * decryption. If the IV is prepended to the ciphertext, you can call + * psa_cipher_update() on a buffer containing the IV followed by the + * beginning of the message. + * -# Call psa_cipher_update() zero, one or more times, passing a fragment + * of the message each time. + * -# Call psa_cipher_finish(). + * + * If an error occurs at any step after a call to psa_cipher_decrypt_setup(), + * the operation will need to be reset by a call to psa_cipher_abort(). The + * application may call psa_cipher_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_cipher_decrypt_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A successful call to psa_cipher_finish(). + * - A call to psa_cipher_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_cipher_operation_t and not yet in use. + * \param handle Handle to the key to use for the operation. + * It must remain valid until the operation + * terminates. + * \param alg The cipher algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_CIPHER(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not a cipher algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_decrypt_setup(psa_cipher_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg); + +/** Generate an IV for a symmetric encryption operation. + * + * This function generates a random IV (initialization vector), nonce + * or initial counter value for the encryption operation as appropriate + * for the chosen algorithm, key type and key size. + * + * The application must call psa_cipher_encrypt_setup() before + * calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_cipher_abort(). + * + * \param[in,out] operation Active cipher operation. + * \param[out] iv Buffer where the generated IV is to be written. + * \param iv_size Size of the \p iv buffer in bytes. + * \param[out] iv_length On success, the number of bytes of the + * generated IV. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, with no IV set). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p iv buffer is too small. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_generate_iv(psa_cipher_operation_t *operation, + uint8_t *iv, + size_t iv_size, + size_t *iv_length); + +/** Set the IV for a symmetric encryption or decryption operation. + * + * This function sets the IV (initialization vector), nonce + * or initial counter value for the encryption or decryption operation. + * + * The application must call psa_cipher_encrypt_setup() before + * calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_cipher_abort(). + * + * \note When encrypting, applications should use psa_cipher_generate_iv() + * instead of this function, unless implementing a protocol that requires + * a non-random IV. + * + * \param[in,out] operation Active cipher operation. + * \param[in] iv Buffer containing the IV to use. + * \param iv_length Size of the IV in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active cipher + * encrypt operation, with no IV set). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The size of \p iv is not acceptable for the chosen algorithm, + * or the chosen algorithm does not use an IV. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_set_iv(psa_cipher_operation_t *operation, + const uint8_t *iv, + size_t iv_length); + +/** Encrypt or decrypt a message fragment in an active cipher operation. + * + * Before calling this function, you must: + * 1. Call either psa_cipher_encrypt_setup() or psa_cipher_decrypt_setup(). + * The choice of setup function determines whether this function + * encrypts or decrypts its input. + * 2. If the algorithm requires an IV, call psa_cipher_generate_iv() + * (recommended when encrypting) or psa_cipher_set_iv(). + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_cipher_abort(). + * + * \param[in,out] operation Active cipher operation. + * \param[in] input Buffer containing the message fragment to + * encrypt or decrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] output Buffer where the output is to be written. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, with an IV set + * if required for the algorithm). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_update(psa_cipher_operation_t *operation, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** Finish encrypting or decrypting a message in a cipher operation. + * + * The application must call psa_cipher_encrypt_setup() or + * psa_cipher_decrypt_setup() before calling this function. The choice + * of setup function determines whether this function encrypts or + * decrypts its input. + * + * This function finishes the encryption or decryption of the message + * formed by concatenating the inputs passed to preceding calls to + * psa_cipher_update(). + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_cipher_abort(). + * + * \param[in,out] operation Active cipher operation. + * \param[out] output Buffer where the output is to be written. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total input size passed to this operation is not valid for + * this particular algorithm. For example, the algorithm is a based + * on block cipher and requires a whole number of blocks, but the + * total input size is not a multiple of the block size. + * \retval #PSA_ERROR_INVALID_PADDING + * This is a decryption operation for an algorithm that includes + * padding, and the ciphertext does not contain valid padding. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, with an IV set + * if required for the algorithm). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_finish(psa_cipher_operation_t *operation, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** Abort a cipher operation. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation by calling + * psa_cipher_encrypt_setup() or psa_cipher_decrypt_setup() again. + * + * You may call this function any time after the operation object has + * been initialized as described in #psa_cipher_operation_t. + * + * In particular, calling psa_cipher_abort() after the operation has been + * terminated by a call to psa_cipher_abort() or psa_cipher_finish() + * is safe and has no effect. + * + * \param[in,out] operation Initialized cipher operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_cipher_abort(psa_cipher_operation_t *operation); + +/**@}*/ + +/** \defgroup aead Authenticated encryption with associated data (AEAD) + * @{ + */ + +/** Process an authenticated encryption operation. + * + * \param handle Handle to the key to use for the operation. + * \param alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param[in] nonce Nonce or IV to use. + * \param nonce_length Size of the \p nonce buffer in bytes. + * \param[in] additional_data Additional data that will be authenticated + * but not encrypted. + * \param additional_data_length Size of \p additional_data in bytes. + * \param[in] plaintext Data that will be authenticated and + * encrypted. + * \param plaintext_length Size of \p plaintext in bytes. + * \param[out] ciphertext Output buffer for the authenticated and + * encrypted data. The additional data is not + * part of this output. For algorithms where the + * encrypted data and the authentication tag + * are defined as separate outputs, the + * authentication tag is appended to the + * encrypted data. + * \param ciphertext_size Size of the \p ciphertext buffer in bytes. + * This must be at least + * #PSA_AEAD_ENCRYPT_OUTPUT_SIZE(\p alg, + * \p plaintext_length). + * \param[out] ciphertext_length On success, the size of the output + * in the \p ciphertext buffer. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not an AEAD algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \p ciphertext_size is too small + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_encrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *nonce, + size_t nonce_length, + const uint8_t *additional_data, + size_t additional_data_length, + const uint8_t *plaintext, + size_t plaintext_length, + uint8_t *ciphertext, + size_t ciphertext_size, + size_t *ciphertext_length); + +/** Process an authenticated decryption operation. + * + * \param handle Handle to the key to use for the operation. + * \param alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param[in] nonce Nonce or IV to use. + * \param nonce_length Size of the \p nonce buffer in bytes. + * \param[in] additional_data Additional data that has been authenticated + * but not encrypted. + * \param additional_data_length Size of \p additional_data in bytes. + * \param[in] ciphertext Data that has been authenticated and + * encrypted. For algorithms where the + * encrypted data and the authentication tag + * are defined as separate inputs, the buffer + * must contain the encrypted data followed + * by the authentication tag. + * \param ciphertext_length Size of \p ciphertext in bytes. + * \param[out] plaintext Output buffer for the decrypted data. + * \param plaintext_size Size of the \p plaintext buffer in bytes. + * This must be at least + * #PSA_AEAD_DECRYPT_OUTPUT_SIZE(\p alg, + * \p ciphertext_length). + * \param[out] plaintext_length On success, the size of the output + * in the \p plaintext buffer. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The ciphertext is not authentic. + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not an AEAD algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \p plaintext_size or \p nonce_length is too small + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_decrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *nonce, + size_t nonce_length, + const uint8_t *additional_data, + size_t additional_data_length, + const uint8_t *ciphertext, + size_t ciphertext_length, + uint8_t *plaintext, + size_t plaintext_size, + size_t *plaintext_length); + +/** The type of the state data structure for multipart AEAD operations. + * + * Before calling any function on an AEAD operation object, the application + * must initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_aead_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_aead_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_AEAD_OPERATION_INIT, + * for example: + * \code + * psa_aead_operation_t operation = PSA_AEAD_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_aead_operation_init() + * to the structure, for example: + * \code + * psa_aead_operation_t operation; + * operation = psa_aead_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. */ +typedef struct psa_aead_operation_s psa_aead_operation_t; + +/** \def PSA_AEAD_OPERATION_INIT + * + * This macro returns a suitable initializer for an AEAD operation object of + * type #psa_aead_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_AEAD_OPERATION_INIT {0} +#endif + +/** Return an initial value for an AEAD operation object. + */ +static psa_aead_operation_t psa_aead_operation_init(void); + +/** Set the key for a multipart authenticated encryption operation. + * + * The sequence of operations to encrypt a message with authentication + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_aead_operation_t, e.g. + * #PSA_AEAD_OPERATION_INIT. + * -# Call psa_aead_encrypt_setup() to specify the algorithm and key. + * -# If needed, call psa_aead_set_lengths() to specify the length of the + * inputs to the subsequent calls to psa_aead_update_ad() and + * psa_aead_update(). See the documentation of psa_aead_set_lengths() + * for details. + * -# Call either psa_aead_generate_nonce() or psa_aead_set_nonce() to + * generate or set the nonce. You should use + * psa_aead_generate_nonce() unless the protocol you are implementing + * requires a specific nonce value. + * -# Call psa_aead_update_ad() zero, one or more times, passing a fragment + * of the non-encrypted additional authenticated data each time. + * -# Call psa_aead_update() zero, one or more times, passing a fragment + * of the message to encrypt each time. + * -# Call psa_aead_finish(). + * + * If an error occurs at any step after a call to psa_aead_encrypt_setup(), + * the operation will need to be reset by a call to psa_aead_abort(). The + * application may call psa_aead_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_aead_encrypt_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A successful call to psa_aead_finish(). + * - A call to psa_aead_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_aead_operation_t and not yet in use. + * \param handle Handle to the key to use for the operation. + * It must remain valid until the operation + * terminates. + * \param alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not an AEAD algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_encrypt_setup(psa_aead_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg); + +/** Set the key for a multipart authenticated decryption operation. + * + * The sequence of operations to decrypt a message with authentication + * is as follows: + * -# Allocate an operation object which will be passed to all the functions + * listed here. + * -# Initialize the operation object with one of the methods described in the + * documentation for #psa_aead_operation_t, e.g. + * #PSA_AEAD_OPERATION_INIT. + * -# Call psa_aead_decrypt_setup() to specify the algorithm and key. + * -# If needed, call psa_aead_set_lengths() to specify the length of the + * inputs to the subsequent calls to psa_aead_update_ad() and + * psa_aead_update(). See the documentation of psa_aead_set_lengths() + * for details. + * -# Call psa_aead_set_nonce() with the nonce for the decryption. + * -# Call psa_aead_update_ad() zero, one or more times, passing a fragment + * of the non-encrypted additional authenticated data each time. + * -# Call psa_aead_update() zero, one or more times, passing a fragment + * of the ciphertext to decrypt each time. + * -# Call psa_aead_verify(). + * + * If an error occurs at any step after a call to psa_aead_decrypt_setup(), + * the operation will need to be reset by a call to psa_aead_abort(). The + * application may call psa_aead_abort() at any time after the operation + * has been initialized. + * + * After a successful call to psa_aead_decrypt_setup(), the application must + * eventually terminate the operation. The following events terminate an + * operation: + * - A successful call to psa_aead_verify(). + * - A call to psa_aead_abort(). + * + * \param[in,out] operation The operation object to set up. It must have + * been initialized as per the documentation for + * #psa_aead_operation_t and not yet in use. + * \param handle Handle to the key to use for the operation. + * It must remain valid until the operation + * terminates. + * \param alg The AEAD algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p handle is not compatible with \p alg. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not supported or is not an AEAD algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_decrypt_setup(psa_aead_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg); + +/** Generate a random nonce for an authenticated encryption operation. + * + * This function generates a random nonce for the authenticated encryption + * operation with an appropriate size for the chosen algorithm, key type + * and key size. + * + * The application must call psa_aead_encrypt_setup() before + * calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \param[in,out] operation Active AEAD operation. + * \param[out] nonce Buffer where the generated nonce is to be + * written. + * \param nonce_size Size of the \p nonce buffer in bytes. + * \param[out] nonce_length On success, the number of bytes of the + * generated nonce. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active aead encrypt + operation, with no nonce set). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p nonce buffer is too small. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_generate_nonce(psa_aead_operation_t *operation, + uint8_t *nonce, + size_t nonce_size, + size_t *nonce_length); + +/** Set the nonce for an authenticated encryption or decryption operation. + * + * This function sets the nonce for the authenticated + * encryption or decryption operation. + * + * The application must call psa_aead_encrypt_setup() or + * psa_aead_decrypt_setup() before calling this function. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \note When encrypting, applications should use psa_aead_generate_nonce() + * instead of this function, unless implementing a protocol that requires + * a non-random IV. + * + * \param[in,out] operation Active AEAD operation. + * \param[in] nonce Buffer containing the nonce to use. + * \param nonce_length Size of the nonce in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, with no nonce + * set). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The size of \p nonce is not acceptable for the chosen algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_set_nonce(psa_aead_operation_t *operation, + const uint8_t *nonce, + size_t nonce_length); + +/** Declare the lengths of the message and additional data for AEAD. + * + * The application must call this function before calling + * psa_aead_update_ad() or psa_aead_update() if the algorithm for + * the operation requires it. If the algorithm does not require it, + * calling this function is optional, but if this function is called + * then the implementation must enforce the lengths. + * + * You may call this function before or after setting the nonce with + * psa_aead_set_nonce() or psa_aead_generate_nonce(). + * + * - For #PSA_ALG_CCM, calling this function is required. + * - For the other AEAD algorithms defined in this specification, calling + * this function is not required. + * - For vendor-defined algorithm, refer to the vendor documentation. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \param[in,out] operation Active AEAD operation. + * \param ad_length Size of the non-encrypted additional + * authenticated data in bytes. + * \param plaintext_length Size of the plaintext to encrypt in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, and + * psa_aead_update_ad() and psa_aead_update() must not have been + * called yet). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * At least one of the lengths is not acceptable for the chosen + * algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_set_lengths(psa_aead_operation_t *operation, + size_t ad_length, + size_t plaintext_length); + +/** Pass additional data to an active AEAD operation. + * + * Additional data is authenticated, but not encrypted. + * + * You may call this function multiple times to pass successive fragments + * of the additional data. You may not call this function after passing + * data to encrypt or decrypt with psa_aead_update(). + * + * Before calling this function, you must: + * 1. Call either psa_aead_encrypt_setup() or psa_aead_decrypt_setup(). + * 2. Set the nonce with psa_aead_generate_nonce() or psa_aead_set_nonce(). + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \warning When decrypting, until psa_aead_verify() has returned #PSA_SUCCESS, + * there is no guarantee that the input is valid. Therefore, until + * you have called psa_aead_verify() and it has returned #PSA_SUCCESS, + * treat the input as untrusted and prepare to undo any action that + * depends on the input if psa_aead_verify() returns an error status. + * + * \param[in,out] operation Active AEAD operation. + * \param[in] input Buffer containing the fragment of + * additional data. + * \param input_length Size of the \p input buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, have a nonce + * set, have lengths set if required by the algorithm, and + * psa_aead_update() must not have been called yet). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total input length overflows the additional data length that + * was previously specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_update_ad(psa_aead_operation_t *operation, + const uint8_t *input, + size_t input_length); + +/** Encrypt or decrypt a message fragment in an active AEAD operation. + * + * Before calling this function, you must: + * 1. Call either psa_aead_encrypt_setup() or psa_aead_decrypt_setup(). + * The choice of setup function determines whether this function + * encrypts or decrypts its input. + * 2. Set the nonce with psa_aead_generate_nonce() or psa_aead_set_nonce(). + * 3. Call psa_aead_update_ad() to pass all the additional data. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \warning When decrypting, until psa_aead_verify() has returned #PSA_SUCCESS, + * there is no guarantee that the input is valid. Therefore, until + * you have called psa_aead_verify() and it has returned #PSA_SUCCESS: + * - Do not use the output in any way other than storing it in a + * confidential location. If you take any action that depends + * on the tentative decrypted data, this action will need to be + * undone if the input turns out not to be valid. Furthermore, + * if an adversary can observe that this action took place + * (for example through timing), they may be able to use this + * fact as an oracle to decrypt any message encrypted with the + * same key. + * - In particular, do not copy the output anywhere but to a + * memory or storage space that you have exclusive access to. + * + * This function does not require the input to be aligned to any + * particular block boundary. If the implementation can only process + * a whole block at a time, it must consume all the input provided, but + * it may delay the end of the corresponding output until a subsequent + * call to psa_aead_update(), psa_aead_finish() or psa_aead_verify() + * provides sufficient input. The amount of data that can be delayed + * in this way is bounded by #PSA_AEAD_UPDATE_OUTPUT_SIZE. + * + * \param[in,out] operation Active AEAD operation. + * \param[in] input Buffer containing the message fragment to + * encrypt or decrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[out] output Buffer where the output is to be written. + * \param output_size Size of the \p output buffer in bytes. + * This must be at least + * #PSA_AEAD_UPDATE_OUTPUT_SIZE(\c alg, + * \p input_length) where \c alg is the + * algorithm that is being calculated. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active, have a nonce + * set, and have lengths set if required by the algorithm). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. + * You can determine a sufficient buffer size by calling + * #PSA_AEAD_UPDATE_OUTPUT_SIZE(\c alg, \p input_length) + * where \c alg is the algorithm that is being calculated. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total length of input to psa_aead_update_ad() so far is + * less than the additional data length that was previously + * specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total input length overflows the plaintext length that + * was previously specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_update(psa_aead_operation_t *operation, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** Finish encrypting a message in an AEAD operation. + * + * The operation must have been set up with psa_aead_encrypt_setup(). + * + * This function finishes the authentication of the additional data + * formed by concatenating the inputs passed to preceding calls to + * psa_aead_update_ad() with the plaintext formed by concatenating the + * inputs passed to preceding calls to psa_aead_update(). + * + * This function has two output buffers: + * - \p ciphertext contains trailing ciphertext that was buffered from + * preceding calls to psa_aead_update(). + * - \p tag contains the authentication tag. Its length is always + * #PSA_AEAD_TAG_LENGTH(\c alg) where \c alg is the AEAD algorithm + * that the operation performs. + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \param[in,out] operation Active AEAD operation. + * \param[out] ciphertext Buffer where the last part of the ciphertext + * is to be written. + * \param ciphertext_size Size of the \p ciphertext buffer in bytes. + * This must be at least + * #PSA_AEAD_FINISH_OUTPUT_SIZE(\c alg) where + * \c alg is the algorithm that is being + * calculated. + * \param[out] ciphertext_length On success, the number of bytes of + * returned ciphertext. + * \param[out] tag Buffer where the authentication tag is + * to be written. + * \param tag_size Size of the \p tag buffer in bytes. + * This must be at least + * #PSA_AEAD_TAG_LENGTH(\c alg) where \c alg is + * the algorithm that is being calculated. + * \param[out] tag_length On success, the number of bytes + * that make up the returned tag. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active encryption + * operation with a nonce set). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p ciphertext or \p tag buffer is too small. + * You can determine a sufficient buffer size for \p ciphertext by + * calling #PSA_AEAD_FINISH_OUTPUT_SIZE(\c alg) + * where \c alg is the algorithm that is being calculated. + * You can determine a sufficient buffer size for \p tag by + * calling #PSA_AEAD_TAG_LENGTH(\c alg). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total length of input to psa_aead_update_ad() so far is + * less than the additional data length that was previously + * specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total length of input to psa_aead_update() so far is + * less than the plaintext length that was previously + * specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_finish(psa_aead_operation_t *operation, + uint8_t *ciphertext, + size_t ciphertext_size, + size_t *ciphertext_length, + uint8_t *tag, + size_t tag_size, + size_t *tag_length); + +/** Finish authenticating and decrypting a message in an AEAD operation. + * + * The operation must have been set up with psa_aead_decrypt_setup(). + * + * This function finishes the authenticated decryption of the message + * components: + * + * - The additional data consisting of the concatenation of the inputs + * passed to preceding calls to psa_aead_update_ad(). + * - The ciphertext consisting of the concatenation of the inputs passed to + * preceding calls to psa_aead_update(). + * - The tag passed to this function call. + * + * If the authentication tag is correct, this function outputs any remaining + * plaintext and reports success. If the authentication tag is not correct, + * this function returns #PSA_ERROR_INVALID_SIGNATURE. + * + * When this function returns successfuly, the operation becomes inactive. + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_aead_abort(). + * + * \note Implementations shall make the best effort to ensure that the + * comparison between the actual tag and the expected tag is performed + * in constant time. + * + * \param[in,out] operation Active AEAD operation. + * \param[out] plaintext Buffer where the last part of the plaintext + * is to be written. This is the remaining data + * from previous calls to psa_aead_update() + * that could not be processed until the end + * of the input. + * \param plaintext_size Size of the \p plaintext buffer in bytes. + * This must be at least + * #PSA_AEAD_VERIFY_OUTPUT_SIZE(\c alg) where + * \c alg is the algorithm that is being + * calculated. + * \param[out] plaintext_length On success, the number of bytes of + * returned plaintext. + * \param[in] tag Buffer containing the authentication tag. + * \param tag_length Size of the \p tag buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The calculations were successful, but the authentication tag is + * not correct. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be an active decryption + * operation with a nonce set). + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p plaintext buffer is too small. + * You can determine a sufficient buffer size for \p plaintext by + * calling #PSA_AEAD_VERIFY_OUTPUT_SIZE(\c alg) + * where \c alg is the algorithm that is being calculated. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total length of input to psa_aead_update_ad() so far is + * less than the additional data length that was previously + * specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The total length of input to psa_aead_update() so far is + * less than the plaintext length that was previously + * specified with psa_aead_set_lengths(). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_verify(psa_aead_operation_t *operation, + uint8_t *plaintext, + size_t plaintext_size, + size_t *plaintext_length, + const uint8_t *tag, + size_t tag_length); + +/** Abort an AEAD operation. + * + * Aborting an operation frees all associated resources except for the + * \p operation structure itself. Once aborted, the operation object + * can be reused for another operation by calling + * psa_aead_encrypt_setup() or psa_aead_decrypt_setup() again. + * + * You may call this function any time after the operation object has + * been initialized as described in #psa_aead_operation_t. + * + * In particular, calling psa_aead_abort() after the operation has been + * terminated by a call to psa_aead_abort(), psa_aead_finish() or + * psa_aead_verify() is safe and has no effect. + * + * \param[in,out] operation Initialized AEAD operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_aead_abort(psa_aead_operation_t *operation); + +/**@}*/ + +/** \defgroup asymmetric Asymmetric cryptography + * @{ + */ + +/** + * \brief Sign a hash or short message with a private key. + * + * Note that to perform a hash-and-sign signature algorithm, you must + * first calculate the hash by calling psa_hash_setup(), psa_hash_update() + * and psa_hash_finish(). Then pass the resulting hash as the \p hash + * parameter to this function. You can use #PSA_ALG_SIGN_GET_HASH(\p alg) + * to determine the hash algorithm to use. + * + * \param handle Handle to the key to use for the operation. + * It must be an asymmetric key pair. + * \param alg A signature algorithm that is compatible with + * the type of \p handle. + * \param[in] hash The hash or message to sign. + * \param hash_length Size of the \p hash buffer in bytes. + * \param[out] signature Buffer where the signature is to be written. + * \param signature_size Size of the \p signature buffer in bytes. + * \param[out] signature_length On success, the number of bytes + * that make up the returned signature value. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p signature buffer is too small. You can + * determine a sufficient buffer size by calling + * #PSA_SIGN_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) + * where \c key_type and \c key_bits are the type and bit-size + * respectively of \p handle. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_sign_hash(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + uint8_t *signature, + size_t signature_size, + size_t *signature_length); + +/** + * \brief Verify the signature a hash or short message using a public key. + * + * Note that to perform a hash-and-sign signature algorithm, you must + * first calculate the hash by calling psa_hash_setup(), psa_hash_update() + * and psa_hash_finish(). Then pass the resulting hash as the \p hash + * parameter to this function. You can use #PSA_ALG_SIGN_GET_HASH(\p alg) + * to determine the hash algorithm to use. + * + * \param handle Handle to the key to use for the operation. + * It must be a public key or an asymmetric key pair. + * \param alg A signature algorithm that is compatible with + * the type of \p handle. + * \param[in] hash The hash or message whose signature is to be + * verified. + * \param hash_length Size of the \p hash buffer in bytes. + * \param[in] signature Buffer containing the signature to verify. + * \param signature_length Size of the \p signature buffer in bytes. + * + * \retval #PSA_SUCCESS + * The signature is valid. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_SIGNATURE + * The calculation was perfomed successfully, but the passed + * signature is not a valid signature. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_verify_hash(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + const uint8_t *signature, + size_t signature_length); + +/** + * \brief Encrypt a short message with a public key. + * + * \param handle Handle to the key to use for the operation. + * It must be a public key or an asymmetric + * key pair. + * \param alg An asymmetric encryption algorithm that is + * compatible with the type of \p handle. + * \param[in] input The message to encrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[in] salt A salt or label, if supported by the + * encryption algorithm. + * If the algorithm does not support a + * salt, pass \c NULL. + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass \c NULL. + * + * - For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported. + * \param salt_length Size of the \p salt buffer in bytes. + * If \p salt is \c NULL, pass 0. + * \param[out] output Buffer where the encrypted message is to + * be written. + * \param output_size Size of the \p output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. You can + * determine a sufficient buffer size by calling + * #PSA_ASYMMETRIC_ENCRYPT_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) + * where \c key_type and \c key_bits are the type and bit-size + * respectively of \p handle. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_asymmetric_encrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *salt, + size_t salt_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/** + * \brief Decrypt a short message with a private key. + * + * \param handle Handle to the key to use for the operation. + * It must be an asymmetric key pair. + * \param alg An asymmetric encryption algorithm that is + * compatible with the type of \p handle. + * \param[in] input The message to decrypt. + * \param input_length Size of the \p input buffer in bytes. + * \param[in] salt A salt or label, if supported by the + * encryption algorithm. + * If the algorithm does not support a + * salt, pass \c NULL. + * If the algorithm supports an optional + * salt and you do not want to pass a salt, + * pass \c NULL. + * + * - For #PSA_ALG_RSA_PKCS1V15_CRYPT, no salt is + * supported. + * \param salt_length Size of the \p salt buffer in bytes. + * If \p salt is \c NULL, pass 0. + * \param[out] output Buffer where the decrypted message is to + * be written. + * \param output_size Size of the \c output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * The size of the \p output buffer is too small. You can + * determine a sufficient buffer size by calling + * #PSA_ASYMMETRIC_DECRYPT_OUTPUT_SIZE(\c key_type, \c key_bits, \p alg) + * where \c key_type and \c key_bits are the type and bit-size + * respectively of \p handle. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_INVALID_PADDING + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_asymmetric_decrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *salt, + size_t salt_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/**@}*/ + +/** \defgroup key_derivation Key derivation and pseudorandom generation + * @{ + */ + +/** The type of the state data structure for key derivation operations. + * + * Before calling any function on a key derivation operation object, the + * application must initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_key_derivation_operation_t operation; + * memset(&operation, 0, sizeof(operation)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_key_derivation_operation_t operation = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_KEY_DERIVATION_OPERATION_INIT, + * for example: + * \code + * psa_key_derivation_operation_t operation = PSA_KEY_DERIVATION_OPERATION_INIT; + * \endcode + * - Assign the result of the function psa_key_derivation_operation_init() + * to the structure, for example: + * \code + * psa_key_derivation_operation_t operation; + * operation = psa_key_derivation_operation_init(); + * \endcode + * + * This is an implementation-defined \c struct. Applications should not + * make any assumptions about the content of this structure except + * as directed by the documentation of a specific implementation. + */ +typedef struct psa_key_derivation_s psa_key_derivation_operation_t; + +/** \def PSA_KEY_DERIVATION_OPERATION_INIT + * + * This macro returns a suitable initializer for a key derivation operation + * object of type #psa_key_derivation_operation_t. + */ +#ifdef __DOXYGEN_ONLY__ +/* This is an example definition for documentation purposes. + * Implementations should define a suitable value in `crypto_struct.h`. + */ +#define PSA_KEY_DERIVATION_OPERATION_INIT {0} +#endif + +/** Return an initial value for a key derivation operation object. + */ +static psa_key_derivation_operation_t psa_key_derivation_operation_init(void); + +/** Set up a key derivation operation. + * + * A key derivation algorithm takes some inputs and uses them to generate + * a byte stream in a deterministic way. + * This byte stream can be used to produce keys and other + * cryptographic material. + * + * To derive a key: + * -# Start with an initialized object of type #psa_key_derivation_operation_t. + * -# Call psa_key_derivation_setup() to select the algorithm. + * -# Provide the inputs for the key derivation by calling + * psa_key_derivation_input_bytes() or psa_key_derivation_input_key() + * as appropriate. Which inputs are needed, in what order, and whether + * they may be keys and if so of what type depends on the algorithm. + * -# Optionally set the operation's maximum capacity with + * psa_key_derivation_set_capacity(). You may do this before, in the middle + * of or after providing inputs. For some algorithms, this step is mandatory + * because the output depends on the maximum capacity. + * -# To derive a key, call psa_key_derivation_output_key(). + * To derive a byte string for a different purpose, call + * psa_key_derivation_output_bytes(). + * Successive calls to these functions use successive output bytes + * calculated by the key derivation algorithm. + * -# Clean up the key derivation operation object with + * psa_key_derivation_abort(). + * + * If this function returns an error, the key derivation operation object is + * not changed. + * + * If an error occurs at any step after a call to psa_key_derivation_setup(), + * the operation will need to be reset by a call to psa_key_derivation_abort(). + * + * Implementations must reject an attempt to derive a key of size 0. + * + * \param[in,out] operation The key derivation operation object + * to set up. It must + * have been initialized but not set up yet. + * \param alg The key derivation algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_KEY_DERIVATION(\p alg) is true). + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c alg is not a key derivation algorithm. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \c alg is not supported or is not a key derivation algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be inactive). + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_setup( + psa_key_derivation_operation_t *operation, + psa_algorithm_t alg); + +/** Retrieve the current capacity of a key derivation operation. + * + * The capacity of a key derivation is the maximum number of bytes that it can + * return. When you get *N* bytes of output from a key derivation operation, + * this reduces its capacity by *N*. + * + * \param[in] operation The operation to query. + * \param[out] capacity On success, the capacity of the operation. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_get_capacity( + const psa_key_derivation_operation_t *operation, + size_t *capacity); + +/** Set the maximum capacity of a key derivation operation. + * + * The capacity of a key derivation operation is the maximum number of bytes + * that the key derivation operation can return from this point onwards. + * + * \param[in,out] operation The key derivation operation object to modify. + * \param capacity The new capacity of the operation. + * It must be less or equal to the operation's + * current capacity. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p capacity is larger than the operation's current capacity. + * In this case, the operation object remains valid and its capacity + * remains unchanged. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active). + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_set_capacity( + psa_key_derivation_operation_t *operation, + size_t capacity); + +/** Use the maximum possible capacity for a key derivation operation. + * + * Use this value as the capacity argument when setting up a key derivation + * to indicate that the operation should have the maximum possible capacity. + * The value of the maximum possible capacity depends on the key derivation + * algorithm. + */ +#define PSA_KEY_DERIVATION_UNLIMITED_CAPACITY ((size_t)(-1)) + +/** Provide an input for key derivation or key agreement. + * + * Which inputs are required and in what order depends on the algorithm. + * Refer to the documentation of each key derivation or key agreement + * algorithm for information. + * + * This function passes direct inputs, which is usually correct for + * non-secret inputs. To pass a secret input, which should be in a key + * object, call psa_key_derivation_input_key() instead of this function. + * Refer to the documentation of individual step types + * (`PSA_KEY_DERIVATION_INPUT_xxx` values of type ::psa_key_derivation_step_t) + * for more information. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * + * \param[in,out] operation The key derivation operation object to use. + * It must have been set up with + * psa_key_derivation_setup() and must not + * have produced any output yet. + * \param step Which step the input data is for. + * \param[in] data Input data to use. + * \param data_length Size of the \p data buffer in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c step is not compatible with the operation's algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c step does not allow direct inputs. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid for this input \p step. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_input_bytes( + psa_key_derivation_operation_t *operation, + psa_key_derivation_step_t step, + const uint8_t *data, + size_t data_length); + +/** Provide an input for key derivation in the form of a key. + * + * Which inputs are required and in what order depends on the algorithm. + * Refer to the documentation of each key derivation or key agreement + * algorithm for information. + * + * This function obtains input from a key object, which is usually correct for + * secret inputs or for non-secret personalization strings kept in the key + * store. To pass a non-secret parameter which is not in the key store, + * call psa_key_derivation_input_bytes() instead of this function. + * Refer to the documentation of individual step types + * (`PSA_KEY_DERIVATION_INPUT_xxx` values of type ::psa_key_derivation_step_t) + * for more information. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * + * \param[in,out] operation The key derivation operation object to use. + * It must have been set up with + * psa_key_derivation_setup() and must not + * have produced any output yet. + * \param step Which step the input data is for. + * \param handle Handle to the key. It must have an + * appropriate type for \p step and must + * allow the usage #PSA_KEY_USAGE_DERIVE. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c step is not compatible with the operation's algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c step does not allow key inputs of the given type + * or does not allow key inputs at all. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid for this input \p step. + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_input_key( + psa_key_derivation_operation_t *operation, + psa_key_derivation_step_t step, + psa_key_handle_t handle); + +/** Perform a key agreement and use the shared secret as input to a key + * derivation. + * + * A key agreement algorithm takes two inputs: a private key \p private_key + * a public key \p peer_key. + * The result of this function is passed as input to a key derivation. + * The output of this key derivation can be extracted by reading from the + * resulting operation to produce keys and other cryptographic material. + * + * If this function returns an error status, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * + * \param[in,out] operation The key derivation operation object to use. + * It must have been set up with + * psa_key_derivation_setup() with a + * key agreement and derivation algorithm + * \c alg (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_KEY_AGREEMENT(\c alg) is true + * and #PSA_ALG_IS_RAW_KEY_AGREEMENT(\c alg) + * is false). + * The operation must be ready for an + * input of the type given by \p step. + * \param step Which step the input data is for. + * \param private_key Handle to the private key to use. + * \param[in] peer_key Public key of the peer. The peer key must be in the + * same format that psa_import_key() accepts for the + * public key type corresponding to the type of + * private_key. That is, this function performs the + * equivalent of + * #psa_import_key(..., + * `peer_key`, `peer_key_length`) where + * with key attributes indicating the public key + * type corresponding to the type of `private_key`. + * For example, for EC keys, this means that peer_key + * is interpreted as a point on the curve that the + * private key is on. The standard formats for public + * keys are documented in the documentation of + * psa_export_public_key(). + * \param peer_key_length Size of \p peer_key in bytes. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid for this key agreement \p step. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c private_key is not compatible with \c alg, + * or \p peer_key is not valid for \c alg or not compatible with + * \c private_key. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \c alg is not supported or is not a key derivation algorithm. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \c step does not allow an input resulting from a key agreement. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_key_agreement( + psa_key_derivation_operation_t *operation, + psa_key_derivation_step_t step, + psa_key_handle_t private_key, + const uint8_t *peer_key, + size_t peer_key_length); + +/** Read some data from a key derivation operation. + * + * This function calculates output bytes from a key derivation algorithm and + * return those bytes. + * If you view the key derivation's output as a stream of bytes, this + * function destructively reads the requested number of bytes from the + * stream. + * The operation's capacity decreases by the number of bytes read. + * + * If this function returns an error status other than + * #PSA_ERROR_INSUFFICIENT_DATA, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * + * \param[in,out] operation The key derivation operation object to read from. + * \param[out] output Buffer where the output will be written. + * \param output_length Number of bytes to output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_INSUFFICIENT_DATA + * The operation's capacity was less than + * \p output_length bytes. Note that in this case, + * no output is written to the output buffer. + * The operation's capacity is set to 0, thus + * subsequent calls to this function will not + * succeed, even with a smaller output buffer. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active and completed + * all required input steps). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_output_bytes( + psa_key_derivation_operation_t *operation, + uint8_t *output, + size_t output_length); + +/** Derive a key from an ongoing key derivation operation. + * + * This function calculates output bytes from a key derivation algorithm + * and uses those bytes to generate a key deterministically. + * The key's location, usage policy, type and size are taken from + * \p attributes. + * + * If you view the key derivation's output as a stream of bytes, this + * function destructively reads as many bytes as required from the + * stream. + * The operation's capacity decreases by the number of bytes read. + * + * If this function returns an error status other than + * #PSA_ERROR_INSUFFICIENT_DATA, the operation enters an error + * state and must be aborted by calling psa_key_derivation_abort(). + * + * How much output is produced and consumed from the operation, and how + * the key is derived, depends on the key type: + * + * - For key types for which the key is an arbitrary sequence of bytes + * of a given size, this function is functionally equivalent to + * calling #psa_key_derivation_output_bytes + * and passing the resulting output to #psa_import_key. + * However, this function has a security benefit: + * if the implementation provides an isolation boundary then + * the key material is not exposed outside the isolation boundary. + * As a consequence, for these key types, this function always consumes + * exactly (\p bits / 8) bytes from the operation. + * The following key types defined in this specification follow this scheme: + * + * - #PSA_KEY_TYPE_AES; + * - #PSA_KEY_TYPE_ARC4; + * - #PSA_KEY_TYPE_CAMELLIA; + * - #PSA_KEY_TYPE_DERIVE; + * - #PSA_KEY_TYPE_HMAC. + * + * - For ECC keys on a Montgomery elliptic curve + * (#PSA_KEY_TYPE_ECC_KEY_PAIR(\c curve) where \c curve designates a + * Montgomery curve), this function always draws a byte string whose + * length is determined by the curve, and sets the mandatory bits + * accordingly. That is: + * + * - #PSA_ECC_CURVE_CURVE25519: draw a 32-byte string + * and process it as specified in RFC 7748 §5. + * - #PSA_ECC_CURVE_CURVE448: draw a 56-byte string + * and process it as specified in RFC 7748 §5. + * + * - For key types for which the key is represented by a single sequence of + * \p bits bits with constraints as to which bit sequences are acceptable, + * this function draws a byte string of length (\p bits / 8) bytes rounded + * up to the nearest whole number of bytes. If the resulting byte string + * is acceptable, it becomes the key, otherwise the drawn bytes are discarded. + * This process is repeated until an acceptable byte string is drawn. + * The byte string drawn from the operation is interpreted as specified + * for the output produced by psa_export_key(). + * The following key types defined in this specification follow this scheme: + * + * - #PSA_KEY_TYPE_DES. + * Force-set the parity bits, but discard forbidden weak keys. + * For 2-key and 3-key triple-DES, the three keys are generated + * successively (for example, for 3-key triple-DES, + * if the first 8 bytes specify a weak key and the next 8 bytes do not, + * discard the first 8 bytes, use the next 8 bytes as the first key, + * and continue reading output from the operation to derive the other + * two keys). + * - Finite-field Diffie-Hellman keys (#PSA_KEY_TYPE_DH_KEY_PAIR(\c group) + * where \c group designates any Diffie-Hellman group) and + * ECC keys on a Weierstrass elliptic curve + * (#PSA_KEY_TYPE_ECC_KEY_PAIR(\c curve) where \c curve designates a + * Weierstrass curve). + * For these key types, interpret the byte string as integer + * in big-endian order. Discard it if it is not in the range + * [0, *N* - 2] where *N* is the boundary of the private key domain + * (the prime *p* for Diffie-Hellman, the subprime *q* for DSA, + * or the order of the curve's base point for ECC). + * Add 1 to the resulting integer and use this as the private key *x*. + * This method allows compliance to NIST standards, specifically + * the methods titled "key-pair generation by testing candidates" + * in NIST SP 800-56A §5.6.1.1.4 for Diffie-Hellman, + * in FIPS 186-4 §B.1.2 for DSA, and + * in NIST SP 800-56A §5.6.1.2.2 or + * FIPS 186-4 §B.4.2 for elliptic curve keys. + * + * - For other key types, including #PSA_KEY_TYPE_RSA_KEY_PAIR, + * the way in which the operation output is consumed is + * implementation-defined. + * + * In all cases, the data that is read is discarded from the operation. + * The operation's capacity is decreased by the number of bytes read. + * + * For algorithms that take an input step #PSA_KEY_DERIVATION_INPUT_SECRET, + * the input to that step must be provided with psa_key_derivation_input_key(). + * Future versions of this specification may include additional restrictions + * on the derived key based on the attributes and strength of the secret key. + * + * \param[in] attributes The attributes for the new key. + * \param[in,out] operation The key derivation operation object to read from. + * \param[out] handle On success, a handle to the newly created key. + * \c 0 on failure. + * + * \retval #PSA_SUCCESS + * Success. + * If the key is persistent, the key material and the key's metadata + * have been saved to persistent storage. + * \retval #PSA_ERROR_ALREADY_EXISTS + * This is an attempt to create a persistent key, and there is + * already a persistent key with the given identifier. + * \retval #PSA_ERROR_INSUFFICIENT_DATA + * There was not enough data to create the desired key. + * Note that in this case, no output is written to the output buffer. + * The operation's capacity is set to 0, thus subsequent calls to + * this function will not succeed, even with a smaller output buffer. + * \retval #PSA_ERROR_NOT_SUPPORTED + * The key type or key size is not supported, either by the + * implementation in general or in this particular location. + * \retval #PSA_ERROR_INVALID_ARGUMENT + * The provided key attributes are not valid for the operation. + * \retval #PSA_ERROR_NOT_PERMITTED + * The #PSA_KEY_DERIVATION_INPUT_SECRET input was not provided through + * a key. + * \retval #PSA_ERROR_BAD_STATE + * The operation state is not valid (it must be active and completed + * all required input steps). + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_output_key( + const psa_key_attributes_t *attributes, + psa_key_derivation_operation_t *operation, + psa_key_handle_t *handle); + +/** Abort a key derivation operation. + * + * Aborting an operation frees all associated resources except for the \c + * operation structure itself. Once aborted, the operation object can be reused + * for another operation by calling psa_key_derivation_setup() again. + * + * This function may be called at any time after the operation + * object has been initialized as described in #psa_key_derivation_operation_t. + * + * In particular, it is valid to call psa_key_derivation_abort() twice, or to + * call psa_key_derivation_abort() on an operation that has not been set up. + * + * \param[in,out] operation The operation to abort. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_key_derivation_abort( + psa_key_derivation_operation_t *operation); + +/** Perform a key agreement and return the raw shared secret. + * + * \warning The raw result of a key agreement algorithm such as finite-field + * Diffie-Hellman or elliptic curve Diffie-Hellman has biases and should + * not be used directly as key material. It should instead be passed as + * input to a key derivation algorithm. To chain a key agreement with + * a key derivation, use psa_key_derivation_key_agreement() and other + * functions from the key derivation interface. + * + * \param alg The key agreement algorithm to compute + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_RAW_KEY_AGREEMENT(\p alg) + * is true). + * \param private_key Handle to the private key to use. + * \param[in] peer_key Public key of the peer. It must be + * in the same format that psa_import_key() + * accepts. The standard formats for public + * keys are documented in the documentation + * of psa_export_public_key(). + * \param peer_key_length Size of \p peer_key in bytes. + * \param[out] output Buffer where the decrypted message is to + * be written. + * \param output_size Size of the \c output buffer in bytes. + * \param[out] output_length On success, the number of bytes + * that make up the returned output. + * + * \retval #PSA_SUCCESS + * Success. + * \retval #PSA_ERROR_INVALID_HANDLE + * \retval #PSA_ERROR_NOT_PERMITTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p alg is not a key agreement algorithm + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \p private_key is not compatible with \p alg, + * or \p peer_key is not valid for \p alg or not compatible with + * \p private_key. + * \retval #PSA_ERROR_BUFFER_TOO_SMALL + * \p output_size is too small + * \retval #PSA_ERROR_NOT_SUPPORTED + * \p alg is not a supported key agreement algorithm. + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_raw_key_agreement(psa_algorithm_t alg, + psa_key_handle_t private_key, + const uint8_t *peer_key, + size_t peer_key_length, + uint8_t *output, + size_t output_size, + size_t *output_length); + +/**@}*/ + +/** \defgroup random Random generation + * @{ + */ + +/** + * \brief Generate random bytes. + * + * \warning This function **can** fail! Callers MUST check the return status + * and MUST NOT use the content of the output buffer if the return + * status is not #PSA_SUCCESS. + * + * \note To generate a key, use psa_generate_key() instead. + * + * \param[out] output Output buffer for the generated data. + * \param output_size Number of bytes to generate and output. + * + * \retval #PSA_SUCCESS + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_generate_random(uint8_t *output, + size_t output_size); + +/** + * \brief Generate a key or key pair. + * + * The key is generated randomly. + * Its location, usage policy, type and size are taken from \p attributes. + * + * Implementations must reject an attempt to generate a key of size 0. + * + * The following type-specific considerations apply: + * - For RSA keys (#PSA_KEY_TYPE_RSA_KEY_PAIR), + * the public exponent is 65537. + * The modulus is a product of two probabilistic primes + * between 2^{n-1} and 2^n where n is the bit size specified in the + * attributes. + * + * \param[in] attributes The attributes for the new key. + * \param[out] handle On success, a handle to the newly created key. + * \c 0 on failure. + * + * \retval #PSA_SUCCESS + * Success. + * If the key is persistent, the key material and the key's metadata + * have been saved to persistent storage. + * \retval #PSA_ERROR_ALREADY_EXISTS + * This is an attempt to create a persistent key, and there is + * already a persistent key with the given identifier. + * \retval #PSA_ERROR_NOT_SUPPORTED + * \retval #PSA_ERROR_INVALID_ARGUMENT + * \retval #PSA_ERROR_INSUFFICIENT_MEMORY + * \retval #PSA_ERROR_INSUFFICIENT_ENTROPY + * \retval #PSA_ERROR_COMMUNICATION_FAILURE + * \retval #PSA_ERROR_HARDWARE_FAILURE + * \retval #PSA_ERROR_CORRUPTION_DETECTED + * \retval #PSA_ERROR_INSUFFICIENT_STORAGE + * \retval #PSA_ERROR_STORAGE_FAILURE + * \retval #PSA_ERROR_BAD_STATE + * The library has not been previously initialized by psa_crypto_init(). + * It is implementation-dependent whether a failure to initialize + * results in this error code. + */ +psa_status_t psa_generate_key(const psa_key_attributes_t *attributes, + psa_key_handle_t *handle); + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +/* The file "crypto_sizes.h" contains definitions for size calculation + * macros whose definitions are implementation-specific. */ +#include "psa/crypto_sizes.h" + +/* The file "crypto_struct.h" contains definitions for + * implementation-specific structs that are declared above. */ +#include "psa/crypto_struct.h" + +/* The file "crypto_extra.h" contains vendor-specific definitions. This + * can include vendor-defined algorithms, extra functions, etc. */ +#include "psa/crypto_extra.h" + +#endif /* PSA_CRYPTO_H */ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_compat.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_compat.h new file mode 100644 index 0000000000..518008b8a7 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_compat.h @@ -0,0 +1,111 @@ +/** + * \file psa/crypto_compat.h + * + * \brief PSA cryptography module: Backward compatibility aliases + * + * This header declares alternative names for macro and functions. + * New application code should not use these names. + * These names may be removed in a future version of Mbed Crypto. + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + */ +/* + * Copyright (C) 2019-2020, ARM Limited, All Rights Reserved + * SPDX-License-Identifier: Apache-2.0 + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * This file is part of mbed TLS (https://tls.mbed.org) + */ + +#ifndef PSA_CRYPTO_COMPAT_H +#define PSA_CRYPTO_COMPAT_H + +#ifdef __cplusplus +extern "C" { +#endif + +#if !defined(MBEDTLS_DEPRECATED_REMOVED) + +/* + * Mechanism for declaring deprecated values + */ +#if defined(MBEDTLS_DEPRECATED_WARNING) && !defined(MBEDTLS_PSA_DEPRECATED) +#define MBEDTLS_PSA_DEPRECATED __attribute__((deprecated)) +#else +#define MBEDTLS_PSA_DEPRECATED +#endif + +typedef MBEDTLS_PSA_DEPRECATED size_t mbedtls_deprecated_size_t; +typedef MBEDTLS_PSA_DEPRECATED psa_status_t mbedtls_deprecated_psa_status_t; +typedef MBEDTLS_PSA_DEPRECATED psa_key_usage_t mbedtls_deprecated_psa_key_usage_t; + +#define MBEDTLS_DEPRECATED_CONSTANT( type, value ) \ + ( (mbedtls_deprecated_##type) ( value ) ) + +/* + * Deprecated PSA Crypto error code definitions (PSA Crypto API <= 1.0 beta2) + */ +#define PSA_ERROR_UNKNOWN_ERROR \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_GENERIC_ERROR ) +#define PSA_ERROR_OCCUPIED_SLOT \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_ALREADY_EXISTS ) +#define PSA_ERROR_EMPTY_SLOT \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_DOES_NOT_EXIST ) +#define PSA_ERROR_INSUFFICIENT_CAPACITY \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_INSUFFICIENT_DATA ) +#define PSA_ERROR_TAMPERING_DETECTED \ + MBEDTLS_DEPRECATED_CONSTANT( psa_status_t, PSA_ERROR_CORRUPTION_DETECTED ) + +/* + * Deprecated PSA Crypto numerical encodings (PSA Crypto API <= 1.0 beta3) + */ +#define PSA_KEY_USAGE_SIGN \ + MBEDTLS_DEPRECATED_CONSTANT( psa_key_usage_t, PSA_KEY_USAGE_SIGN_HASH ) +#define PSA_KEY_USAGE_VERIFY \ + MBEDTLS_DEPRECATED_CONSTANT( psa_key_usage_t, PSA_KEY_USAGE_VERIFY_HASH ) + +/* + * Deprecated PSA Crypto size calculation macros (PSA Crypto API <= 1.0 beta3) + */ +#define PSA_ASYMMETRIC_SIGNATURE_MAX_SIZE \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_SIGNATURE_MAX_SIZE ) +#define PSA_ASYMMETRIC_SIGN_OUTPUT_SIZE( key_type, key_bits, alg ) \ + MBEDTLS_DEPRECATED_CONSTANT( size_t, PSA_SIGN_OUTPUT_SIZE( key_type, key_bits, alg ) ) + +/* + * Deprecated PSA Crypto function names (PSA Crypto API <= 1.0 beta3) + */ +MBEDTLS_PSA_DEPRECATED psa_status_t psa_asymmetric_sign( psa_key_handle_t key, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + uint8_t *signature, + size_t signature_size, + size_t *signature_length ); + +MBEDTLS_PSA_DEPRECATED psa_status_t psa_asymmetric_verify( psa_key_handle_t key, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + const uint8_t *signature, + size_t signature_length ); + +#endif /* MBEDTLS_DEPRECATED_REMOVED */ + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_COMPAT_H */ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_extra.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_extra.h new file mode 100644 index 0000000000..33c9c0537a --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_extra.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2018-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +/** + * \file psa/crypto_extra.h + * + * \brief PSA cryptography module: vendor extensions + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + * + * This file is reserved for vendor-specific definitions. + */ + +#ifndef PSA_CRYPTO_EXTRA_H +#define PSA_CRYPTO_EXTRA_H + +#include "psa/crypto_compat.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** \brief Declare the enrollment algorithm for a key. + * + * An operation on a key may indifferently use the algorithm set with + * psa_set_key_algorithm() or with this function. + * + * \param[out] attributes The attribute structure to write to. + * \param alg2 A second algorithm that the key may be used + * for, in addition to the algorithm set with + * psa_set_key_algorithm(). + * + * \warning Setting an enrollment algorithm is not recommended, because + * using the same key with different algorithms can allow some + * attacks based on arithmetic relations between different + * computations made with the same key, or can escalate harmless + * side channels into exploitable ones. Use this function only + * if it is necessary to support a protocol for which it has been + * verified that the usage of the key with multiple algorithms + * is safe. + */ +static inline void psa_set_key_enrollment_algorithm( + psa_key_attributes_t *attributes, + psa_algorithm_t alg2) +{ + attributes->core.policy.alg2 = alg2; +} + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_CRYPTO_EXTRA_H */ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_platform.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_platform.h new file mode 100644 index 0000000000..c3120e485b --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_platform.h @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2018-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +/** + * \file psa/crypto_platform.h + * + * \brief PSA cryptography module: Mbed TLS platform definitions + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + * + * This file contains platform-dependent type definitions. + * + * In implementations with isolation between the application and the + * cryptography module, implementers should take care to ensure that + * the definitions that are exposed to applications match what the + * module implements. + */ + +#ifndef PSA_CRYPTO_PLATFORM_H +#define PSA_CRYPTO_PLATFORM_H + +/* PSA requires several types which C99 provides in stdint.h. */ +#include + +/* Integral type representing a key handle. */ +typedef uint16_t psa_key_handle_t; + +/* This implementation distinguishes *application key identifiers*, which + * are the key identifiers specified by the application, from + * *key file identifiers*, which are the key identifiers that the library + * sees internally. The two types can be different if there is a remote + * call layer between the application and the library which supports + * multiple client applications that do not have access to each others' + * keys. The point of having different types is that the key file + * identifier may encode not only the key identifier specified by the + * application, but also the the identity of the application. + * + * Note that this is an internal concept of the library and the remote + * call layer. The application itself never sees anything other than + * #psa_app_key_id_t with its standard definition. + */ + +/* The application key identifier is always what the application sees as + * #psa_key_id_t. */ +typedef uint32_t psa_app_key_id_t; + +#endif /* PSA_CRYPTO_PLATFORM_H */ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_sizes.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_sizes.h new file mode 100644 index 0000000000..4f67501b56 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_sizes.h @@ -0,0 +1,650 @@ +/* + * Copyright (c) 2018-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +/** + * \file psa/crypto_sizes.h + * + * \brief PSA cryptography module: Mbed TLS buffer size macros + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. + * + * This file contains the definitions of macros that are useful to + * compute buffer sizes. The signatures and semantics of these macros + * are standardized, but the definitions are not, because they depend on + * the available algorithms and, in some cases, on permitted tolerances + * on buffer sizes. + * + * In implementations with isolation between the application and the + * cryptography module, implementers should take care to ensure that + * the definitions that are exposed to applications match what the + * module implements. + * + * Macros that compute sizes whose values do not depend on the + * implementation are in crypto.h. + */ + +#ifndef PSA_CRYPTO_SIZES_H +#define PSA_CRYPTO_SIZES_H + +#define PSA_BITS_TO_BYTES(bits) (((bits) + 7) / 8) +#define PSA_BYTES_TO_BITS(bytes) ((bytes) * 8) + +#define PSA_ROUND_UP_TO_MULTIPLE(block_size, length) \ + (((length) + (block_size) - 1) / (block_size) * (block_size)) + +/** The size of the output of psa_hash_finish(), in bytes. + * + * This is also the hash size that psa_hash_verify() expects. + * + * \param alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p alg) is true), or an HMAC algorithm + * (#PSA_ALG_HMAC(\c hash_alg) where \c hash_alg is a + * hash algorithm). + * + * \return The hash size for the specified hash algorithm. + * If the hash algorithm is not recognized, return 0. + * An implementation may return either 0 or the correct size + * for a hash algorithm that it recognizes, but does not support. + */ +#define PSA_HASH_SIZE(alg) \ + ( \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD2 ? 16 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD4 ? 16 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_MD5 ? 16 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_RIPEMD160 ? 20 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_1 ? 20 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_224 ? 28 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_256 ? 32 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_384 ? 48 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512 ? 64 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_224 ? 28 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA_512_256 ? 32 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_224 ? 28 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_256 ? 32 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_384 ? 48 : \ + PSA_ALG_HMAC_GET_HASH(alg) == PSA_ALG_SHA3_512 ? 64 : \ + 0) + +/** \def PSA_HASH_MAX_SIZE + * + * Maximum size of a hash. + * + * This macro must expand to a compile-time constant integer. This value + * should be the maximum size of a hash supported by the implementation, + * in bytes, and must be no smaller than this maximum. + */ +/* Note: for HMAC-SHA-3, the block size is 144 bytes for HMAC-SHA3-226, + * 136 bytes for HMAC-SHA3-256, 104 bytes for SHA3-384, 72 bytes for + * HMAC-SHA3-512. */ +#define PSA_HASH_MAX_SIZE 64 +#define PSA_HMAC_MAX_HASH_BLOCK_SIZE 128 + +/** \def PSA_MAC_MAX_SIZE + * + * Maximum size of a MAC. + * + * This macro must expand to a compile-time constant integer. This value + * should be the maximum size of a MAC supported by the implementation, + * in bytes, and must be no smaller than this maximum. + */ +/* All non-HMAC MACs have a maximum size that's smaller than the + * minimum possible value of PSA_HASH_MAX_SIZE in this implementation. */ +/* Note that the encoding of truncated MAC algorithms limits this value + * to 64 bytes. + */ +#define PSA_MAC_MAX_SIZE PSA_HASH_MAX_SIZE + +/** The tag size for an AEAD algorithm, in bytes. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \return The tag size for the specified algorithm. + * If the AEAD algorithm does not have an identified + * tag that can be distinguished from the rest of + * the ciphertext, return 0. + * If the AEAD algorithm is not recognized, return 0. + * An implementation may return either 0 or a + * correct size for an AEAD algorithm that it + * recognizes, but does not support. + */ +#define PSA_AEAD_TAG_LENGTH(alg) \ + (PSA_ALG_IS_AEAD(alg) ? \ + (((alg) & PSA_ALG_AEAD_TAG_LENGTH_MASK) >> PSA_AEAD_TAG_LENGTH_OFFSET) : \ + 0) + +/* The maximum size of an RSA key on this implementation, in bits. + * This is a vendor-specific macro. + * + * Mbed TLS does not set a hard limit on the size of RSA keys: any key + * whose parameters fit in a bignum is accepted. However large keys can + * induce a large memory usage and long computation times. Unlike other + * auxiliary macros in this file and in crypto.h, which reflect how the + * library is configured, this macro defines how the library is + * configured. This implementation refuses to import or generate an + * RSA key whose size is larger than the value defined here. + * + * Note that an implementation may set different size limits for different + * operations, and does not need to accept all key sizes up to the limit. */ +#define PSA_VENDOR_RSA_MAX_KEY_BITS 4096 + +/* The maximum size of an ECC key on this implementation, in bits. + * This is a vendor-specific macro. */ +#define PSA_VENDOR_ECC_MAX_CURVE_BITS 521 + +/** Bit size associated with an elliptic curve. + * + * \param curve An elliptic curve (value of type #psa_ecc_curve_t). + * + * \return The size associated with \p curve, in bits. + * This may be 0 if the implementation does not support + * the specified curve. + */ +#define PSA_ECC_CURVE_BITS(curve) \ + ((curve) == PSA_ECC_CURVE_SECT163K1 ? 163 : \ + (curve) == PSA_ECC_CURVE_SECT163R1 ? 163 : \ + (curve) == PSA_ECC_CURVE_SECT163R2 ? 163 : \ + (curve) == PSA_ECC_CURVE_SECT193R1 ? 193 : \ + (curve) == PSA_ECC_CURVE_SECT193R2 ? 193 : \ + (curve) == PSA_ECC_CURVE_SECT233K1 ? 233 : \ + (curve) == PSA_ECC_CURVE_SECT233R1 ? 233 : \ + (curve) == PSA_ECC_CURVE_SECT239K1 ? 239 : \ + (curve) == PSA_ECC_CURVE_SECT283K1 ? 283 : \ + (curve) == PSA_ECC_CURVE_SECT283R1 ? 283 : \ + (curve) == PSA_ECC_CURVE_SECT409K1 ? 409 : \ + (curve) == PSA_ECC_CURVE_SECT409R1 ? 409 : \ + (curve) == PSA_ECC_CURVE_SECT571K1 ? 571 : \ + (curve) == PSA_ECC_CURVE_SECT571R1 ? 571 : \ + (curve) == PSA_ECC_CURVE_SECP160K1 ? 160 : \ + (curve) == PSA_ECC_CURVE_SECP160R1 ? 160 : \ + (curve) == PSA_ECC_CURVE_SECP160R2 ? 160 : \ + (curve) == PSA_ECC_CURVE_SECP192K1 ? 192 : \ + (curve) == PSA_ECC_CURVE_SECP192R1 ? 192 : \ + (curve) == PSA_ECC_CURVE_SECP224K1 ? 224 : \ + (curve) == PSA_ECC_CURVE_SECP224R1 ? 224 : \ + (curve) == PSA_ECC_CURVE_SECP256K1 ? 256 : \ + (curve) == PSA_ECC_CURVE_SECP256R1 ? 256 : \ + (curve) == PSA_ECC_CURVE_SECP384R1 ? 384 : \ + (curve) == PSA_ECC_CURVE_SECP521R1 ? 521 : \ + (curve) == PSA_ECC_CURVE_BRAINPOOL_P256R1 ? 256 : \ + (curve) == PSA_ECC_CURVE_BRAINPOOL_P384R1 ? 384 : \ + (curve) == PSA_ECC_CURVE_BRAINPOOL_P512R1 ? 512 : \ + (curve) == PSA_ECC_CURVE_CURVE25519 ? 255 : \ + (curve) == PSA_ECC_CURVE_CURVE448 ? 448 : \ + 0) + +/** \def PSA_ALG_TLS12_PSK_TO_MS_MAX_PSK_LEN + * + * This macro returns the maximum length of the PSK supported + * by the TLS-1.2 PSK-to-MS key derivation. + * + * Quoting RFC 4279, Sect 5.3: + * TLS implementations supporting these ciphersuites MUST support + * arbitrary PSK identities up to 128 octets in length, and arbitrary + * PSKs up to 64 octets in length. Supporting longer identities and + * keys is RECOMMENDED. + * + * Therefore, no implementation should define a value smaller than 64 + * for #PSA_ALG_TLS12_PSK_TO_MS_MAX_PSK_LEN. + */ +#define PSA_ALG_TLS12_PSK_TO_MS_MAX_PSK_LEN 128 + +/** The maximum size of a block cipher supported by the implementation. */ +#define PSA_MAX_BLOCK_CIPHER_BLOCK_SIZE 16 + +/** The size of the output of psa_mac_sign_finish(), in bytes. + * + * This is also the MAC size that psa_mac_verify_finish() expects. + * + * \param key_type The type of the MAC key. + * \param key_bits The size of the MAC key in bits. + * \param alg A MAC algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_MAC(\p alg) is true). + * + * \return The MAC size for the specified algorithm with + * the specified key parameters. + * \return 0 if the MAC algorithm is not recognized. + * \return Either 0 or the correct size for a MAC algorithm that + * the implementation recognizes, but does not support. + * \return Unspecified if the key parameters are not consistent + * with the algorithm. + */ +#define PSA_MAC_FINAL_SIZE(key_type, key_bits, alg) \ + ((alg) & PSA_ALG_MAC_TRUNCATION_MASK ? PSA_MAC_TRUNCATED_LENGTH(alg) : \ + PSA_ALG_IS_HMAC(alg) ? PSA_HASH_SIZE(PSA_ALG_HMAC_GET_HASH(alg)) : \ + PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) ? PSA_BLOCK_CIPHER_BLOCK_SIZE(key_type) : \ + ((void)(key_type), (void)(key_bits), 0)) + +/** The maximum size of the output of psa_aead_encrypt(), in bytes. + * + * If the size of the ciphertext buffer is at least this large, it is + * guaranteed that psa_aead_encrypt() will not fail due to an + * insufficient buffer size. Depending on the algorithm, the actual size of + * the ciphertext may be smaller. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param plaintext_length Size of the plaintext in bytes. + * + * \return The AEAD ciphertext size for the specified + * algorithm. + * If the AEAD algorithm is not recognized, return 0. + * An implementation may return either 0 or a + * correct size for an AEAD algorithm that it + * recognizes, but does not support. + */ +#define PSA_AEAD_ENCRYPT_OUTPUT_SIZE(alg, plaintext_length) \ + (PSA_AEAD_TAG_LENGTH(alg) != 0 ? \ + (plaintext_length) + PSA_AEAD_TAG_LENGTH(alg) : \ + 0) + +/** The maximum size of the output of psa_aead_decrypt(), in bytes. + * + * If the size of the plaintext buffer is at least this large, it is + * guaranteed that psa_aead_decrypt() will not fail due to an + * insufficient buffer size. Depending on the algorithm, the actual size of + * the plaintext may be smaller. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param ciphertext_length Size of the plaintext in bytes. + * + * \return The AEAD ciphertext size for the specified + * algorithm. + * If the AEAD algorithm is not recognized, return 0. + * An implementation may return either 0 or a + * correct size for an AEAD algorithm that it + * recognizes, but does not support. + */ +#define PSA_AEAD_DECRYPT_OUTPUT_SIZE(alg, ciphertext_length) \ + (PSA_AEAD_TAG_LENGTH(alg) != 0 ? \ + (ciphertext_length) - PSA_AEAD_TAG_LENGTH(alg) : \ + 0) + +/** A sufficient output buffer size for psa_aead_update(). + * + * If the size of the output buffer is at least this large, it is + * guaranteed that psa_aead_update() will not fail due to an + * insufficient buffer size. The actual size of the output may be smaller + * in any given call. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * \param input_length Size of the input in bytes. + * + * \return A sufficient output buffer size for the specified + * algorithm. + * If the AEAD algorithm is not recognized, return 0. + * An implementation may return either 0 or a + * correct size for an AEAD algorithm that it + * recognizes, but does not support. + */ +/* For all the AEAD modes defined in this specification, it is possible + * to emit output without delay. However, hardware may not always be + * capable of this. So for modes based on a block cipher, allow the + * implementation to delay the output until it has a full block. */ +#define PSA_AEAD_UPDATE_OUTPUT_SIZE(alg, input_length) \ + (PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \ + PSA_ROUND_UP_TO_MULTIPLE(PSA_MAX_BLOCK_CIPHER_BLOCK_SIZE, (input_length)) : \ + (input_length)) + +/** A sufficient ciphertext buffer size for psa_aead_finish(). + * + * If the size of the ciphertext buffer is at least this large, it is + * guaranteed that psa_aead_finish() will not fail due to an + * insufficient ciphertext buffer size. The actual size of the output may + * be smaller in any given call. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \return A sufficient ciphertext buffer size for the + * specified algorithm. + * If the AEAD algorithm is not recognized, return 0. + * An implementation may return either 0 or a + * correct size for an AEAD algorithm that it + * recognizes, but does not support. + */ +#define PSA_AEAD_FINISH_OUTPUT_SIZE(alg) \ + (PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \ + PSA_MAX_BLOCK_CIPHER_BLOCK_SIZE : \ + 0) + +/** A sufficient plaintext buffer size for psa_aead_verify(). + * + * If the size of the plaintext buffer is at least this large, it is + * guaranteed that psa_aead_verify() will not fail due to an + * insufficient plaintext buffer size. The actual size of the output may + * be smaller in any given call. + * + * \param alg An AEAD algorithm + * (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \return A sufficient plaintext buffer size for the + * specified algorithm. + * If the AEAD algorithm is not recognized, return 0. + * An implementation may return either 0 or a + * correct size for an AEAD algorithm that it + * recognizes, but does not support. + */ +#define PSA_AEAD_VERIFY_OUTPUT_SIZE(alg) \ + (PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) ? \ + PSA_MAX_BLOCK_CIPHER_BLOCK_SIZE : \ + 0) + +#define PSA_RSA_MINIMUM_PADDING_SIZE(alg) \ + (PSA_ALG_IS_RSA_OAEP(alg) ? \ + 2 * PSA_HASH_SIZE(PSA_ALG_RSA_OAEP_GET_HASH(alg)) + 1 : \ + 11 /*PKCS#1v1.5*/) + +/** + * \brief ECDSA signature size for a given curve bit size + * + * \param curve_bits Curve size in bits. + * \return Signature size in bytes. + * + * \note This macro returns a compile-time constant if its argument is one. + */ +#define PSA_ECDSA_SIGNATURE_SIZE(curve_bits) \ + (PSA_BITS_TO_BYTES(curve_bits) * 2) + +/** Sufficient signature buffer size for psa_sign_hash(). + * + * This macro returns a sufficient buffer size for a signature using a key + * of the specified type and size, with the specified algorithm. + * Note that the actual size of the signature may be smaller + * (some algorithms produce a variable-size signature). + * + * \warning This function may call its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param key_type An asymmetric key type (this may indifferently be a + * key pair type or a public key type). + * \param key_bits The size of the key in bits. + * \param alg The signature algorithm. + * + * \return If the parameters are valid and supported, return + * a buffer size in bytes that guarantees that + * psa_sign_hash() will not fail with + * #PSA_ERROR_BUFFER_TOO_SMALL. + * If the parameters are a valid combination that is not supported + * by the implementation, this macro shall return either a + * sensible size or 0. + * If the parameters are not valid, the + * return value is unspecified. + */ +#define PSA_SIGN_OUTPUT_SIZE(key_type, key_bits, alg) \ + (PSA_KEY_TYPE_IS_RSA(key_type) ? ((void)alg, PSA_BITS_TO_BYTES(key_bits)) : \ + PSA_KEY_TYPE_IS_ECC(key_type) ? PSA_ECDSA_SIGNATURE_SIZE(key_bits) : \ + ((void)alg, 0)) + +#define PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE \ + PSA_ECDSA_SIGNATURE_SIZE(PSA_VENDOR_ECC_MAX_CURVE_BITS) + +/** \def PSA_SIGNATURE_MAX_SIZE + * + * Maximum size of an asymmetric signature. + * + * This macro must expand to a compile-time constant integer. This value + * should be the maximum size of a signature supported by the implementation, + * in bytes, and must be no smaller than this maximum. + */ +#define PSA_SIGNATURE_MAX_SIZE \ + (PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS) > PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE ? \ + PSA_BITS_TO_BYTES(PSA_VENDOR_RSA_MAX_KEY_BITS) : \ + PSA_VENDOR_ECDSA_SIGNATURE_MAX_SIZE) + +/** Sufficient output buffer size for psa_asymmetric_encrypt(). + * + * This macro returns a sufficient buffer size for a ciphertext produced using + * a key of the specified type and size, with the specified algorithm. + * Note that the actual size of the ciphertext may be smaller, depending + * on the algorithm. + * + * \warning This function may call its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param key_type An asymmetric key type (this may indifferently be a + * key pair type or a public key type). + * \param key_bits The size of the key in bits. + * \param alg The signature algorithm. + * + * \return If the parameters are valid and supported, return + * a buffer size in bytes that guarantees that + * psa_asymmetric_encrypt() will not fail with + * #PSA_ERROR_BUFFER_TOO_SMALL. + * If the parameters are a valid combination that is not supported + * by the implementation, this macro shall return either a + * sensible size or 0. + * If the parameters are not valid, the + * return value is unspecified. + */ +#define PSA_ASYMMETRIC_ENCRYPT_OUTPUT_SIZE(key_type, key_bits, alg) \ + (PSA_KEY_TYPE_IS_RSA(key_type) ? \ + ((void)alg, PSA_BITS_TO_BYTES(key_bits)) : \ + 0) + +/** Sufficient output buffer size for psa_asymmetric_decrypt(). + * + * This macro returns a sufficient buffer size for a ciphertext produced using + * a key of the specified type and size, with the specified algorithm. + * Note that the actual size of the ciphertext may be smaller, depending + * on the algorithm. + * + * \warning This function may call its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * \param key_type An asymmetric key type (this may indifferently be a + * key pair type or a public key type). + * \param key_bits The size of the key in bits. + * \param alg The signature algorithm. + * + * \return If the parameters are valid and supported, return + * a buffer size in bytes that guarantees that + * psa_asymmetric_decrypt() will not fail with + * #PSA_ERROR_BUFFER_TOO_SMALL. + * If the parameters are a valid combination that is not supported + * by the implementation, this macro shall return either a + * sensible size or 0. + * If the parameters are not valid, the + * return value is unspecified. + */ +#define PSA_ASYMMETRIC_DECRYPT_OUTPUT_SIZE(key_type, key_bits, alg) \ + (PSA_KEY_TYPE_IS_RSA(key_type) ? \ + PSA_BITS_TO_BYTES(key_bits) - PSA_RSA_MINIMUM_PADDING_SIZE(alg) : \ + 0) + +/* Maximum size of the ASN.1 encoding of an INTEGER with the specified + * number of bits. + * + * This definition assumes that bits <= 2^19 - 9 so that the length field + * is at most 3 bytes. The length of the encoding is the length of the + * bit string padded to a whole number of bytes plus: + * - 1 type byte; + * - 1 to 3 length bytes; + * - 0 to 1 bytes of leading 0 due to the sign bit. + */ +#define PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(bits) \ + ((bits) / 8 + 5) + +/* Maximum size of the export encoding of an RSA public key. + * Assumes that the public exponent is less than 2^32. + * + * RSAPublicKey ::= SEQUENCE { + * modulus INTEGER, -- n + * publicExponent INTEGER } -- e + * + * - 4 bytes of SEQUENCE overhead; + * - n : INTEGER; + * - 7 bytes for the public exponent. + */ +#define PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) \ + (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) + 11) + +/* Maximum size of the export encoding of an RSA key pair. + * Assumes thatthe public exponent is less than 2^32 and that the size + * difference between the two primes is at most 1 bit. + * + * RSAPrivateKey ::= SEQUENCE { + * version Version, -- 0 + * modulus INTEGER, -- N-bit + * publicExponent INTEGER, -- 32-bit + * privateExponent INTEGER, -- N-bit + * prime1 INTEGER, -- N/2-bit + * prime2 INTEGER, -- N/2-bit + * exponent1 INTEGER, -- N/2-bit + * exponent2 INTEGER, -- N/2-bit + * coefficient INTEGER, -- N/2-bit + * } + * + * - 4 bytes of SEQUENCE overhead; + * - 3 bytes of version; + * - 7 half-size INTEGERs plus 2 full-size INTEGERs, + * overapproximated as 9 half-size INTEGERS; + * - 7 bytes for the public exponent. + */ +#define PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(key_bits) \ + (9 * PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE((key_bits) / 2 + 1) + 14) + +/* Maximum size of the export encoding of a DSA public key. + * + * SubjectPublicKeyInfo ::= SEQUENCE { + * algorithm AlgorithmIdentifier, + * subjectPublicKey BIT STRING } -- contains DSAPublicKey + * AlgorithmIdentifier ::= SEQUENCE { + * algorithm OBJECT IDENTIFIER, + * parameters Dss-Parms } -- SEQUENCE of 3 INTEGERs + * DSAPublicKey ::= INTEGER -- public key, Y + * + * - 3 * 4 bytes of SEQUENCE overhead; + * - 1 + 1 + 7 bytes of algorithm (DSA OID); + * - 4 bytes of BIT STRING overhead; + * - 3 full-size INTEGERs (p, g, y); + * - 1 + 1 + 32 bytes for 1 sub-size INTEGER (q <= 256 bits). + */ +#define PSA_KEY_EXPORT_DSA_PUBLIC_KEY_MAX_SIZE(key_bits) \ + (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) * 3 + 59) + +/* Maximum size of the export encoding of a DSA key pair. + * + * DSAPrivateKey ::= SEQUENCE { + * version Version, -- 0 + * prime INTEGER, -- p + * subprime INTEGER, -- q + * generator INTEGER, -- g + * public INTEGER, -- y + * private INTEGER, -- x + * } + * + * - 4 bytes of SEQUENCE overhead; + * - 3 bytes of version; + * - 3 full-size INTEGERs (p, g, y); + * - 2 * (1 + 1 + 32) bytes for 2 sub-size INTEGERs (q, x <= 256 bits). + */ +#define PSA_KEY_EXPORT_DSA_KEY_PAIR_MAX_SIZE(key_bits) \ + (PSA_KEY_EXPORT_ASN1_INTEGER_MAX_SIZE(key_bits) * 3 + 75) + +/* Maximum size of the export encoding of an ECC public key. + * + * The representation of an ECC public key is: + * - The byte 0x04; + * - `x_P` as a `ceiling(m/8)`-byte string, big-endian; + * - `y_P` as a `ceiling(m/8)`-byte string, big-endian; + * - where m is the bit size associated with the curve. + * + * - 1 byte + 2 * point size. + */ +#define PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_bits) \ + (2 * PSA_BITS_TO_BYTES(key_bits) + 1) + +/* Maximum size of the export encoding of an ECC key pair. + * + * An ECC key pair is represented by the secret value. + */ +#define PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(key_bits) \ + (PSA_BITS_TO_BYTES(key_bits)) + +/** Sufficient output buffer size for psa_export_key() or psa_export_public_key(). + * + * This macro returns a compile-time constant if its arguments are + * compile-time constants. + * + * \warning This function may call its arguments multiple times or + * zero times, so you should not pass arguments that contain + * side effects. + * + * The following code illustrates how to allocate enough memory to export + * a key by querying the key type and size at runtime. + * \code{c} + * psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + * psa_status_t status; + * status = psa_get_key_attributes(key, &attributes); + * if (status != PSA_SUCCESS) handle_error(...); + * psa_key_type_t key_type = psa_get_key_type(&attributes); + * size_t key_bits = psa_get_key_bits(&attributes); + * size_t buffer_size = PSA_KEY_EXPORT_MAX_SIZE(key_type, key_bits); + * psa_reset_key_attributes(&attributes); + * uint8_t *buffer = malloc(buffer_size); + * if (buffer == NULL) handle_error(...); + * size_t buffer_length; + * status = psa_export_key(key, buffer, buffer_size, &buffer_length); + * if (status != PSA_SUCCESS) handle_error(...); + * \endcode + * + * For psa_export_public_key(), calculate the buffer size from the + * public key type. You can use the macro #PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR + * to convert a key pair type to the corresponding public key type. + * \code{c} + * psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + * psa_status_t status; + * status = psa_get_key_attributes(key, &attributes); + * if (status != PSA_SUCCESS) handle_error(...); + * psa_key_type_t key_type = psa_get_key_type(&attributes); + * psa_key_type_t public_key_type = PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(key_type); + * size_t key_bits = psa_get_key_bits(&attributes); + * size_t buffer_size = PSA_KEY_EXPORT_MAX_SIZE(public_key_type, key_bits); + * psa_reset_key_attributes(&attributes); + * uint8_t *buffer = malloc(buffer_size); + * if (buffer == NULL) handle_error(...); + * size_t buffer_length; + * status = psa_export_public_key(key, buffer, buffer_size, &buffer_length); + * if (status != PSA_SUCCESS) handle_error(...); + * \endcode + * + * \param key_type A supported key type. + * \param key_bits The size of the key in bits. + * + * \return If the parameters are valid and supported, return + * a buffer size in bytes that guarantees that + * psa_sign_hash() will not fail with + * #PSA_ERROR_BUFFER_TOO_SMALL. + * If the parameters are a valid combination that is not supported + * by the implementation, this macro shall return either a + * sensible size or 0. + * If the parameters are not valid, the + * return value is unspecified. + */ +#define PSA_KEY_EXPORT_MAX_SIZE(key_type, key_bits) \ + (PSA_KEY_TYPE_IS_UNSTRUCTURED(key_type) ? PSA_BITS_TO_BYTES(key_bits) : \ + (key_type) == PSA_KEY_TYPE_RSA_KEY_PAIR ? PSA_KEY_EXPORT_RSA_KEY_PAIR_MAX_SIZE(key_bits) : \ + (key_type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY ? PSA_KEY_EXPORT_RSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \ + (key_type) == PSA_KEY_TYPE_DSA_KEY_PAIR ? PSA_KEY_EXPORT_DSA_KEY_PAIR_MAX_SIZE(key_bits) : \ + (key_type) == PSA_KEY_TYPE_DSA_PUBLIC_KEY ? PSA_KEY_EXPORT_DSA_PUBLIC_KEY_MAX_SIZE(key_bits) : \ + PSA_KEY_TYPE_IS_ECC_KEY_PAIR(key_type) ? PSA_KEY_EXPORT_ECC_KEY_PAIR_MAX_SIZE(key_bits) : \ + PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(key_type) ? PSA_KEY_EXPORT_ECC_PUBLIC_KEY_MAX_SIZE(key_bits) : \ + 0) + +#endif /* PSA_CRYPTO_SIZES_H */ diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_struct_ipc.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_struct.h similarity index 75% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_struct_ipc.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_struct.h index 20bea21c66..403a734000 100644 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_struct_ipc.h +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_struct.h @@ -1,7 +1,13 @@ +/* + * Copyright (c) 2018-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ /** * \file psa/crypto_struct.h * - * \brief PSA cryptography module: Mbed TLS structured type implementations + * \brief PSA cryptography module: structured type implementations * * \note This file may not be included directly. Applications must * include psa/crypto.h. @@ -12,60 +18,38 @@ * In implementations with isolation between the application and the * cryptography module, it is expected that the front-end and the back-end * would have different versions of this file. - * - *

Design notes about multipart operation structures

- * - * Each multipart operation structure contains a `psa_algorithm_t alg` - * field which indicates which specific algorithm the structure is for. - * When the structure is not in use, `alg` is 0. Most of the structure - * consists of a union which is discriminated by `alg`. - * - * Note that when `alg` is 0, the content of other fields is undefined. - * In particular, it is not guaranteed that a freshly-initialized structure - * is all-zero: we initialize structures to something like `{0, 0}`, which - * is only guaranteed to initializes the first member of the union; - * GCC and Clang initialize the whole structure to 0 (at the time of writing), - * but MSVC and CompCert don't. - * - * In Mbed Crypto, multipart operation structures live independently from - * the key. This allows Mbed Crypto to free the key objects when destroying - * a key slot. If a multipart operation needs to remember the key after - * the setup function returns, the operation structure needs to contain a - * copy of the key. - */ -/* - * Copyright (C) 2018, ARM Limited, All Rights Reserved - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) */ #ifndef PSA_CRYPTO_STRUCT_H #define PSA_CRYPTO_STRUCT_H -#include "psa/client.h" - #ifdef __cplusplus extern "C" { #endif -struct psa_hash_operation_s { - psa_handle_t handle; +/* + * Note that the below structures are different from the decalrations in + * mbed-crypto. This is because TF-M maintains 'front-end' and 'back-end' + * versions of this header. In the front-end version, exported to NS + * clients in interface/include/psa, a crypto operation is defined as an + * opaque handle to a context in the Crypto service. The back-end + * version, directly included from the mbed-crypto repo by the Crypto + * service, contains the full definition of the operation structs. + * + * One of the functions of the Crypto service is to allocate the back-end + * operation contexts in its own partition memory (in crypto_alloc.c), + * and then do the mapping between front-end operation handles passed by + * NS clients and the corresponding back-end operation contexts. The + * advantage of doing it this way is that internal mbed-crypto state is never + * exposed to the NS client. + */ + +struct psa_hash_operation_s +{ + uint32_t handle; }; -#define PSA_HASH_OPERATION_INIT { PSA_NULL_HANDLE } +#define PSA_HASH_OPERATION_INIT {0} static inline struct psa_hash_operation_s psa_hash_operation_init( void ) { const struct psa_hash_operation_s v = PSA_HASH_OPERATION_INIT; @@ -74,10 +58,10 @@ static inline struct psa_hash_operation_s psa_hash_operation_init( void ) struct psa_mac_operation_s { - psa_handle_t handle; + uint32_t handle; }; -#define PSA_MAC_OPERATION_INIT { PSA_NULL_HANDLE } +#define PSA_MAC_OPERATION_INIT {0} static inline struct psa_mac_operation_s psa_mac_operation_init( void ) { const struct psa_mac_operation_s v = PSA_MAC_OPERATION_INIT; @@ -86,10 +70,10 @@ static inline struct psa_mac_operation_s psa_mac_operation_init( void ) struct psa_cipher_operation_s { - psa_handle_t handle; + uint32_t handle; }; -#define PSA_CIPHER_OPERATION_INIT { PSA_NULL_HANDLE } +#define PSA_CIPHER_OPERATION_INIT {0} static inline struct psa_cipher_operation_s psa_cipher_operation_init( void ) { const struct psa_cipher_operation_s v = PSA_CIPHER_OPERATION_INIT; @@ -98,10 +82,10 @@ static inline struct psa_cipher_operation_s psa_cipher_operation_init( void ) struct psa_aead_operation_s { - psa_handle_t handle; + uint32_t handle; }; -#define PSA_AEAD_OPERATION_INIT { PSA_NULL_HANDLE } +#define PSA_AEAD_OPERATION_INIT {0} static inline struct psa_aead_operation_s psa_aead_operation_init( void ) { const struct psa_aead_operation_s v = PSA_AEAD_OPERATION_INIT; @@ -110,11 +94,10 @@ static inline struct psa_aead_operation_s psa_aead_operation_init( void ) struct psa_key_derivation_s { - psa_handle_t handle; + uint32_t handle; }; -/* This only zeroes out the first byte in the union, the rest is unspecified. */ -#define PSA_KEY_DERIVATION_OPERATION_INIT { PSA_NULL_HANDLE } +#define PSA_KEY_DERIVATION_OPERATION_INIT {0} static inline struct psa_key_derivation_s psa_key_derivation_operation_init( void ) { const struct psa_key_derivation_s v = PSA_KEY_DERIVATION_OPERATION_INIT; diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_types.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_types.h new file mode 100644 index 0000000000..690999f79c --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_types.h @@ -0,0 +1,313 @@ +/* + * Copyright (c) 2018-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +/** + * \file psa/crypto_types.h + * + * \brief PSA cryptography module: type aliases. + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. Drivers must include the appropriate driver + * header file. + * + * This file contains portable definitions of integral types for properties + * of cryptographic keys, designations of cryptographic algorithms, and + * error codes returned by the library. + * + * This header file does not declare any function. + */ + +#ifndef PSA_CRYPTO_TYPES_H +#define PSA_CRYPTO_TYPES_H + +#include + +/** \defgroup error Error codes + * @{ + */ + +/** + * \brief Function return status. + * + * This is either #PSA_SUCCESS (which is zero), indicating success, + * or a small negative value indicating that an error occurred. Errors are + * encoded as one of the \c PSA_ERROR_xxx values defined here. */ +/* If #PSA_SUCCESS is already defined, it means that #psa_status_t + * is also defined in an external header, so prevent its multiple + * definition. + */ +#ifndef PSA_SUCCESS +typedef int32_t psa_status_t; +#endif + +/**@}*/ + +/** \defgroup crypto_types Key and algorithm types + * @{ + */ + +/** \brief Encoding of a key type. + */ +typedef uint32_t psa_key_type_t; + +/** The type of PSA elliptic curve identifiers. + * + * The curve identifier is required to create an ECC key using the + * PSA_KEY_TYPE_ECC_KEY_PAIR() or PSA_KEY_TYPE_ECC_PUBLIC_KEY() + * macros. + * + * The encoding of curve identifiers is taken from the + * TLS Supported Groups Registry (formerly known as the + * TLS EC Named Curve Registry) + * https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8 + * + * This specification defines identifiers for some of the curves in the IANA + * registry. Implementations that support other curves that are in the IANA + * registry should use the IANA value and a implementation-specific identifier. + * Implemenations that support non-IANA curves should use one of the following + * approaches for allocating a key type: + * + * 1. Select a ::psa_ecc_curve_t value in the range #PSA_ECC_CURVE_VENDOR_MIN to + * #PSA_ECC_CURVE_VENDOR_MAX, which is a subset of the IANA private use + * range. + * 2. Use a ::psa_key_type_t value that is vendor-defined. + * + * The first option is recommended. + */ +typedef uint16_t psa_ecc_curve_t; + +/** The type of PSA Diffie-Hellman group identifiers. + * + * The group identifier is required to create an Diffie-Hellman key using the + * PSA_KEY_TYPE_DH_KEY_PAIR() or PSA_KEY_TYPE_DH_PUBLIC_KEY() + * macros. + * + * The encoding of group identifiers is taken from the + * TLS Supported Groups Registry (formerly known as the + * TLS EC Named Curve Registry) + * https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8 + * + * This specification defines identifiers for some of the groups in the IANA + * registry. Implementations that support other groups that are in the IANA + * registry should use the IANA value and a implementation-specific identifier. + * Implemenations that support non-IANA groups should use one of the following + * approaches for allocating a key type: + * + * 1. Select a ::psa_dh_group_t value in the range #PSA_DH_GROUP_VENDOR_MIN to + * #PSA_DH_GROUP_VENDOR_MAX, which is a subset of the IANA private use + * range. + * 2. Select a ::psa_dh_group_t value from the named groups allocated for + * GREASE in the IETF draft specification. The GREASE specification and + * values are listed below. + * 3. Use a ::psa_key_type_t value that is vendor-defined. + * + * Option 1 or 2 are recommended. + * + * The current draft of the GREASE specification is + * https://datatracker.ietf.org/doc/draft-ietf-tls-grease + * + * The following GREASE values are allocated for named groups: + * \code + * 0x0A0A + * 0x1A1A + * 0x2A2A + * 0x3A3A + * 0x4A4A + * 0x5A5A + * 0x6A6A + * 0x7A7A + * 0x8A8A + * 0x9A9A + * 0xAAAA + * 0xBABA + * 0xCACA + * 0xDADA + * 0xEAEA + * 0xFAFA + * \endcode + */ +typedef uint16_t psa_dh_group_t; + +/** \brief Encoding of a cryptographic algorithm. + * + * For algorithms that can be applied to multiple key types, this type + * does not encode the key type. For example, for symmetric ciphers + * based on a block cipher, #psa_algorithm_t encodes the block cipher + * mode and the padding mode while the block cipher itself is encoded + * via #psa_key_type_t. + */ +typedef uint32_t psa_algorithm_t; + +/**@}*/ + +/** \defgroup key_lifetimes Key lifetimes + * @{ + */ + +/** Encoding of key lifetimes. + * + * The lifetime of a key indicates where it is stored and what system actions + * may create and destroy it. + * + * Keys with the lifetime #PSA_KEY_LIFETIME_VOLATILE are automatically + * destroyed when the application terminates or on a power reset. + * + * Keys with a lifetime other than #PSA_KEY_LIFETIME_VOLATILE are said + * to be _persistent_. + * Persistent keys are preserved if the application or the system restarts. + * Persistent keys have a key identifier of type #psa_key_id_t. + * The application can call psa_open_key() to open a persistent key that + * it created previously. + */ +typedef uint32_t psa_key_lifetime_t; + +/** Encoding of identifiers of persistent keys. + * + * - Applications may freely choose key identifiers in the range + * #PSA_KEY_ID_USER_MIN to #PSA_KEY_ID_USER_MAX. + * - Implementations may define additional key identifiers in the range + * #PSA_KEY_ID_VENDOR_MIN to #PSA_KEY_ID_VENDOR_MAX. + * - 0 is reserved as an invalid key identifier. + * - Key identifiers outside these ranges are reserved for future use. + */ +typedef uint32_t psa_key_id_t; +#define PSA_KEY_ID_INIT 0 + +/**@}*/ + +/** \defgroup policy Key policies + * @{ + */ + +/** \brief Encoding of permitted usage on a key. */ +typedef uint32_t psa_key_usage_t; + +/**@}*/ + +/** \defgroup attributes Key attributes + * @{ + */ + +/** The type of a structure containing key attributes. + * + * This is an opaque structure that can represent the metadata of a key + * object. Metadata that can be stored in attributes includes: + * - The location of the key in storage, indicated by its key identifier + * and its lifetime. + * - The key's policy, comprising usage flags and a specification of + * the permitted algorithm(s). + * - Information about the key itself: the key type and its size. + * - Implementations may define additional attributes. + * + * The actual key material is not considered an attribute of a key. + * Key attributes do not contain information that is generally considered + * highly confidential. + * + * An attribute structure can be a simple data structure where each function + * `psa_set_key_xxx` sets a field and the corresponding function + * `psa_get_key_xxx` retrieves the value of the corresponding field. + * However, implementations may report values that are equivalent to the + * original one, but have a different encoding. For example, an + * implementation may use a more compact representation for types where + * many bit-patterns are invalid or not supported, and store all values + * that it does not support as a special marker value. In such an + * implementation, after setting an invalid value, the corresponding + * get function returns an invalid value which may not be the one that + * was originally stored. + * + * An attribute structure may contain references to auxiliary resources, + * for example pointers to allocated memory or indirect references to + * pre-calculated values. In order to free such resources, the application + * must call psa_reset_key_attributes(). As an exception, calling + * psa_reset_key_attributes() on an attribute structure is optional if + * the structure has only been modified by the following functions + * since it was initialized or last reset with psa_reset_key_attributes(): + * - psa_set_key_id() + * - psa_set_key_lifetime() + * - psa_set_key_type() + * - psa_set_key_bits() + * - psa_set_key_usage_flags() + * - psa_set_key_algorithm() + * + * Before calling any function on a key attribute structure, the application + * must initialize it by any of the following means: + * - Set the structure to all-bits-zero, for example: + * \code + * psa_key_attributes_t attributes; + * memset(&attributes, 0, sizeof(attributes)); + * \endcode + * - Initialize the structure to logical zero values, for example: + * \code + * psa_key_attributes_t attributes = {0}; + * \endcode + * - Initialize the structure to the initializer #PSA_KEY_ATTRIBUTES_INIT, + * for example: + * \code + * psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT; + * \endcode + * - Assign the result of the function psa_key_attributes_init() + * to the structure, for example: + * \code + * psa_key_attributes_t attributes; + * attributes = psa_key_attributes_init(); + * \endcode + * + * A freshly initialized attribute structure contains the following + * values: + * + * - lifetime: #PSA_KEY_LIFETIME_VOLATILE. + * - key identifier: 0 (which is not a valid key identifier). + * - type: \c 0 (meaning that the type is unspecified). + * - key size: \c 0 (meaning that the size is unspecified). + * - usage flags: \c 0 (which allows no usage except exporting a public key). + * - algorithm: \c 0 (which allows no cryptographic usage, but allows + * exporting). + * + * A typical sequence to create a key is as follows: + * -# Create and initialize an attribute structure. + * -# If the key is persistent, call psa_set_key_id(). + * Also call psa_set_key_lifetime() to place the key in a non-default + * location. + * -# Set the key policy with psa_set_key_usage_flags() and + * psa_set_key_algorithm(). + * -# Set the key type with psa_set_key_type(). + * Skip this step if copying an existing key with psa_copy_key(). + * -# When generating a random key with psa_generate_key() or deriving a key + * with psa_key_derivation_output_key(), set the desired key size with + * psa_set_key_bits(). + * -# Call a key creation function: psa_import_key(), psa_generate_key(), + * psa_key_derivation_output_key() or psa_copy_key(). This function reads + * the attribute structure, creates a key with these attributes, and + * outputs a handle to the newly created key. + * -# The attribute structure is now no longer necessary. + * You may call psa_reset_key_attributes(), although this is optional + * with the workflow presented here because the attributes currently + * defined in this specification do not require any additional resources + * beyond the structure itself. + * + * A typical sequence to query a key's attributes is as follows: + * -# Call psa_get_key_attributes(). + * -# Call `psa_get_key_xxx` functions to retrieve the attribute(s) that + * you are interested in. + * -# Call psa_reset_key_attributes() to free any resources that may be + * used by the attribute structure. + * + * Once a key has been created, it is impossible to change its attributes. + */ +typedef struct psa_key_attributes_s psa_key_attributes_t; + +/**@}*/ + +/** \defgroup derivation Key derivation + * @{ + */ + +/** \brief Encoding of the step of a key derivation. */ +typedef uint16_t psa_key_derivation_step_t; + +/**@}*/ + +#endif /* PSA_CRYPTO_TYPES_H */ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_values.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_values.h new file mode 100644 index 0000000000..7fde07385f --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/crypto_values.h @@ -0,0 +1,1701 @@ +/* + * Copyright (c) 2018-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +/** + * \file psa/crypto_values.h + * + * \brief PSA cryptography module: macros to build and analyze integer values. + * + * \note This file may not be included directly. Applications must + * include psa/crypto.h. Drivers must include the appropriate driver + * header file. + * + * This file contains portable definitions of macros to build and analyze + * values of integral types that encode properties of cryptographic keys, + * designations of cryptographic algorithms, and error codes returned by + * the library. + * + * This header file only defines preprocessor macros. + */ + +#ifndef PSA_CRYPTO_VALUES_H +#define PSA_CRYPTO_VALUES_H + +/** \defgroup error Error codes + * @{ + */ + +/* PSA error codes */ + +/** The action was completed successfully. */ +#ifndef PSA_SUCCESS +#define PSA_SUCCESS ((psa_status_t)0) +#endif + +/** An error occurred that does not correspond to any defined + * failure cause. + * + * Implementations may use this error code if none of the other standard + * error codes are applicable. */ +#define PSA_ERROR_GENERIC_ERROR ((psa_status_t)-132) + +/** The requested operation or a parameter is not supported + * by this implementation. + * + * Implementations should return this error code when an enumeration + * parameter such as a key type, algorithm, etc. is not recognized. + * If a combination of parameters is recognized and identified as + * not valid, return #PSA_ERROR_INVALID_ARGUMENT instead. */ +#define PSA_ERROR_NOT_SUPPORTED ((psa_status_t)-134) + +/** The requested action is denied by a policy. + * + * Implementations should return this error code when the parameters + * are recognized as valid and supported, and a policy explicitly + * denies the requested operation. + * + * If a subset of the parameters of a function call identify a + * forbidden operation, and another subset of the parameters are + * not valid or not supported, it is unspecified whether the function + * returns #PSA_ERROR_NOT_PERMITTED, #PSA_ERROR_NOT_SUPPORTED or + * #PSA_ERROR_INVALID_ARGUMENT. */ +#define PSA_ERROR_NOT_PERMITTED ((psa_status_t)-133) + +/** An output buffer is too small. + * + * Applications can call the \c PSA_xxx_SIZE macro listed in the function + * description to determine a sufficient buffer size. + * + * Implementations should preferably return this error code only + * in cases when performing the operation with a larger output + * buffer would succeed. However implementations may return this + * error if a function has invalid or unsupported parameters in addition + * to the parameters that determine the necessary output buffer size. */ +#define PSA_ERROR_BUFFER_TOO_SMALL ((psa_status_t)-138) + +/** Asking for an item that already exists + * + * Implementations should return this error, when attempting + * to write an item (like a key) that already exists. */ +#define PSA_ERROR_ALREADY_EXISTS ((psa_status_t)-139) + +/** Asking for an item that doesn't exist + * + * Implementations should return this error, if a requested item (like + * a key) does not exist. */ +#define PSA_ERROR_DOES_NOT_EXIST ((psa_status_t)-140) + +/** The requested action cannot be performed in the current state. + * + * Multipart operations return this error when one of the + * functions is called out of sequence. Refer to the function + * descriptions for permitted sequencing of functions. + * + * Implementations shall not return this error code to indicate + * that a key either exists or not, + * but shall instead return #PSA_ERROR_ALREADY_EXISTS or #PSA_ERROR_DOES_NOT_EXIST + * as applicable. + * + * Implementations shall not return this error code to indicate that a + * key handle is invalid, but shall return #PSA_ERROR_INVALID_HANDLE + * instead. */ +#define PSA_ERROR_BAD_STATE ((psa_status_t)-137) + +/** The parameters passed to the function are invalid. + * + * Implementations may return this error any time a parameter or + * combination of parameters are recognized as invalid. + * + * Implementations shall not return this error code to indicate that a + * key handle is invalid, but shall return #PSA_ERROR_INVALID_HANDLE + * instead. + */ +#define PSA_ERROR_INVALID_ARGUMENT ((psa_status_t)-135) + +/** There is not enough runtime memory. + * + * If the action is carried out across multiple security realms, this + * error can refer to available memory in any of the security realms. */ +#define PSA_ERROR_INSUFFICIENT_MEMORY ((psa_status_t)-141) + +/** There is not enough persistent storage. + * + * Functions that modify the key storage return this error code if + * there is insufficient storage space on the host media. In addition, + * many functions that do not otherwise access storage may return this + * error code if the implementation requires a mandatory log entry for + * the requested action and the log storage space is full. */ +#define PSA_ERROR_INSUFFICIENT_STORAGE ((psa_status_t)-142) + +/** There was a communication failure inside the implementation. + * + * This can indicate a communication failure between the application + * and an external cryptoprocessor or between the cryptoprocessor and + * an external volatile or persistent memory. A communication failure + * may be transient or permanent depending on the cause. + * + * \warning If a function returns this error, it is undetermined + * whether the requested action has completed or not. Implementations + * should return #PSA_SUCCESS on successful completion whenever + * possible, however functions may return #PSA_ERROR_COMMUNICATION_FAILURE + * if the requested action was completed successfully in an external + * cryptoprocessor but there was a breakdown of communication before + * the cryptoprocessor could report the status to the application. + */ +#define PSA_ERROR_COMMUNICATION_FAILURE ((psa_status_t)-145) + +/** There was a storage failure that may have led to data loss. + * + * This error indicates that some persistent storage is corrupted. + * It should not be used for a corruption of volatile memory + * (use #PSA_ERROR_CORRUPTION_DETECTED), for a communication error + * between the cryptoprocessor and its external storage (use + * #PSA_ERROR_COMMUNICATION_FAILURE), or when the storage is + * in a valid state but is full (use #PSA_ERROR_INSUFFICIENT_STORAGE). + * + * Note that a storage failure does not indicate that any data that was + * previously read is invalid. However this previously read data may no + * longer be readable from storage. + * + * When a storage failure occurs, it is no longer possible to ensure + * the global integrity of the keystore. Depending on the global + * integrity guarantees offered by the implementation, access to other + * data may or may not fail even if the data is still readable but + * its integrity cannot be guaranteed. + * + * Implementations should only use this error code to report a + * permanent storage corruption. However application writers should + * keep in mind that transient errors while reading the storage may be + * reported using this error code. */ +#define PSA_ERROR_STORAGE_FAILURE ((psa_status_t)-146) + +/** A hardware failure was detected. + * + * A hardware failure may be transient or permanent depending on the + * cause. */ +#define PSA_ERROR_HARDWARE_FAILURE ((psa_status_t)-147) + +/** A tampering attempt was detected. + * + * If an application receives this error code, there is no guarantee + * that previously accessed or computed data was correct and remains + * confidential. Applications should not perform any security function + * and should enter a safe failure state. + * + * Implementations may return this error code if they detect an invalid + * state that cannot happen during normal operation and that indicates + * that the implementation's security guarantees no longer hold. Depending + * on the implementation architecture and on its security and safety goals, + * the implementation may forcibly terminate the application. + * + * This error code is intended as a last resort when a security breach + * is detected and it is unsure whether the keystore data is still + * protected. Implementations shall only return this error code + * to report an alarm from a tampering detector, to indicate that + * the confidentiality of stored data can no longer be guaranteed, + * or to indicate that the integrity of previously returned data is now + * considered compromised. Implementations shall not use this error code + * to indicate a hardware failure that merely makes it impossible to + * perform the requested operation (use #PSA_ERROR_COMMUNICATION_FAILURE, + * #PSA_ERROR_STORAGE_FAILURE, #PSA_ERROR_HARDWARE_FAILURE, + * #PSA_ERROR_INSUFFICIENT_ENTROPY or other applicable error code + * instead). + * + * This error indicates an attack against the application. Implementations + * shall not return this error code as a consequence of the behavior of + * the application itself. */ +#define PSA_ERROR_CORRUPTION_DETECTED ((psa_status_t)-151) + +/** There is not enough entropy to generate random data needed + * for the requested action. + * + * This error indicates a failure of a hardware random generator. + * Application writers should note that this error can be returned not + * only by functions whose purpose is to generate random data, such + * as key, IV or nonce generation, but also by functions that execute + * an algorithm with a randomized result, as well as functions that + * use randomization of intermediate computations as a countermeasure + * to certain attacks. + * + * Implementations should avoid returning this error after psa_crypto_init() + * has succeeded. Implementations should generate sufficient + * entropy during initialization and subsequently use a cryptographically + * secure pseudorandom generator (PRNG). However implementations may return + * this error at any time if a policy requires the PRNG to be reseeded + * during normal operation. */ +#define PSA_ERROR_INSUFFICIENT_ENTROPY ((psa_status_t)-148) + +/** The signature, MAC or hash is incorrect. + * + * Verification functions return this error if the verification + * calculations completed successfully, and the value to be verified + * was determined to be incorrect. + * + * If the value to verify has an invalid size, implementations may return + * either #PSA_ERROR_INVALID_ARGUMENT or #PSA_ERROR_INVALID_SIGNATURE. */ +#define PSA_ERROR_INVALID_SIGNATURE ((psa_status_t)-149) + +/** The decrypted padding is incorrect. + * + * \warning In some protocols, when decrypting data, it is essential that + * the behavior of the application does not depend on whether the padding + * is correct, down to precise timing. Applications should prefer + * protocols that use authenticated encryption rather than plain + * encryption. If the application must perform a decryption of + * unauthenticated data, the application writer should take care not + * to reveal whether the padding is invalid. + * + * Implementations should strive to make valid and invalid padding + * as close as possible to indistinguishable to an external observer. + * In particular, the timing of a decryption operation should not + * depend on the validity of the padding. */ +#define PSA_ERROR_INVALID_PADDING ((psa_status_t)-150) + +/** Return this error when there's insufficient data when attempting + * to read from a resource. */ +#define PSA_ERROR_INSUFFICIENT_DATA ((psa_status_t)-143) + +/** The key handle is not valid. See also :ref:\`key-handles\`. + */ +#define PSA_ERROR_INVALID_HANDLE ((psa_status_t)-136) + +/**@}*/ + +/** \defgroup crypto_types Key and algorithm types + * @{ + */ + +/** An invalid key type value. + * + * Zero is not the encoding of any key type. + */ +#define PSA_KEY_TYPE_NONE ((psa_key_type_t)0x00000000) + +/** Vendor-defined key type flag. + * + * Key types defined by this standard will never have the + * #PSA_KEY_TYPE_VENDOR_FLAG bit set. Vendors who define additional key types + * must use an encoding with the #PSA_KEY_TYPE_VENDOR_FLAG bit set and should + * respect the bitwise structure used by standard encodings whenever practical. + */ +#define PSA_KEY_TYPE_VENDOR_FLAG ((psa_key_type_t)0x80000000) + +#define PSA_KEY_TYPE_CATEGORY_MASK ((psa_key_type_t)0x70000000) +#define PSA_KEY_TYPE_CATEGORY_SYMMETRIC ((psa_key_type_t)0x40000000) +#define PSA_KEY_TYPE_CATEGORY_RAW ((psa_key_type_t)0x50000000) +#define PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY ((psa_key_type_t)0x60000000) +#define PSA_KEY_TYPE_CATEGORY_KEY_PAIR ((psa_key_type_t)0x70000000) + +#define PSA_KEY_TYPE_CATEGORY_FLAG_PAIR ((psa_key_type_t)0x10000000) + +/** Whether a key type is vendor-defined. + * + * See also #PSA_KEY_TYPE_VENDOR_FLAG. + */ +#define PSA_KEY_TYPE_IS_VENDOR_DEFINED(type) \ + (((type) & PSA_KEY_TYPE_VENDOR_FLAG) != 0) + +/** Whether a key type is an unstructured array of bytes. + * + * This encompasses both symmetric keys and non-key data. + */ +#define PSA_KEY_TYPE_IS_UNSTRUCTURED(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK & ~(psa_key_type_t)0x10000000) == \ + PSA_KEY_TYPE_CATEGORY_SYMMETRIC) + +/** Whether a key type is asymmetric: either a key pair or a public key. */ +#define PSA_KEY_TYPE_IS_ASYMMETRIC(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK \ + & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) == \ + PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY) +/** Whether a key type is the public part of a key pair. */ +#define PSA_KEY_TYPE_IS_PUBLIC_KEY(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_PUBLIC_KEY) +/** Whether a key type is a key pair containing a private part and a public + * part. */ +#define PSA_KEY_TYPE_IS_KEY_PAIR(type) \ + (((type) & PSA_KEY_TYPE_CATEGORY_MASK) == PSA_KEY_TYPE_CATEGORY_KEY_PAIR) +/** The key pair type corresponding to a public key type. + * + * You may also pass a key pair type as \p type, it will be left unchanged. + * + * \param type A public key type or key pair type. + * + * \return The corresponding key pair type. + * If \p type is not a public key or a key pair, + * the return value is undefined. + */ +#define PSA_KEY_TYPE_KEY_PAIR_OF_PUBLIC_KEY(type) \ + ((type) | PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) +/** The public key type corresponding to a key pair type. + * + * You may also pass a key pair type as \p type, it will be left unchanged. + * + * \param type A public key type or key pair type. + * + * \return The corresponding public key type. + * If \p type is not a public key or a key pair, + * the return value is undefined. + */ +#define PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) \ + ((type) & ~PSA_KEY_TYPE_CATEGORY_FLAG_PAIR) + +/** Raw data. + * + * A "key" of this type cannot be used for any cryptographic operation. + * Applications may use this type to store arbitrary data in the keystore. */ +#define PSA_KEY_TYPE_RAW_DATA ((psa_key_type_t)0x50000001) + +/** HMAC key. + * + * The key policy determines which underlying hash algorithm the key can be + * used for. + * + * HMAC keys should generally have the same size as the underlying hash. + * This size can be calculated with #PSA_HASH_SIZE(\c alg) where + * \c alg is the HMAC algorithm or the underlying hash algorithm. */ +#define PSA_KEY_TYPE_HMAC ((psa_key_type_t)0x51000000) + +/** A secret for key derivation. + * + * The key policy determines which key derivation algorithm the key + * can be used for. + */ +#define PSA_KEY_TYPE_DERIVE ((psa_key_type_t)0x52000000) + +/** Key for a cipher, AEAD or MAC algorithm based on the AES block cipher. + * + * The size of the key can be 16 bytes (AES-128), 24 bytes (AES-192) or + * 32 bytes (AES-256). + */ +#define PSA_KEY_TYPE_AES ((psa_key_type_t)0x40000001) + +/** Key for a cipher or MAC algorithm based on DES or 3DES (Triple-DES). + * + * The size of the key can be 8 bytes (single DES), 16 bytes (2-key 3DES) or + * 24 bytes (3-key 3DES). + * + * Note that single DES and 2-key 3DES are weak and strongly + * deprecated and should only be used to decrypt legacy data. 3-key 3DES + * is weak and deprecated and should only be used in legacy protocols. + */ +#define PSA_KEY_TYPE_DES ((psa_key_type_t)0x40000002) + +/** Key for a cipher, AEAD or MAC algorithm based on the + * Camellia block cipher. */ +#define PSA_KEY_TYPE_CAMELLIA ((psa_key_type_t)0x40000003) + +/** Key for the RC4 stream cipher. + * + * Note that RC4 is weak and deprecated and should only be used in + * legacy protocols. */ +#define PSA_KEY_TYPE_ARC4 ((psa_key_type_t)0x40000004) + +/** Key for the ChaCha20 stream cipher or the Chacha20-Poly1305 AEAD algorithm. + * + * ChaCha20 and the ChaCha20_Poly1305 construction are defined in RFC 7539. + * + * Implementations must support 12-byte nonces, may support 8-byte nonces, + * and should reject other sizes. + */ +#define PSA_KEY_TYPE_CHACHA20 ((psa_key_type_t)0x40000005) + +/** RSA public key. */ +#define PSA_KEY_TYPE_RSA_PUBLIC_KEY ((psa_key_type_t)0x60010000) +/** RSA key pair (private and public key). */ +#define PSA_KEY_TYPE_RSA_KEY_PAIR ((psa_key_type_t)0x70010000) +/** Whether a key type is an RSA key (pair or public-only). */ +#define PSA_KEY_TYPE_IS_RSA(type) \ + (PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) == PSA_KEY_TYPE_RSA_PUBLIC_KEY) + +#define PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE ((psa_key_type_t)0x60030000) +#define PSA_KEY_TYPE_ECC_KEY_PAIR_BASE ((psa_key_type_t)0x70030000) +#define PSA_KEY_TYPE_ECC_CURVE_MASK ((psa_key_type_t)0x0000ffff) +/** Elliptic curve key pair. + * + * \param curve A value of type ::psa_ecc_curve_t that identifies the + * ECC curve to be used. + */ +#define PSA_KEY_TYPE_ECC_KEY_PAIR(curve) \ + (PSA_KEY_TYPE_ECC_KEY_PAIR_BASE | (curve)) +/** Elliptic curve public key. + * + * \param curve A value of type ::psa_ecc_curve_t that identifies the + * ECC curve to be used. + */ +#define PSA_KEY_TYPE_ECC_PUBLIC_KEY(curve) \ + (PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE | (curve)) + +/** Whether a key type is an elliptic curve key (pair or public-only). */ +#define PSA_KEY_TYPE_IS_ECC(type) \ + ((PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) & \ + ~PSA_KEY_TYPE_ECC_CURVE_MASK) == PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE) +/** Whether a key type is an elliptic curve key pair. */ +#define PSA_KEY_TYPE_IS_ECC_KEY_PAIR(type) \ + (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \ + PSA_KEY_TYPE_ECC_KEY_PAIR_BASE) +/** Whether a key type is an elliptic curve public key. */ +#define PSA_KEY_TYPE_IS_ECC_PUBLIC_KEY(type) \ + (((type) & ~PSA_KEY_TYPE_ECC_CURVE_MASK) == \ + PSA_KEY_TYPE_ECC_PUBLIC_KEY_BASE) + +/** Extract the curve from an elliptic curve key type. */ +#define PSA_KEY_TYPE_GET_CURVE(type) \ + ((psa_ecc_curve_t) (PSA_KEY_TYPE_IS_ECC(type) ? \ + ((type) & PSA_KEY_TYPE_ECC_CURVE_MASK) : \ + 0)) + +/* The encoding of curve identifiers is currently aligned with the + * TLS Supported Groups Registry (formerly known as the + * TLS EC Named Curve Registry) + * https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8 + * The values are defined by RFC 8422 and RFC 7027. */ +#define PSA_ECC_CURVE_SECT163K1 ((psa_ecc_curve_t) 0x0001) +#define PSA_ECC_CURVE_SECT163R1 ((psa_ecc_curve_t) 0x0002) +#define PSA_ECC_CURVE_SECT163R2 ((psa_ecc_curve_t) 0x0003) +#define PSA_ECC_CURVE_SECT193R1 ((psa_ecc_curve_t) 0x0004) +#define PSA_ECC_CURVE_SECT193R2 ((psa_ecc_curve_t) 0x0005) +#define PSA_ECC_CURVE_SECT233K1 ((psa_ecc_curve_t) 0x0006) +#define PSA_ECC_CURVE_SECT233R1 ((psa_ecc_curve_t) 0x0007) +#define PSA_ECC_CURVE_SECT239K1 ((psa_ecc_curve_t) 0x0008) +#define PSA_ECC_CURVE_SECT283K1 ((psa_ecc_curve_t) 0x0009) +#define PSA_ECC_CURVE_SECT283R1 ((psa_ecc_curve_t) 0x000a) +#define PSA_ECC_CURVE_SECT409K1 ((psa_ecc_curve_t) 0x000b) +#define PSA_ECC_CURVE_SECT409R1 ((psa_ecc_curve_t) 0x000c) +#define PSA_ECC_CURVE_SECT571K1 ((psa_ecc_curve_t) 0x000d) +#define PSA_ECC_CURVE_SECT571R1 ((psa_ecc_curve_t) 0x000e) +#define PSA_ECC_CURVE_SECP160K1 ((psa_ecc_curve_t) 0x000f) +#define PSA_ECC_CURVE_SECP160R1 ((psa_ecc_curve_t) 0x0010) +#define PSA_ECC_CURVE_SECP160R2 ((psa_ecc_curve_t) 0x0011) +#define PSA_ECC_CURVE_SECP192K1 ((psa_ecc_curve_t) 0x0012) +#define PSA_ECC_CURVE_SECP192R1 ((psa_ecc_curve_t) 0x0013) +#define PSA_ECC_CURVE_SECP224K1 ((psa_ecc_curve_t) 0x0014) +#define PSA_ECC_CURVE_SECP224R1 ((psa_ecc_curve_t) 0x0015) +#define PSA_ECC_CURVE_SECP256K1 ((psa_ecc_curve_t) 0x0016) +#define PSA_ECC_CURVE_SECP256R1 ((psa_ecc_curve_t) 0x0017) +#define PSA_ECC_CURVE_SECP384R1 ((psa_ecc_curve_t) 0x0018) +#define PSA_ECC_CURVE_SECP521R1 ((psa_ecc_curve_t) 0x0019) +#define PSA_ECC_CURVE_BRAINPOOL_P256R1 ((psa_ecc_curve_t) 0x001a) +#define PSA_ECC_CURVE_BRAINPOOL_P384R1 ((psa_ecc_curve_t) 0x001b) +#define PSA_ECC_CURVE_BRAINPOOL_P512R1 ((psa_ecc_curve_t) 0x001c) +/** Curve25519. + * + * This is the curve defined in Bernstein et al., + * _Curve25519: new Diffie-Hellman speed records_, LNCS 3958, 2006. + * The algorithm #PSA_ALG_ECDH performs X25519 when used with this curve. + */ +#define PSA_ECC_CURVE_CURVE25519 ((psa_ecc_curve_t) 0x001d) +/** Curve448 + * + * This is the curve defined in Hamburg, + * _Ed448-Goldilocks, a new elliptic curve_, NIST ECC Workshop, 2015. + * The algorithm #PSA_ALG_ECDH performs X448 when used with this curve. + */ +#define PSA_ECC_CURVE_CURVE448 ((psa_ecc_curve_t) 0x001e) + +/** Minimum value for a vendor-defined ECC curve identifier + * + * The range for vendor-defined curve identifiers is a subset of the IANA + * registry private use range, `0xfe00` - `0xfeff`. + */ +#define PSA_ECC_CURVE_VENDOR_MIN ((psa_ecc_curve_t) 0xfe00) +/** Maximum value for a vendor-defined ECC curve identifier + * + * The range for vendor-defined curve identifiers is a subset of the IANA + * registry private use range, `0xfe00` - `0xfeff`. + */ +#define PSA_ECC_CURVE_VENDOR_MAX ((psa_ecc_curve_t) 0xfe7f) + +#define PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE ((psa_key_type_t)0x60040000) +#define PSA_KEY_TYPE_DH_KEY_PAIR_BASE ((psa_key_type_t)0x70040000) +#define PSA_KEY_TYPE_DH_GROUP_MASK ((psa_key_type_t)0x0000ffff) +/** Diffie-Hellman key pair. + * + * \param group A value of type ::psa_dh_group_t that identifies the + * Diffie-Hellman group to be used. + */ +#define PSA_KEY_TYPE_DH_KEY_PAIR(group) \ + (PSA_KEY_TYPE_DH_KEY_PAIR_BASE | (group)) +/** Diffie-Hellman public key. + * + * \param group A value of type ::psa_dh_group_t that identifies the + * Diffie-Hellman group to be used. + */ +#define PSA_KEY_TYPE_DH_PUBLIC_KEY(group) \ + (PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE | (group)) + +/** Whether a key type is a Diffie-Hellman key (pair or public-only). */ +#define PSA_KEY_TYPE_IS_DH(type) \ + ((PSA_KEY_TYPE_PUBLIC_KEY_OF_KEY_PAIR(type) & \ + ~PSA_KEY_TYPE_DH_GROUP_MASK) == PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE) +/** Whether a key type is a Diffie-Hellman key pair. */ +#define PSA_KEY_TYPE_IS_DH_KEY_PAIR(type) \ + (((type) & ~PSA_KEY_TYPE_DH_GROUP_MASK) == \ + PSA_KEY_TYPE_DH_KEY_PAIR_BASE) +/** Whether a key type is a Diffie-Hellman public key. */ +#define PSA_KEY_TYPE_IS_DH_PUBLIC_KEY(type) \ + (((type) & ~PSA_KEY_TYPE_DH_GROUP_MASK) == \ + PSA_KEY_TYPE_DH_PUBLIC_KEY_BASE) + +/** Extract the group from a Diffie-Hellman key type. */ +#define PSA_KEY_TYPE_GET_GROUP(type) \ + ((psa_dh_group_t) (PSA_KEY_TYPE_IS_DH(type) ? \ + ((type) & PSA_KEY_TYPE_DH_GROUP_MASK) : \ + 0)) + +/* The encoding of group identifiers is currently aligned with the + * TLS Supported Groups Registry (formerly known as the + * TLS EC Named Curve Registry) + * https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml#tls-parameters-8 + * The values are defined by RFC 7919. */ +#define PSA_DH_GROUP_FFDHE2048 ((psa_dh_group_t) 0x0100) +#define PSA_DH_GROUP_FFDHE3072 ((psa_dh_group_t) 0x0101) +#define PSA_DH_GROUP_FFDHE4096 ((psa_dh_group_t) 0x0102) +#define PSA_DH_GROUP_FFDHE6144 ((psa_dh_group_t) 0x0103) +#define PSA_DH_GROUP_FFDHE8192 ((psa_dh_group_t) 0x0104) + +/** Minimum value for a vendor-defined Diffie Hellman group identifier + * + * The range for vendor-defined group identifiers is a subset of the IANA + * registry private use range, `0x01fc` - `0x01ff`. + */ +#define PSA_DH_GROUP_VENDOR_MIN ((psa_dh_group_t) 0x01fc) +/** Maximum value for a vendor-defined Diffie Hellman group identifier + * + * The range for vendor-defined group identifiers is a subset of the IANA + * registry private use range, `0x01fc` - `0x01ff`. + */ +#define PSA_DH_GROUP_VENDOR_MAX ((psa_dh_group_t) 0x01fd) + +/** The block size of a block cipher. + * + * \param type A cipher key type (value of type #psa_key_type_t). + * + * \return The block size for a block cipher, or 1 for a stream cipher. + * The return value is undefined if \p type is not a supported + * cipher key type. + * + * \note It is possible to build stream cipher algorithms on top of a block + * cipher, for example CTR mode (#PSA_ALG_CTR). + * This macro only takes the key type into account, so it cannot be + * used to determine the size of the data that #psa_cipher_update() + * might buffer for future processing in general. + * + * \note This macro returns a compile-time constant if its argument is one. + * + * \warning This macro may evaluate its argument multiple times. + */ +#define PSA_BLOCK_CIPHER_BLOCK_SIZE(type) \ + ( \ + (type) == PSA_KEY_TYPE_AES ? 16 : \ + (type) == PSA_KEY_TYPE_DES ? 8 : \ + (type) == PSA_KEY_TYPE_CAMELLIA ? 16 : \ + (type) == PSA_KEY_TYPE_ARC4 ? 1 : \ + (type) == PSA_KEY_TYPE_CHACHA20 ? 1 : \ + 0) + +/** Vendor-defined algorithm flag. + * + * Algorithms defined by this standard will never have the #PSA_ALG_VENDOR_FLAG + * bit set. Vendors who define additional algorithms must use an encoding with + * the #PSA_ALG_VENDOR_FLAG bit set and should respect the bitwise structure + * used by standard encodings whenever practical. + */ +#define PSA_ALG_VENDOR_FLAG ((psa_algorithm_t)0x80000000) + +#define PSA_ALG_CATEGORY_MASK ((psa_algorithm_t)0x7f000000) +#define PSA_ALG_CATEGORY_HASH ((psa_algorithm_t)0x01000000) +#define PSA_ALG_CATEGORY_MAC ((psa_algorithm_t)0x02000000) +#define PSA_ALG_CATEGORY_CIPHER ((psa_algorithm_t)0x04000000) +#define PSA_ALG_CATEGORY_AEAD ((psa_algorithm_t)0x06000000) +#define PSA_ALG_CATEGORY_SIGN ((psa_algorithm_t)0x10000000) +#define PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION ((psa_algorithm_t)0x12000000) +#define PSA_ALG_CATEGORY_KEY_DERIVATION ((psa_algorithm_t)0x20000000) +#define PSA_ALG_CATEGORY_KEY_AGREEMENT ((psa_algorithm_t)0x30000000) + +/** Whether an algorithm is vendor-defined. + * + * See also #PSA_ALG_VENDOR_FLAG. + */ +#define PSA_ALG_IS_VENDOR_DEFINED(alg) \ + (((alg) & PSA_ALG_VENDOR_FLAG) != 0) + +/** Whether the specified algorithm is a hash algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a hash algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_HASH(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_HASH) + +/** Whether the specified algorithm is a MAC algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a MAC algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_MAC(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_MAC) + +/** Whether the specified algorithm is a symmetric cipher algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a symmetric cipher algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_CIPHER(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_CIPHER) + +/** Whether the specified algorithm is an authenticated encryption + * with associated data (AEAD) algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is an AEAD algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_AEAD(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_AEAD) + +/** Whether the specified algorithm is a public-key signature algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a public-key signature algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_SIGN(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_SIGN) + +/** Whether the specified algorithm is a public-key encryption algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a public-key encryption algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_ASYMMETRIC_ENCRYPTION(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_ASYMMETRIC_ENCRYPTION) + +/** Whether the specified algorithm is a key agreement algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a key agreement algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_KEY_AGREEMENT(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_AGREEMENT) + +/** Whether the specified algorithm is a key derivation algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a key derivation algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_KEY_DERIVATION(alg) \ + (((alg) & PSA_ALG_CATEGORY_MASK) == PSA_ALG_CATEGORY_KEY_DERIVATION) + +#define PSA_ALG_HASH_MASK ((psa_algorithm_t)0x000000ff) +/** MD2 */ +#define PSA_ALG_MD2 ((psa_algorithm_t)0x01000001) +/** MD4 */ +#define PSA_ALG_MD4 ((psa_algorithm_t)0x01000002) +/** MD5 */ +#define PSA_ALG_MD5 ((psa_algorithm_t)0x01000003) +/** PSA_ALG_RIPEMD160 */ +#define PSA_ALG_RIPEMD160 ((psa_algorithm_t)0x01000004) +/** SHA1 */ +#define PSA_ALG_SHA_1 ((psa_algorithm_t)0x01000005) +/** SHA2-224 */ +#define PSA_ALG_SHA_224 ((psa_algorithm_t)0x01000008) +/** SHA2-256 */ +#define PSA_ALG_SHA_256 ((psa_algorithm_t)0x01000009) +/** SHA2-384 */ +#define PSA_ALG_SHA_384 ((psa_algorithm_t)0x0100000a) +/** SHA2-512 */ +#define PSA_ALG_SHA_512 ((psa_algorithm_t)0x0100000b) +/** SHA2-512/224 */ +#define PSA_ALG_SHA_512_224 ((psa_algorithm_t)0x0100000c) +/** SHA2-512/256 */ +#define PSA_ALG_SHA_512_256 ((psa_algorithm_t)0x0100000d) +/** SHA3-224 */ +#define PSA_ALG_SHA3_224 ((psa_algorithm_t)0x01000010) +/** SHA3-256 */ +#define PSA_ALG_SHA3_256 ((psa_algorithm_t)0x01000011) +/** SHA3-384 */ +#define PSA_ALG_SHA3_384 ((psa_algorithm_t)0x01000012) +/** SHA3-512 */ +#define PSA_ALG_SHA3_512 ((psa_algorithm_t)0x01000013) + +/** In a hash-and-sign algorithm policy, allow any hash algorithm. + * + * This value may be used to form the algorithm usage field of a policy + * for a signature algorithm that is parametrized by a hash. The key + * may then be used to perform operations using the same signature + * algorithm parametrized with any supported hash. + * + * That is, suppose that `PSA_xxx_SIGNATURE` is one of the following macros: + * - #PSA_ALG_RSA_PKCS1V15_SIGN, #PSA_ALG_RSA_PSS, + * - #PSA_ALG_ECDSA, #PSA_ALG_DETERMINISTIC_ECDSA. + * Then you may create and use a key as follows: + * - Set the key usage field using #PSA_ALG_ANY_HASH, for example: + * ``` + * psa_set_key_usage_flags(&attributes, PSA_KEY_USAGE_SIGN_HASH); // or VERIFY + * psa_set_key_algorithm(&attributes, PSA_xxx_SIGNATURE(PSA_ALG_ANY_HASH)); + * ``` + * - Import or generate key material. + * - Call psa_sign_hash() or psa_verify_hash(), passing + * an algorithm built from `PSA_xxx_SIGNATURE` and a specific hash. Each + * call to sign or verify a message may use a different hash. + * ``` + * psa_sign_hash(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA_256), ...); + * psa_sign_hash(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA_512), ...); + * psa_sign_hash(handle, PSA_xxx_SIGNATURE(PSA_ALG_SHA3_256), ...); + * ``` + * + * This value may not be used to build other algorithms that are + * parametrized over a hash. For any valid use of this macro to build + * an algorithm \c alg, #PSA_ALG_IS_HASH_AND_SIGN(\c alg) is true. + * + * This value may not be used to build an algorithm specification to + * perform an operation. It is only valid to build policies. + */ +#define PSA_ALG_ANY_HASH ((psa_algorithm_t)0x010000ff) + +#define PSA_ALG_MAC_SUBCATEGORY_MASK ((psa_algorithm_t)0x00c00000) +#define PSA_ALG_HMAC_BASE ((psa_algorithm_t)0x02800000) +/** Macro to build an HMAC algorithm. + * + * For example, #PSA_ALG_HMAC(#PSA_ALG_SHA_256) is HMAC-SHA-256. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * + * \return The corresponding HMAC algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_HMAC(hash_alg) \ + (PSA_ALG_HMAC_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) + +#define PSA_ALG_HMAC_GET_HASH(hmac_alg) \ + (PSA_ALG_CATEGORY_HASH | ((hmac_alg) & PSA_ALG_HASH_MASK)) + +/** Whether the specified algorithm is an HMAC algorithm. + * + * HMAC is a family of MAC algorithms that are based on a hash function. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is an HMAC algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_HMAC(alg) \ + (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \ + PSA_ALG_HMAC_BASE) + +/* In the encoding of a MAC algorithm, the bits corresponding to + * PSA_ALG_MAC_TRUNCATION_MASK encode the length to which the MAC is + * truncated. As an exception, the value 0 means the untruncated algorithm, + * whatever its length is. The length is encoded in 6 bits, so it can + * reach up to 63; the largest MAC is 64 bytes so its trivial truncation + * to full length is correctly encoded as 0 and any non-trivial truncation + * is correctly encoded as a value between 1 and 63. */ +#define PSA_ALG_MAC_TRUNCATION_MASK ((psa_algorithm_t)0x00003f00) +#define PSA_MAC_TRUNCATION_OFFSET 8 + +/** Macro to build a truncated MAC algorithm. + * + * A truncated MAC algorithm is identical to the corresponding MAC + * algorithm except that the MAC value for the truncated algorithm + * consists of only the first \p mac_length bytes of the MAC value + * for the untruncated algorithm. + * + * \note This macro may allow constructing algorithm identifiers that + * are not valid, either because the specified length is larger + * than the untruncated MAC or because the specified length is + * smaller than permitted by the implementation. + * + * \note It is implementation-defined whether a truncated MAC that + * is truncated to the same length as the MAC of the untruncated + * algorithm is considered identical to the untruncated algorithm + * for policy comparison purposes. + * + * \param mac_alg A MAC algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_MAC(\p alg) + * is true). This may be a truncated or untruncated + * MAC algorithm. + * \param mac_length Desired length of the truncated MAC in bytes. + * This must be at most the full length of the MAC + * and must be at least an implementation-specified + * minimum. The implementation-specified minimum + * shall not be zero. + * + * \return The corresponding MAC algorithm with the specified + * length. + * \return Unspecified if \p alg is not a supported + * MAC algorithm or if \p mac_length is too small or + * too large for the specified MAC algorithm. + */ +#define PSA_ALG_TRUNCATED_MAC(mac_alg, mac_length) \ + (((mac_alg) & ~PSA_ALG_MAC_TRUNCATION_MASK) | \ + ((mac_length) << PSA_MAC_TRUNCATION_OFFSET & PSA_ALG_MAC_TRUNCATION_MASK)) + +/** Macro to build the base MAC algorithm corresponding to a truncated + * MAC algorithm. + * + * \param mac_alg A MAC algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_MAC(\p alg) + * is true). This may be a truncated or untruncated + * MAC algorithm. + * + * \return The corresponding base MAC algorithm. + * \return Unspecified if \p alg is not a supported + * MAC algorithm. + */ +#define PSA_ALG_FULL_LENGTH_MAC(mac_alg) \ + ((mac_alg) & ~PSA_ALG_MAC_TRUNCATION_MASK) + +/** Length to which a MAC algorithm is truncated. + * + * \param mac_alg A MAC algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_MAC(\p alg) + * is true). + * + * \return Length of the truncated MAC in bytes. + * \return 0 if \p alg is a non-truncated MAC algorithm. + * \return Unspecified if \p alg is not a supported + * MAC algorithm. + */ +#define PSA_MAC_TRUNCATED_LENGTH(mac_alg) \ + (((mac_alg) & PSA_ALG_MAC_TRUNCATION_MASK) >> PSA_MAC_TRUNCATION_OFFSET) + +#define PSA_ALG_CIPHER_MAC_BASE ((psa_algorithm_t)0x02c00000) +/** The CBC-MAC construction over a block cipher + * + * \warning CBC-MAC is insecure in many cases. + * A more secure mode, such as #PSA_ALG_CMAC, is recommended. + */ +#define PSA_ALG_CBC_MAC ((psa_algorithm_t)0x02c00001) +/** The CMAC construction over a block cipher */ +#define PSA_ALG_CMAC ((psa_algorithm_t)0x02c00002) + +/** Whether the specified algorithm is a MAC algorithm based on a block cipher. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a MAC algorithm based on a block cipher, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_BLOCK_CIPHER_MAC(alg) \ + (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_MAC_SUBCATEGORY_MASK)) == \ + PSA_ALG_CIPHER_MAC_BASE) + +#define PSA_ALG_CIPHER_STREAM_FLAG ((psa_algorithm_t)0x00800000) +#define PSA_ALG_CIPHER_FROM_BLOCK_FLAG ((psa_algorithm_t)0x00400000) + +/** Whether the specified algorithm is a stream cipher. + * + * A stream cipher is a symmetric cipher that encrypts or decrypts messages + * by applying a bitwise-xor with a stream of bytes that is generated + * from a key. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a stream cipher algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier or if it is not a symmetric cipher algorithm. + */ +#define PSA_ALG_IS_STREAM_CIPHER(alg) \ + (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_CIPHER_STREAM_FLAG)) == \ + (PSA_ALG_CATEGORY_CIPHER | PSA_ALG_CIPHER_STREAM_FLAG)) + +/** The ARC4 stream cipher algorithm. + */ +#define PSA_ALG_ARC4 ((psa_algorithm_t)0x04800001) + +/** The ChaCha20 stream cipher. + * + * ChaCha20 is defined in RFC 7539. + * + * The nonce size for psa_cipher_set_iv() or psa_cipher_generate_iv() + * must be 12. + * + * The initial block counter is always 0. + * + */ +#define PSA_ALG_CHACHA20 ((psa_algorithm_t)0x04800005) + +/** The CTR stream cipher mode. + * + * CTR is a stream cipher which is built from a block cipher. + * The underlying block cipher is determined by the key type. + * For example, to use AES-128-CTR, use this algorithm with + * a key of type #PSA_KEY_TYPE_AES and a length of 128 bits (16 bytes). + */ +#define PSA_ALG_CTR ((psa_algorithm_t)0x04c00001) + +/** The CFB stream cipher mode. + * + * The underlying block cipher is determined by the key type. + */ +#define PSA_ALG_CFB ((psa_algorithm_t)0x04c00002) + +/** The OFB stream cipher mode. + * + * The underlying block cipher is determined by the key type. + */ +#define PSA_ALG_OFB ((psa_algorithm_t)0x04c00003) + +/** The XTS cipher mode. + * + * XTS is a cipher mode which is built from a block cipher. It requires at + * least one full block of input, but beyond this minimum the input + * does not need to be a whole number of blocks. + */ +#define PSA_ALG_XTS ((psa_algorithm_t)0x044000ff) + +/** The CBC block cipher chaining mode, with no padding. + * + * The underlying block cipher is determined by the key type. + * + * This symmetric cipher mode can only be used with messages whose lengths + * are whole number of blocks for the chosen block cipher. + */ +#define PSA_ALG_CBC_NO_PADDING ((psa_algorithm_t)0x04600100) + +/** The CBC block cipher chaining mode with PKCS#7 padding. + * + * The underlying block cipher is determined by the key type. + * + * This is the padding method defined by PKCS#7 (RFC 2315) §10.3. + */ +#define PSA_ALG_CBC_PKCS7 ((psa_algorithm_t)0x04600101) + +#define PSA_ALG_AEAD_FROM_BLOCK_FLAG ((psa_algorithm_t)0x00400000) + +/** Whether the specified algorithm is an AEAD mode on a block cipher. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is an AEAD algorithm which is an AEAD mode based on + * a block cipher, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_AEAD_ON_BLOCK_CIPHER(alg) \ + (((alg) & (PSA_ALG_CATEGORY_MASK | PSA_ALG_AEAD_FROM_BLOCK_FLAG)) == \ + (PSA_ALG_CATEGORY_AEAD | PSA_ALG_AEAD_FROM_BLOCK_FLAG)) + +/** The CCM authenticated encryption algorithm. + * + * The underlying block cipher is determined by the key type. + */ +#define PSA_ALG_CCM ((psa_algorithm_t)0x06401001) + +/** The GCM authenticated encryption algorithm. + * + * The underlying block cipher is determined by the key type. + */ +#define PSA_ALG_GCM ((psa_algorithm_t)0x06401002) + +/** The Chacha20-Poly1305 AEAD algorithm. + * + * The ChaCha20_Poly1305 construction is defined in RFC 7539. + * + * Implementations must support 12-byte nonces, may support 8-byte nonces, + * and should reject other sizes. + * + * Implementations must support 16-byte tags and should reject other sizes. + */ +#define PSA_ALG_CHACHA20_POLY1305 ((psa_algorithm_t)0x06001005) + +/* In the encoding of a AEAD algorithm, the bits corresponding to + * PSA_ALG_AEAD_TAG_LENGTH_MASK encode the length of the AEAD tag. + * The constants for default lengths follow this encoding. + */ +#define PSA_ALG_AEAD_TAG_LENGTH_MASK ((psa_algorithm_t)0x00003f00) +#define PSA_AEAD_TAG_LENGTH_OFFSET 8 + +/** Macro to build a shortened AEAD algorithm. + * + * A shortened AEAD algorithm is similar to the corresponding AEAD + * algorithm, but has an authentication tag that consists of fewer bytes. + * Depending on the algorithm, the tag length may affect the calculation + * of the ciphertext. + * + * \param aead_alg An AEAD algorithm identifier (value of type + * #psa_algorithm_t such that #PSA_ALG_IS_AEAD(\p alg) + * is true). + * \param tag_length Desired length of the authentication tag in bytes. + * + * \return The corresponding AEAD algorithm with the specified + * length. + * \return Unspecified if \p alg is not a supported + * AEAD algorithm or if \p tag_length is not valid + * for the specified AEAD algorithm. + */ +#define PSA_ALG_AEAD_WITH_TAG_LENGTH(aead_alg, tag_length) \ + (((aead_alg) & ~PSA_ALG_AEAD_TAG_LENGTH_MASK) | \ + ((tag_length) << PSA_AEAD_TAG_LENGTH_OFFSET & \ + PSA_ALG_AEAD_TAG_LENGTH_MASK)) + +/** Calculate the corresponding AEAD algorithm with the default tag length. + * + * \param aead_alg An AEAD algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_AEAD(\p alg) is true). + * + * \return The corresponding AEAD algorithm with the default + * tag length for that algorithm. + */ +#define PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH(aead_alg) \ + ( \ + PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH_CASE(aead_alg, PSA_ALG_CCM) \ + PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH_CASE(aead_alg, PSA_ALG_GCM) \ + PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH_CASE(aead_alg, PSA_ALG_CHACHA20_POLY1305) \ + 0) +#define PSA_ALG_AEAD_WITH_DEFAULT_TAG_LENGTH_CASE(aead_alg, ref) \ + PSA_ALG_AEAD_WITH_TAG_LENGTH(aead_alg, 0) == \ + PSA_ALG_AEAD_WITH_TAG_LENGTH(ref, 0) ? \ + ref : + +#define PSA_ALG_RSA_PKCS1V15_SIGN_BASE ((psa_algorithm_t)0x10020000) +/** RSA PKCS#1 v1.5 signature with hashing. + * + * This is the signature scheme defined by RFC 8017 + * (PKCS#1: RSA Cryptography Specifications) under the name + * RSASSA-PKCS1-v1_5. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding RSA PKCS#1 v1.5 signature algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_RSA_PKCS1V15_SIGN(hash_alg) \ + (PSA_ALG_RSA_PKCS1V15_SIGN_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +/** Raw PKCS#1 v1.5 signature. + * + * The input to this algorithm is the DigestInfo structure used by + * RFC 8017 (PKCS#1: RSA Cryptography Specifications), §9.2 + * steps 3–6. + */ +#define PSA_ALG_RSA_PKCS1V15_SIGN_RAW PSA_ALG_RSA_PKCS1V15_SIGN_BASE +#define PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PKCS1V15_SIGN_BASE) + +#define PSA_ALG_RSA_PSS_BASE ((psa_algorithm_t)0x10030000) +/** RSA PSS signature with hashing. + * + * This is the signature scheme defined by RFC 8017 + * (PKCS#1: RSA Cryptography Specifications) under the name + * RSASSA-PSS, with the message generation function MGF1, and with + * a salt length equal to the length of the hash. The specified + * hash algorithm is used to hash the input message, to create the + * salted hash, and for the mask generation. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding RSA PSS signature algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_RSA_PSS(hash_alg) \ + (PSA_ALG_RSA_PSS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_IS_RSA_PSS(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_PSS_BASE) + +#define PSA_ALG_ECDSA_BASE ((psa_algorithm_t)0x10060000) +/** ECDSA signature with hashing. + * + * This is the ECDSA signature scheme defined by ANSI X9.62, + * with a random per-message secret number (*k*). + * + * The representation of the signature as a byte string consists of + * the concatentation of the signature values *r* and *s*. Each of + * *r* and *s* is encoded as an *N*-octet string, where *N* is the length + * of the base point of the curve in octets. Each value is represented + * in big-endian order (most significant octet first). + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding ECDSA signature algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_ECDSA(hash_alg) \ + (PSA_ALG_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +/** ECDSA signature without hashing. + * + * This is the same signature scheme as #PSA_ALG_ECDSA(), but + * without specifying a hash algorithm. This algorithm may only be + * used to sign or verify a sequence of bytes that should be an + * already-calculated hash. Note that the input is padded with + * zeros on the left or truncated on the left as required to fit + * the curve size. + */ +#define PSA_ALG_ECDSA_ANY PSA_ALG_ECDSA_BASE +#define PSA_ALG_DETERMINISTIC_ECDSA_BASE ((psa_algorithm_t)0x10070000) +/** Deterministic ECDSA signature with hashing. + * + * This is the deterministic ECDSA signature scheme defined by RFC 6979. + * + * The representation of a signature is the same as with #PSA_ALG_ECDSA(). + * + * Note that when this algorithm is used for verification, signatures + * made with randomized ECDSA (#PSA_ALG_ECDSA(\p hash_alg)) with the + * same private key are accepted. In other words, + * #PSA_ALG_DETERMINISTIC_ECDSA(\p hash_alg) differs from + * #PSA_ALG_ECDSA(\p hash_alg) only for signature, not for verification. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * This includes #PSA_ALG_ANY_HASH + * when specifying the algorithm in a usage policy. + * + * \return The corresponding deterministic ECDSA signature + * algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_DETERMINISTIC_ECDSA(hash_alg) \ + (PSA_ALG_DETERMINISTIC_ECDSA_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_ECDSA_DETERMINISTIC_FLAG ((psa_algorithm_t)0x00010000) +#define PSA_ALG_IS_ECDSA(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK & ~PSA_ALG_ECDSA_DETERMINISTIC_FLAG) == \ + PSA_ALG_ECDSA_BASE) +#define PSA_ALG_ECDSA_IS_DETERMINISTIC(alg) \ + (((alg) & PSA_ALG_ECDSA_DETERMINISTIC_FLAG) != 0) +#define PSA_ALG_IS_DETERMINISTIC_ECDSA(alg) \ + (PSA_ALG_IS_ECDSA(alg) && PSA_ALG_ECDSA_IS_DETERMINISTIC(alg)) +#define PSA_ALG_IS_RANDOMIZED_ECDSA(alg) \ + (PSA_ALG_IS_ECDSA(alg) && !PSA_ALG_ECDSA_IS_DETERMINISTIC(alg)) + +/** Whether the specified algorithm is a hash-and-sign algorithm. + * + * Hash-and-sign algorithms are public-key signature algorithms structured + * in two parts: first the calculation of a hash in a way that does not + * depend on the key, then the calculation of a signature from the + * hash value and the key. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a hash-and-sign algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_HASH_AND_SIGN(alg) \ + (PSA_ALG_IS_RSA_PSS(alg) || PSA_ALG_IS_RSA_PKCS1V15_SIGN(alg) || \ + PSA_ALG_IS_ECDSA(alg)) + +/** Get the hash used by a hash-and-sign signature algorithm. + * + * A hash-and-sign algorithm is a signature algorithm which is + * composed of two phases: first a hashing phase which does not use + * the key and produces a hash of the input message, then a signing + * phase which only uses the hash and the key and not the message + * itself. + * + * \param alg A signature algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_SIGN(\p alg) is true). + * + * \return The underlying hash algorithm if \p alg is a hash-and-sign + * algorithm. + * \return 0 if \p alg is a signature algorithm that does not + * follow the hash-and-sign structure. + * \return Unspecified if \p alg is not a signature algorithm or + * if it is not supported by the implementation. + */ +#define PSA_ALG_SIGN_GET_HASH(alg) \ + (PSA_ALG_IS_HASH_AND_SIGN(alg) ? \ + ((alg) & PSA_ALG_HASH_MASK) == 0 ? /*"raw" algorithm*/ 0 : \ + ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \ + 0) + +/** RSA PKCS#1 v1.5 encryption. + */ +#define PSA_ALG_RSA_PKCS1V15_CRYPT ((psa_algorithm_t)0x12020000) + +#define PSA_ALG_RSA_OAEP_BASE ((psa_algorithm_t)0x12030000) +/** RSA OAEP encryption. + * + * This is the encryption scheme defined by RFC 8017 + * (PKCS#1: RSA Cryptography Specifications) under the name + * RSAES-OAEP, with the message generation function MGF1. + * + * \param hash_alg The hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true) to use + * for MGF1. + * + * \return The corresponding RSA OAEP signature algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_RSA_OAEP(hash_alg) \ + (PSA_ALG_RSA_OAEP_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +#define PSA_ALG_IS_RSA_OAEP(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_RSA_OAEP_BASE) +#define PSA_ALG_RSA_OAEP_GET_HASH(alg) \ + (PSA_ALG_IS_RSA_OAEP(alg) ? \ + ((alg) & PSA_ALG_HASH_MASK) | PSA_ALG_CATEGORY_HASH : \ + 0) + +#define PSA_ALG_HKDF_BASE ((psa_algorithm_t)0x20000100) +/** Macro to build an HKDF algorithm. + * + * For example, `PSA_ALG_HKDF(PSA_ALG_SHA256)` is HKDF using HMAC-SHA-256. + * + * This key derivation algorithm uses the following inputs: + * - #PSA_KEY_DERIVATION_INPUT_SALT is the salt used in the "extract" step. + * It is optional; if omitted, the derivation uses an empty salt. + * - #PSA_KEY_DERIVATION_INPUT_SECRET is the secret key used in the "extract" step. + * - #PSA_KEY_DERIVATION_INPUT_INFO is the info string used in the "expand" step. + * You must pass #PSA_KEY_DERIVATION_INPUT_SALT before #PSA_KEY_DERIVATION_INPUT_SECRET. + * You may pass #PSA_KEY_DERIVATION_INPUT_INFO at any time after steup and before + * starting to generate output. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * + * \return The corresponding HKDF algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_HKDF(hash_alg) \ + (PSA_ALG_HKDF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) +/** Whether the specified algorithm is an HKDF algorithm. + * + * HKDF is a family of key derivation algorithms that are based on a hash + * function and the HMAC construction. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is an HKDF algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key derivation algorithm identifier. + */ +#define PSA_ALG_IS_HKDF(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_HKDF_BASE) +#define PSA_ALG_HKDF_GET_HASH(hkdf_alg) \ + (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) + +#define PSA_ALG_TLS12_PRF_BASE ((psa_algorithm_t)0x20000200) +/** Macro to build a TLS-1.2 PRF algorithm. + * + * TLS 1.2 uses a custom pseudorandom function (PRF) for key schedule, + * specified in Section 5 of RFC 5246. It is based on HMAC and can be + * used with either SHA-256 or SHA-384. + * + * This key derivation algorithm uses the following inputs, which must be + * passed in the order given here: + * - #PSA_KEY_DERIVATION_INPUT_SEED is the seed. + * - #PSA_KEY_DERIVATION_INPUT_SECRET is the secret key. + * - #PSA_KEY_DERIVATION_INPUT_LABEL is the label. + * + * For the application to TLS-1.2 key expansion, the seed is the + * concatenation of ServerHello.Random + ClientHello.Random, + * and the label is "key expansion". + * + * For example, `PSA_ALG_TLS12_PRF(PSA_ALG_SHA256)` represents the + * TLS 1.2 PRF using HMAC-SHA-256. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * + * \return The corresponding TLS-1.2 PRF algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_TLS12_PRF(hash_alg) \ + (PSA_ALG_TLS12_PRF_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) + +/** Whether the specified algorithm is a TLS-1.2 PRF algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is a TLS-1.2 PRF algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key derivation algorithm identifier. + */ +#define PSA_ALG_IS_TLS12_PRF(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PRF_BASE) +#define PSA_ALG_TLS12_PRF_GET_HASH(hkdf_alg) \ + (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) + +#define PSA_ALG_TLS12_PSK_TO_MS_BASE ((psa_algorithm_t)0x20000300) +/** Macro to build a TLS-1.2 PSK-to-MasterSecret algorithm. + * + * In a pure-PSK handshake in TLS 1.2, the master secret is derived + * from the PreSharedKey (PSK) through the application of padding + * (RFC 4279, Section 2) and the TLS-1.2 PRF (RFC 5246, Section 5). + * The latter is based on HMAC and can be used with either SHA-256 + * or SHA-384. + * + * This key derivation algorithm uses the following inputs, which must be + * passed in the order given here: + * - #PSA_KEY_DERIVATION_INPUT_SEED is the seed. + * - #PSA_KEY_DERIVATION_INPUT_SECRET is the secret key. + * - #PSA_KEY_DERIVATION_INPUT_LABEL is the label. + * + * For the application to TLS-1.2, the seed (which is + * forwarded to the TLS-1.2 PRF) is the concatenation of the + * ClientHello.Random + ServerHello.Random, + * and the label is "master secret" or "extended master secret". + * + * For example, `PSA_ALG_TLS12_PSK_TO_MS(PSA_ALG_SHA256)` represents the + * TLS-1.2 PSK to MasterSecret derivation PRF using HMAC-SHA-256. + * + * \param hash_alg A hash algorithm (\c PSA_ALG_XXX value such that + * #PSA_ALG_IS_HASH(\p hash_alg) is true). + * + * \return The corresponding TLS-1.2 PSK to MS algorithm. + * \return Unspecified if \p hash_alg is not a supported + * hash algorithm. + */ +#define PSA_ALG_TLS12_PSK_TO_MS(hash_alg) \ + (PSA_ALG_TLS12_PSK_TO_MS_BASE | ((hash_alg) & PSA_ALG_HASH_MASK)) + +/** Whether the specified algorithm is a TLS-1.2 PSK to MS algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is a TLS-1.2 PSK to MS algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key derivation algorithm identifier. + */ +#define PSA_ALG_IS_TLS12_PSK_TO_MS(alg) \ + (((alg) & ~PSA_ALG_HASH_MASK) == PSA_ALG_TLS12_PSK_TO_MS_BASE) +#define PSA_ALG_TLS12_PSK_TO_MS_GET_HASH(hkdf_alg) \ + (PSA_ALG_CATEGORY_HASH | ((hkdf_alg) & PSA_ALG_HASH_MASK)) + +#define PSA_ALG_KEY_DERIVATION_MASK ((psa_algorithm_t)0x0803ffff) +#define PSA_ALG_KEY_AGREEMENT_MASK ((psa_algorithm_t)0x10fc0000) + +/** Macro to build a combined algorithm that chains a key agreement with + * a key derivation. + * + * \param ka_alg A key agreement algorithm (\c PSA_ALG_XXX value such + * that #PSA_ALG_IS_KEY_AGREEMENT(\p ka_alg) is true). + * \param kdf_alg A key derivation algorithm (\c PSA_ALG_XXX value such + * that #PSA_ALG_IS_KEY_DERIVATION(\p kdf_alg) is true). + * + * \return The corresponding key agreement and derivation + * algorithm. + * \return Unspecified if \p ka_alg is not a supported + * key agreement algorithm or \p kdf_alg is not a + * supported key derivation algorithm. + */ +#define PSA_ALG_KEY_AGREEMENT(ka_alg, kdf_alg) \ + ((ka_alg) | (kdf_alg)) + +#define PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) \ + (((alg) & PSA_ALG_KEY_DERIVATION_MASK) | PSA_ALG_CATEGORY_KEY_DERIVATION) + +#define PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) \ + (((alg) & PSA_ALG_KEY_AGREEMENT_MASK) | PSA_ALG_CATEGORY_KEY_AGREEMENT) + +/** Whether the specified algorithm is a raw key agreement algorithm. + * + * A raw key agreement algorithm is one that does not specify + * a key derivation function. + * Usually, raw key agreement algorithms are constructed directly with + * a \c PSA_ALG_xxx macro while non-raw key agreement algorithms are + * constructed with PSA_ALG_KEY_AGREEMENT(). + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \p alg is a raw key agreement algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \p alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_RAW_KEY_AGREEMENT(alg) \ + (PSA_ALG_IS_KEY_AGREEMENT(alg) && \ + PSA_ALG_KEY_AGREEMENT_GET_KDF(alg) == PSA_ALG_CATEGORY_KEY_DERIVATION) + +#define PSA_ALG_IS_KEY_DERIVATION_OR_AGREEMENT(alg) \ + ((PSA_ALG_IS_KEY_DERIVATION(alg) || PSA_ALG_IS_KEY_AGREEMENT(alg))) + +/** The finite-field Diffie-Hellman (DH) key agreement algorithm. + * + * The shared secret produced by key agreement is + * `g^{ab}` in big-endian format. + * It is `ceiling(m / 8)` bytes long where `m` is the size of the prime `p` + * in bits. + */ +#define PSA_ALG_FFDH ((psa_algorithm_t)0x30100000) + +/** Whether the specified algorithm is a finite field Diffie-Hellman algorithm. + * + * This includes the raw finite field Diffie-Hellman algorithm as well as + * finite-field Diffie-Hellman followed by any supporter key derivation + * algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is a finite field Diffie-Hellman algorithm, 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key agreement algorithm identifier. + */ +#define PSA_ALG_IS_FFDH(alg) \ + (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_FFDH) + +/** The elliptic curve Diffie-Hellman (ECDH) key agreement algorithm. + * + * The shared secret produced by key agreement is the x-coordinate of + * the shared secret point. It is always `ceiling(m / 8)` bytes long where + * `m` is the bit size associated with the curve, i.e. the bit size of the + * order of the curve's coordinate field. When `m` is not a multiple of 8, + * the byte containing the most significant bit of the shared secret + * is padded with zero bits. The byte order is either little-endian + * or big-endian depending on the curve type. + * + * - For Montgomery curves (curve types `PSA_ECC_CURVE_CURVEXXX`), + * the shared secret is the x-coordinate of `d_A Q_B = d_B Q_A` + * in little-endian byte order. + * The bit size is 448 for Curve448 and 255 for Curve25519. + * - For Weierstrass curves over prime fields (curve types + * `PSA_ECC_CURVE_SECPXXX` and `PSA_ECC_CURVE_BRAINPOOL_PXXX`), + * the shared secret is the x-coordinate of `d_A Q_B = d_B Q_A` + * in big-endian byte order. + * The bit size is `m = ceiling(log_2(p))` for the field `F_p`. + * - For Weierstrass curves over binary fields (curve types + * `PSA_ECC_CURVE_SECTXXX`), + * the shared secret is the x-coordinate of `d_A Q_B = d_B Q_A` + * in big-endian byte order. + * The bit size is `m` for the field `F_{2^m}`. + */ +#define PSA_ALG_ECDH ((psa_algorithm_t)0x30200000) + +/** Whether the specified algorithm is an elliptic curve Diffie-Hellman + * algorithm. + * + * This includes the raw elliptic curve Diffie-Hellman algorithm as well as + * elliptic curve Diffie-Hellman followed by any supporter key derivation + * algorithm. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is an elliptic curve Diffie-Hellman algorithm, + * 0 otherwise. + * This macro may return either 0 or 1 if \c alg is not a supported + * key agreement algorithm identifier. + */ +#define PSA_ALG_IS_ECDH(alg) \ + (PSA_ALG_KEY_AGREEMENT_GET_BASE(alg) == PSA_ALG_ECDH) + +/** Whether the specified algorithm encoding is a wildcard. + * + * Wildcard values may only be used to set the usage algorithm field in + * a policy, not to perform an operation. + * + * \param alg An algorithm identifier (value of type #psa_algorithm_t). + * + * \return 1 if \c alg is a wildcard algorithm encoding. + * \return 0 if \c alg is a non-wildcard algorithm encoding (suitable for + * an operation). + * \return This macro may return either 0 or 1 if \c alg is not a supported + * algorithm identifier. + */ +#define PSA_ALG_IS_WILDCARD(alg) \ + (PSA_ALG_IS_HASH_AND_SIGN(alg) ? \ + PSA_ALG_SIGN_GET_HASH(alg) == PSA_ALG_ANY_HASH : \ + (alg) == PSA_ALG_ANY_HASH) + +/**@}*/ + +/** \defgroup key_lifetimes Key lifetimes + * @{ + */ + +/** A volatile key only exists as long as the handle to it is not closed. + * The key material is guaranteed to be erased on a power reset. + */ +#define PSA_KEY_LIFETIME_VOLATILE ((psa_key_lifetime_t)0x00000000) + +/** The default storage area for persistent keys. + * + * A persistent key remains in storage until it is explicitly destroyed or + * until the corresponding storage area is wiped. This specification does + * not define any mechanism to wipe a storage area, but implementations may + * provide their own mechanism (for example to perform a factory reset, + * to prepare for device refurbishment, or to uninstall an application). + * + * This lifetime value is the default storage area for the calling + * application. Implementations may offer other storage areas designated + * by other lifetime values as implementation-specific extensions. + */ +#define PSA_KEY_LIFETIME_PERSISTENT ((psa_key_lifetime_t)0x00000001) + +/** The minimum value for a key identifier chosen by the application. + */ +#define PSA_KEY_ID_USER_MIN ((psa_app_key_id_t)0x00000001) +/** The maximum value for a key identifier chosen by the application. + */ +#define PSA_KEY_ID_USER_MAX ((psa_app_key_id_t)0x3fffffff) +/** The minimum value for a key identifier chosen by the implementation. + */ +#define PSA_KEY_ID_VENDOR_MIN ((psa_app_key_id_t)0x40000000) +/** The maximum value for a key identifier chosen by the implementation. + */ +#define PSA_KEY_ID_VENDOR_MAX ((psa_app_key_id_t)0x7fffffff) + +/**@}*/ + +/** \defgroup policy Key policies + * @{ + */ + +/** Whether the key may be exported. + * + * A public key or the public part of a key pair may always be exported + * regardless of the value of this permission flag. + * + * If a key does not have export permission, implementations shall not + * allow the key to be exported in plain form from the cryptoprocessor, + * whether through psa_export_key() or through a proprietary interface. + * The key may however be exportable in a wrapped form, i.e. in a form + * where it is encrypted by another key. + */ +#define PSA_KEY_USAGE_EXPORT ((psa_key_usage_t)0x00000001) + +/** Whether the key may be copied. + * + * This flag allows the use of psa_copy_key() to make a copy of the key + * with the same policy or a more restrictive policy. + * + * For lifetimes for which the key is located in a secure element which + * enforce the non-exportability of keys, copying a key outside the secure + * element also requires the usage flag #PSA_KEY_USAGE_EXPORT. + * Copying the key inside the secure element is permitted with just + * #PSA_KEY_USAGE_COPY if the secure element supports it. + * For keys with the lifetime #PSA_KEY_LIFETIME_VOLATILE or + * #PSA_KEY_LIFETIME_PERSISTENT, the usage flag #PSA_KEY_USAGE_COPY + * is sufficient to permit the copy. + */ +#define PSA_KEY_USAGE_COPY ((psa_key_usage_t)0x00000002) + +/** Whether the key may be used to encrypt a message. + * + * This flag allows the key to be used for a symmetric encryption operation, + * for an AEAD encryption-and-authentication operation, + * or for an asymmetric encryption operation, + * if otherwise permitted by the key's type and policy. + * + * For a key pair, this concerns the public key. + */ +#define PSA_KEY_USAGE_ENCRYPT ((psa_key_usage_t)0x00000100) + +/** Whether the key may be used to decrypt a message. + * + * This flag allows the key to be used for a symmetric decryption operation, + * for an AEAD decryption-and-verification operation, + * or for an asymmetric decryption operation, + * if otherwise permitted by the key's type and policy. + * + * For a key pair, this concerns the private key. + */ +#define PSA_KEY_USAGE_DECRYPT ((psa_key_usage_t)0x00000200) + +/** Whether the key may be used to sign a message. + * + * This flag allows the key to be used for a MAC calculation operation + * or for an asymmetric signature operation, + * if otherwise permitted by the key's type and policy. + * + * For a key pair, this concerns the private key. + */ +#define PSA_KEY_USAGE_SIGN_HASH ((psa_key_usage_t)0x00000400) + +/** Whether the key may be used to verify a message signature. + * + * This flag allows the key to be used for a MAC verification operation + * or for an asymmetric signature verification operation, + * if otherwise permitted by by the key's type and policy. + * + * For a key pair, this concerns the public key. + */ +#define PSA_KEY_USAGE_VERIFY_HASH ((psa_key_usage_t)0x00000800) + +/** Whether the key may be used to derive other keys. + */ +#define PSA_KEY_USAGE_DERIVE ((psa_key_usage_t)0x00001000) + +/**@}*/ + +/** \defgroup derivation Key derivation + * @{ + */ + +/** A secret input for key derivation. + * + * This should be a key of type #PSA_KEY_TYPE_DERIVE + * (passed to psa_key_derivation_input_key()) + * or the shared secret resulting from a key agreement + * (obtained via psa_key_derivation_key_agreement()). + * + * The secret can also be a direct input (passed to + * key_derivation_input_bytes()). In this case, the derivation operation + * may not be used to derive keys: the operation will only allow + * psa_key_derivation_output_bytes(), not psa_key_derivation_output_key(). + */ +#define PSA_KEY_DERIVATION_INPUT_SECRET ((psa_key_derivation_step_t)0x0101) + +/** A label for key derivation. + * + * This should be a direct input. + * It can also be a key of type #PSA_KEY_TYPE_RAW_DATA. + */ +#define PSA_KEY_DERIVATION_INPUT_LABEL ((psa_key_derivation_step_t)0x0201) + +/** A salt for key derivation. + * + * This should be a direct input. + * It can also be a key of type #PSA_KEY_TYPE_RAW_DATA. + */ +#define PSA_KEY_DERIVATION_INPUT_SALT ((psa_key_derivation_step_t)0x0202) + +/** An information string for key derivation. + * + * This should be a direct input. + * It can also be a key of type #PSA_KEY_TYPE_RAW_DATA. + */ +#define PSA_KEY_DERIVATION_INPUT_INFO ((psa_key_derivation_step_t)0x0203) + +/** A seed for key derivation. + * + * This should be a direct input. + * It can also be a key of type #PSA_KEY_TYPE_RAW_DATA. + */ +#define PSA_KEY_DERIVATION_INPUT_SEED ((psa_key_derivation_step_t)0x0204) + +/**@}*/ + +#endif /* PSA_CRYPTO_VALUES_H */ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/error.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/error.h new file mode 100644 index 0000000000..439dba4b70 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/error.h @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +/** + * \file psa/error.h + * \brief Standard error codes for the SPM and RoT Services + */ + +#ifndef __PSA_ERROR_H__ +#define __PSA_ERROR_H__ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/* If #PSA_SUCCESS is already defined, it means that #psa_status_t + * is also defined in an external header, so prevent its multiple + * definition. + */ +#ifndef PSA_SUCCESS +typedef int32_t psa_status_t; +#endif + +#define PSA_SUCCESS ((psa_status_t)0) + +#define PSA_ERROR_PROGRAMMER_ERROR ((psa_status_t)-129) +#define PSA_ERROR_CONNECTION_REFUSED ((psa_status_t)-130) +#define PSA_ERROR_CONNECTION_BUSY ((psa_status_t)-131) +#define PSA_ERROR_GENERIC_ERROR ((psa_status_t)-132) +#define PSA_ERROR_NOT_PERMITTED ((psa_status_t)-133) +#define PSA_ERROR_NOT_SUPPORTED ((psa_status_t)-134) +#define PSA_ERROR_INVALID_ARGUMENT ((psa_status_t)-135) +#define PSA_ERROR_INVALID_HANDLE ((psa_status_t)-136) +#define PSA_ERROR_BAD_STATE ((psa_status_t)-137) +#define PSA_ERROR_BUFFER_TOO_SMALL ((psa_status_t)-138) +#define PSA_ERROR_ALREADY_EXISTS ((psa_status_t)-139) +#define PSA_ERROR_DOES_NOT_EXIST ((psa_status_t)-140) +#define PSA_ERROR_INSUFFICIENT_MEMORY ((psa_status_t)-141) +#define PSA_ERROR_INSUFFICIENT_STORAGE ((psa_status_t)-142) +#define PSA_ERROR_INSUFFICIENT_DATA ((psa_status_t)-143) +#define PSA_ERROR_SERVICE_FAILURE ((psa_status_t)-144) +#define PSA_ERROR_COMMUNICATION_FAILURE ((psa_status_t)-145) +#define PSA_ERROR_STORAGE_FAILURE ((psa_status_t)-146) +#define PSA_ERROR_HARDWARE_FAILURE ((psa_status_t)-147) +#define PSA_ERROR_INVALID_SIGNATURE ((psa_status_t)-149) + +#ifdef __cplusplus +} +#endif + +#endif /* __PSA_ERROR_H__ */ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/initial_attestation.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/initial_attestation.h new file mode 100644 index 0000000000..c125a4d6f4 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/initial_attestation.h @@ -0,0 +1,228 @@ +/* + * Copyright (c) 2018-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +/***************************************************************************/ +/* DRAFT UNDER REVIEW */ +/* These APIs are still evolving and are meant as a prototype for review.*/ +/* The APIs will change depending on feedback and will be firmed up */ +/* to a stable set of APIs once all the feedback has been considered. */ +/***************************************************************************/ + +#ifndef __PSA_INITIAL_ATTESTATION_H__ +#define __PSA_INITIAL_ATTESTATION_H__ + +#include +#include +#include +#include "psa/crypto.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief PSA INITIAL ATTESTATION API version + * + * Initial attestation API version is: 1.0.0 + */ +#define PSA_INITIAL_ATTEST_API_VERSION_MAJOR (1) +#define PSA_INITIAL_ATTEST_API_VERSION_MINOR (0) + +/** + * The allowed size of input challenge in bytes: 32, 48, 64 + * Challenge can be a nonce from server + * or the hash of some combined data : nonce + attested data by caller. + */ +#define PSA_INITIAL_ATTEST_CHALLENGE_SIZE_32 (32u) +#define PSA_INITIAL_ATTEST_CHALLENGE_SIZE_48 (48u) +#define PSA_INITIAL_ATTEST_CHALLENGE_SIZE_64 (64u) + +/** + * The maximum size of an attestation token that can be generated by the + * attestation service. Used to configure buffers for services that verify the + * produced tokens. + */ +#define PSA_INITIAL_ATTEST_MAX_TOKEN_SIZE (0x400) + +/** + * The list of fixed claims in the initial attestation token is still evolving, + * you can expect slight changes in the future. + * + * The initial attestation token is planned to be aligned with future version of + * Entity Attestation Token format: + * https://tools.ietf.org/html/draft-mandyam-eat-01 + * + * Current list of claims: + * - Challenge: Input object from caller. Can be a single nonce from server + * or hash of nonce and attested data. It is intended to provide + * freshness to reports and the caller has responsibility to + * arrange this. Allowed length: 32, 48, 64 bytes. The claim is + * modeled to be eventually represented by the EAT standard + * claim nonce. Until such a time as that standard exists, + * the claim will be represented by a custom claim. Value + * is encoded as byte string. + * + * - Instance ID: It represents the unique identifier of the instance. In the + * PSA definition it is a hash of the public attestation key + * of the instance. The claim is modeled to be eventually + * represented by the EAT standard claim UEID of type GUID. + * Until such a time as that standard exists, the claim will be + * represented by a custom claim Value is encoded as byte + * string. + * + * - Verification service indicator: Optional, recommended claim. It is used by + * a Relying Party to locate a validation service for the token. + * The value is a text string that can be used to locate the + * service or a URL specifying the address of the service. The + * claim is modeled to be eventually represented by the EAT + * standard claim origination. Until such a time as that + * standard exists, the claim will be represented by a custom + * claim. Value is encoded as text string. + * + * - Profile definition: Optional, recommended claim. It contains the name of + * a document that describes the 'profile' of the token, being + * a full description of the claims, their usage, verification + * and token signing. The document name may include versioning. + * Custom claim with a value encoded as text string. + * + * - Implementation ID: It represents the original implementation signer of the + * attestation key and identifies the contract between the + * report and verification. A verification service will use this + * claim to locate the details of the verification process. + * Custom claim with a value encoded as byte string. + * + * - Security lifecycle: It represents the current lifecycle state of the + * instance. Custom claim with a value encoded as integer that + * is divided to convey a major state and a minor state. The + * PSA state and implementation state are encoded as follows: + * - version[15:8] - PSA lifecycle state - major + * - version[7:0] - IMPLEMENTATION DEFINED state - minor + * Possible PSA lifecycle states: + * - Unknown (0x1000u), + * - PSA_RoT_Provisioning (0x2000u), + * - Secured (0x3000u), + * - Non_PSA_RoT_Debug(0x4000u), + * - Recoverable_PSA_RoT_Debug (0x5000u), + * - Decommissioned (0x6000u) + * + * - Client ID: The partition ID of that secure partition or non-secure + * thread who called the initial attestation API. Custom claim + * with a value encoded as a *signed* integer. Negative number + * represents non-secure caller, positive numbers represents + * secure callers, zero is invalid. + * + * - HW version: Optional claim. Globally unique number in EAN-13 format + * identifying the GDSII that went to fabrication, HW and ROM. + * It can be used to reference the security level of the PSA-ROT + * via a certification website. Custom claim with a value is + * encoded as text string. + + * - Boot seed: It represents a random value created at system boot time that + * will allow differentiation of reports from different system + * sessions. The size is 32 bytes. Custom claim with a value is + * encoded as byte string. + * + * - Software components: Recommended claim. It represents the software state + * of the system. The value of the claim is an array of CBOR map + * entries, with one entry per software component within the + * device. Each map contains multiple claims that describe + * evidence about the details of the software component. + * + * - Measurement type: Optional claim. It represents the role of the + * software component. Value is encoded as short(!) text + * string. + * + * - Measurement value: It represents a hash of the invariant software + * component in memory at start-up time. The value must be a + * cryptographic hash of 256 bits or stronger.Value is + * encoded as byte string. + * + * - Version: Optional claim. It represents the issued software version. + * Value is encoded as text string. + * + * - Signer ID: It represents the hash of a signing authority public key. + * Value is encoded as byte string. + * + * - Measurement description: Optional claim. It represents the way in which + * the measurement value of the software component is + * computed. Value is encoded as text string containing an + * abbreviated description (name) of the measurement method. + * + * - No software measurements: In the event that the implementation does not + * contain any software measurements then the software + * components claim above can be omitted but instead + * it is mandatory to include this claim to indicate this is a + * deliberate state. Custom claim a value is encoded as unsigned + * integer set to 1. + */ + +/** + * \brief Get initial attestation token + * + * \param[in] auth_challenge Pointer to buffer where challenge input is + * stored. Nonce and / or hash of attested data. + * Must be always + * \ref PSA_INITIAL_ATTEST_TOKEN_SIZE bytes + * long. + * \param[in] challenge_size Size of challenge object in bytes. + * \param[out] token_buf Pointer to the buffer where attestation token + * will be stored. + * \param[in] token_buf_size Size of allocated buffer for token, in bytes. + * \param[out] token_size Size of the token that has been returned, in + * bytes. + * + * \return Returns error code as specified in \ref psa_status_t + */ +psa_status_t +psa_initial_attest_get_token(const uint8_t *auth_challenge, + size_t challenge_size, + uint8_t *token_buf, + size_t token_buf_size, + size_t *token_size); + +/** + * \brief Get the exact size of initial attestation token in bytes. + * + * It just returns with the size of the IAT token. It can be used if the caller + * dynamically allocates memory for the token buffer. + * + * \param[in] challenge_size Size of challenge object in bytes. This must be + * a supported challenge size (as above). + * \param[out] token_size Size of the token in bytes, which is created by + * initial attestation service. + * + * \return Returns error code as specified in \ref psa_status_t + */ +psa_status_t +psa_initial_attest_get_token_size(size_t challenge_size, + size_t *token_size); + +/** + * \brief Get the initial attestation public key. + * + * \param[out] public_key Pointer to the buffer where the public key + * will be stored. + * \param[in] key_buf_size Size of allocated buffer for key, in bytes. + * \param[out] public_key_len Size of public key in bytes. + * \param[out] public_key_curve Type of the elliptic curve which the key + * belongs to. + * + * \note Currently only the ECDSA P-256 over SHA-256 algorithm is supported. + * + * \return Returns error code as specified in \ref psa_status_t + */ +psa_status_t +tfm_initial_attest_get_public_key(uint8_t *public_key, + size_t public_key_buf_size, + size_t *public_key_len, + psa_ecc_curve_t *elliptic_curve_type); + +#ifdef __cplusplus +} +#endif + +#endif /* __PSA_INITIAL_ATTESTATION_H__ */ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/internal_trusted_storage.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/internal_trusted_storage.h new file mode 100644 index 0000000000..3920bc9825 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/internal_trusted_storage.h @@ -0,0 +1,164 @@ +/* + * Copyright (c) 2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +/** This file describes the PSA Internal Trusted Storage API +*/ + +#ifndef PSA_INTERNAL_TRUSTED_STORAGE_H +#define PSA_INTERNAL_TRUSTED_STORAGE_H + +#include +#include + +#include "psa/error.h" +#include "psa/storage_common.h" + +#ifdef __cplusplus +extern "C" { +#endif +#define PSA_ITS_API_VERSION_MAJOR 1 /**< The major version number of the + * PSA ITS API + */ +#define PSA_ITS_API_VERSION_MINOR 0 /**< The minor version number of the + * PSA ITS API + */ +// This version of the header file is associated with 1.0 final release. + +/** + * \brief Create a new, or modify an existing, uid/value pair + * + * Stores data in the internal storage. + * + * \param[in] uid The identifier for the data + * \param[in] data_length The size in bytes of the data in `p_data` + * \param[in] p_data A buffer containing the data + * \param[in] create_flags The flags that the data will be stored with + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_NOT_PERMITTED The operation failed because the + * provided `uid` value was already + * created with + * PSA_STORAGE_FLAG_WRITE_ONCE + * \retval PSA_ERROR_NOT_SUPPORTED The operation failed because one or + * more of the flags provided in + * `create_flags` is not supported or is + * not valid + * \retval PSA_ERROR_INSUFFICIENT_STORAGE The operation failed because there + * was insufficient space on the + * storage medium + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the + * physical storage has failed (Fatal + * error) + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one + * of the provided pointers(`p_data`) + * is invalid, for example is `NULL` or + * references memory the caller cannot + * access + */ +psa_status_t psa_its_set(psa_storage_uid_t uid, + size_t data_length, + const void *p_data, + psa_storage_create_flags_t create_flags); + +/** + * \brief Retrieve data associated with a provided UID + * + * Retrieves up to `data_size` bytes of the data associated with `uid`, starting + * at `data_offset` bytes from the beginning of the data. Upon successful + * completion, the data will be placed in the `p_data` buffer, which must be at + * least `data_size` bytes in size. The length of the data returned will be in + * `p_data_length`. If `data_size` is 0, the contents of `p_data_length` will + * be set to zero. + * + * \param[in] uid The uid value + * \param[in] data_offset The starting offset of the data requested + * \param[in] data_size The amount of data requested + * \param[out] p_data On success, the buffer where the data will + * be placed + * \param[out] p_data_length On success, this will contain size of the data + * placed in `p_data` + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_DOES_NOT_EXIST The operation failed because the + * provided `uid` value was not found in + * the storage + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the + * physical storage has failed (Fatal + * error) + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one of the + * provided arguments (`p_data`, + * `p_data_length`) is invalid, for example + * is `NULL` or references memory the + * caller cannot access. In addition, this + * can also happen if `data_offset` is + * larger than the size of the data + * associated with `uid` + */ +psa_status_t psa_its_get(psa_storage_uid_t uid, + size_t data_offset, + size_t data_size, + void *p_data, + size_t *p_data_length); + +/** + * \brief Retrieve the metadata about the provided uid + * + * Retrieves the metadata stored for a given `uid` as a `psa_storage_info_t` + * structure. + * + * \param[in] uid The `uid` value + * \param[out] p_info A pointer to the `psa_storage_info_t` struct that will + * be populated with the metadata + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_DOES_NOT_EXIST The operation failed because the provided + * uid value was not found in the storage + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the physical + * storage has failed (Fatal error) + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one of the + * provided pointers(`p_info`) + * is invalid, for example is `NULL` or + * references memory the caller cannot + * access + */ +psa_status_t psa_its_get_info(psa_storage_uid_t uid, + struct psa_storage_info_t *p_info); + +/** + * \brief Remove the provided uid and its associated data from the storage + * + * Deletes the data from internal storage. + * + * \param[in] uid The `uid` value + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one or more + * of the given arguments were invalid (null + * pointer, wrong flags and so on) + * \retval PSA_ERROR_DOES_NOT_EXIST The operation failed because the provided + * uid value was not found in the storage + * \retval PSA_ERROR_NOT_PERMITTED The operation failed because the provided + * uid value was created with + * PSA_STORAGE_FLAG_WRITE_ONCE + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the physical + * storage has failed (Fatal error) + */ +psa_status_t psa_its_remove(psa_storage_uid_t uid); + +#ifdef __cplusplus +} +#endif + +#endif // PSA_INTERNAL_TRUSTED_STORAGE_H diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/protected_storage.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/protected_storage.h new file mode 100644 index 0000000000..e76205c4f1 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/protected_storage.h @@ -0,0 +1,282 @@ +/* + * Copyright (c) 2019-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +/* This file describes the PSA Protected Storage API */ + +#ifndef PSA_PROTECTED_STORAGE_H +#define PSA_PROTECTED_STORAGE_H + +#include +#include + +#include "psa/error.h" +#include "psa/storage_common.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief PSA_PS_API_VERSION version + * + * Major and minor PSA_PS_API_VERSION numbers + */ +#define PSA_PS_API_VERSION_MAJOR 1 +#define PSA_PS_API_VERSION_MINOR 0 + +// This version of the header file is associated with 1.0 final release + +/** + * \brief Create a new, or modify an existing, uid/value pair + * + * Stores data in the protected storage. + * + * \param[in] uid The identifier for the data + * \param[in] data_length The size in bytes of the data in `p_data` + * \param[in] p_data A buffer containing the data + * \param[in] create_flags The flags that the data will be stored with + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_NOT_PERMITTED The operation failed because the + * provided `uid` value was already + * created with + * PSA_STORAGE_FLAG_WRITE_ONCE + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one + * of the provided pointers(`p_data`) + * is invalid, for example is `NULL` or + * references memory the caller cannot + * access + * \retval PSA_ERROR_NOT_SUPPORTED The operation failed because one or + * more of the flags provided in + * `create_flags` is not supported or is + * not valid + * \retval PSA_ERROR_INSUFFICIENT_STORAGE The operation failed because there + * was insufficient space on the + * storage medium + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the + * physical storage has failed (Fatal + * error) + * \retval PSA_ERROR_GENERIC_ERROR The operation failed because of an + * unspecified internal failure + */ +psa_status_t psa_ps_set(psa_storage_uid_t uid, + size_t data_length, + const void *p_data, + psa_storage_create_flags_t create_flags); + +/** + * \brief Retrieve data associated with a provided uid + * + * Retrieves up to `data_size` bytes of the data associated with `uid`, starting + * at `data_offset` bytes from the beginning of the data. Upon successful + * completion, the data will be placed in the `p_data` buffer, which must be at + * least `data_size` bytes in size. The length of the data returned will be in + * `p_data_length`. If `data_size` is 0, the contents of `p_data_length` will + * be set to zero. + * + * \param[in] uid The uid value + * \param[in] data_offset The starting offset of the data requested + * \param[in] data_size The amount of data requested + * \param[out] p_data On success, the buffer where the data will + * be placed + * \param[out] p_data_length On success, this will contain size of the data + * placed in `p_data` + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one of the + * provided arguments (`p_data`, + * `p_data_length`) is invalid, for example + * is `NULL` or references memory the + * caller cannot access. In addition, this + * can also happen if `data_offset` is + * larger than the size of the data + * associated with `uid` + * \retval PSA_ERROR_DOES_NOT_EXIST The operation failed because the + * provided `uid` value was not found in + * the storage + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the + * physical storage has failed (Fatal + * error) + * \retval PSA_ERROR_GENERIC_ERROR The operation failed because of an + * unspecified internal failure + * \retval PSA_ERROR_DATA_CORRUPT The operation failed because the data + * associated with the UID was corrupt + * \retval PSA_ERROR_INVALID_SIGNATURE The operation failed because the data + * associated with the UID failed + * authentication + */ +psa_status_t psa_ps_get(psa_storage_uid_t uid, + size_t data_offset, + size_t data_size, + void *p_data, + size_t *p_data_length); + +/** + * \brief Retrieve the metadata about the provided uid + * + * Retrieves the metadata stored for a given `uid` + * + * \param[in] uid The `uid` value + * \param[out] p_info A pointer to the `psa_storage_info_t` struct that will + * be populated with the metadata + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one of the + * provided pointers(`p_info`) + * is invalid, for example is `NULL` or + * references memory the caller cannot + * access + * \retval PSA_ERROR_DOES_NOT_EXIST The operation failed because the provided + * uid value was not found in the storage + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the physical + * storage has failed (Fatal error) + * \retval PSA_ERROR_GENERIC_ERROR The operation failed because of an + * unspecified internal failure + * \retval PSA_ERROR_DATA_CORRUPT The operation failed because the data + * associated with the UID was corrupt + */ +psa_status_t psa_ps_get_info(psa_storage_uid_t uid, + struct psa_storage_info_t *p_info); + +/** + * \brief Remove the provided uid and its associated data from the storage + * + * Removes previously stored data and any associated metadata, + * including rollback protection data. + * + * \param[in] uid The `uid` value + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one or more + * of the given arguments were invalid (null + * pointer, wrong flags and so on) + * \retval PSA_ERROR_DOES_NOT_EXIST The operation failed because the provided + * uid value was not found in the storage + * \retval PSA_ERROR_NOT_PERMITTED The operation failed because the provided + * uid value was created with + * PSA_STORAGE_FLAG_WRITE_ONCE + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the physical + * storage has failed (Fatal error) + * \retval PSA_ERROR_GENERIC_ERROR The operation failed because of an + * unspecified internal failure + */ +psa_status_t psa_ps_remove(psa_storage_uid_t uid); + +/** + * \brief Reserves storage for the specified uid + * + * Upon success, the capacity of the storage will be capacity, and the size + * will be 0. It is only necessary to call this function for assets that will + * be written with the psa_ps_set_extended function. If only the psa_ps_set + * function is needed, calls to this function are redundant. + * + * \param[in] uid The `uid` value + * \param[in] capacity The capacity to be allocated in bytes + * \param[in] create_flags Flags indicating properties of storage + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The operation completed successfully + * \retval PSA_ERROR_STORAGE_FAILURE The operation failed because the + * physical storage has failed + * (Fatal error) + * \retval PSA_ERROR_INSUFFICIENT_STORAGE The operation failed because the + * capacity is bigger than the current + * available space + * \retval PSA_ERROR_NOT_SUPPORTED The operation failed because the + * function is not implemented or one + * or more create_flags are not + * supported. + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because uid was + * 0 or create_flags specified flags + * that are not defined in the API. + * \retval PSA_ERROR_GENERIC_ERROR The operation failed due to an + * unspecified error + * \retval PSA_ERROR_ALREADY_EXISTS Storage for the specified uid + * already exists + */ +psa_status_t psa_ps_create(psa_storage_uid_t uid, + size_t capacity, + psa_storage_create_flags_t create_flags); + +/** + * \brief Sets partial data into an asset + * + * Before calling this function, the storage must have been reserved with a call + * to psa_ps_create. It can also be used to overwrite data in an asset that was + * created with a call to psa_ps_set. Calling this function with data_length = 0 + * is permitted, which will make no change to the stored data.This function can + * overwrite existing data and/or extend it up to the capacity for the uid + * specified in psa_ps_create, but cannot create gaps. + * + * That is, it has preconditions: + * - data_offset <= size + * - data_offset + data_length <= capacity + * and postconditions: + * - size = max(size, data_offset + data_length) + * - capacity unchanged. + * + * \param[in] uid The `uid` value + * \param[in] data_offset Offset within the asset to start the write + * \param[in] data_length The size in bytes of the data in p_data to write + * \param[in] p_data Pointer to a buffer which contains the data to write + * + * \return A status indicating the success/failure of the operation + * + * \retval PSA_SUCCESS The asset exists, the input parameters + * are correct and the data is correctly + * written in the physical storage. + * \retval PSA_ERROR_STORAGE_FAILURE The data was not written correctly in + * the physical storage + * \retval PSA_ERROR_INVALID_ARGUMENT The operation failed because one or more + * of the preconditions listed above + * regarding data_offset, size, or + * data_length was violated. + * \retval PSA_ERROR_DOES_NOT_EXIST The specified uid was not found + * \retval PSA_ERROR_NOT_SUPPORTED The implementation of the API does not + * support this function + * \retval PSA_ERROR_GENERIC_ERROR The operation failed due to an + * unspecified error + * \retval PSA_ERROR_DATA_CORRUPT The operation failed because the + * existing data has been corrupted. + * \retval PSA_ERROR_INVALID_SIGNATURE The operation failed because the + * existing data failed authentication + * (MAC check failed). + * \retval PSA_ERROR_NOT_PERMITTED The operation failed because it was + * attempted on an asset which was written + * with the flag + * PSA_STORAGE_FLAG_WRITE_ONCE + */ +psa_status_t psa_ps_set_extended(psa_storage_uid_t uid, + size_t data_offset, + size_t data_length, + const void *p_data); + +/** + * \brief Lists optional features. + * + * \return A bitmask with flags set for all of + * the optional features supported by the + * implementation.Currently defined flags + * are limited to + * PSA_STORAGE_SUPPORT_SET_EXTENDED + */ +uint32_t psa_ps_get_support(void); + +#ifdef __cplusplus +} +#endif + +#endif /* PSA_PROTECTED_STORAGE_H */ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/storage_common.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/storage_common.h new file mode 100644 index 0000000000..3f901c5bf9 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa/storage_common.h @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +/* This file includes common definitions for PSA storage +*/ + +#ifndef PSA_STORAGE_COMMON_H +#define PSA_STORAGE_COMMON_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +typedef uint32_t psa_storage_create_flags_t; + +typedef uint64_t psa_storage_uid_t; + +/* Flags */ + +#define PSA_STORAGE_FLAG_NONE 0u +#define PSA_STORAGE_FLAG_WRITE_ONCE (1u << 0) +#define PSA_STORAGE_FLAG_NO_CONFIDENTIALITY (1u << 1) +#define PSA_STORAGE_FLAG_NO_REPLAY_PROTECTION (1u << 2) + +/* A container for metadata associated with a specific uid */ + +struct psa_storage_info_t { + size_t capacity; + size_t size; + psa_storage_create_flags_t flags; +}; + +#define PSA_STORAGE_SUPPORT_SET_EXTENDED (1u << 0) + +#define PSA_ERROR_INVALID_SIGNATURE ((psa_status_t)-149) +#define PSA_ERROR_DATA_CORRUPT ((psa_status_t)-152) + +#ifdef __cplusplus +} +#endif + +#endif // PSA_STORAGE_COMMON_H diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa_manifest/sid.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa_manifest/sid.h new file mode 100644 index 0000000000..4b9b8c9c52 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/psa_manifest/sid.h @@ -0,0 +1,147 @@ +/* + * Copyright (c) 2019-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +/*********** WARNING: This is an auto-generated file. Do not edit! ***********/ + +#ifndef __PSA_MANIFEST_SID_H__ +#define __PSA_MANIFEST_SID_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +/******** TFM_SP_STORAGE ********/ +#define TFM_SST_SET_SID (0x00000060U) +#define TFM_SST_SET_VERSION (1U) +#define TFM_SST_GET_SID (0x00000061U) +#define TFM_SST_GET_VERSION (1U) +#define TFM_SST_GET_INFO_SID (0x00000062U) +#define TFM_SST_GET_INFO_VERSION (1U) +#define TFM_SST_REMOVE_SID (0x00000063U) +#define TFM_SST_REMOVE_VERSION (1U) +#define TFM_SST_GET_SUPPORT_SID (0x00000064U) +#define TFM_SST_GET_SUPPORT_VERSION (1U) + +/******** TFM_SP_ITS ********/ +#define TFM_ITS_SET_SID (0x00000070U) +#define TFM_ITS_SET_VERSION (1U) +#define TFM_ITS_GET_SID (0x00000071U) +#define TFM_ITS_GET_VERSION (1U) +#define TFM_ITS_GET_INFO_SID (0x00000072U) +#define TFM_ITS_GET_INFO_VERSION (1U) +#define TFM_ITS_REMOVE_SID (0x00000073U) +#define TFM_ITS_REMOVE_VERSION (1U) + +/******** TFM_SP_CRYPTO ********/ +#define TFM_CRYPTO_SID (0x00000080U) +#define TFM_CRYPTO_VERSION (1U) + +/******** TFM_SP_PLATFORM ********/ +#define TFM_SP_PLATFORM_SYSTEM_RESET_SID (0x00000040U) +#define TFM_SP_PLATFORM_SYSTEM_RESET_VERSION (1U) +#define TFM_SP_PLATFORM_IOCTL_SID (0x00000041U) +#define TFM_SP_PLATFORM_IOCTL_VERSION (1U) +#define TFM_SP_PLATFORM_NV_COUNTER_SID (0x00000042U) +#define TFM_SP_PLATFORM_NV_COUNTER_VERSION (1U) + +/******** TFM_SP_INITIAL_ATTESTATION ********/ +#define TFM_ATTEST_GET_TOKEN_SID (0x00000020U) +#define TFM_ATTEST_GET_TOKEN_VERSION (1U) +#define TFM_ATTEST_GET_TOKEN_SIZE_SID (0x00000021U) +#define TFM_ATTEST_GET_TOKEN_SIZE_VERSION (1U) +#define TFM_ATTEST_GET_PUBLIC_KEY_SID (0x00000022U) +#define TFM_ATTEST_GET_PUBLIC_KEY_VERSION (1U) + +/******** TFM_SP_CORE_TEST ********/ +#define SPM_CORE_TEST_INIT_SUCCESS_SID (0x0000F020U) +#define SPM_CORE_TEST_INIT_SUCCESS_VERSION (1U) +#define SPM_CORE_TEST_DIRECT_RECURSION_SID (0x0000F021U) +#define SPM_CORE_TEST_DIRECT_RECURSION_VERSION (1U) +#define SPM_CORE_TEST_SS_TO_SS_SID (0x0000F024U) +#define SPM_CORE_TEST_SS_TO_SS_VERSION (1U) +#define SPM_CORE_TEST_SS_TO_SS_BUFFER_SID (0x0000F025U) +#define SPM_CORE_TEST_SS_TO_SS_BUFFER_VERSION (1U) +#define SPM_CORE_TEST_OUTVEC_WRITE_SID (0x0000F026U) +#define SPM_CORE_TEST_OUTVEC_WRITE_VERSION (1U) +#define SPM_CORE_TEST_PERIPHERAL_ACCESS_SID (0x0000F027U) +#define SPM_CORE_TEST_PERIPHERAL_ACCESS_VERSION (1U) +#define SPM_CORE_TEST_GET_CALLER_CLIENT_ID_SID (0x0000F028U) +#define SPM_CORE_TEST_GET_CALLER_CLIENT_ID_VERSION (1U) +#define SPM_CORE_TEST_SPM_REQUEST_SID (0x0000F029U) +#define SPM_CORE_TEST_SPM_REQUEST_VERSION (1U) +#define SPM_CORE_TEST_BLOCK_SID (0x0000F02AU) +#define SPM_CORE_TEST_BLOCK_VERSION (1U) +#define SPM_CORE_TEST_NS_THREAD_SID (0x0000F02BU) +#define SPM_CORE_TEST_NS_THREAD_VERSION (1U) + +/******** TFM_SP_CORE_TEST_2 ********/ +#define SPM_CORE_TEST_2_SLAVE_SERVICE_SID (0x0000F040U) +#define SPM_CORE_TEST_2_SLAVE_SERVICE_VERSION (1U) +#define SPM_CORE_TEST_2_CHECK_CALLER_CLIENT_ID_SID (0x0000F041U) +#define SPM_CORE_TEST_2_CHECK_CALLER_CLIENT_ID_VERSION (1U) +#define SPM_CORE_TEST_2_GET_EVERY_SECOND_BYTE_SID (0x0000F042U) +#define SPM_CORE_TEST_2_GET_EVERY_SECOND_BYTE_VERSION (1U) +#define SPM_CORE_TEST_2_INVERT_SID (0x0000F043U) +#define SPM_CORE_TEST_2_INVERT_VERSION (1U) +#define SPM_CORE_TEST_2_PREPARE_TEST_SCENARIO_SID (0x0000F044U) +#define SPM_CORE_TEST_2_PREPARE_TEST_SCENARIO_VERSION (1U) +#define SPM_CORE_TEST_2_EXECUTE_TEST_SCENARIO_SID (0x0000F045U) +#define SPM_CORE_TEST_2_EXECUTE_TEST_SCENARIO_VERSION (1U) + +/******** TFM_SP_SECURE_TEST_PARTITION ********/ +#define TFM_SECURE_CLIENT_SFN_RUN_TESTS_SID (0x0000F000U) +#define TFM_SECURE_CLIENT_SFN_RUN_TESTS_VERSION (1U) + +/******** TFM_SP_IPC_SERVICE_TEST ********/ +#define IPC_SERVICE_TEST_BASIC_SID (0x0000F080U) +#define IPC_SERVICE_TEST_BASIC_VERSION (1U) +#define IPC_SERVICE_TEST_PSA_ACCESS_APP_MEM_SID (0x0000F081U) +#define IPC_SERVICE_TEST_PSA_ACCESS_APP_MEM_VERSION (1U) +#define IPC_SERVICE_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_SID (0x0000F082U) +#define IPC_SERVICE_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_VERSION (1U) +#define IPC_SERVICE_TEST_APP_ACCESS_PSA_MEM_SID (0x0000F083U) +#define IPC_SERVICE_TEST_APP_ACCESS_PSA_MEM_VERSION (1U) +#define IPC_SERVICE_TEST_CLIENT_PROGRAMMER_ERROR_SID (0x0000F084U) +#define IPC_SERVICE_TEST_CLIENT_PROGRAMMER_ERROR_VERSION (1U) + +/******** TFM_SP_IPC_CLIENT_TEST ********/ +#define IPC_CLIENT_TEST_BASIC_SID (0x0000F060U) +#define IPC_CLIENT_TEST_BASIC_VERSION (1U) +#define IPC_CLIENT_TEST_PSA_ACCESS_APP_MEM_SID (0x0000F061U) +#define IPC_CLIENT_TEST_PSA_ACCESS_APP_MEM_VERSION (1U) +#define IPC_CLIENT_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_SID (0x0000F062U) +#define IPC_CLIENT_TEST_PSA_ACCESS_APP_READ_ONLY_MEM_VERSION (1U) +#define IPC_CLIENT_TEST_APP_ACCESS_PSA_MEM_SID (0x0000F063U) +#define IPC_CLIENT_TEST_APP_ACCESS_PSA_MEM_VERSION (1U) +#define IPC_CLIENT_TEST_MEM_CHECK_SID (0x0000F064U) +#define IPC_CLIENT_TEST_MEM_CHECK_VERSION (1U) + +/******** TFM_IRQ_TEST_1 ********/ +#define SPM_CORE_IRQ_TEST_1_PREPARE_TEST_SCENARIO_SID (0x0000F0A0U) +#define SPM_CORE_IRQ_TEST_1_PREPARE_TEST_SCENARIO_VERSION (1U) +#define SPM_CORE_IRQ_TEST_1_EXECUTE_TEST_SCENARIO_SID (0x0000F0A1U) +#define SPM_CORE_IRQ_TEST_1_EXECUTE_TEST_SCENARIO_VERSION (1U) + +/******** TFM_SP_SST_TEST ********/ +#define TFM_SST_TEST_PREPARE_SID (0x0000F0C0U) +#define TFM_SST_TEST_PREPARE_VERSION (1U) + +/******** TFM_SP_SECURE_CLIENT_2 ********/ +#define TFM_SECURE_CLIENT_2_SID (0x0000F0E0U) +#define TFM_SECURE_CLIENT_2_VERSION (1U) + +/******** TFM_SP_MULTI_CORE_TEST ********/ +#define MULTI_CORE_MULTI_CLIENT_CALL_TEST_0_SID (0x0000F100U) +#define MULTI_CORE_MULTI_CLIENT_CALL_TEST_0_VERSION (1U) +#define MULTI_CORE_MULTI_CLIENT_CALL_TEST_1_SID (0x0000F101U) +#define MULTI_CORE_MULTI_CLIENT_CALL_TEST_1_VERSION (1U) + +#ifdef __cplusplus +} +#endif + +#endif /* __PSA_MANIFEST_SID_H__ */ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_api.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_api.h new file mode 100644 index 0000000000..09abc399b1 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_api.h @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2017-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __TFM_API_H__ +#define __TFM_API_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "psa/client.h" + +#define TFM_INVALID_CLIENT_ID 0 + +/** + * \brief Checks if the provided client ID is a secure client ID. + * + * \param[in] client_id Client ID to check. + * + * \retval 1 Client ID is secure. + * \retval 0 Client ID is non-secure. + */ +#define TFM_CLIENT_ID_IS_S(client_id) ((client_id)>0) + +/** + * \brief Checks if the provided client ID is a non-secure client ID. + * + * \param[in] client_id Client ID to check. + * + * \retval 1 Client ID is non-secure. + * \retval 0 Client ID is secure. + */ +#define TFM_CLIENT_ID_IS_NS(client_id) ((client_id)<0) + +/* The mask used for timeout values */ +#define PSA_TIMEOUT_MASK PSA_BLOCK + +/* FixMe: sort out DEBUG compile option and limit return value options + * on external interfaces */ +enum tfm_status_e +{ + TFM_SUCCESS = 0, + TFM_PARTITION_BUSY, + TFM_ERROR_SECURE_DOMAIN_LOCKED, + TFM_ERROR_INVALID_PARAMETER, + TFM_ERROR_PARTITION_NON_REENTRANT, + TFM_ERROR_NS_THREAD_MODE_CALL, + TFM_ERROR_NOT_INITIALIZED, + TFM_ERROR_NO_ACTIVE_PARTITION, + TFM_ERROR_INVALID_EXC_MODE, + TFM_SECURE_LOCK_FAILED, + TFM_SECURE_UNLOCK_FAILED, + TFM_ERROR_GENERIC = 0x1F, +}; + +/* + * Structure to package type, in_len and out_len, it is mainly used for + * psa_call. + */ +struct tfm_control_parameter_t { + int32_t type; + size_t in_len; + size_t out_len; +}; + +/********************* Secure function declarations ***************************/ + +/** + * \brief Assign client ID to the current TZ context. + * + * \param[in] ns_client_id The client ID to be assigned to the current + * context. + * \retval TFM_SUCCESS The client ID assigned successfully. + * \retval error code The client ID assignment failed, an error code + * returned according to \ref tfm_status_e. + * \note This function have to be called from handler mode. + */ +enum tfm_status_e tfm_register_client_id (int32_t ns_client_id); + +/** + * \brief Retrieve the version of the PSA Framework API that is implemented. + * + * \return The version of the PSA Framework. + */ +uint32_t tfm_psa_framework_version_veneer(void); + +/** + * \brief Return version of secure function provided by secure binary. + * + * \param[in] sid ID of secure service. + * + * \return Version number of secure function. + */ +uint32_t tfm_psa_version_veneer(uint32_t sid); + +/** + * \brief Connect to secure function. + * + * \param[in] sid ID of secure service. + * \param[in] version Version of SF requested by client. + * + * \return Returns handle to connection. + */ +psa_handle_t tfm_psa_connect_veneer(uint32_t sid, uint32_t version); + +/** + * \brief Call a secure function referenced by a connection handle. + * + * \param[in] handle Handle to connection. + * \param[in] ctrl_param Parameter structure, includes reuqest type, + * in_num and out_num. + * \param[in] in_vec Array of input \ref psa_invec structures. + * \param[in/out] out_vec Array of output \ref psa_outvec structures. + * + * \return Returns \ref psa_status_t status code. + */ +psa_status_t tfm_psa_call_veneer(psa_handle_t handle, + const struct tfm_control_parameter_t *ctrl_param, + const psa_invec *in_vec, + psa_outvec *out_vec); + +/** + * \brief Close connection to secure function referenced by a connection handle. + * + * \param[in] handle Handle to connection + * + * \return void + */ +void tfm_psa_close_veneer(psa_handle_t handle); + +/***************** End Secure function declarations ***************************/ + +#ifdef __cplusplus +} +#endif + +#endif /* __TFM_API_H__ */ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_crypto_defs.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_crypto_defs.h new file mode 100644 index 0000000000..53c03ce022 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_crypto_defs.h @@ -0,0 +1,164 @@ +/* + * Copyright (c) 2018-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __TFM_CRYPTO_DEFS_H__ +#define __TFM_CRYPTO_DEFS_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include +#include "tfm_api.h" +#include "psa/crypto.h" + +/** + * \brief This type is used to overcome a limitation in the number of maximum + * IOVECs that can be used especially in psa_aead_encrypt and + * psa_aead_decrypt. To be removed in case the AEAD APIs number of + * parameters passed gets restructured + */ +#define TFM_CRYPTO_MAX_NONCE_LENGTH (16u) +struct tfm_crypto_aead_pack_input { + uint8_t nonce[TFM_CRYPTO_MAX_NONCE_LENGTH]; + uint32_t nonce_length; +}; + +/** + * \brief Structure used to pack non-pointer types in a call + * + */ +struct tfm_crypto_pack_iovec { + uint32_t sfn_id; /*!< Secure function ID used to dispatch the + * request + */ + uint16_t step; /*!< Key derivation step */ + psa_key_handle_t key_handle; /*!< Key handle */ + psa_algorithm_t alg; /*!< Algorithm */ + uint32_t op_handle; /*!< Frontend context handle associated to a + * multipart operation + */ + size_t capacity; /*!< Key derivation capacity */ + + struct tfm_crypto_aead_pack_input aead_in; /*!< FixMe: Temporarily used for + * AEAD until the API is + * restructured + */ +}; + +/** + * \brief Define a progressive numerical value for each SID which can be used + * when dispatching the requests to the service + */ +enum { + TFM_CRYPTO_GET_KEY_ATTRIBUTES_SID = (0u), + TFM_CRYPTO_RESET_KEY_ATTRIBUTES_SID, + TFM_CRYPTO_OPEN_KEY_SID, + TFM_CRYPTO_CLOSE_KEY_SID, + TFM_CRYPTO_IMPORT_KEY_SID, + TFM_CRYPTO_DESTROY_KEY_SID, + TFM_CRYPTO_EXPORT_KEY_SID, + TFM_CRYPTO_EXPORT_PUBLIC_KEY_SID, + TFM_CRYPTO_COPY_KEY_SID, + TFM_CRYPTO_HASH_COMPUTE_SID, + TFM_CRYPTO_HASH_COMPARE_SID, + TFM_CRYPTO_HASH_SETUP_SID, + TFM_CRYPTO_HASH_UPDATE_SID, + TFM_CRYPTO_HASH_FINISH_SID, + TFM_CRYPTO_HASH_VERIFY_SID, + TFM_CRYPTO_HASH_ABORT_SID, + TFM_CRYPTO_HASH_CLONE_SID, + TFM_CRYPTO_MAC_COMPUTE_SID, + TFM_CRYPTO_MAC_VERIFY_SID, + TFM_CRYPTO_MAC_SIGN_SETUP_SID, + TFM_CRYPTO_MAC_VERIFY_SETUP_SID, + TFM_CRYPTO_MAC_UPDATE_SID, + TFM_CRYPTO_MAC_SIGN_FINISH_SID, + TFM_CRYPTO_MAC_VERIFY_FINISH_SID, + TFM_CRYPTO_MAC_ABORT_SID, + TFM_CRYPTO_CIPHER_ENCRYPT_SID, + TFM_CRYPTO_CIPHER_DECRYPT_SID, + TFM_CRYPTO_CIPHER_ENCRYPT_SETUP_SID, + TFM_CRYPTO_CIPHER_DECRYPT_SETUP_SID, + TFM_CRYPTO_CIPHER_GENERATE_IV_SID, + TFM_CRYPTO_CIPHER_SET_IV_SID, + TFM_CRYPTO_CIPHER_UPDATE_SID, + TFM_CRYPTO_CIPHER_FINISH_SID, + TFM_CRYPTO_CIPHER_ABORT_SID, + TFM_CRYPTO_AEAD_ENCRYPT_SID, + TFM_CRYPTO_AEAD_DECRYPT_SID, + TFM_CRYPTO_AEAD_ENCRYPT_SETUP_SID, + TFM_CRYPTO_AEAD_DECRYPT_SETUP_SID, + TFM_CRYPTO_AEAD_GENERATE_NONCE_SID, + TFM_CRYPTO_AEAD_SET_NONCE_SID, + TFM_CRYPTO_AEAD_SET_LENGTHS_SID, + TFM_CRYPTO_AEAD_UPDATE_AD_SID, + TFM_CRYPTO_AEAD_UPDATE_SID, + TFM_CRYPTO_AEAD_FINISH_SID, + TFM_CRYPTO_AEAD_VERIFY_SID, + TFM_CRYPTO_AEAD_ABORT_SID, + TFM_CRYPTO_SIGN_HASH_SID, + TFM_CRYPTO_VERIFY_HASH_SID, + TFM_CRYPTO_ASYMMETRIC_ENCRYPT_SID, + TFM_CRYPTO_ASYMMETRIC_DECRYPT_SID, + TFM_CRYPTO_KEY_DERIVATION_SETUP_SID, + TFM_CRYPTO_KEY_DERIVATION_GET_CAPACITY_SID, + TFM_CRYPTO_KEY_DERIVATION_SET_CAPACITY_SID, + TFM_CRYPTO_KEY_DERIVATION_INPUT_BYTES_SID, + TFM_CRYPTO_KEY_DERIVATION_INPUT_KEY_SID, + TFM_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT_SID, + TFM_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES_SID, + TFM_CRYPTO_KEY_DERIVATION_OUTPUT_KEY_SID, + TFM_CRYPTO_KEY_DERIVATION_ABORT_SID, + TFM_CRYPTO_RAW_KEY_AGREEMENT_SID, + TFM_CRYPTO_GENERATE_RANDOM_SID, + TFM_CRYPTO_GENERATE_KEY_SID, + TFM_CRYPTO_SET_KEY_DOMAIN_PARAMETERS_SID, + TFM_CRYPTO_GET_KEY_DOMAIN_PARAMETERS_SID, + TFM_CRYPTO_SID_MAX, +}; + +/** + * \brief Define an invalid value for an SID + * + */ +#define TFM_CRYPTO_SID_INVALID (~0x0u) + +/** + * \brief This value is used to mark an handle as invalid. + * + */ +#define TFM_CRYPTO_INVALID_HANDLE (0x0u) + +/** + * \brief The persistent key identifier that refers to the hardware unique key. + * + */ +#define TFM_CRYPTO_KEY_ID_HUK (0xFFFF815Bu) + +/** + * \brief The algorithm identifier that refers to key derivation from the + * hardware unique key. + * + */ +#define TFM_CRYPTO_ALG_HUK_DERIVATION ((psa_algorithm_t)0xB0000F00) + +/** + * \brief Define miscellaneous literal constants that are used in the service + * + */ +enum { + TFM_CRYPTO_NOT_IN_USE = 0, + TFM_CRYPTO_IN_USE = 1 +}; + +#ifdef __cplusplus +} +#endif + +#endif /* __TFM_CRYPTO_DEFS_H__ */ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_mailbox.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_mailbox.h new file mode 100644 index 0000000000..3d128f40b2 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_mailbox.h @@ -0,0 +1,180 @@ +/* + * Copyright (c) 2019-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +/* + * This is header file of common mailbox objects shared by NSPE and SPE. + * Please refer to tfm_ns_mailbox.h for the definitions only used in NSPE + * mailbox library. + * Please refer to tfm_spe_mailbox.h for the SPE specific definitions and APIs. + */ + +#ifndef __TFM_MAILBOX_H__ +#define __TFM_MAILBOX_H__ + +#include +#include +#include +#ifdef TFM_MULTI_CORE_MULTI_CLIENT_CALL +#include "device_cfg.h" +#endif +#include "psa/client.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * If multiple outstanding NS PSA Client calls is enabled, multi-core platform + * should define the number of mailbox queue slots NUM_MAILBOX_QUEUE_SLOT in + * platform device_cfg.h. + * Otherwise, NUM_MAILBOX_QUEUE_SLOT is defined as 1. + */ +#ifdef TFM_MULTI_CORE_MULTI_CLIENT_CALL +#ifndef NUM_MAILBOX_QUEUE_SLOT +#error "Error: Platform doesn't define NUM_MAILBOX_QUEUE_SLOT for mailbox queue" +#endif + +#if (NUM_MAILBOX_QUEUE_SLOT < 2) +#error "Error: Invalid NUM_MAILBOX_QUEUE_SLOT. The value should be more than 1" +#endif + +/* + * The number of slots should be no more than the number of bits in + * mailbox_queue_status_t. + * Here the value is hardcoded. A better way is to define a sizeof() to + * calculate the bits in mailbox_queue_status_t and dump it with pragma message. + */ +#if (NUM_MAILBOX_QUEUE_SLOT > 32) +#error "Error: Invalid NUM_MAILBOX_QUEUE_SLOT. The value should be no more than 32" +#endif +#else /* TFM_MULTI_CORE_MULTI_CLIENT_CALL */ +/* Force the number of mailbox queue slots as 1. */ +#undef NUM_MAILBOX_QUEUE_SLOT +#define NUM_MAILBOX_QUEUE_SLOT (1) +#endif /* TFM_MULTI_CORE_MULTI_CLIENT_CALL */ + +/* PSA client call type value */ +#define MAILBOX_PSA_FRAMEWORK_VERSION (0x1) +#define MAILBOX_PSA_VERSION (0x2) +#define MAILBOX_PSA_CONNECT (0x3) +#define MAILBOX_PSA_CALL (0x4) +#define MAILBOX_PSA_CLOSE (0x5) + +/* Return code of mailbox APIs */ +#define MAILBOX_SUCCESS (0) +#define MAILBOX_QUEUE_FULL (INT32_MIN + 1) +#define MAILBOX_INVAL_PARAMS (INT32_MIN + 2) +#define MAILBOX_NO_PERMS (INT32_MIN + 3) +#define MAILBOX_NO_PEND_EVENT (INT32_MIN + 4) +#define MAILBOX_CHAN_BUSY (INT32_MIN + 5) +#define MAILBOX_CALLBACK_REG_ERROR (INT32_MIN + 6) +#define MAILBOX_INIT_ERROR (INT32_MIN + 7) + +/* + * This structure holds the parameters used in a PSA client call. + */ +struct psa_client_params_t { + union { + struct { + uint32_t sid; + } psa_version_params; + + struct { + uint32_t sid; + uint32_t version; + } psa_connect_params; + + struct { + psa_handle_t handle; + int32_t type; + const psa_invec *in_vec; + size_t in_len; + psa_outvec *out_vec; + size_t out_len; + } psa_call_params; + + struct { + psa_handle_t handle; + } psa_close_params; + }; +}; + +/* Mailbox message passed from NSPE to SPE to deliver a PSA client call */ +struct mailbox_msg_t { + uint32_t call_type; /* PSA client call type */ + struct psa_client_params_t params; /* Contain parameters used in PSA + * client call + */ + + int32_t client_id; /* Optional client ID of the + * non-secure caller. + * It is required to identify the + * non-secure task when NSPE OS + * enforces non-secure task isolation + */ +}; + +/* A handle to a mailbox message in use */ +typedef int32_t mailbox_msg_handle_t; + +#define MAILBOX_MSG_NULL_HANDLE ((mailbox_msg_handle_t)0) + +/* + * Mailbox reply structure in non-secure memory + * to hold the PSA client call return result from SPE + */ +struct mailbox_reply_t { + int32_t return_val; +}; + +/* A single slot structure in NSPE mailbox queue */ +struct ns_mailbox_slot_t { + struct mailbox_msg_t msg; + struct mailbox_reply_t reply; + const void *owner; /* Handle of the owner task of this + * slot + */ + bool is_woken; /* Indicate that owner task has been + * or should be woken up, after the + * replied is received. + */ +}; + +typedef uint32_t mailbox_queue_status_t; + +/* NSPE mailbox queue */ +struct ns_mailbox_queue_t { + mailbox_queue_status_t empty_slots; /* Bitmask of empty slots */ + mailbox_queue_status_t pend_slots; /* Bitmask of slots pending + * for SPE handling + */ + mailbox_queue_status_t replied_slots; /* Bitmask of active slots + * containing PSA client call + * return result + */ + + struct ns_mailbox_slot_t queue[NUM_MAILBOX_QUEUE_SLOT]; + +#ifdef TFM_MULTI_CORE_TEST + uint32_t nr_tx; /* The total number of + * submission of NS PSA Client + * calls from NS task via + * mailbox. + */ + uint32_t nr_used_slots; /* The total number of used + * mailbox queue slots each time + * NS thread requests a mailbox + * queue slot. + */ +#endif +}; + +#ifdef __cplusplus +} +#endif + +#endif /* __TFM_MAILBOX_H__ */ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_multi_core_api.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_multi_core_api.h new file mode 100644 index 0000000000..7999fa442d --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_multi_core_api.h @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __TFM_MULTI_CORE_API__ +#define __TFM_MULTI_CORE_API__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include + +/** + * \brief Called on the non-secure CPU. + * Flags that the non-secure side has completed its initialization. + * Waits, if necessary, for the secure CPU to flag that it has completed + * its initialization. + * + * \return Return 0 if succeeds. + * \return Otherwise, return specific error code. + */ +int32_t tfm_ns_wait_for_s_cpu_ready(void); + +/** + * \brief Synchronisation with secure CPU, platform-specific implementation. + * Flags that the non-secure side has completed its initialization. + * Waits, if necessary, for the secure CPU to flag that it has completed + * its initialization. + * + * \retval Return 0 if succeeds. + * \retval Otherwise, return specific error code. + */ +int32_t tfm_platform_ns_wait_for_s_cpu_ready(void); + +/** + * \brief Acquire the multi-core lock for synchronizing PSA client call(s) + * The actual implementation depends on the use scenario. + * + * \return \ref TFM_SUCCESS on success + * \return \ref TFM_ERROR_GENERIC on error + */ +uint32_t tfm_ns_multi_core_lock_acquire(void); + +/** + * \brief Release the multi-core lock for synchronizing PSA client call(s) + * The actual implementation depends on the use scenario. + * + * \return \ref TFM_SUCCESS on success + * \return \ref TFM_ERROR_GENERIC on error + */ +uint32_t tfm_ns_multi_core_lock_release(void); + +#ifdef __cplusplus +} +#endif + +#endif /* __TFM_MULTI_CORE_API__ */ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_ns_interface.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_ns_interface.h new file mode 100644 index 0000000000..21857bed6f --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_ns_interface.h @@ -0,0 +1,54 @@ +/* + * Copyright (c) 2017-2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ +#ifndef __TFM_NS_INTERFACE_H__ +#define __TFM_NS_INTERFACE_H__ + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include "tfm_api.h" + +typedef int32_t (*veneer_fn) (uint32_t arg0, uint32_t arg1, + uint32_t arg2, uint32_t arg3); + +/** + * \brief NS interface, veneer function dispatcher + * + * \details This function implements the dispatching mechanism for the + * desired veneer function, to be called with the parameters + * described from arg0 to arg3. + * + * \param[in] fn Function pointer to the veneer function desired + * \param[in] arg0 Argument 0 + * \param[in] arg1 Argument 1 + * \param[in] arg2 Argument 2 + * \param[in] arg3 Argument 3 + * + * \return Returns the same return value of the requested veneer function + */ +int32_t tfm_ns_interface_dispatch(veneer_fn fn, + uint32_t arg0, uint32_t arg1, + uint32_t arg2, uint32_t arg3); + +/** + * \brief NS interface, Initialise the NS interface + * + * \details This function needs to be called from the NS world to + * properly initialise the NS interface towards TF-M. This + * function will initialise all the objects required for + * runtime dispatching of TF-M requests to services + * + * \return A value according to \ref enum tfm_status_e + */ +enum tfm_status_e tfm_ns_interface_init(void); +#ifdef __cplusplus +} +#endif + +#endif /* __TFM_NS_INTERFACE_H__ */ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_ns_mailbox.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_ns_mailbox.h new file mode 100644 index 0000000000..2fcb1b6470 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_ns_mailbox.h @@ -0,0 +1,229 @@ +/* + * Copyright (c) 2019-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +/* Data types and API definitions in NSPE mailbox library */ + +#ifndef __TFM_NS_MAILBOX_H__ +#define __TFM_NS_MAILBOX_H__ + +#include +#include +#include "tfm_mailbox.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef TFM_MULTI_CORE_TEST +/** + * \brief The structure to hold the statistics result of NSPE mailbox + */ +struct ns_mailbox_stats_res_t { + uint8_t avg_nr_slots; /* The value before the decimal point + * in the average number of NSPE + * mailbox slots in use. + */ + uint8_t avg_nr_slots_tenths; /* The first digit value after the + * decimal point in the average + * number of NSPE mailbox slots in use. + */ +}; +#endif + +/** + * \brief Prepare and send PSA client request to SPE via mailbox. + * + * \param[in] call_type PSA client call type + * \param[in] params Parmaters used for PSA client call + * \param[in] client_id Optional client ID of non-secure caller. + * It is required to identify the non-secure caller + * when NSPE OS enforces non-secure task isolation. + * + * \retval >= 0 The handle to the mailbox message assigned. + * \retval < 0 Operation failed with an error code. + */ +mailbox_msg_handle_t tfm_ns_mailbox_tx_client_req(uint32_t call_type, + const struct psa_client_params_t *params, + int32_t client_id); + +/** + * \brief Fetch PSA client return result. + * + * \param[in] handle The handle to the mailbox message + * \param[out] reply The address to be written with return result. + * + * \retval MAILBOX_SUCCESS Successfully get PSA client call return result. + * \retval Other return code Operation failed with an error code. + */ +int32_t tfm_ns_mailbox_rx_client_reply(mailbox_msg_handle_t handle, + int32_t *reply); + +/** + * \brief Check whether a specific mailbox message has been replied. + * + * \param[in] handle The handle to the mailbox message + * + * \retval true The PSA client call return value is replied. + * \retval false The PSA client call return value is not + * replied yet. + */ +bool tfm_ns_mailbox_is_msg_replied(mailbox_msg_handle_t handle); + +/** + * \brief NSPE mailbox initialization + * + * \param[in] queue The base address of NSPE mailbox queue to be + * initialized. + * + * \retval MAILBOX_SUCCESS Operation succeeded. + * \retval Other return code Operation failed with an error code. + */ +int32_t tfm_ns_mailbox_init(struct ns_mailbox_queue_t *queue); + +/** + * \brief Get the handle of the current non-secure task executing mailbox + * functionalities + * + * \note This function should be implemented according to platform, NS OS + * and actual use scenario. + * This function can be ignored or return NULL if sleep/wake-up mechanism + * is not required in PSA Client API implementation. + * + * \return Return the handle of task. + */ +const void *tfm_ns_mailbox_get_task_handle(void); + +/** + * \brief Fetch the handle to the first replied mailbox message in the NSPE + * mailbox queue. + * This function is intended to be called inside platform specific + * notification IRQ handler. + * + * \note The replied status of the fetched mailbox message will be cleaned after + * the message is fetched. When this function is called again, it fetches + * the next replied mailbox message from the NSPE mailbox queue. + * + * \return Return the handle to the first replied mailbox message in the + * queue. + * Return \ref MAILBOX_MSG_NULL_HANDLE if no mailbox message is replied. + */ +mailbox_msg_handle_t tfm_ns_mailbox_fetch_reply_msg_isr(void); + +/** + * \brief Return the handle of owner task of a mailbox message according to the + * \ref mailbox_msg_handle_t + * + * \param[in] handle The handle of mailbox message. + * + * \return Return the handle value of the owner task. + */ +const void *tfm_ns_mailbox_get_msg_owner(mailbox_msg_handle_t handle); + +#ifdef TFM_MULTI_CORE_MULTI_CLIENT_CALL +/** + * \brief Wait for the reply returned from SPE to the mailbox message specified + * by handle + * + * \param[in] handle The handle of mailbox message. + * + * \retval MAILBOX_SUCCESS Return from waiting successfully. + * \retval Other return code Failed to wait with an error code. + */ +int32_t tfm_ns_mailbox_wait_reply(mailbox_msg_handle_t handle); +#endif + +/** + * \brief Platform specific NSPE mailbox initialization. + * Invoked by \ref tfm_ns_mailbox_init(). + * + * \param[in] queue The base address of NSPE mailbox queue to be + * initialized. + * + * \retval MAILBOX_SUCCESS Operation succeeded. + * \retval Other return code Operation failed with an error code. + */ +int32_t tfm_ns_mailbox_hal_init(struct ns_mailbox_queue_t *queue); + +/** + * \brief Notify SPE to deal with the PSA client call sent via mailbox + * + * \note The implementation depends on platform specific hardware and use case. + * + * \retval MAILBOX_SUCCESS Operation succeeded. + * \retval Other return code Operation failed with an error code. + */ +int32_t tfm_ns_mailbox_hal_notify_peer(void); + +/** + * \brief Enter critical section of NSPE mailbox. + * + * \note The implementation depends on platform specific hardware and use case. + */ +void tfm_ns_mailbox_hal_enter_critical(void); + +/** + * \brief Exit critical section of NSPE mailbox. + * + * \note The implementation depends on platform specific hardware and use case. + */ +void tfm_ns_mailbox_hal_exit_critical(void); + +/** + * \brief Enter critical section of NSPE mailbox in IRQ handler. + * + * \note The implementation depends on platform specific hardware and use case. + */ +void tfm_ns_mailbox_hal_enter_critical_isr(void); + +/** + * \brief Enter critical section of NSPE mailbox in IRQ handler + * + * \note The implementation depends on platform specific hardware and use case. + */ +void tfm_ns_mailbox_hal_exit_critical_isr(void); + +#ifdef TFM_MULTI_CORE_MULTI_CLIENT_CALL +/** + * \brief Performs platform and NS OS specific waiting mechanism to wait for + * the reply of the specified mailbox message to be returned from SPE. + * + * \note This function is implemented by platform and NS OS specific waiting + * mechanism accroding to use scenario. + * + * \param[in] handle The handle of mailbox message. + */ +void tfm_ns_mailbox_hal_wait_reply(mailbox_msg_handle_t handle); +#endif + +#ifdef TFM_MULTI_CORE_TEST +/** + * \brief Initialize the statistics module in TF-M NSPE mailbox. + * + * \note This function is only available when multi-core tests are enabled. + */ +void tfm_ns_mailbox_tx_stats_init(void); + +/** + * \brief Calculate the average number of used NS mailbox queue slots each time + * NS task requires a queue slot to submit mailbox message, which is + * recorded in NS mailbox statisitics module. + * + * \note This function is only available when multi-core tests are enabled. + * + * \param[in] stats_res The buffer to be written with + * \ref ns_mailbox_stats_res_t. + * + * \return Return the calculation result. + */ +void tfm_ns_mailbox_stats_avg_slot(struct ns_mailbox_stats_res_t *stats_res); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __TFM_NS_MAILBOX_H__ */ diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/tfm_ns_svc.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_ns_svc.h similarity index 97% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/tfm_ns_svc.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_ns_svc.h index 366a70a91a..def0c2f7ee 100644 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/tfm_ns_svc.h +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_ns_svc.h @@ -6,7 +6,7 @@ */ #include -#include +#include "cmsis_compiler.h" #ifndef __TFM_NS_SVC_H__ #define __TFM_NS_SVC_H__ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_platform_api.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_platform_api.h new file mode 100644 index 0000000000..8c9b0db1fa --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_platform_api.h @@ -0,0 +1,98 @@ +/* + * Copyright (c) 2018-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#ifndef __TFM_PLATFORM_API__ +#define __TFM_PLATFORM_API__ + +#include +#include +#include +#include "tfm_api.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * \brief TFM secure partition platform API version + */ +#define TFM_PLATFORM_API_VERSION_MAJOR (0) +#define TFM_PLATFORM_API_VERSION_MINOR (3) + +#define TFM_PLATFORM_API_ID_NV_READ (1010) +#define TFM_PLATFORM_API_ID_NV_INCREMENT (1011) + +/*! + * \enum tfm_platform_err_t + * + * \brief Platform service error types + * + */ +enum tfm_platform_err_t { + TFM_PLATFORM_ERR_SUCCESS = 0, + TFM_PLATFORM_ERR_SYSTEM_ERROR, + TFM_PLATFORM_ERR_INVALID_PARAM, + TFM_PLATFORM_ERR_NOT_SUPPORTED, + + /* Following entry is only to ensure the error code of int size */ + TFM_PLATFORM_ERR_FORCE_INT_SIZE = INT_MAX +}; + +typedef int32_t tfm_platform_ioctl_req_t; + +/*! + * \brief Resets the system. + * + * \return Returns values as specified by the \ref tfm_platform_err_t + */ +enum tfm_platform_err_t tfm_platform_system_reset(void); + +/*! + * \brief Performs a platform-specific service + * + * \param[in] request Request identifier (valid values vary + * based on the platform) + * \param[in] input Input buffer to the requested service (or NULL) + * \param[in,out] output Output buffer to the requested service (or NULL) + * + * \return Returns values as specified by the \ref tfm_platform_err_t + */ +enum tfm_platform_err_t tfm_platform_ioctl(tfm_platform_ioctl_req_t request, + psa_invec *input, + psa_outvec *output); + +/*! + * \brief Increments the given non-volatile (NV) counter by one + * + * \param[in] counter_id NV counter ID. + * + * \return TFM_PLATFORM_ERR_SUCCESS if the value is read correctly. Otherwise, + * it returns TFM_PLATFORM_ERR_SYSTEM_ERROR. + */ +enum tfm_platform_err_t +tfm_platform_nv_counter_increment(uint32_t counter_id); + +/*! + * \brief Reads the given non-volatile (NV) counter + * + * \param[in] counter_id NV counter ID. + * \param[in] size Size of the buffer to store NV counter value + * in bytes. + * \param[out] val Pointer to store the current NV counter value. + * + * \return TFM_PLATFORM_ERR_SUCCESS if the value is read correctly. Otherwise, + * it returns TFM_PLATFORM_ERR_SYSTEM_ERROR. + */ +enum tfm_platform_err_t +tfm_platform_nv_counter_read(uint32_t counter_id, + uint32_t size, uint8_t *val); + +#ifdef __cplusplus +} +#endif + +#endif /* __TFM_PLATFORM_API__ */ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_veneers.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_veneers.h new file mode 100644 index 0000000000..d2d9207ffc --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/include/tfm_veneers.h @@ -0,0 +1,180 @@ +/* + * Copyright (c) 2018-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +/*********** WARNING: This is an auto-generated file. Do not edit! ***********/ + +#ifndef __TFM_VENEERS_H__ +#define __TFM_VENEERS_H__ + +#include "tfm_api.h" + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef TFM_PARTITION_SECURE_STORAGE +/******** TFM_SP_STORAGE ********/ +psa_status_t tfm_tfm_sst_set_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_sst_get_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_sst_get_info_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_sst_remove_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_sst_get_support_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +#endif /* TFM_PARTITION_SECURE_STORAGE */ + +#ifdef TFM_PARTITION_INTERNAL_TRUSTED_STORAGE +/******** TFM_SP_ITS ********/ +psa_status_t tfm_tfm_its_set_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_its_get_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_its_get_info_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_its_remove_req_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +#endif /* TFM_PARTITION_INTERNAL_TRUSTED_STORAGE */ + +#ifdef TFM_PARTITION_AUDIT_LOG +/******** TFM_SP_AUDIT_LOG ********/ +psa_status_t tfm_audit_core_retrieve_record_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_audit_core_add_record_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_audit_core_get_info_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_audit_core_get_record_info_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_audit_core_delete_record_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +#endif /* TFM_PARTITION_AUDIT_LOG */ + +#ifdef TFM_PARTITION_CRYPTO +/******** TFM_SP_CRYPTO ********/ +psa_status_t tfm_tfm_crypto_get_key_attributes_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_open_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_close_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_reset_key_attributes_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_import_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_destroy_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_export_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_export_public_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_copy_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_hash_compute_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_hash_compare_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_hash_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_hash_update_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_hash_finish_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_hash_verify_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_hash_abort_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_hash_clone_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_mac_compute_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_mac_verify_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_mac_sign_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_mac_verify_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_mac_update_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_mac_sign_finish_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_mac_verify_finish_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_mac_abort_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_cipher_encrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_cipher_decrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_cipher_encrypt_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_cipher_decrypt_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_cipher_generate_iv_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_cipher_set_iv_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_cipher_update_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_cipher_finish_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_cipher_abort_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_aead_encrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_aead_decrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_aead_encrypt_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_aead_decrypt_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_aead_generate_nonce_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_aead_set_nonce_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_aead_set_lengths_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_aead_update_ad_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_aead_update_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_aead_finish_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_aead_verify_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_aead_abort_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_sign_hash_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_verify_hash_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_asymmetric_encrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_asymmetric_decrypt_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_key_derivation_setup_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_key_derivation_get_capacity_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_key_derivation_set_capacity_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_key_derivation_input_bytes_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_key_derivation_input_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_key_derivation_key_agreement_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_key_derivation_output_bytes_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_key_derivation_output_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_key_derivation_abort_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_raw_key_agreement_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_generate_random_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_tfm_crypto_generate_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +#endif /* TFM_PARTITION_CRYPTO */ + +#ifdef TFM_PARTITION_PLATFORM +/******** TFM_SP_PLATFORM ********/ +psa_status_t tfm_platform_sp_system_reset_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_platform_sp_ioctl_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_platform_sp_nv_counter_read_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_platform_sp_nv_counter_increment_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +#endif /* TFM_PARTITION_PLATFORM */ + +#ifdef TFM_PARTITION_INITIAL_ATTESTATION +/******** TFM_SP_INITIAL_ATTESTATION ********/ +psa_status_t tfm_initial_attest_get_token_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_initial_attest_get_token_size_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_initial_attest_get_public_key_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +#endif /* TFM_PARTITION_INITIAL_ATTESTATION */ + +#ifdef TFM_PARTITION_TEST_CORE +/******** TFM_SP_CORE_TEST ********/ +psa_status_t tfm_spm_core_test_sfn_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_spm_core_test_sfn_init_success_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_spm_core_test_sfn_direct_recursion_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +#endif /* TFM_PARTITION_TEST_CORE */ + +#ifdef TFM_PARTITION_TEST_CORE +/******** TFM_SP_CORE_TEST_2 ********/ +psa_status_t tfm_spm_core_test_2_slave_service_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_spm_core_test_2_sfn_invert_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_spm_core_test_2_check_caller_client_id_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_spm_core_test_2_get_every_second_byte_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_spm_core_test_2_prepare_test_scenario_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_spm_core_test_2_execute_test_scenario_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +#endif /* TFM_PARTITION_TEST_CORE */ + +#ifdef TFM_PARTITION_TEST_SECURE_SERVICES +/******** TFM_SP_SECURE_TEST_PARTITION ********/ +psa_status_t tfm_tfm_secure_client_service_sfn_run_tests_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */ + +#ifdef TFM_PARTITION_TEST_CORE_IPC +/******** TFM_SP_IPC_SERVICE_TEST ********/ +#endif /* TFM_PARTITION_TEST_CORE_IPC */ + +#ifdef TFM_PARTITION_TEST_CORE_IPC +/******** TFM_SP_IPC_CLIENT_TEST ********/ +#endif /* TFM_PARTITION_TEST_CORE_IPC */ + +#ifdef TFM_ENABLE_IRQ_TEST +/******** TFM_IRQ_TEST_1 ********/ +psa_status_t tfm_spm_irq_test_1_prepare_test_scenario_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +psa_status_t tfm_spm_irq_test_1_execute_test_scenario_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +#endif /* TFM_ENABLE_IRQ_TEST */ + +#ifdef TFM_PARTITION_TEST_SST +/******** TFM_SP_SST_TEST ********/ +psa_status_t tfm_tfm_sst_test_prepare_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +#endif /* TFM_PARTITION_TEST_SST */ + +#ifdef TFM_PARTITION_TEST_SECURE_SERVICES +/******** TFM_SP_SECURE_CLIENT_2 ********/ +psa_status_t tfm_tfm_secure_client_2_call_veneer(psa_invec *in_vec, size_t in_len, psa_outvec *out_vec, size_t out_len); +#endif /* TFM_PARTITION_TEST_SECURE_SERVICES */ + +#ifdef TFM_MULTI_CORE_TEST +/******** TFM_SP_MULTI_CORE_TEST ********/ +#endif /* TFM_MULTI_CORE_TEST */ + +#ifdef __cplusplus +} +#endif + +#endif /* __TFM_VENEERS_H__ */ diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_crypto_ipc_api.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_crypto_ipc_api.c new file mode 100644 index 0000000000..70b3a0dfe5 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_crypto_ipc_api.c @@ -0,0 +1,1875 @@ +/* + * Copyright (c) 2018-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include "tfm_crypto_defs.h" +#include "psa/crypto.h" +#include "tfm_ns_interface.h" +#include "psa_manifest/sid.h" +#include "psa/client.h" + +#define ARRAY_SIZE(arr) (sizeof(arr)/sizeof(arr[0])) + +#define PSA_CONNECT(service) \ + psa_handle_t ipc_handle; \ + ipc_handle = psa_connect(service##_SID, service##_VERSION); \ + if (!PSA_HANDLE_IS_VALID(ipc_handle)) { \ + return PSA_ERROR_GENERIC_ERROR; \ + } \ + +#define PSA_CLOSE() psa_close(ipc_handle) + +#define API_DISPATCH(sfn_name, sfn_id) \ + psa_call(ipc_handle, PSA_IPC_CALL, \ + in_vec, ARRAY_SIZE(in_vec), \ + out_vec, ARRAY_SIZE(out_vec)) + +#define API_DISPATCH_NO_OUTVEC(sfn_name, sfn_id) \ + psa_call(ipc_handle, PSA_IPC_CALL, \ + in_vec, ARRAY_SIZE(in_vec), \ + (psa_outvec *)NULL, 0) + +psa_status_t psa_crypto_init(void) +{ + /* Service init is performed during TFM boot up, + * so application level initialisation is empty + */ + return PSA_SUCCESS; +} + +psa_status_t psa_open_key(psa_key_id_t id, + psa_key_handle_t *handle) +{ +#ifdef TFM_CRYPTO_KEY_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + const struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_OPEN_KEY_SID, + }; + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = &id, .len = sizeof(psa_key_id_t)}, + }; + psa_outvec out_vec[] = { + {.base = handle, .len = sizeof(psa_key_handle_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_open_key, + TFM_CRYPTO_OPEN_KEY); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */ +} + +psa_status_t psa_close_key(psa_key_handle_t handle) +{ +#ifdef TFM_CRYPTO_KEY_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + const struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_CLOSE_KEY_SID, + .key_handle = handle, + }; + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH_NO_OUTVEC(tfm_crypto_close_key, + TFM_CRYPTO_CLOSE_KEY);; + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */ +} + +psa_status_t psa_import_key(const psa_key_attributes_t *attributes, + const uint8_t *data, + size_t data_length, + psa_key_handle_t *handle) +{ +#ifdef TFM_CRYPTO_KEY_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_IMPORT_KEY_SID, + }; + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = attributes, .len = sizeof(psa_key_attributes_t)}, + {.base = data, .len = data_length} + }; + psa_outvec out_vec[] = { + {.base = handle, .len = sizeof(psa_key_handle_t)} + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_import_key, + TFM_CRYPTO_IMPORT_KEY); + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */ +} + +psa_status_t psa_destroy_key(psa_key_handle_t handle) +{ +#ifdef TFM_CRYPTO_KEY_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_DESTROY_KEY_SID, + .key_handle = handle, + }; + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH_NO_OUTVEC(tfm_crypto_destroy_key, + TFM_CRYPTO_DESTROY_KEY); + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */ +} + +psa_status_t psa_get_key_attributes(psa_key_handle_t handle, + psa_key_attributes_t *attributes) +{ +#ifdef TFM_CRYPTO_KEY_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_GET_KEY_ATTRIBUTES_SID, + .key_handle = handle, + }; + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = attributes, .len = sizeof(psa_key_attributes_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_get_key_attributes, + TFM_CRYPTO_GET_KEY_ATTRIBUTES); + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */ +} + +void psa_reset_key_attributes(psa_key_attributes_t *attributes) +{ +#ifdef TFM_CRYPTO_KEY_MODULE_DISABLED + return; +#else + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_RESET_KEY_ATTRIBUTES_SID, + }; + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = attributes, .len = sizeof(psa_key_attributes_t)}, + }; + + psa_handle_t ipc_handle; + ipc_handle = psa_connect(TFM_CRYPTO_SID, TFM_CRYPTO_VERSION); + if (!PSA_HANDLE_IS_VALID(ipc_handle)) { + return; + } + + (void)API_DISPATCH(tfm_crypto_reset_key_attributes, + TFM_CRYPTO_RESET_KEY_ATTRIBUTES); + PSA_CLOSE(); + + return; +#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */ +} + +psa_status_t psa_export_key(psa_key_handle_t handle, + uint8_t *data, + size_t data_size, + size_t *data_length) +{ +#ifdef TFM_CRYPTO_KEY_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_EXPORT_KEY_SID, + .key_handle = handle, + }; + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = data, .len = data_size} + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_export_key, + TFM_CRYPTO_EXPORT_KEY); + + *data_length = out_vec[0].len; + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */ +} + +psa_status_t psa_export_public_key(psa_key_handle_t handle, + uint8_t *data, + size_t data_size, + size_t *data_length) +{ +#ifdef TFM_CRYPTO_KEY_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_EXPORT_PUBLIC_KEY_SID, + .key_handle = handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = data, .len = data_size} + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_export_public_key, + TFM_CRYPTO_EXPORT_PUBLIC_KEY); + + *data_length = out_vec[0].len; + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */ +} + +psa_status_t psa_copy_key(psa_key_handle_t source_handle, + const psa_key_attributes_t *attributes, + psa_key_handle_t *target_handle) +{ +#ifdef TFM_CRYPTO_KEY_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_COPY_KEY_SID, + .key_handle = source_handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = attributes, .len = sizeof(psa_key_attributes_t)}, + + }; + + psa_outvec out_vec[] = { + {.base = target_handle, .len = sizeof(psa_key_handle_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_copy_key, + TFM_CRYPTO_COPY_KEY); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_KEY_MODULE_DISABLED */ +} + +psa_status_t psa_cipher_generate_iv(psa_cipher_operation_t *operation, + unsigned char *iv, + size_t iv_size, + size_t *iv_length) +{ +#ifdef TFM_CRYPTO_CIPHER_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_CIPHER_GENERATE_IV_SID, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + {.base = iv, .len = iv_size}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_cipher_generate_iv, + TFM_CRYPTO_CIPHER_GENERATE_IV); + + *iv_length = out_vec[1].len; + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */ +} + +psa_status_t psa_cipher_set_iv(psa_cipher_operation_t *operation, + const unsigned char *iv, + size_t iv_length) +{ +#ifdef TFM_CRYPTO_CIPHER_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_CIPHER_SET_IV_SID, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = iv, .len = iv_length}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_cipher_set_iv, + TFM_CRYPTO_CIPHER_SET_IV); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */ +} + +psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg) +{ +#ifdef TFM_CRYPTO_CIPHER_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_CIPHER_ENCRYPT_SETUP_SID, + .key_handle = handle, + .alg = alg, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_cipher_encrypt_setup, + TFM_CRYPTO_CIPHER_ENCRYPT_SETUP); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */ +} + +psa_status_t psa_cipher_decrypt_setup(psa_cipher_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg) +{ +#ifdef TFM_CRYPTO_CIPHER_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_CIPHER_DECRYPT_SETUP_SID, + .key_handle = handle, + .alg = alg, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_cipher_decrypt_setup, + TFM_CRYPTO_CIPHER_DECRYPT_SETUP); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */ +} + +psa_status_t psa_cipher_update(psa_cipher_operation_t *operation, + const uint8_t *input, + size_t input_length, + unsigned char *output, + size_t output_size, + size_t *output_length) +{ +#ifdef TFM_CRYPTO_CIPHER_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_CIPHER_UPDATE_SID, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = input, .len = input_length}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + {.base = output, .len = output_size} + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_cipher_update, + TFM_CRYPTO_CIPHER_UPDATE); + + *output_length = out_vec[1].len; + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */ +} + +psa_status_t psa_cipher_abort(psa_cipher_operation_t *operation) +{ +#ifdef TFM_CRYPTO_CIPHER_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_CIPHER_ABORT_SID, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_cipher_abort, + TFM_CRYPTO_CIPHER_ABORT); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */ +} + +psa_status_t psa_cipher_finish(psa_cipher_operation_t *operation, + uint8_t *output, + size_t output_size, + size_t *output_length) +{ +#ifdef TFM_CRYPTO_CIPHER_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_CIPHER_FINISH_SID, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + {.base = output, .len = output_size}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_cipher_finish, + TFM_CRYPTO_CIPHER_FINISH); + + *output_length = out_vec[1].len; + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_CIPHER_MODULE_DISABLED */ +} + +psa_status_t psa_hash_setup(psa_hash_operation_t *operation, + psa_algorithm_t alg) +{ +#ifdef TFM_CRYPTO_HASH_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_HASH_SETUP_SID, + .alg = alg, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_hash_setup, + TFM_CRYPTO_HASH_SETUP); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */ +} + +psa_status_t psa_hash_update(psa_hash_operation_t *operation, + const uint8_t *input, + size_t input_length) +{ +#ifdef TFM_CRYPTO_HASH_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_HASH_UPDATE_SID, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = input, .len = input_length}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_hash_update, + TFM_CRYPTO_HASH_UPDATE); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */ +} + +psa_status_t psa_hash_finish(psa_hash_operation_t *operation, + uint8_t *hash, + size_t hash_size, + size_t *hash_length) +{ +#ifdef TFM_CRYPTO_HASH_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_HASH_FINISH_SID, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + {.base = hash, .len = hash_size}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_hash_finish, + TFM_CRYPTO_HASH_FINISH); + + *hash_length = out_vec[1].len; + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */ +} + +psa_status_t psa_hash_verify(psa_hash_operation_t *operation, + const uint8_t *hash, + size_t hash_length) +{ +#ifdef TFM_CRYPTO_HASH_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_HASH_VERIFY_SID, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = hash, .len = hash_length}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_hash_verify, + TFM_CRYPTO_HASH_VERIFY); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */ +} + +psa_status_t psa_hash_abort(psa_hash_operation_t *operation) +{ +#ifdef TFM_CRYPTO_HASH_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_HASH_ABORT_SID, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_hash_abort, + TFM_CRYPTO_HASH_ABORT); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */ +} + +psa_status_t psa_hash_clone(const psa_hash_operation_t *source_operation, + psa_hash_operation_t *target_operation) +{ +#ifdef TFM_CRYPTO_HASH_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_HASH_CLONE_SID, + .op_handle = source_operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = target_operation, .len = sizeof(psa_hash_operation_t)}, + }; + + if (target_operation && (target_operation->handle != 0)) { + return PSA_ERROR_BAD_STATE; + } + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_hash_clone, + TFM_CRYPTO_HASH_CLONE); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_HASH_MODULE_DISABLED */ +} + +psa_status_t psa_mac_sign_setup(psa_mac_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg) +{ +#ifdef TFM_CRYPTO_MAC_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_MAC_SIGN_SETUP_SID, + .key_handle = handle, + .alg = alg, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_mac_sign_setup, + TFM_CRYPTO_MAC_SIGN_SETUP); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */ +} + +psa_status_t psa_mac_verify_setup(psa_mac_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg) +{ +#ifdef TFM_CRYPTO_MAC_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_MAC_VERIFY_SETUP_SID, + .key_handle = handle, + .alg = alg, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_mac_verify_setup, + TFM_CRYPTO_MAC_VERIFY_SETUP); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */ +} + +psa_status_t psa_mac_update(psa_mac_operation_t *operation, + const uint8_t *input, + size_t input_length) +{ +#ifdef TFM_CRYPTO_MAC_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_MAC_UPDATE_SID, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = input, .len = input_length}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_mac_update, + TFM_CRYPTO_MAC_UPDATE); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */ +} + +psa_status_t psa_mac_sign_finish(psa_mac_operation_t *operation, + uint8_t *mac, + size_t mac_size, + size_t *mac_length) +{ +#ifdef TFM_CRYPTO_MAC_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_MAC_SIGN_FINISH_SID, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + {.base = mac, .len = mac_size}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_mac_sign_finish, + TFM_CRYPTO_MAC_SIGN_FINISH); + + *mac_length = out_vec[1].len; + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */ +} + +psa_status_t psa_mac_verify_finish(psa_mac_operation_t *operation, + const uint8_t *mac, + size_t mac_length) +{ +#ifdef TFM_CRYPTO_MAC_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_MAC_VERIFY_FINISH_SID, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = mac, .len = mac_length}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_mac_verify_finish, + TFM_CRYPTO_MAC_VERIFY_FINISH); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */ +} + +psa_status_t psa_mac_abort(psa_mac_operation_t *operation) +{ +#ifdef TFM_CRYPTO_MAC_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_MAC_ABORT_SID, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_mac_abort, + TFM_CRYPTO_MAC_ABORT); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_MAC_MODULE_DISABLED */ +} + +psa_status_t psa_aead_encrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *nonce, + size_t nonce_length, + const uint8_t *additional_data, + size_t additional_data_length, + const uint8_t *plaintext, + size_t plaintext_length, + uint8_t *ciphertext, + size_t ciphertext_size, + size_t *ciphertext_length) +{ +#ifdef TFM_CRYPTO_AEAD_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_AEAD_ENCRYPT_SID, + .key_handle = handle, + .alg = alg, + .aead_in = {.nonce = {0}, .nonce_length = nonce_length} + }; + + /* Sanitize the optional input */ + if ((additional_data == NULL) && (additional_data_length != 0)) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + size_t idx = 0; + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = plaintext, .len = plaintext_length}, + {.base = additional_data, .len = additional_data_length}, + }; + psa_outvec out_vec[] = { + {.base = ciphertext, .len = ciphertext_size}, + }; + + if (nonce_length > TFM_CRYPTO_MAX_NONCE_LENGTH) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + if (nonce != NULL) { + for (idx = 0; idx < nonce_length; idx++) { + iov.aead_in.nonce[idx] = nonce[idx]; + } + } + + PSA_CONNECT(TFM_CRYPTO); + + size_t in_len = ARRAY_SIZE(in_vec); + if (additional_data == NULL) { + in_len--; + } + status = psa_call(ipc_handle, PSA_IPC_CALL, in_vec, in_len, + out_vec, ARRAY_SIZE(out_vec)); + + *ciphertext_length = out_vec[0].len; + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_AEAD_MODULE_DISABLED */ +} + +psa_status_t psa_aead_decrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *nonce, + size_t nonce_length, + const uint8_t *additional_data, + size_t additional_data_length, + const uint8_t *ciphertext, + size_t ciphertext_length, + uint8_t *plaintext, + size_t plaintext_size, + size_t *plaintext_length) +{ +#ifdef TFM_CRYPTO_AEAD_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_AEAD_DECRYPT_SID, + .key_handle = handle, + .alg = alg, + .aead_in = {.nonce = {0}, .nonce_length = nonce_length} + }; + + /* Sanitize the optional input */ + if ((additional_data == NULL) && (additional_data_length != 0)) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + size_t idx = 0; + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = ciphertext, .len = ciphertext_length}, + {.base = additional_data, .len = additional_data_length}, + }; + psa_outvec out_vec[] = { + {.base = plaintext, .len = plaintext_size}, + }; + + if (nonce_length > TFM_CRYPTO_MAX_NONCE_LENGTH) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + if (nonce != NULL) { + for (idx = 0; idx < nonce_length; idx++) { + iov.aead_in.nonce[idx] = nonce[idx]; + } + } + + PSA_CONNECT(TFM_CRYPTO); + + size_t in_len = ARRAY_SIZE(in_vec); + if (additional_data == NULL) { + in_len--; + } + status = psa_call(ipc_handle, PSA_IPC_CALL, in_vec, in_len, + out_vec, ARRAY_SIZE(out_vec)); + + *plaintext_length = out_vec[0].len; + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_AEAD_MODULE_DISABLED */ +} + +psa_status_t psa_asymmetric_sign(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + uint8_t *signature, + size_t signature_size, + size_t *signature_length) +{ + return psa_sign_hash(handle, alg, hash, hash_length, signature, signature_size, signature_length); +} + +psa_status_t psa_sign_hash(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + uint8_t *signature, + size_t signature_size, + size_t *signature_length) +{ +#ifdef TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_SIGN_HASH_SID, + .key_handle = handle, + .alg = alg, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = hash, .len = hash_length}, + }; + psa_outvec out_vec[] = { + {.base = signature, .len = signature_size}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_sign_hash, + TFM_CRYPTO_SIGN_HASH); + + *signature_length = out_vec[0].len; + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED */ +} + +psa_status_t psa_asymmetric_verify(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + const uint8_t *signature, + size_t signature_length) +{ + return psa_verify_hash(handle, alg, hash, hash_length, signature, signature_length); +} + +psa_status_t psa_verify_hash(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *hash, + size_t hash_length, + const uint8_t *signature, + size_t signature_length) +{ +#ifdef TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_VERIFY_HASH_SID, + .key_handle = handle, + .alg = alg + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = hash, .len = hash_length}, + {.base = signature, .len = signature_length} + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH_NO_OUTVEC(tfm_crypto_verify_hash, + TFM_CRYPTO_VERIFY_HASH); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED */ +} + +psa_status_t psa_asymmetric_encrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *salt, + size_t salt_length, + uint8_t *output, + size_t output_size, + size_t *output_length) +{ +#ifdef TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_ASYMMETRIC_ENCRYPT_SID, + .key_handle = handle, + .alg = alg + }; + + /* Sanitize the optional input */ + if ((salt == NULL) && (salt_length != 0)) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = input, .len = input_length}, + {.base = salt, .len = salt_length} + }; + + psa_outvec out_vec[] = { + {.base = output, .len = output_size}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + size_t in_len = ARRAY_SIZE(in_vec); + if (salt == NULL) { + in_len--; + } + status = psa_call(ipc_handle, PSA_IPC_CALL, in_vec, in_len, + out_vec, ARRAY_SIZE(out_vec)); + + *output_length = out_vec[0].len; + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED */ +} + +psa_status_t psa_asymmetric_decrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *salt, + size_t salt_length, + uint8_t *output, + size_t output_size, + size_t *output_length) +{ +#ifdef TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_ASYMMETRIC_DECRYPT_SID, + .key_handle = handle, + .alg = alg + }; + + /* Sanitize the optional input */ + if ((salt == NULL) && (salt_length != 0)) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = input, .len = input_length}, + {.base = salt, .len = salt_length} + }; + + psa_outvec out_vec[] = { + {.base = output, .len = output_size}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + size_t in_len = ARRAY_SIZE(in_vec); + if (salt == NULL) { + in_len--; + } + status = psa_call(ipc_handle, PSA_IPC_CALL, in_vec, in_len, + out_vec, ARRAY_SIZE(out_vec)); + + *output_length = out_vec[0].len; + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_ASYMMETRIC_MODULE_DISABLED */ +} + +psa_status_t psa_key_derivation_get_capacity( + const psa_key_derivation_operation_t *operation, + size_t *capacity) +{ +#ifdef TFM_CRYPTO_GENERATOR_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_KEY_DERIVATION_GET_CAPACITY_SID, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + + psa_outvec out_vec[] = { + {.base = capacity, .len = sizeof(size_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_key_derivation_get_capacity, + TFM_CRYPTO_KEY_DERIVATION_GET_CAPACITY); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */ +} + +psa_status_t psa_key_derivation_output_bytes( + psa_key_derivation_operation_t *operation, + uint8_t *output, + size_t output_length) +{ +#ifdef TFM_CRYPTO_GENERATOR_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES_SID, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + + psa_outvec out_vec[] = { + {.base = output, .len = output_length}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_key_derivation_output_bytes, + TFM_CRYPTO_KEY_DERIVATION_OUTPUT_BYTES); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */ +} + +psa_status_t psa_key_derivation_input_key( + psa_key_derivation_operation_t *operation, + psa_key_derivation_step_t step, + psa_key_handle_t handle) +{ +#ifdef TFM_CRYPTO_GENERATOR_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_KEY_DERIVATION_INPUT_KEY_SID, + .key_handle = handle, + .step = step, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH_NO_OUTVEC(tfm_crypto_key_derivation_input_key, + TFM_CRYPTO_KEY_DERIVATION_INPUT_KEY); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */ +} + +psa_status_t psa_key_derivation_abort( + psa_key_derivation_operation_t *operation) +{ +#ifdef TFM_CRYPTO_GENERATOR_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_KEY_DERIVATION_ABORT_SID, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_key_derivation_abort, + TFM_CRYPTO_KEY_DERIVATION_ABORT); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */ +} + +psa_status_t psa_key_derivation_key_agreement( + psa_key_derivation_operation_t *operation, + psa_key_derivation_step_t step, + psa_key_handle_t private_key, + const uint8_t *peer_key, + size_t peer_key_length) +{ +#ifdef TFM_CRYPTO_GENERATOR_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT_SID, + .key_handle = private_key, + .step = step, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = peer_key, .len = peer_key_length}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH_NO_OUTVEC(tfm_crypto_key_derivation_key_agreement, + TFM_CRYPTO_KEY_DERIVATION_KEY_AGREEMENT); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */ +} + +psa_status_t psa_generate_random(uint8_t *output, + size_t output_size) +{ +#ifdef TFM_CRYPTO_GENERATOR_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_GENERATE_RANDOM_SID, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + + psa_outvec out_vec[] = { + {.base = output, .len = output_size}, + }; + + if (output_size == 0) { + return PSA_SUCCESS; + } + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_generate_random, + TFM_CRYPTO_GENERATE_RANDOM); + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */ +} + +psa_status_t psa_generate_key(const psa_key_attributes_t *attributes, + psa_key_handle_t *handle) +{ +#ifdef TFM_CRYPTO_GENERATOR_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_GENERATE_KEY_SID, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = attributes, .len = sizeof(psa_key_attributes_t)}, + }; + + psa_outvec out_vec[] = { + {.base = handle, .len = sizeof(psa_key_handle_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_generate_key, + TFM_CRYPTO_GENERATE_KEY); + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */ +} + +psa_status_t psa_set_key_domain_parameters(psa_key_attributes_t *attributes, + psa_key_type_t type, + const uint8_t *data, + size_t data_length) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} + +psa_status_t psa_get_key_domain_parameters( + const psa_key_attributes_t *attributes, + uint8_t *data, + size_t data_size, + size_t *data_length) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} + +psa_status_t psa_hash_compare(psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *hash, + const size_t hash_length) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} + +psa_status_t psa_aead_update_ad(psa_aead_operation_t *operation, + const uint8_t *input, + size_t input_length) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} + +psa_status_t psa_aead_finish(psa_aead_operation_t *operation, + uint8_t *ciphertext, + size_t ciphertext_size, + size_t *ciphertext_length, + uint8_t *tag, + size_t tag_size, + size_t *tag_length) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} + +psa_status_t psa_aead_verify(psa_aead_operation_t *operation, + uint8_t *plaintext, + size_t plaintext_size, + size_t *plaintext_length, + const uint8_t *tag, + size_t tag_length) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} + +psa_status_t psa_aead_abort(psa_aead_operation_t *operation) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} + +psa_status_t psa_mac_compute(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *mac, + size_t mac_size, + size_t *mac_length) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} + +psa_status_t psa_mac_verify(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + const uint8_t *mac, + const size_t mac_length) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} + +psa_status_t psa_cipher_encrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} + +psa_status_t psa_cipher_decrypt(psa_key_handle_t handle, + psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} + +psa_status_t psa_raw_key_agreement(psa_algorithm_t alg, + psa_key_handle_t private_key, + const uint8_t *peer_key, + size_t peer_key_length, + uint8_t *output, + size_t output_size, + size_t *output_length) +{ +#ifdef TFM_CRYPTO_GENERATOR_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_RAW_KEY_AGREEMENT_SID, + .alg = alg, + .key_handle = private_key + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = peer_key, .len = peer_key_length}, + }; + + psa_outvec out_vec[] = { + {.base = output, .len = output_size}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_raw_key_agreement, + TFM_CRYPTO_RAW_KEY_AGREEMENT); + + *output_length = out_vec[0].len; + + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */ +} + +psa_status_t psa_key_derivation_setup(psa_key_derivation_operation_t *operation, + psa_algorithm_t alg) +{ +#ifdef TFM_CRYPTO_GENERATOR_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_KEY_DERIVATION_SETUP_SID, + .alg = alg, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + psa_outvec out_vec[] = { + {.base = &(operation->handle), .len = sizeof(uint32_t)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_key_derivation_setup, + TFM_CRYPTO_KEY_DERIVATION_SETUP); + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */ +} + +psa_status_t psa_key_derivation_set_capacity( + psa_key_derivation_operation_t *operation, + size_t capacity) +{ +#ifdef TFM_CRYPTO_GENERATOR_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_KEY_DERIVATION_SET_CAPACITY_SID, + .capacity = capacity, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH_NO_OUTVEC(tfm_crypto_key_derivation_set_capacity, + TFM_CRYPTO_KEY_DERIVATION_SET_CAPACITY); + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */ +} + +psa_status_t psa_key_derivation_input_bytes( + psa_key_derivation_operation_t *operation, + psa_key_derivation_step_t step, + const uint8_t *data, + size_t data_length) +{ +#ifdef TFM_CRYPTO_GENERATOR_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_KEY_DERIVATION_INPUT_BYTES_SID, + .step = step, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = data, .len = data_length}, + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH_NO_OUTVEC(tfm_crypto_key_derivation_input_bytes, + TFM_CRYPTO_KEY_DERIVATION_INPUT_BYTES); + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */ +} + +psa_status_t psa_key_derivation_output_key( + const psa_key_attributes_t *attributes, + psa_key_derivation_operation_t *operation, + psa_key_handle_t *handle) +{ +#ifdef TFM_CRYPTO_GENERATOR_MODULE_DISABLED + return PSA_ERROR_NOT_SUPPORTED; +#else + psa_status_t status; + struct tfm_crypto_pack_iovec iov = { + .sfn_id = TFM_CRYPTO_KEY_DERIVATION_OUTPUT_KEY_SID, + .op_handle = operation->handle, + }; + + psa_invec in_vec[] = { + {.base = &iov, .len = sizeof(struct tfm_crypto_pack_iovec)}, + {.base = attributes, .len = sizeof(psa_key_attributes_t)}, + }; + + psa_outvec out_vec[] = { + {.base = handle, .len = sizeof(psa_key_handle_t)} + }; + + PSA_CONNECT(TFM_CRYPTO); + + status = API_DISPATCH(tfm_crypto_key_derivation_output_key, + TFM_CRYPTO_KEY_DERIVATION_OUTPUT_KEY); + PSA_CLOSE(); + + return status; +#endif /* TFM_CRYPTO_GENERATOR_MODULE_DISABLED */ +} + +psa_status_t psa_hash_compute(psa_algorithm_t alg, + const uint8_t *input, + size_t input_length, + uint8_t *hash, + size_t hash_size, + size_t *hash_length) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} + +psa_status_t psa_aead_encrypt_setup(psa_aead_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} + +psa_status_t psa_aead_decrypt_setup(psa_aead_operation_t *operation, + psa_key_handle_t handle, + psa_algorithm_t alg) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} + +psa_status_t psa_aead_generate_nonce(psa_aead_operation_t *operation, + uint8_t *nonce, + size_t nonce_size, + size_t *nonce_length) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} + +psa_status_t psa_aead_set_nonce(psa_aead_operation_t *operation, + const uint8_t *nonce, + size_t nonce_length) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} + +psa_status_t psa_aead_set_lengths(psa_aead_operation_t *operation, + size_t ad_length, + size_t plaintext_length) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} + +psa_status_t psa_aead_update(psa_aead_operation_t *operation, + const uint8_t *input, + size_t input_length, + uint8_t *output, + size_t output_size, + size_t *output_length) +{ + psa_status_t status; + + status = PSA_ERROR_NOT_SUPPORTED; + + return status; +} diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_initial_attestation_ipc_api.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_initial_attestation_ipc_api.c new file mode 100644 index 0000000000..78f9dec6f4 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_initial_attestation_ipc_api.c @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2018-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include "psa/initial_attestation.h" +#include "tfm_ns_interface.h" +#include "psa/client.h" +#include "psa/crypto_types.h" +#include "psa_manifest/sid.h" + +#define IOVEC_LEN(x) (sizeof(x)/sizeof(x[0])) + +psa_status_t +psa_initial_attest_get_token(const uint8_t *auth_challenge, + size_t challenge_size, + uint8_t *token_buf, + size_t token_buf_size, + size_t *token_size) +{ + psa_handle_t handle = PSA_NULL_HANDLE; + psa_status_t status; + + psa_invec in_vec[] = { + {auth_challenge, challenge_size} + }; + psa_outvec out_vec[] = { + {token_buf, token_buf_size} + }; + + handle = psa_connect(TFM_ATTEST_GET_TOKEN_SID, + TFM_ATTEST_GET_TOKEN_VERSION); + if (!PSA_HANDLE_IS_VALID(handle)) { + return PSA_HANDLE_TO_ERROR(handle); + } + + status = psa_call(handle, PSA_IPC_CALL, + in_vec, IOVEC_LEN(in_vec), + out_vec, IOVEC_LEN(out_vec)); + psa_close(handle); + + if (status == PSA_SUCCESS) { + *token_size = out_vec[0].len; + } + + return status; +} + +psa_status_t +psa_initial_attest_get_token_size(size_t challenge_size, + size_t *token_size) +{ + psa_handle_t handle = PSA_NULL_HANDLE; + psa_status_t status; + psa_invec in_vec[] = { + {&challenge_size, sizeof(challenge_size)} + }; + psa_outvec out_vec[] = { + {token_size, sizeof(size_t)} + }; + + handle = psa_connect(TFM_ATTEST_GET_TOKEN_SIZE_SID, + TFM_ATTEST_GET_TOKEN_SIZE_VERSION); + if (!PSA_HANDLE_IS_VALID(handle)) { + return PSA_HANDLE_TO_ERROR(handle); + } + + status = psa_call(handle, PSA_IPC_CALL, + in_vec, IOVEC_LEN(in_vec), + out_vec, IOVEC_LEN(out_vec)); + psa_close(handle); + + return status; +} + +psa_status_t +tfm_initial_attest_get_public_key(uint8_t *public_key, + size_t public_key_buf_size, + size_t *public_key_len, + psa_ecc_curve_t *elliptic_curve_type) +{ + psa_handle_t handle = PSA_NULL_HANDLE; + psa_status_t status; + + psa_outvec out_vec[] = { + {.base = public_key, .len = public_key_buf_size}, + {.base = elliptic_curve_type, .len = sizeof(*elliptic_curve_type)}, + {.base = public_key_len, .len = sizeof(*public_key_len)} + }; + + handle = psa_connect(TFM_ATTEST_GET_PUBLIC_KEY_SID, + TFM_ATTEST_GET_PUBLIC_KEY_VERSION); + if (!PSA_HANDLE_IS_VALID(handle)) { + return PSA_HANDLE_TO_ERROR(handle); + } + + status = psa_call(handle, PSA_IPC_CALL, + NULL, 0, + out_vec, IOVEC_LEN(out_vec)); + psa_close(handle); + + return status; +} diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_its_ipc_api.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_its_ipc_api.c new file mode 100644 index 0000000000..9326f7b8e3 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_its_ipc_api.c @@ -0,0 +1,137 @@ +/* + * Copyright (c) 2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include "psa/internal_trusted_storage.h" +#include "tfm_api.h" + +#include "psa/client.h" +#include "psa_manifest/sid.h" + +#define IOVEC_LEN(x) (sizeof(x)/sizeof(x[0])) + +psa_status_t psa_its_set(psa_storage_uid_t uid, + size_t data_length, + const void *p_data, + psa_storage_create_flags_t create_flags) +{ + psa_status_t status; + psa_handle_t handle; + + psa_invec in_vec[] = { + { .base = &uid, .len = sizeof(uid) }, + { .base = p_data, .len = data_length }, + { .base = &create_flags, .len = sizeof(create_flags) } + }; + + handle = psa_connect(TFM_ITS_SET_SID, TFM_ITS_SET_VERSION); + if (!PSA_HANDLE_IS_VALID(handle)) { + return PSA_ERROR_GENERIC_ERROR; + } + + status = psa_call(handle, PSA_IPC_CALL, in_vec, IOVEC_LEN(in_vec), NULL, 0); + + psa_close(handle); + + if (status == (psa_status_t)TFM_ERROR_INVALID_PARAMETER) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + return status; +} + +psa_status_t psa_its_get(psa_storage_uid_t uid, + size_t data_offset, + size_t data_size, + void *p_data, + size_t *p_data_length) +{ + psa_status_t status; + psa_handle_t handle; + + psa_invec in_vec[] = { + { .base = &uid, .len = sizeof(uid) }, + { .base = &data_offset, .len = sizeof(data_offset) } + }; + + psa_outvec out_vec[] = { + { .base = p_data, .len = data_size } + }; + + if (p_data_length == NULL) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + handle = psa_connect(TFM_ITS_GET_SID, TFM_ITS_GET_VERSION); + if (!PSA_HANDLE_IS_VALID(handle)) { + return PSA_ERROR_GENERIC_ERROR; + } + + status = psa_call(handle, PSA_IPC_CALL, in_vec, IOVEC_LEN(in_vec), out_vec, + IOVEC_LEN(out_vec)); + + psa_close(handle); + + if (status == (psa_status_t)TFM_ERROR_INVALID_PARAMETER) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + *p_data_length = out_vec[0].len; + + return status; +} + +psa_status_t psa_its_get_info(psa_storage_uid_t uid, + struct psa_storage_info_t *p_info) +{ + psa_status_t status; + psa_handle_t handle; + + psa_invec in_vec[] = { + { .base = &uid, .len = sizeof(uid) } + }; + + psa_outvec out_vec[] = { + { .base = p_info, .len = sizeof(*p_info) } + }; + + handle = psa_connect(TFM_ITS_GET_INFO_SID, TFM_ITS_GET_INFO_VERSION); + if (!PSA_HANDLE_IS_VALID(handle)) { + return PSA_ERROR_GENERIC_ERROR; + } + + status = psa_call(handle, PSA_IPC_CALL, in_vec, IOVEC_LEN(in_vec), out_vec, + IOVEC_LEN(out_vec)); + + psa_close(handle); + + if (status == (psa_status_t)TFM_ERROR_INVALID_PARAMETER) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + return status; +} + +psa_status_t psa_its_remove(psa_storage_uid_t uid) +{ + psa_status_t status; + psa_handle_t handle; + + psa_invec in_vec[] = { + { .base = &uid, .len = sizeof(uid) } + }; + + handle = psa_connect(TFM_ITS_REMOVE_SID, TFM_ITS_REMOVE_VERSION); + if (!PSA_HANDLE_IS_VALID(handle)) { + return PSA_ERROR_GENERIC_ERROR; + } + + status = psa_call(handle, PSA_IPC_CALL, in_vec, IOVEC_LEN(in_vec), NULL, 0); + + psa_close(handle); + + return status; +} diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_platform_ipc_api.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_platform_ipc_api.c new file mode 100644 index 0000000000..0c1edf463f --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_platform_ipc_api.c @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2019, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include +#include "tfm_platform_api.h" +#include "psa_manifest/sid.h" + +enum tfm_platform_err_t tfm_platform_system_reset(void) +{ + psa_status_t status = PSA_ERROR_CONNECTION_REFUSED; + psa_handle_t handle = PSA_NULL_HANDLE; + + handle = psa_connect(TFM_SP_PLATFORM_SYSTEM_RESET_SID, + TFM_SP_PLATFORM_SYSTEM_RESET_VERSION); + if (handle <= 0) { + return TFM_PLATFORM_ERR_SYSTEM_ERROR; + } + + status = psa_call(handle, PSA_IPC_CALL, + NULL, 0, NULL, 0); + psa_close(handle); + + if (status < PSA_SUCCESS) { + return TFM_PLATFORM_ERR_SYSTEM_ERROR; + } else { + return (enum tfm_platform_err_t) status; + } + +} + +enum tfm_platform_err_t +tfm_platform_ioctl(tfm_platform_ioctl_req_t request, + psa_invec *input, psa_outvec *output) +{ + tfm_platform_ioctl_req_t req = request; + struct psa_invec in_vec[2] = { {0} }; + size_t inlen, outlen; + psa_status_t status = PSA_ERROR_CONNECTION_REFUSED; + psa_handle_t handle = PSA_NULL_HANDLE; + + in_vec[0].base = &req; + in_vec[0].len = sizeof(req); + if (input != NULL) { + in_vec[1].base = input->base; + in_vec[1].len = input->len; + inlen = 2; + } else { + inlen = 1; + } + + if (output != NULL) { + outlen = 1; + } else { + outlen = 0; + } + + handle = psa_connect(TFM_SP_PLATFORM_IOCTL_SID, + TFM_SP_PLATFORM_IOCTL_VERSION); + if (handle <= 0) { + return TFM_PLATFORM_ERR_SYSTEM_ERROR; + } + + status = psa_call(handle, PSA_IPC_CALL, + in_vec, inlen, + output, outlen); + psa_close(handle); + + if (status < PSA_SUCCESS) { + return TFM_PLATFORM_ERR_SYSTEM_ERROR; + } else { + return (enum tfm_platform_err_t) status; + } +} + diff --git a/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_sst_ipc_api.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_sst_ipc_api.c new file mode 100644 index 0000000000..41304281f5 --- /dev/null +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/TARGET_TFM/src/tfm_sst_ipc_api.c @@ -0,0 +1,183 @@ +/* + * Copyright (c) 2017-2020, Arm Limited. All rights reserved. + * + * SPDX-License-Identifier: BSD-3-Clause + * + */ + +#include "psa/protected_storage.h" + +#include "tfm_ns_interface.h" +#include "psa_manifest/sid.h" + +#define IOVEC_LEN(x) (uint32_t)(sizeof(x)/sizeof(x[0])) + +psa_status_t psa_ps_set(psa_storage_uid_t uid, + size_t data_length, + const void *p_data, + psa_storage_create_flags_t create_flags) +{ + psa_status_t status; + psa_handle_t handle; + + psa_invec in_vec[] = { + { .base = &uid, .len = sizeof(uid) }, + { .base = p_data, .len = data_length }, + { .base = &create_flags, .len = sizeof(create_flags) } + }; + + handle = psa_connect(TFM_SST_SET_SID, TFM_SST_SET_VERSION); + if (!PSA_HANDLE_IS_VALID(handle)) { + return PSA_ERROR_GENERIC_ERROR; + } + + status = psa_call(handle, PSA_IPC_CALL, in_vec, IOVEC_LEN(in_vec), + NULL, 0); + + psa_close(handle); + + /* A parameter with a buffer pointer pointer that has data length longer + * than maximum permitted is treated as a secure violation. + * TF-M framework rejects the request with TFM_ERROR_INVALID_PARAMETER. + */ + if (status == (psa_status_t)TFM_ERROR_INVALID_PARAMETER) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + return status; +} + +psa_status_t psa_ps_get(psa_storage_uid_t uid, + size_t data_offset, + size_t data_size, + void *p_data, + size_t *p_data_length) +{ + psa_status_t status; + psa_handle_t handle; + + psa_invec in_vec[] = { + { .base = &uid, .len = sizeof(uid) }, + { .base = &data_offset, .len = sizeof(data_offset) } + }; + + psa_outvec out_vec[] = { + { .base = p_data, .len = data_size } + }; + + if (p_data_length == NULL) { + return PSA_ERROR_INVALID_ARGUMENT; + } + + handle = psa_connect(TFM_SST_GET_SID, TFM_SST_GET_VERSION); + if (!PSA_HANDLE_IS_VALID(handle)) { + return PSA_ERROR_GENERIC_ERROR; + } + + status = psa_call(handle, PSA_IPC_CALL, in_vec, IOVEC_LEN(in_vec), out_vec, + IOVEC_LEN(out_vec)); + + psa_close(handle); + + *p_data_length = out_vec[0].len; + + return status; +} + +psa_status_t psa_ps_get_info(psa_storage_uid_t uid, + struct psa_storage_info_t *p_info) +{ + psa_status_t status; + psa_handle_t handle; + + psa_invec in_vec[] = { + { .base = &uid, .len = sizeof(uid) } + }; + + psa_outvec out_vec[] = { + { .base = p_info, .len = sizeof(*p_info) } + }; + + handle = psa_connect(TFM_SST_GET_INFO_SID, TFM_SST_GET_INFO_VERSION); + if (!PSA_HANDLE_IS_VALID(handle)) { + return PSA_ERROR_GENERIC_ERROR; + } + + status = psa_call(handle, PSA_IPC_CALL, in_vec, IOVEC_LEN(in_vec), out_vec, + IOVEC_LEN(out_vec)); + + psa_close(handle); + + return status; +} + +psa_status_t psa_ps_remove(psa_storage_uid_t uid) +{ + psa_status_t status; + psa_handle_t handle; + + psa_invec in_vec[] = { + { .base = &uid, .len = sizeof(uid) } + }; + + + handle = psa_connect(TFM_SST_REMOVE_SID, TFM_SST_REMOVE_VERSION); + if (!PSA_HANDLE_IS_VALID(handle)) { + return PSA_ERROR_GENERIC_ERROR; + } + + status = psa_call(handle, PSA_IPC_CALL, in_vec, IOVEC_LEN(in_vec), + NULL, 0); + + psa_close(handle); + + return status; +} + +psa_status_t psa_ps_create(psa_storage_uid_t uid, size_t size, + psa_storage_create_flags_t create_flags) +{ + (void)uid; + (void)size; + (void)create_flags; + + return PSA_ERROR_NOT_SUPPORTED; +} + +psa_status_t psa_ps_set_extended(psa_storage_uid_t uid, size_t data_offset, + size_t data_length, const void *p_data) +{ + (void)uid; + (void)data_offset; + (void)data_length; + (void)p_data; + + return PSA_ERROR_NOT_SUPPORTED; +} + +uint32_t psa_ps_get_support(void) +{ + /* Initialise support_flags to a sensible default, to avoid returning an + * uninitialised value in case the secure function fails. + */ + uint32_t support_flags = 0; + psa_handle_t handle; + + psa_outvec out_vec[] = { + { .base = &support_flags, .len = sizeof(support_flags) } + }; + + /* The PSA API does not return an error, so any error from TF-M is + * ignored. + */ + handle = psa_connect(TFM_SST_GET_SUPPORT_SID, TFM_SST_GET_SUPPORT_VERSION); + if (!PSA_HANDLE_IS_VALID(handle)) { + return support_flags; + } + + (void)psa_call(handle, PSA_IPC_CALL, NULL, 0, out_vec, IOVEC_LEN(out_vec)); + + psa_close(handle); + + return support_flags; +} diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/inc/default_random_seed.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/inc/default_random_seed.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/COMPONENT_PSA_SRV_IMPL/inc/default_random_seed.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/inc/default_random_seed.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/inc/psa/tfm_platform_api.h b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/inc/psa/tfm_platform_api.h similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/inc/psa/tfm_platform_api.h rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/inc/psa/tfm_platform_api.h diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/mbed_lib.json b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/mbed_lib.json similarity index 100% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/mbed_lib.json rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/mbed_lib.json diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/COMPONENT_NSPE/src/psa_hrng.c b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/src/psa_hrng.c similarity index 88% rename from features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/COMPONENT_NSPE/src/psa_hrng.c rename to features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/src/psa_hrng.c index 6b87cc6f39..f5c0a30b8b 100644 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/COMPONENT_NSPE/src/psa_hrng.c +++ b/features/FEATURE_EXPERIMENTAL_API/FEATURE_PSA/src/psa_hrng.c @@ -19,8 +19,6 @@ #include "crypto.h" #include "mbed_toolchain.h" -#if (defined(DEVICE_TRNG) && defined(MBEDTLS_PSA_CRYPTO_C)) - MBED_WEAK void trng_init(trng_t *obj) { (void)(obj); @@ -45,7 +43,6 @@ MBED_WEAK int trng_get_bytes(trng_t *obj, uint8_t *output, size_t length, size_t } status = psa_generate_random(output, length); - mbedtls_psa_crypto_free(); if (status != PSA_SUCCESS) { return -1; } @@ -54,5 +51,3 @@ MBED_WEAK int trng_get_bytes(trng_t *obj, uint8_t *output, size_t length, size_t return 0; } - -#endif // (defined(DEVICE_TRNG) && defiend(MBEDTLS_PSA_CRYPTO_C)) diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/COMPONENT_NSPE/interface/src/tfm_ns_lock_rtx.c b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/COMPONENT_NSPE/interface/src/tfm_ns_lock_rtx.c deleted file mode 100644 index d12d3487fe..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/COMPONENT_NSPE/interface/src/tfm_ns_lock_rtx.c +++ /dev/null @@ -1,91 +0,0 @@ -/* - * Copyright (c) 2017-2019, Arm Limited. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - * - */ -#include -#include -#include "cmsis.h" -#include "rtx_os.h" -#include "cmsis_os2.h" -#include "tfm_api.h" -#include "tfm_ns_lock.h" - -/** - * \brief struct ns_lock_state type - */ -struct ns_lock_state -{ - bool init; - osMutexId_t id; -}; - -/** - * \brief ns_lock status - */ -static struct ns_lock_state ns_lock = {.init=false, .id=NULL}; - -/** - * \brief Mutex properties, NS lock - */ - -static osRtxMutex_t ns_lock_cb = { 0 }; - -static const osMutexAttr_t ns_lock_attrib = { - .name = "ns_lock", - .attr_bits = osMutexPrioInherit, - .cb_mem = &ns_lock_cb, - .cb_size = sizeof(ns_lock_cb) -}; - -/** - * \brief NS world, NS lock based dispatcher - */ -__attribute__((weak)) -uint32_t tfm_ns_lock_dispatch(veneer_fn fn, - uint32_t arg0, uint32_t arg1, - uint32_t arg2, uint32_t arg3) -{ - uint32_t result; - - /* Check the NS lock has been initialized */ - if (ns_lock.init == false) { - return TFM_ERROR_GENERIC; - } - - /* TFM request protected by NS lock */ - if (osMutexAcquire(ns_lock.id,osWaitForever) != osOK) { - return TFM_ERROR_GENERIC; - } - - result = fn(arg0, arg1, arg2, arg3); - - if (osMutexRelease(ns_lock.id) != osOK) { - return TFM_ERROR_GENERIC; - } - - return result; -} - -/** - * \brief NS world, Init NS lock - */ -__attribute__((weak)) -enum tfm_status_e tfm_ns_lock_init() -{ - if (ns_lock.init == false) { - ns_lock.id = osMutexNew(&ns_lock_attrib); - ns_lock.init = true; - return TFM_SUCCESS; - } - else { - return TFM_ERROR_GENERIC; - } -} - -bool tfm_ns_lock_get_init_state() -{ - return ns_lock.init; -} - diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/psa_service.h b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/psa_service.h deleted file mode 100644 index 6453aede8b..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/psa_service.h +++ /dev/null @@ -1,250 +0,0 @@ -/* - * Copyright (c) 2018-2019, Arm Limited. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - * - */ - -#ifndef __PSA_SERVICE_H__ -#define __PSA_SERVICE_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -/********************** PSA Secure Partition Macros and Types ****************/ - -/* PSA wait timeouts */ -#define PSA_POLL (0x00000000u) -#define PSA_BLOCK (0x80000000u) - -/* A mask value that includes all Secure Partition signals */ -#define PSA_WAIT_ANY (~0u) - -/* Doorbell signal */ -#define PSA_DOORBELL (0x00000008u) - -/* PSA message types */ -#define PSA_IPC_CONNECT (1) -#define PSA_IPC_CALL (2) -#define PSA_IPC_DISCONNECT (3) - -/* Maximum number of input and output vectors */ -#define PSA_MAX_IOVEC (4) - -/* Return code from psa_get() */ -#define PSA_ERR_NOMSG (INT32_MIN + 3) - -/* Store a set of one or more Secure Partition signals */ -typedef uint32_t psa_signal_t; - -/** - * Describe a message received by an RoT Service after calling \ref psa_get(). - */ -typedef struct psa_msg_t { - uint32_t type; /* One of the following values: - * \ref PSA_IPC_CONNECT - * \ref PSA_IPC_CALL - * \ref PSA_IPC_DISCONNECT - */ - psa_handle_t handle; /* A reference generated by the SPM to the - * message returned by psa_get(). - */ - int32_t client_id; /* Partition ID of the sender of the message */ - void *rhandle; /* Be useful for binding a connection to some - * application-specific data or function - * pointer within the RoT Service - * implementation. - */ - size_t in_size[PSA_MAX_IOVEC]; /* Provide the size of each client input - * vector in bytes. - */ - size_t out_size[PSA_MAX_IOVEC];/* Provide the size of each client output - * vector in bytes. - */ -} psa_msg_t; - -/************************* PSA Secure Partition API **************************/ - -/** - * \brief Return the Secure Partition interrupt signals that have been asserted - * from a subset of signals provided by the caller. - * - * \param[in] signal_mask A set of signals to query. Signals that are not - * in this set will be ignored. - * \param[in] timeout Specify either blocking \ref PSA_BLOCK or - * polling \ref PSA_POLL operation. - * - * \retval >0 At least one signal is asserted. - * \retval 0 No signals are asserted. This is only seen when - * a polling timeout is used. - */ -psa_signal_t psa_wait(psa_signal_t signal_mask, uint32_t timeout); - -/** - * \brief Retrieve the message which corresponds to a given RoT Service signal - * and remove the message from the RoT Service queue. - * - * \param[in] signal The signal value for an asserted RoT Service. - * \param[out] msg Pointer to \ref psa_msg_t object for receiving - * the message. - * - * \retval PSA_SUCCESS Success, *msg will contain the delivered - * message. - * \retval PSA_ERR_NOMSG Message could not be delivered. - * \retval "Does not return" The call is invalid because one or more of the - * following are true: - * \arg signal has more than a single bit set. - * \arg signal does not correspond to an RoT Service. - * \arg The RoT Service signal is not currently - * asserted. - * \arg The msg pointer provided is not a valid memory - * reference. - */ -psa_status_t psa_get(psa_signal_t signal, psa_msg_t *msg); - -/** - * \brief Associate some RoT Service private data with a client connection. - * - * \param[in] msg_handle Handle for the client's message. - * \param[in] rhandle Reverse handle allocated by the RoT Service. - * - * \retval void Success, rhandle will be provided with all - * subsequent messages delivered on this - * connection. - * \retval "Does not return" msg_handle is invalid. - */ -void psa_set_rhandle(psa_handle_t msg_handle, void *rhandle); - -/** - * \brief Read a message parameter or part of a message parameter from a client - * input vector. - * - * \param[in] msg_handle Handle for the client's message. - * \param[in] invec_idx Index of the input vector to read from. Must be - * less than \ref PSA_MAX_IOVEC. - * \param[out] buffer Buffer in the Secure Partition to copy the - * requested data to. - * \param[in] num_bytes Maximum number of bytes to be read from the - * client input vector. - * - * \retval >0 Number of bytes copied. - * \retval 0 There was no remaining data in this input - * vector. - * \retval "Does not return" The call is invalid, one or more of the - * following are true: - * \arg msg_handle is invalid. - * \arg msg_handle does not refer to a - * \ref PSA_IPC_CALL message. - * \arg invec_idx is equal to or greater than - * \ref PSA_MAX_IOVEC. - * \arg the memory reference for buffer is invalid or - * not writable. - */ -size_t psa_read(psa_handle_t msg_handle, uint32_t invec_idx, - void *buffer, size_t num_bytes); - -/** - * \brief Skip over part of a client input vector. - * - * \param[in] msg_handle Handle for the client's message. - * \param[in] invec_idx Index of input vector to skip from. Must be - * less than \ref PSA_MAX_IOVEC. - * \param[in] num_bytes Maximum number of bytes to skip in the client - * input vector. - * - * \retval >0 Number of bytes skipped. - * \retval 0 There was no remaining data in this input - * vector. - * \retval "Does not return" The call is invalid, one or more of the - * following are true: - * \arg msg_handle is invalid. - * \arg msg_handle does not refer to a - * \ref PSA_IPC_CALL message. - * \arg invec_idx is equal to or greater than - * \ref PSA_MAX_IOVEC. - */ -size_t psa_skip(psa_handle_t msg_handle, uint32_t invec_idx, size_t num_bytes); - -/** - * \brief Write a message response to a client output vector. - * - * \param[in] msg_handle Handle for the client's message. - * \param[out] outvec_idx Index of output vector in message to write to. - * Must be less than \ref PSA_MAX_IOVEC. - * \param[in] buffer Buffer with the data to write. - * \param[in] num_bytes Number of bytes to write to the client output - * vector. - * - * \retval void Success - * \retval "Does not return" The call is invalid, one or more of the - * following are true: - * \arg msg_handle is invalid. - * \arg msg_handle does not refer to a - * \ref PSA_IPC_CALL message. - * \arg outvec_idx is equal to or greater than - * \ref PSA_MAX_IOVEC. - * \arg The memory reference for buffer is invalid. - * \arg The call attempts to write data past the end - * of the client output vector. - */ -void psa_write(psa_handle_t msg_handle, uint32_t outvec_idx, - const void *buffer, size_t num_bytes); - -/** - * \brief Complete handling of a specific message and unblock the client. - * - * \param[in] msg_handle Handle for the client's message. - * \param[in] status Message result value to be reported to the - * client. - * - * \retval void Success. - * \retval "Does not return" The call is invalid, one or more of the - * following are true: - * \arg msg_handle is invalid. - * \arg An invalid status code is specified for the - * type of message. - */ -void psa_reply(psa_handle_t msg_handle, psa_status_t status); - -/** - * \brief Send a PSA_DOORBELL signal to a specific Secure Partition. - * - * \param[in] partition_id Secure Partition ID of the target partition. - * - * \retval void Success. - * \retval "Does not return" partition_id does not correspond to a Secure - * Partition. - */ -void psa_notify(int32_t partition_id); - -/** - * \brief Clear the PSA_DOORBELL signal. - * - * \retval void Success. - * \retval "Does not return" The Secure Partition's doorbell signal is not - * currently asserted. - */ -void psa_clear(void); - -/** - * \brief Inform the SPM that an interrupt has been handled (end of interrupt). - * - * \param[in] irq_signal The interrupt signal that has been processed. - * - * \retval void Success. - * \retval "Does not return" The call is invalid, one or more of the - * following are true: - * \arg irq_signal is not an interrupt signal. - * \arg irq_signal indicates more than one signal. - * \arg irq_signal is not currently asserted. - */ -void psa_eoi(psa_signal_t irq_signal); - -#ifdef __cplusplus -} -#endif - -#endif /* __PSA_SERVICE_H__ */ diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/tfm_api.h b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/tfm_api.h deleted file mode 100644 index d6ce6893a0..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/tfm_api.h +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright (c) 2017-2019, Arm Limited. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - * - */ - -#ifndef __TFM_API_H__ -#define __TFM_API_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include "psa_client.h" - -#define TFM_INVALID_CLIENT_ID 0 - -/** - * \brief Checks if the provided client ID is a secure client ID. - * - * \param[in] client_id Client ID to check - * - * \return Returns 1 if the client Id is secure. Otherwise, returns 0. - */ -#define TFM_CLIENT_ID_IS_S(client_id) ((client_id)>0) - -/** - * \brief Checks if the provided client ID is a non-secure client ID. - * - * \param[in] client_id Client ID to check - * - * \return Returns 1 if the client Id is non-secure. Otherwise, returns 0. - */ -#define TFM_CLIENT_ID_IS_NS(client_id) ((client_id)<0) - -/* Maximum number of input and output vectors */ -#define PSA_MAX_IOVEC (4) - -/* FixMe: sort out DEBUG compile option and limit return value options - * on external interfaces */ -/* For secure functions using prorietary signatures - * TFM will only return values recognized and parsed by TFM core. - * Service return codes are not automatically passed on to REE. - * Any non-zero return value is interpreted as an error that may trigger - * TEE error handling flow. - * For secure functions using the veneers in secure_fw/ns_callable/tfm_veneers.c - * (iovec API) this limitation does not apply. - */ -enum tfm_status_e -{ - TFM_SUCCESS = 0, - TFM_PARTITION_BUSY, - TFM_ERROR_SECURE_DOMAIN_LOCKED, - TFM_ERROR_INVALID_PARAMETER, - TFM_ERROR_PARTITION_NON_REENTRANT, - TFM_ERROR_NS_THREAD_MODE_CALL, - TFM_ERROR_NOT_INITIALIZED, - TFM_ERROR_NO_ACTIVE_PARTITION, - TFM_ERROR_INVALID_EXC_MODE, - TFM_SECURE_LOCK_FAILED, - TFM_SECURE_UNLOCK_FAILED, - TFM_ERROR_GENERIC = 0x1F, - TFM_PARTITION_SPECIFIC_ERROR_MIN, -}; - -//==================== Secure function declarations ==========================// - -/** - * \brief Assign client ID to the current TZ context - * - * \param[in] ns_client_id The client ID to be assigned to the current - * context - * \return TFM_SUCCESS if the client ID assigned successfully, an error code - * according to \ref tfm_status_e in case of error. - * - * \note This function have to be called from handler mode. - */ -enum tfm_status_e tfm_register_client_id (int32_t ns_client_id); - -/** - * \brief Retrieve the version of the PSA Framework API that is implemented - * - * \return The version of the PSA Framework - */ -uint32_t tfm_psa_framework_version_veneer(void); - -/** - * \brief Return version of secure function provided by secure binary - * - * \param[in] sid ID of secure service - * - * \return Version number of secure function - */ -uint32_t tfm_psa_version_veneer(uint32_t sid); - -/** - * \brief Connect to secure function - * - * \param[in] sid ID of secure service - * \param[in] minor_version Minor version of SF requested by client - * - * \return Returns handle to connection - */ -psa_handle_t tfm_psa_connect_veneer(uint32_t sid, uint32_t minor_version); - -/** - * \brief Call a secure function referenced by a connection handle - * - * \param[in] handle Handle to connection - * \param[in] in_vecs invec containing pointer/count of input vectors - * \param[in] out_vecs outvec containing pointer/count of output vectors - * - * \return Returns \ref psa_status_t status code - */ -psa_status_t tfm_psa_call_veneer(psa_handle_t handle, - const psa_invec *in_vecs, - psa_outvec *out_vecs); - -/** - * \brief Close connection to secure function referenced by a connection handle - * - * \param[in] handle Handle to connection - * - * \return Returns \ref psa_status_t status code - */ -psa_status_t tfm_psa_close_veneer(psa_handle_t handle); - -//================ End Secure function declarations ==========================// - -#ifdef __cplusplus -} -#endif - -#endif /* __TFM_API_H__ */ diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/tfm_ns_lock.h b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/tfm_ns_lock.h deleted file mode 100644 index d9acd00528..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/tfm_ns_lock.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * Copyright (c) 2017-2019, Arm Limited. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - * - */ -#ifndef __TFM_NS_LOCK_H__ -#define __TFM_NS_LOCK_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include "tfm_api.h" - -typedef int32_t (*veneer_fn) (uint32_t arg0, uint32_t arg1, - uint32_t arg2, uint32_t arg3); - -/** - * \brief NS world, NS lock based dispatcher - * - * \details To be called from the wrapper API interface - */ - -uint32_t tfm_ns_lock_dispatch(veneer_fn fn, - uint32_t arg0, uint32_t arg1, - uint32_t arg2, uint32_t arg3); - -/** - * \brief NS world, Init NS lock - * - * \details Needs to be called during non-secure app init - * to initialize the TFM NS lock object - */ -enum tfm_status_e tfm_ns_lock_init(); - -#ifdef __cplusplus -} -#endif - -#endif /* __TFM_NS_LOCK_H__ */ diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/tfm_nspm_svc_handler.h b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/tfm_nspm_svc_handler.h deleted file mode 100644 index 73f75a95e1..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/interface/include/tfm_nspm_svc_handler.h +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Copyright (c) 2018, Arm Limited. All rights reserved. - * - * SPDX-License-Identifier: BSD-3-Clause - * - */ - -#ifndef __TFM_NSPM_SVC_HANDLER_H__ -#define __TFM_NSPM_SVC_HANDLER_H__ - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/** - * \brief Reports the client ID of this task to TF-M (SVC function) - * - * \param [in] client_id Client ID to register. - * - * \return Returns 1 if the client ID was successfully reported 0 otherwise - */ -uint32_t tfm_nspm_svc_register_client_id(uint32_t client_id); - -#ifdef __cplusplus -} -#endif - -#endif /* __TFM_NSPM_SVC_HANDLER_H__ */ diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/mbed_lib.json b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/mbed_lib.json deleted file mode 100644 index 0cf8e65ea2..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/TARGET_TFM/mbed_lib.json +++ /dev/null @@ -1,29 +0,0 @@ -{ - "name": "tfm", - "macros": [ - "TFM_PSA_API", "MBED_TZ_DEFAULT_ACCESS=1" - ], - "config": { - "level": { - "help": "TFM security level", - "macro_name": "TFM_LVL", - "value": 1 - }, - "handle_pool_size": { - "help": "maximum number of handles that can be opened at the same time", - "macro_name": "TFM_CONN_HANDLE_MAX_NUM", - "value": 10 - }, - "rot_pool_size": { - "help": "maximum number of RoT services allowed", - "macro_name": "TFM_SPM_MAX_ROT_SERV_NUM", - "value": 32 - }, - "message_pool_size": { - "help": "maximum number of active messages allowed", - "macro_name": "TFM_MSG_QUEUE_MAX_MSG_NUM", - "value": 10 - } - } -} - diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa_manifest/sid.h b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa_manifest/sid.h deleted file mode 100644 index 42fe92b669..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/inc/psa_manifest/sid.h +++ /dev/null @@ -1,23 +0,0 @@ -/* Copyright (c) 2017-2018 ARM Limited - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#ifndef __SID_H__ -#define __SID_H__ - -#include "autogen_sid.h" - -#endif // __SID_H__ diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IPC/psa_attest_inject_key.c b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IPC/psa_attest_inject_key.c deleted file mode 100755 index 239b8d35df..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IPC/psa_attest_inject_key.c +++ /dev/null @@ -1,55 +0,0 @@ -/* -* Copyright (c) 2018-2019 ARM Limited. All rights reserved. -* -* SPDX-License-Identifier: Apache-2.0 -* -* Licensed under the Apache License, Version 2.0 (the License); you may -* not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an AS IS BASIS, WITHOUT -* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#include "psa_attest_inject_key.h" -#include "psa/crypto.h" -#include "psa/client.h" -#include "psa_manifest/sid.h" - -#define MINOR_VER 1 - -psa_status_t -psa_attestation_inject_key(const uint8_t *key_data, - size_t key_data_length, - psa_key_type_t type, - uint8_t *public_key_data, - size_t public_key_data_size, - size_t *public_key_data_length) -{ - psa_handle_t handle = PSA_NULL_HANDLE; - psa_status_t call_error = PSA_SUCCESS; - psa_invec in_vec[2] = { - { &type, sizeof(type) }, - { key_data, key_data_length } - }; - - psa_outvec out_vec[2] = { - { public_key_data, public_key_data_size }, - { public_key_data_length, sizeof(*public_key_data_length) } - }; - - handle = psa_connect(PSA_ATTEST_INJECT_KEY_ID, MINOR_VER); - if (handle <= 0) { - return (PSA_ERROR_COMMUNICATION_FAILURE); - } - - call_error = psa_call(handle, in_vec, 2, out_vec, 2); - - psa_close(handle); - return call_error; -} diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IPC/psa_initial_attestation_api.c b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IPC/psa_initial_attestation_api.c deleted file mode 100755 index ff90cc8530..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/COMPONENT_PSA_SRV_IPC/psa_initial_attestation_api.c +++ /dev/null @@ -1,79 +0,0 @@ -/* -* Copyright (c) 2018-2019 ARM Limited. All rights reserved. -* -* SPDX-License-Identifier: Apache-2.0 -* -* Licensed under the Apache License, Version 2.0 (the License); you may -* not use this file except in compliance with the License. -* You may obtain a copy of the License at -* -* http://www.apache.org/licenses/LICENSE-2.0 -* -* Unless required by applicable law or agreed to in writing, software -* distributed under the License is distributed on an AS IS BASIS, WITHOUT -* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -* See the License for the specific language governing permissions and -* limitations under the License. -*/ - -#include "psa_initial_attestation_api.h" -#include "psa/crypto.h" -#include "psa/client.h" -#include "attestation.h" -#include -#include "psa_manifest/sid.h" - -#define MINOR_VER 1 - -enum psa_attest_err_t -psa_initial_attest_get_token(const uint8_t *challenge_obj, - uint32_t challenge_size, - uint8_t *token, - uint32_t *token_size) { - psa_status_t err_call; - psa_handle_t handle = PSA_NULL_HANDLE; - - psa_invec in_vec[1] = { { challenge_obj, challenge_size } }; - psa_outvec out_vec[1] = { { token, *token_size } }; - - handle = psa_connect(PSA_ATTEST_GET_TOKEN_ID, MINOR_VER); - if (handle <= 0) - { - return (PSA_ATTEST_ERR_GENERAL); - } - - err_call = psa_call(handle, in_vec, 1, out_vec, 1); - psa_close(handle); - - if (err_call < 0) - { - err_call = PSA_ATTEST_ERR_GENERAL; - } - - return ((enum psa_attest_err_t) err_call); -} - -enum psa_attest_err_t -psa_initial_attest_get_token_size(uint32_t challenge_size, - uint32_t *token_size) { - psa_status_t err_call; - psa_handle_t handle = PSA_NULL_HANDLE; - psa_invec in_vec[1] = { { &challenge_size, sizeof(uint32_t) } }; - psa_outvec out_vec[1] = { { token_size, sizeof(uint32_t) } }; - - handle = psa_connect(PSA_ATTEST_GET_TOKEN_SIZE_ID, MINOR_VER); - if (handle <= 0) - { - return (PSA_ATTEST_ERR_GENERAL); - } - - err_call = psa_call(handle, in_vec, 1, out_vec, 1); - psa_close(handle); - - if (err_call < 0) - { - err_call = PSA_ATTEST_ERR_GENERAL; - } - - return ((enum psa_attest_err_t) err_call); -} diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/LICENSE b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/LICENSE deleted file mode 100644 index 96810fdc92..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/LICENSE +++ /dev/null @@ -1,2 +0,0 @@ -Unless specifically indicated otherwise in a file, TF-M files in this directory are licensed under the BSD-3-Clause license, -as can be found in: LICENSE-bsd-3-clause.txt diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/LICENSE-BSD-3-Clause b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/LICENSE-BSD-3-Clause deleted file mode 100644 index 476769c1fb..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/attestation/LICENSE-BSD-3-Clause +++ /dev/null @@ -1,26 +0,0 @@ -Copyright 2019 Arm Limited and affiliates. -SPDX-License-Identifier: BSD-3-Clause - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. -3. Neither the name of the copyright holder nor the - names of its contributors may be used to endorse or promote products - derived from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_platform_spe.h b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_platform_spe.h deleted file mode 100644 index 05fe728fbf..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_platform_spe.h +++ /dev/null @@ -1,179 +0,0 @@ -/** - * \file psa/crypto_platform_spe.h - * - * \brief PSA cryptography module: Mbed TLS platfom definitions - */ -/* - * Copyright (C) 2018, ARM Limited, All Rights Reserved - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) - */ - -#ifndef PSA_CRYPTO_SPE_PLATFORM_H -#define PSA_CRYPTO_SPE_PLATFORM_H - -/* Include the Mbed TLS configuration file, the way Mbed TLS does it - * in each of its header files. */ -#if !defined(MBEDTLS_CONFIG_FILE) -#include "../mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif - -/** \defgroup PSA Crypto APIs -* @{ -*/ - -/** \brief psa_s_function_t enum defines for all the available functions in PSA Crypto. */ -typedef enum psa_sec_function_s { - PSA_CRYPTO_INVALID, - PSA_GET_KEY_ATTRIBUTES, - PSA_OPEN_KEY, - PSA_CLOSE_KEY, - PSA_IMPORT_KEY, - PSA_DESTROY_KEY, - PSA_EXPORT_KEY, - PSA_EXPORT_PUBLIC_KEY, - PSA_COPY_KEY, - PSA_HASH_COMPUTE, - PSA_HASH_COMPARE, - PSA_HASH_SETUP, - PSA_HASH_UPDATE, - PSA_HASH_FINISH, - PSA_HASH_VERIFY, - PSA_HASH_ABORT, - PSA_HASH_CLONE, - PSA_HASH_CLONE_BEGIN, - PSA_HASH_CLONE_END, - PSA_MAC_COMPUTE, - PSA_MAC_VERIFY, - PSA_MAC_SIGN_SETUP, - PSA_MAC_VERIFY_SETUP, - PSA_MAC_UPDATE, - PSA_MAC_SIGN_FINISH, - PSA_MAC_VERIFY_FINISH, - PSA_MAC_ABORT, - PSA_CIPHER_ENCRYPT, - PSA_CIPHER_DECRYPT, - PSA_CIPHER_ENCRYPT_SETUP, - PSA_CIPHER_DECRYPT_SETUP, - PSA_CIPHER_GENERATE_IV, - PSA_CIPHER_SET_IV, - PSA_CIPHER_UPDATE, - PSA_CIPHER_FINISH, - PSA_CIPHER_ABORT, - PSA_AEAD_ENCRYPT, - PSA_AEAD_DECRYPT, - PSA_AEAD_ENCRYPT_SETUP, - PSA_AEAD_DECRYPT_SETUP, - PSA_AEAD_GENERATE_NONCE, - PSA_AEAD_SET_NONCE, - PSA_AEAD_SET_LENGTHS, - PSA_AEAD_UPDATE_AD, - PSA_AEAD_UPDATE, - PSA_AEAD_FINISH, - PSA_AEAD_VERIFY, - PSA_AEAD_ABORT, - PSA_SIGN_HASH, - PSA_VERIFY_HASH, - PSA_ASYMMETRIC_ENCRYPT, - PSA_ASYMMETRIC_DECRYPT, - PSA_KEY_DERIVATION_SETUP, - PSA_KEY_DERIVATION_GET_CAPACITY, - PSA_KEY_DERIVATION_SET_CAPACITY, - PSA_KEY_DERIVATION_INPUT_BYTES, - PSA_KEY_DERIVATION_INPUT_KEY, - PSA_KEY_DERIVATION_KEY_AGREEMENT, - PSA_KEY_DERIVATION_OUTPUT_BYTES, - PSA_KEY_DERIVATION_OUTPUT_KEY, - PSA_KEY_DERIVATION_ABORT, - PSA_RAW_KEY_AGREEMENT, - PSA_GENERATE_RANDOM, - PSA_GENERATE_KEY, -} psa_sec_function_t; - -/**@}*/ - -/** \defgroup PSA Crypto structures for IPC -* @{ -*/ - -/** psa_crypto_ipc_s struct used for some of the - * PSA Crypto APIs that need psa_key_handle_t and psa_algorithm_t arguments - * and in order to use the existing infrastructure of the SPM-IPC we provide a struct to - * pack them together. - */ -typedef struct psa_crypto_ipc_s { - psa_sec_function_t func; - psa_key_handle_t handle; - psa_algorithm_t alg; -} psa_crypto_ipc_t; - -/** psa_crypto_derivation_ipc_s struct used for some of the - * PSA Crypto APIs that need psa_key_handle_t and psa_algorithm_t arguments - * and in order to use the existing infrastructure of the SPM-IPC we provide a struct to - * pack them together. - */ -typedef struct psa_crypto_derivation_ipc_s { - psa_sec_function_t func; - psa_key_handle_t handle; - psa_algorithm_t alg; - size_t capacity; -} psa_crypto_derivation_ipc_t; - -/** psa_key_mng_ipc_s struct used for some of the - * PSA Crypto APIs that need psa_key_handle_t and psa_algorithm_t arguments - * and in order to use the existing infrastructure of the SPM-IPC we provide a struct to - * pack them together. - */ -typedef struct psa_key_mng_ipc_s { - psa_key_handle_t handle; - psa_sec_function_t func; -} psa_key_mng_ipc_t; - -/** psa_crypto_ipc_aead_s struct used for AEAD integrated - * PSA Crypto APIs that need psa_key_handle_t and psa_algorithm_t and extra arguments - * and in order to use the existing infrastructure of the SPM-IPC we provide a struct to - * pack them together. - */ -// Max length supported for nonce is 16 bytes. -#define PSA_AEAD_MAX_NONCE_SIZE 16 -typedef struct psa_crypto_ipc_aead_s { - psa_sec_function_t func; - psa_key_handle_t handle; - psa_algorithm_t alg; - uint16_t nonce_size; - size_t additional_data_length; - size_t input_length; - uint8_t nonce[PSA_AEAD_MAX_NONCE_SIZE]; -} psa_crypto_ipc_aead_t; - -/** psa_crypto_ipc_asymmetric_s struct used for asymmetric - * PSA Crypto APIs that need psa_key_handle_t and psa_algorithm_t arguments - * and in order to use the existing infrastructure of the SPM-IPC we provide a struct to - * pack them together. - */ -typedef struct psa_crypto_ipc_asymmetric_s { - psa_sec_function_t func; - psa_key_handle_t handle; - psa_algorithm_t alg; - size_t input_length; - size_t salt_length; -} psa_crypto_ipc_asymmetric_t; - -/**@}*/ - -#endif /* PSA_CRYPTO_SPE_PLATFORM_H */ diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_struct.h b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_struct.h deleted file mode 100644 index 465ccbb916..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/crypto/COMPONENT_PSA_SRV_IPC/crypto_struct.h +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Copyright (c) 2020, Arm Limited and affiliates. - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -#include "crypto_struct_ipc.h" diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/crypto/COMPONENT_PSA_SRV_IPC/psa_crypto_spm.c b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/crypto/COMPONENT_PSA_SRV_IPC/psa_crypto_spm.c deleted file mode 100644 index c50004a8e9..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/crypto/COMPONENT_PSA_SRV_IPC/psa_crypto_spm.c +++ /dev/null @@ -1,1636 +0,0 @@ -/* - * PSA crypto layer on top of Mbed TLS crypto - */ -/* Copyright (C) 2018, ARM Limited, All Rights Reserved - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may - * not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT - * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * This file is part of mbed TLS (https://tls.mbed.org) - */ - -#if !defined(MBEDTLS_CONFIG_FILE) -#include "mbedtls/config.h" -#else -#include MBEDTLS_CONFIG_FILE -#endif - -#if defined(MBEDTLS_PSA_CRYPTO_C) - -#include -#include -#include - -#include "psa_manifest/sid.h" -#include "psa/client.h" -#include "psa/crypto.h" -#include "crypto_platform_spe.h" -#include "mbed_assert.h" - -#define MINOR_VER 1 -#define CLIENT_PSA_KEY_ID_SIZE_IN_BYTES 4 - -MBED_STATIC_ASSERT(sizeof(psa_key_id_t) == CLIENT_PSA_KEY_ID_SIZE_IN_BYTES, "Unexpected psa_key_id_t size"); - -/****************************************************************/ -/* INTERNAL HELPER FUNCTIONS */ -/****************************************************************/ -static psa_status_t ipc_connect(uint32_t sid, psa_handle_t *handle) -{ - *handle = psa_connect(sid, MINOR_VER); - if (*handle <= PSA_NULL_HANDLE) { - return (PSA_ERROR_COMMUNICATION_FAILURE); - } - return (PSA_SUCCESS); -} - -static inline void ipc_close(psa_handle_t *handle) -{ - psa_close(*handle); - *handle = PSA_NULL_HANDLE; -} - -static psa_status_t ipc_call(psa_handle_t *handle, psa_invec *in_vec, size_t in_vec_size, - psa_outvec *out_vec, size_t out_vec_size, bool close) -{ - if (*handle <= PSA_NULL_HANDLE) { - return (PSA_ERROR_BAD_STATE); - } - - psa_status_t status = psa_call(*handle, in_vec, in_vec_size, out_vec, out_vec_size); - if (close) { - ipc_close(handle); - } - return (status); -} - -static psa_status_t ipc_oneshot(uint32_t sid, psa_invec *in_vec, size_t in_vec_size, - psa_outvec *out_vec, size_t out_vec_size) -{ - psa_handle_t handle = PSA_NULL_HANDLE; - psa_status_t status = ipc_connect(sid, &handle); - if (status != PSA_SUCCESS) { - return status; - } - status = ipc_call(&handle, in_vec, in_vec_size, out_vec, out_vec_size, true); - return (status); -} - - -/* - * PSA Crypto API (crypto.h) - */ - -psa_status_t psa_crypto_init(void) -{ - psa_status_t status = ipc_oneshot(PSA_CRYPTO_INIT_ID, NULL, 0, NULL, 0); - return (status); -} - -psa_status_t psa_get_key_attributes(psa_key_handle_t handle, - psa_key_attributes_t *attributes) -{ - psa_key_mng_ipc_t psa_key_mng_ipc = { - .func = PSA_GET_KEY_ATTRIBUTES, - .handle = handle - }; - - psa_invec in_vec = { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc) }; - - psa_outvec out_vec = { attributes, sizeof(*attributes) }; - - return ipc_oneshot(PSA_KEY_MNG_ID, &in_vec, 1, &out_vec, 1); -} - -void psa_reset_key_attributes(psa_key_attributes_t *attributes) -{ - /* The reset of key attributes can happen entirely without going to the - * core. In fact, it can't go to the core without causing issues with - * memory ownership. Given that psa_set_key_domain_parameters(), which we - * currently don't allow in the client/server architecture, allocates - * memory that would be freed by psa_reset_key_attributes(), we must do - * this in the NSPE due to lack of memory ownership information in the - * core; the SPE can't currently know if any given allocation is valid to - * free for a given client. */ - - /* Note attributes->domain_parameters are currently ignored, as we don't - * currently support them in client/server architecture. */ - memset(attributes, 0, sizeof(*attributes)); -} - -psa_status_t psa_set_key_domain_parameters(psa_key_attributes_t *attributes, - psa_key_type_t type, - const uint8_t *data, - size_t data_length) -{ - return PSA_ERROR_NOT_SUPPORTED; -} - -psa_status_t psa_get_key_domain_parameters(const psa_key_attributes_t *attributes, - uint8_t *data, - size_t data_size, - size_t *data_length) -{ - return PSA_ERROR_NOT_SUPPORTED; -} - -psa_status_t psa_open_key(psa_key_id_t id, - psa_key_handle_t *handle) -{ - psa_key_mng_ipc_t psa_key_mng_ipc = { - .func = PSA_OPEN_KEY, - .handle = *handle, - }; - - psa_invec in_vec[2] = { - { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc) }, - { &id, sizeof(id) } - }; - - psa_outvec out_vec = { handle, sizeof(*handle) }; - - psa_status_t status = ipc_oneshot(PSA_KEY_MNG_ID, in_vec, 2, &out_vec, 1); - return (status); -} - -psa_status_t psa_close_key(psa_key_handle_t handle) -{ - psa_key_mng_ipc_t psa_key_mng_ipc = { - .func = PSA_CLOSE_KEY, - .handle = handle, - }; - - psa_invec in_vec = { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc) }; - - psa_status_t status = ipc_oneshot(PSA_KEY_MNG_ID, &in_vec, 1, NULL, 0); - return (status); -} - -psa_status_t psa_import_key(const psa_key_attributes_t *attributes, - const uint8_t *data, - size_t data_length, - psa_key_handle_t *handle) -{ - psa_key_mng_ipc_t psa_key_mng_ipc = { - .func = PSA_IMPORT_KEY, - .handle = 0, - }; - - psa_invec in_vec[3] = { - { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc) }, - { attributes, sizeof(*attributes) }, - { data, data_length }, - }; - - psa_outvec out_vec = { handle, sizeof(*handle) }; - - return ipc_oneshot(PSA_KEY_MNG_ID, in_vec, 3, &out_vec, 1); -} - -psa_status_t psa_destroy_key(psa_key_handle_t handle) -{ - psa_key_mng_ipc_t psa_key_mng_ipc = { - .func = PSA_DESTROY_KEY, - .handle = handle, - }; - - psa_invec in_vec = { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc) }; - - psa_status_t status = ipc_oneshot(PSA_KEY_MNG_ID, &in_vec, 1, NULL, 0); - return (status); -} - -static psa_status_t psa_export_key_common(psa_key_handle_t handle, - uint8_t *data, - size_t data_size, - size_t *data_length, - psa_sec_function_t func) -{ - psa_key_mng_ipc_t psa_key_mng_ipc = { - .func = func, - .handle = handle, - }; - - psa_invec in_vec = { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc) }; - - psa_outvec out_vec[2] = { - { data, data_size }, - { data_length, sizeof(*data_length) } - }; - - psa_status_t status = ipc_oneshot(PSA_KEY_MNG_ID, &in_vec, 1, out_vec, 2); - return (status); -} - -psa_status_t psa_export_key(psa_key_handle_t handle, - uint8_t *data, - size_t data_size, - size_t *data_length) -{ - psa_status_t status = psa_export_key_common(handle, data, data_size, - data_length, PSA_EXPORT_KEY); - return (status); -} - -psa_status_t psa_export_public_key(psa_key_handle_t handle, - uint8_t *data, - size_t data_size, - size_t *data_length) -{ - psa_status_t status = psa_export_key_common(handle, data, data_size, - data_length, - PSA_EXPORT_PUBLIC_KEY); - return (status); -} - -psa_status_t psa_copy_key(psa_key_handle_t source_handle, - const psa_key_attributes_t *attributes, - psa_key_handle_t *target_handle) -{ - psa_key_mng_ipc_t psa_key_mng_ipc = { - .func = PSA_COPY_KEY, - .handle = source_handle, - }; - - psa_invec in_vec = { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc) }; - - psa_outvec out_vec = { target_handle, sizeof(*target_handle) }; - - return ipc_oneshot(PSA_KEY_MNG_ID, &in_vec, 1, &out_vec, 1); -} - -psa_status_t psa_hash_compute(psa_algorithm_t alg, - const uint8_t *input, - size_t input_length, - uint8_t *hash, - size_t hash_size, - size_t *hash_length) -{ - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_HASH_COMPUTE, - .handle = 0, - .alg = alg, - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { input, input_length } - }; - - psa_outvec out_vec[2] = { - { hash, hash_size }, - { hash_length, sizeof(*hash_length) } - }; - - return ipc_oneshot(PSA_HASH_ID, in_vec, 2, out_vec, 2); -} - -psa_status_t psa_hash_compare(psa_algorithm_t alg, - const uint8_t *input, - size_t input_length, - const uint8_t *hash, - const size_t hash_length) -{ - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_HASH_COMPARE, - .handle = 0, - .alg = alg, - }; - - psa_invec in_vec[3] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { input, input_length }, - { hash, hash_length }, - }; - - return ipc_oneshot(PSA_HASH_ID, in_vec, 3, NULL, 0); -} - -psa_status_t psa_hash_setup(psa_hash_operation_t *operation, - psa_algorithm_t alg) -{ - if (operation->handle != PSA_NULL_HANDLE) { - return (PSA_ERROR_BAD_STATE); - } - - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_HASH_SETUP, - .handle = 0, - .alg = alg - }; - - psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - - psa_status_t status = ipc_connect(PSA_HASH_ID, &operation->handle); - if (status != PSA_SUCCESS) { - return (status); - } - status = ipc_call(&operation->handle, &in_vec, 1, NULL, 0, false); - if (status != PSA_SUCCESS) { - ipc_close(&operation->handle); - } - return (status); -} - -psa_status_t psa_hash_update(psa_hash_operation_t *operation, - const uint8_t *input, - size_t input_length) -{ - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_HASH_UPDATE, - .handle = 0, - .alg = 0 - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { input, input_length } - }; - - psa_status_t status = ipc_call(&operation->handle, in_vec, 2, NULL, 0, false); - if (status != PSA_SUCCESS) { - ipc_close(&operation->handle); - } - return (status); -} - -psa_status_t psa_hash_finish(psa_hash_operation_t *operation, - uint8_t *hash, - size_t hash_size, - size_t *hash_length) -{ - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_HASH_FINISH, - .handle = 0, - .alg = 0 - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { &hash_size, sizeof(hash_size) } - }; - - psa_outvec out_vec[2] = { - { hash, hash_size }, - { hash_length, sizeof(*hash_length) } - }; - - psa_status_t status = ipc_call(&operation->handle, in_vec, 2, out_vec, 2, true); - return (status); -} - -psa_status_t psa_hash_verify(psa_hash_operation_t *operation, - const uint8_t *hash, - size_t hash_length) -{ - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_HASH_VERIFY, - .handle = 0, - .alg = 0 - }; - - psa_invec in_vec[3] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { &hash_length, sizeof(hash_length) }, - { hash, hash_length } - }; - - psa_status_t status = ipc_call(&operation->handle, in_vec, 3, NULL, 0, true); - return (status); -} - -psa_status_t psa_hash_abort(psa_hash_operation_t *operation) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return (PSA_SUCCESS); - } - - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_HASH_ABORT, - .handle = 0, - .alg = 0 - }; - - psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - - psa_status_t status = ipc_call(&operation->handle, &in_vec, 1, NULL, 0, true); - return (status); -} - -psa_status_t psa_hash_clone(const psa_hash_operation_t *source_operation, - psa_hash_operation_t *target_operation) -{ - if (source_operation->handle <= PSA_NULL_HANDLE || target_operation->handle != PSA_NULL_HANDLE) { - return (PSA_ERROR_BAD_STATE); - } - - psa_crypto_ipc_t psa_crypto_ipc = { - .func = 0, - .handle = 0, - .alg = 0 - }; - - size_t index = 0; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { &index, sizeof(index) } - }; - - psa_outvec out_vec = { &index, sizeof(index) }; - - psa_status_t status = ipc_connect(PSA_HASH_ID, &target_operation->handle); - if (status != PSA_SUCCESS) { - return (status); - } - - psa_crypto_ipc.func = PSA_HASH_CLONE_BEGIN; - status = ipc_call((psa_handle_t *)&source_operation->handle, in_vec, 1, &out_vec, 1, false); - if (status != PSA_SUCCESS) { - goto exit; - } - - psa_crypto_ipc.func = PSA_HASH_CLONE_END; - status = ipc_call(&target_operation->handle, in_vec, 2, NULL, 0, false); - -exit: - if (status != PSA_SUCCESS) { - ipc_close(&target_operation->handle); - } - return (status); -} - -psa_status_t psa_mac_compute(psa_key_handle_t handle, - psa_algorithm_t alg, - const uint8_t *input, - size_t input_length, - uint8_t *mac, - size_t mac_size, - size_t *mac_length) -{ - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_MAC_COMPUTE, - .handle = handle, - .alg = alg, - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { input, input_length }, - }; - - psa_outvec out_vec[2] = { - { mac, mac_size }, - { mac_length, sizeof(*mac_length) }, - }; - - psa_status_t status = ipc_oneshot(PSA_MAC_ID, in_vec, 2, out_vec, 2); - return (status); -} - -psa_status_t psa_mac_verify(psa_key_handle_t handle, - psa_algorithm_t alg, - const uint8_t *input, - size_t input_length, - const uint8_t *mac, - const size_t mac_length) -{ - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_MAC_VERIFY, - .handle = handle, - .alg = alg, - }; - - psa_invec in_vec[3] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { input, input_length }, - { mac, mac_length }, - }; - - psa_status_t status = ipc_oneshot(PSA_MAC_ID, in_vec, 2, NULL, 0); - return (status); -} - -static psa_status_t psa_mac_setup(psa_mac_operation_t *operation, - psa_key_handle_t handle, - psa_algorithm_t alg, - psa_sec_function_t func) -{ - if (operation->handle != PSA_NULL_HANDLE) { - return (PSA_ERROR_BAD_STATE); - } - - psa_crypto_ipc_t psa_crypto_ipc = { - .func = func, - .handle = handle, - .alg = alg - }; - - psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - - psa_status_t status = ipc_connect(PSA_MAC_ID, &operation->handle); - if (status != PSA_SUCCESS) { - return (status); - } - status = ipc_call(&operation->handle, &in_vec, 1, NULL, 0, false); - if (status != PSA_SUCCESS) { - ipc_close(&operation->handle); - } - return (status); -} - -psa_status_t psa_mac_sign_setup(psa_mac_operation_t *operation, - psa_key_handle_t handle, - psa_algorithm_t alg) -{ - psa_status_t status = psa_mac_setup(operation, handle, alg, PSA_MAC_SIGN_SETUP); - return (status); -} - -psa_status_t psa_mac_verify_setup(psa_mac_operation_t *operation, - psa_key_handle_t handle, - psa_algorithm_t alg) -{ - psa_status_t status = psa_mac_setup(operation, handle, alg, PSA_MAC_VERIFY_SETUP); - return (status); -} - -psa_status_t psa_mac_update(psa_mac_operation_t *operation, - const uint8_t *input, - size_t input_length) -{ - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_MAC_UPDATE, - .handle = 0, - .alg = 0 - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { input, input_length } - }; - - psa_status_t status = ipc_call(&operation->handle, in_vec, 2, NULL, 0, false); - if (status != PSA_SUCCESS) { - ipc_close(&operation->handle); - } - return (status); -} - -psa_status_t psa_mac_sign_finish(psa_mac_operation_t *operation, - uint8_t *mac, - size_t mac_size, - size_t *mac_length) -{ - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_MAC_SIGN_FINISH, - .handle = 0, - .alg = 0 - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { &mac_size, sizeof(mac_size) } - }; - - psa_outvec out_vec[2] = { - { mac, mac_size }, - { mac_length, sizeof(*mac_length) } - }; - - psa_status_t status = ipc_call(&operation->handle, in_vec, 2, out_vec, 2, true); - return (status); -} - -psa_status_t psa_mac_verify_finish(psa_mac_operation_t *operation, - const uint8_t *mac, - size_t mac_length) -{ - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_MAC_VERIFY_FINISH, - .handle = 0, - .alg = 0 - }; - - psa_invec in_vec[3] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { &mac_length, sizeof(mac_length) }, - { mac, mac_length } - }; - - psa_status_t status = ipc_call(&operation->handle, in_vec, 3, NULL, 0, true); - return (status); -} - -psa_status_t psa_mac_abort(psa_mac_operation_t *operation) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return (PSA_SUCCESS); - } - - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_MAC_ABORT, - .handle = 0, - .alg = 0 - }; - - psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - - psa_status_t status = ipc_call(&operation->handle, &in_vec, 1, NULL, 0, true); - return (status); -} - -psa_status_t psa_cipher_encrypt(psa_key_handle_t handle, - psa_algorithm_t alg, - const uint8_t *input, - size_t input_length, - uint8_t *output, - size_t output_size, - size_t *output_length) -{ - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_CIPHER_ENCRYPT, - .handle = handle, - .alg = alg, - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { input, input_length }, - }; - - psa_outvec out_vec[2] = { - { output, output_size }, - { output_length, sizeof(*output_length) }, - }; - - psa_status_t status = ipc_oneshot(PSA_SYMMETRIC_ID, in_vec, 2, out_vec, 2); - return (status); -} - -psa_status_t psa_cipher_decrypt(psa_key_handle_t handle, - psa_algorithm_t alg, - const uint8_t *input, - size_t input_length, - uint8_t *output, - size_t output_size, - size_t *output_length) -{ - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_CIPHER_DECRYPT, - .handle = handle, - .alg = alg, - }; - - psa_invec in_vec[3] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { input, input_length }, - }; - - psa_outvec out_vec[2] = { - { output, output_size }, - { output_length, sizeof(*output_length) }, - }; - - psa_status_t status = ipc_oneshot(PSA_SYMMETRIC_ID, in_vec, 2, out_vec, 2); - return (status); -} - -static psa_status_t psa_cipher_setup(psa_cipher_operation_t *operation, - psa_key_handle_t handle, - psa_algorithm_t alg, - psa_sec_function_t func) -{ - if (operation->handle != PSA_NULL_HANDLE) { - return (PSA_ERROR_BAD_STATE); - } - - psa_crypto_ipc_t psa_crypto_ipc = { - .func = func, - .handle = handle, - .alg = alg - }; - - psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - - psa_status_t status = ipc_connect(PSA_SYMMETRIC_ID, &operation->handle); - if (status != PSA_SUCCESS) { - return (status); - } - status = ipc_call(&operation->handle, &in_vec, 1, NULL, 0, false); - if (status != PSA_SUCCESS) { - ipc_close(&operation->handle); - } - return (status); -} - -psa_status_t psa_cipher_encrypt_setup(psa_cipher_operation_t *operation, - psa_key_handle_t handle, - psa_algorithm_t alg) -{ - psa_status_t status = psa_cipher_setup(operation, handle, alg, PSA_CIPHER_ENCRYPT_SETUP); - return (status); -} - -psa_status_t psa_cipher_decrypt_setup(psa_cipher_operation_t *operation, - psa_key_handle_t handle, - psa_algorithm_t alg) -{ - psa_status_t status = psa_cipher_setup(operation, handle, alg, PSA_CIPHER_DECRYPT_SETUP); - return (status); -} - -psa_status_t psa_cipher_generate_iv(psa_cipher_operation_t *operation, - uint8_t *iv, - size_t iv_size, - size_t *iv_length) -{ - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_CIPHER_GENERATE_IV, - .handle = 0, - .alg = 0 - }; - - psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - - psa_outvec out_vec[2] = { - { iv, iv_size }, - { iv_length, sizeof(*iv_length) } - }; - - psa_status_t status = ipc_call(&operation->handle, &in_vec, 1, out_vec, 2, false); - if (status != PSA_SUCCESS) { - ipc_close(&operation->handle); - } - return (status); -} - -psa_status_t psa_cipher_set_iv(psa_cipher_operation_t *operation, - const uint8_t *iv, - size_t iv_length) -{ - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_CIPHER_SET_IV, - .handle = 0, - .alg = 0 - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { iv, iv_length } - }; - - psa_status_t status = ipc_call(&operation->handle, in_vec, 2, NULL, 0, false); - if (status != PSA_SUCCESS) { - ipc_close(&operation->handle); - } - return (status); -} - -psa_status_t psa_cipher_update(psa_cipher_operation_t *operation, - const uint8_t *input, - size_t input_length, - uint8_t *output, - size_t output_size, - size_t *output_length) -{ - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_CIPHER_UPDATE, - .handle = 0, - .alg = 0 - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { input, input_length } - }; - - psa_outvec out_vec[2] = { - { output, output_size }, - { output_length, (output_length == NULL ? 0 : sizeof(*output_length)) } - }; - - psa_status_t status = ipc_call(&operation->handle, in_vec, 2, out_vec, 2, false); - if (status != PSA_SUCCESS) { - ipc_close(&operation->handle); - } - return (status); -} - -psa_status_t psa_cipher_finish(psa_cipher_operation_t *operation, - uint8_t *output, - size_t output_size, - size_t *output_length) -{ - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_CIPHER_FINISH, - .handle = 0, - .alg = 0 - }; - - psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - - psa_outvec out_vec[2] = { - { output, output_size }, - { output_length, (output_length == NULL ? 0 : sizeof(*output_length)) } - }; - - psa_status_t status = ipc_call(&operation->handle, &in_vec, 1, out_vec, 2, true); - return (status); -} - -psa_status_t psa_cipher_abort(psa_cipher_operation_t *operation) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return (PSA_SUCCESS); - } - - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_CIPHER_ABORT, - .handle = 0, - .alg = 0 - }; - - psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - - psa_status_t status = ipc_call(&operation->handle, &in_vec, 1, NULL, 0, true); - return (status); -} - -psa_status_t psa_aead_encrypt(psa_key_handle_t handle, - psa_algorithm_t alg, - const uint8_t *nonce, - size_t nonce_length, - const uint8_t *additional_data, - size_t additional_data_length, - const uint8_t *plaintext, - size_t plaintext_length, - uint8_t *ciphertext, - size_t ciphertext_size, - size_t *ciphertext_length) -{ - if (nonce_length > PSA_AEAD_MAX_NONCE_SIZE) { - return (PSA_ERROR_INVALID_ARGUMENT); - } - - uint8_t *buffer = calloc(1, (additional_data_length + plaintext_length)); - if (buffer == NULL) { - return (PSA_ERROR_INSUFFICIENT_MEMORY); - } - - psa_crypto_ipc_aead_t psa_crypto_ipc = { - .func = PSA_AEAD_ENCRYPT, - .handle = handle, - .alg = alg, - .nonce_size = nonce_length, - .additional_data_length = additional_data_length, - .input_length = plaintext_length, - .nonce = { 0 } - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { buffer, (additional_data_length + plaintext_length) } - }; - - psa_outvec out_vec[2] = { - { ciphertext, ciphertext_size }, - { ciphertext_length, sizeof(*ciphertext_length) } - }; - - psa_status_t status; - memcpy(buffer, additional_data, additional_data_length); - memcpy(buffer + additional_data_length, plaintext, plaintext_length); - memcpy(psa_crypto_ipc.nonce, nonce, nonce_length); - - status = ipc_oneshot(PSA_AEAD_ID, in_vec, 2, out_vec, 2); - free(buffer); - return (status); -} - -psa_status_t psa_aead_decrypt(psa_key_handle_t handle, - psa_algorithm_t alg, - const uint8_t *nonce, - size_t nonce_length, - const uint8_t *additional_data, - size_t additional_data_length, - const uint8_t *ciphertext, - size_t ciphertext_length, - uint8_t *plaintext, - size_t plaintext_size, - size_t *plaintext_length) -{ - if (nonce_length > PSA_AEAD_MAX_NONCE_SIZE) { - return (PSA_ERROR_INVALID_ARGUMENT); - } - - uint8_t *buffer = calloc(1, (additional_data_length + ciphertext_length)); - if (buffer == NULL) { - return (PSA_ERROR_INSUFFICIENT_MEMORY); - } - - psa_crypto_ipc_aead_t psa_crypto_ipc = { - .func = PSA_AEAD_DECRYPT, - .handle = handle, - .alg = alg, - .nonce_size = nonce_length, - .additional_data_length = additional_data_length, - .input_length = ciphertext_length, - .nonce = { 0 } - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { buffer, (additional_data_length + ciphertext_length) } - }; - - psa_outvec out_vec[2] = { - { plaintext, plaintext_size }, - { plaintext_length, sizeof(*plaintext_length) } - }; - - psa_status_t status; - memcpy(buffer, additional_data, additional_data_length); - memcpy(buffer + additional_data_length, ciphertext, ciphertext_length); - memcpy(psa_crypto_ipc.nonce, nonce, nonce_length); - - status = ipc_oneshot(PSA_AEAD_ID, in_vec, 2, out_vec, 2); - free(buffer); - return (status); -} - -static psa_status_t psa_aead_setup(psa_aead_operation_t *operation, - psa_key_handle_t handle, - psa_algorithm_t alg, - psa_sec_function_t func) -{ - if (operation->handle != PSA_NULL_HANDLE) { - return PSA_ERROR_BAD_STATE; - } - - psa_crypto_ipc_t psa_crypto_ipc = { - .func = func, - .handle = handle, - .alg = alg - }; - - psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - - psa_status_t status = ipc_connect(PSA_AEAD_ID, &operation->handle); - if (status != PSA_SUCCESS) { - return status; - } - status = ipc_call(&operation->handle, &in_vec, 1, NULL, 0, false); - if (status != PSA_SUCCESS) { - ipc_close(&operation->handle); - } - return status; -} - -psa_status_t psa_aead_encrypt_setup(psa_aead_operation_t *operation, - psa_key_handle_t handle, - psa_algorithm_t alg) -{ - return psa_aead_setup(operation, handle, alg, PSA_AEAD_ENCRYPT_SETUP); -} - -psa_status_t psa_aead_decrypt_setup(psa_aead_operation_t *operation, - psa_key_handle_t handle, - psa_algorithm_t alg) -{ - return psa_aead_setup(operation, handle, alg, PSA_AEAD_DECRYPT_SETUP); -} - -psa_status_t psa_aead_generate_nonce(psa_aead_operation_t *operation, - uint8_t *nonce, - size_t nonce_size, - size_t *nonce_length) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return PSA_ERROR_BAD_STATE; - } - - psa_crypto_ipc_aead_t psa_crypto_ipc = { - .func = PSA_AEAD_GENERATE_NONCE, - .handle = 0, - }; - - psa_invec in_vec[1] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - }; - - psa_outvec out_vec[2] = { - { nonce, nonce_size }, - { nonce_length, sizeof(*nonce_length) }, - }; - - return ipc_call(&operation->handle, in_vec, 1, out_vec, 2, false); -} - -psa_status_t psa_aead_set_nonce(psa_aead_operation_t *operation, - const uint8_t *nonce, - size_t nonce_length) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return PSA_ERROR_BAD_STATE; - } - - if (nonce_length > PSA_AEAD_MAX_NONCE_SIZE) { - return (PSA_ERROR_INVALID_ARGUMENT); - } - - psa_crypto_ipc_aead_t psa_crypto_ipc = { - .func = PSA_AEAD_SET_NONCE, - .handle = 0, - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { nonce, nonce_length } - }; - - return ipc_call(&operation->handle, in_vec, 2, NULL, 0, false); -} - -psa_status_t psa_aead_set_lengths(psa_aead_operation_t *operation, - size_t ad_length, - size_t plaintext_length) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return PSA_ERROR_BAD_STATE; - } - - psa_crypto_ipc_aead_t psa_crypto_ipc = { - .func = PSA_AEAD_SET_LENGTHS, - .handle = 0, - .alg = 0, - .additional_data_length = ad_length, - .input_length = plaintext_length, - }; - - psa_invec in_vec[1] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - }; - - return ipc_call(&operation->handle, in_vec, 1, NULL, 0, false); -} - -psa_status_t psa_aead_update_ad(psa_aead_operation_t *operation, - const uint8_t *input, - size_t input_length) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return PSA_ERROR_BAD_STATE; - } - - psa_crypto_ipc_aead_t psa_crypto_ipc = { - .func = PSA_AEAD_UPDATE_AD, - .handle = 0, - .alg = 0, - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { input, input_length }, - }; - - return ipc_call(&operation->handle, in_vec, 2, NULL, 0, false); -} - -psa_status_t psa_aead_update(psa_aead_operation_t *operation, - const uint8_t *input, - size_t input_length, - uint8_t *output, - size_t output_size, - size_t *output_length) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return PSA_ERROR_BAD_STATE; - } - - psa_crypto_ipc_aead_t psa_crypto_ipc = { - .func = PSA_AEAD_UPDATE, - .handle = 0, - .alg = 0, - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { input, input_length }, - }; - - psa_outvec out_vec[2] = { - { output, output_size }, - { output_length, sizeof(*output_length) }, - }; - - return ipc_call(&operation->handle, in_vec, 2, out_vec, 2, false); -} - -psa_status_t psa_aead_finish(psa_aead_operation_t *operation, - uint8_t *ciphertext, - size_t ciphertext_size, - size_t *ciphertext_length, - uint8_t *tag, - size_t tag_size, - size_t *tag_length) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return PSA_ERROR_BAD_STATE; - } - - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_AEAD_FINISH, - .handle = 0, - .alg = 0 - }; - - psa_invec in_vec[1] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - }; - - psa_outvec out_vec[4] = { - { ciphertext, ciphertext_size }, - { ciphertext_length, (ciphertext_length == NULL ? 0 : sizeof(*ciphertext_length)) }, - { tag, tag_size }, - { tag_length, (tag_length == NULL ? 0 : sizeof(*tag_length)) }, - }; - - return ipc_call(&operation->handle, in_vec, 1, out_vec, 4, true); -} - -psa_status_t psa_aead_verify(psa_aead_operation_t *operation, - uint8_t *plaintext, - size_t plaintext_size, - size_t *plaintext_length, - const uint8_t *tag, - size_t tag_length) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return PSA_ERROR_BAD_STATE; - } - - psa_crypto_ipc_t psa_crypto_ipc = { - .func = PSA_AEAD_VERIFY, - .handle = 0, - .alg = 0 - }; - - psa_invec in_vec[3] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { tag, tag_length }, - }; - - psa_outvec out_vec[2] = { - { plaintext, plaintext_size }, - { plaintext_length, (plaintext_length == NULL ? 0 : sizeof(*plaintext_length)) }, - }; - - return ipc_call(&operation->handle, in_vec, 3, out_vec, 2, true); -} - -psa_status_t psa_aead_abort(psa_aead_operation_t *operation) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return PSA_SUCCESS; - } - - psa_crypto_ipc_aead_t psa_crypto_ipc = { - .func = PSA_AEAD_ABORT, - .handle = 0, - .alg = 0 - }; - - psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - - return ipc_call(&operation->handle, &in_vec, 1, NULL, 0, true); -} - -psa_status_t psa_sign_hash(psa_key_handle_t handle, - psa_algorithm_t alg, - const uint8_t *hash, - size_t hash_length, - uint8_t *signature, - size_t signature_size, - size_t *signature_length) -{ - psa_crypto_ipc_asymmetric_t psa_crypto_ipc = { - .func = PSA_SIGN_HASH, - .handle = handle, - .alg = alg, - .input_length = 0, - .salt_length = 0 - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { hash, hash_length } - }; - - psa_outvec out_vec[2] = { - { signature, signature_size }, - { signature_length, sizeof(*signature_length) } - }; - - psa_status_t status = ipc_oneshot(PSA_ASYMMETRIC_ID, in_vec, 2, out_vec, 2); - return (status); -} - -psa_status_t psa_verify_hash(psa_key_handle_t handle, - psa_algorithm_t alg, - const uint8_t *hash, - size_t hash_length, - const uint8_t *signature, - size_t signature_size) -{ - psa_crypto_ipc_asymmetric_t psa_crypto_ipc = { - .func = PSA_VERIFY_HASH, - .handle = handle, - .alg = alg, - .input_length = 0, - .salt_length = 0 - }; - - psa_invec in_vec[3] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { signature, signature_size }, - { hash, hash_length } - }; - - psa_status_t status = ipc_oneshot(PSA_ASYMMETRIC_ID, in_vec, 3, NULL, 0); - return (status); -} - -static psa_status_t psa_asymmetric_operation(psa_sec_function_t func, - psa_key_handle_t handle, - psa_algorithm_t alg, - const uint8_t *input, - size_t input_length, - const uint8_t *salt, - size_t salt_length, - uint8_t *output, - size_t output_size, - size_t *output_length) -{ - uint8_t *buffer = calloc(1, (input_length + salt_length)); - if (buffer == NULL) { - return (PSA_ERROR_INSUFFICIENT_MEMORY); - } - - psa_crypto_ipc_asymmetric_t psa_crypto_ipc = { - .func = func, - .handle = handle, - .alg = alg, - .input_length = input_length, - .salt_length = salt_length - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { buffer, (input_length + salt_length) } - }; - - psa_outvec out_vec[2] = { - { output, output_size }, - { output_length, sizeof(*output_length) } - }; - - psa_status_t status; - memcpy(buffer, input, input_length); - memcpy(buffer + input_length, salt, salt_length); - - status = ipc_oneshot(PSA_ASYMMETRIC_ID, in_vec, 2, out_vec, 2); - free(buffer); - return (status); -} - -psa_status_t psa_asymmetric_encrypt(psa_key_handle_t handle, - psa_algorithm_t alg, - const uint8_t *input, - size_t input_length, - const uint8_t *salt, - size_t salt_length, - uint8_t *output, - size_t output_size, - size_t *output_length) -{ - psa_status_t status = psa_asymmetric_operation(PSA_ASYMMETRIC_ENCRYPT, - handle, - alg, input, input_length, - salt, salt_length, output, - output_size, output_length); - return (status); -} - -psa_status_t psa_asymmetric_decrypt(psa_key_handle_t handle, - psa_algorithm_t alg, - const uint8_t *input, - size_t input_length, - const uint8_t *salt, - size_t salt_length, - uint8_t *output, - size_t output_size, - size_t *output_length) -{ - psa_status_t status = psa_asymmetric_operation(PSA_ASYMMETRIC_DECRYPT, - handle, - alg, input, input_length, - salt, salt_length, output, - output_size, output_length); - return (status); -} - -psa_status_t psa_key_derivation_setup( - psa_key_derivation_operation_t *operation, - psa_algorithm_t alg) -{ - if (operation->handle != PSA_NULL_HANDLE) { - return PSA_ERROR_BAD_STATE; - } - - psa_crypto_derivation_ipc_t psa_crypto_ipc = { - .func = PSA_KEY_DERIVATION_SETUP, - .handle = 0, - .alg = alg - }; - - psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - - psa_status_t status = ipc_connect(PSA_KEY_DERIVATION_ID, &operation->handle); - if (status != PSA_SUCCESS) { - return status; - } - - status = ipc_call(&operation->handle, &in_vec, 1, NULL, 0, false); - if (status != PSA_SUCCESS) { - ipc_close(&operation->handle); - } - - return status; -} - -psa_status_t psa_key_derivation_get_capacity( - const psa_key_derivation_operation_t *op, - size_t *capacity) -{ - psa_key_derivation_operation_t *operation = (psa_key_derivation_operation_t *) op; - - if (operation->handle <= PSA_NULL_HANDLE) { - return PSA_ERROR_BAD_STATE; - } - - psa_crypto_derivation_ipc_t psa_crypto_ipc = { - .func = PSA_KEY_DERIVATION_GET_CAPACITY, - .handle = 0, - .alg = 0, - }; - - psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - - psa_outvec out_vec = { capacity, sizeof(*capacity) }; - - return ipc_call(&operation->handle, &in_vec, 1, &out_vec, 1, false); -} - -psa_status_t psa_key_derivation_set_capacity( - psa_key_derivation_operation_t *operation, - size_t capacity) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return PSA_ERROR_BAD_STATE; - } - - psa_crypto_derivation_ipc_t psa_crypto_ipc = { - .func = PSA_KEY_DERIVATION_SET_CAPACITY, - .handle = 0, - .alg = 0, - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { &capacity, sizeof(capacity) }, - }; - - return ipc_call(&operation->handle, in_vec, 2, NULL, 0, false); -} - -psa_status_t psa_key_derivation_input_bytes( - psa_key_derivation_operation_t *operation, - psa_key_derivation_step_t step, - const uint8_t *data, - size_t data_length) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return PSA_ERROR_BAD_STATE; - } - - psa_crypto_derivation_ipc_t psa_crypto_ipc = { - .func = PSA_KEY_DERIVATION_INPUT_BYTES, - .handle = 0, - .alg = 0, - }; - - psa_invec in_vec[3] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { &step, sizeof(step) }, - { data, data_length }, - }; - - return ipc_call(&operation->handle, in_vec, 3, NULL, 0, false); -} - -psa_status_t psa_key_derivation_input_key( - psa_key_derivation_operation_t *operation, - psa_key_derivation_step_t step, - psa_key_handle_t handle) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return PSA_ERROR_BAD_STATE; - } - - psa_crypto_derivation_ipc_t psa_crypto_ipc = { - .func = PSA_KEY_DERIVATION_INPUT_KEY, - .handle = handle, - .alg = 0 - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { &step, sizeof(step) }, - }; - - psa_status_t status = ipc_call(&operation->handle, in_vec, 2, NULL, 0, false); - return (status); -} - -psa_status_t psa_key_derivation_key_agreement( - psa_key_derivation_operation_t *operation, - psa_key_derivation_step_t step, - psa_key_handle_t private_key, - const uint8_t *peer_key, - size_t peer_key_length) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return PSA_ERROR_BAD_STATE; - } - - psa_crypto_derivation_ipc_t psa_crypto_ipc = { - .func = PSA_KEY_DERIVATION_KEY_AGREEMENT, - .handle = private_key, - .alg = 0, - }; - - psa_invec in_vec[3] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { &step, sizeof(step) }, - { peer_key, peer_key_length }, - }; - - return ipc_call(&operation->handle, in_vec, 3, NULL, 0, false); -} - -psa_status_t psa_key_derivation_output_bytes( - psa_key_derivation_operation_t *operation, - uint8_t *output, - size_t output_length) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return PSA_ERROR_BAD_STATE; - } - - psa_crypto_derivation_ipc_t psa_crypto_ipc = { - .func = PSA_KEY_DERIVATION_OUTPUT_BYTES, - .handle = 0, - }; - - psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - - psa_outvec out_vec = { output, output_length }; - - return ipc_call(&operation->handle, &in_vec, 1, &out_vec, 1, false); -} - -psa_status_t psa_key_derivation_output_key( - const psa_key_attributes_t *attributes, - psa_key_derivation_operation_t *operation, - psa_key_handle_t *handle) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return PSA_ERROR_BAD_STATE; - } - - psa_crypto_derivation_ipc_t psa_crypto_ipc = { - .func = PSA_KEY_DERIVATION_OUTPUT_KEY, - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { attributes, sizeof(*attributes) }, - }; - - psa_outvec out_vec = { handle, sizeof(*handle) }; - - return ipc_call(&operation->handle, in_vec, 2, &out_vec, 1, false); -} - -psa_status_t psa_key_derivation_abort( - psa_key_derivation_operation_t *operation) -{ - if (operation->handle <= PSA_NULL_HANDLE) { - return PSA_SUCCESS; - } - - psa_crypto_derivation_ipc_t psa_crypto_ipc = { - .func = PSA_KEY_DERIVATION_ABORT, - .handle = 0, - .alg = 0, - }; - - psa_invec in_vec = { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }; - - return ipc_call(&operation->handle, &in_vec, 1, NULL, 0, true); -} - -psa_status_t psa_raw_key_agreement(psa_algorithm_t alg, - psa_key_handle_t private_key, - const uint8_t *peer_key, - size_t peer_key_length, - uint8_t *output, - size_t output_size, - size_t *output_length) -{ - psa_crypto_derivation_ipc_t psa_crypto_ipc = { - .func = PSA_RAW_KEY_AGREEMENT, - .handle = private_key, - .alg = alg, - }; - - psa_invec in_vec[2] = { - { &psa_crypto_ipc, sizeof(psa_crypto_ipc) }, - { peer_key, peer_key_length }, - }; - - psa_outvec out_vec[2] = { - { output, output_size }, - { output_length, sizeof(*output_length) } - }; - - return ipc_oneshot(PSA_KEY_DERIVATION_ID, in_vec, 2, out_vec, 2); -} - -psa_status_t psa_generate_random(uint8_t *output, - size_t output_size) -{ - psa_outvec out_vec = { output, output_size }; - - psa_status_t status = ipc_oneshot(PSA_RNG_ID, NULL, 0, &out_vec, 1); - return (status); -} - -psa_status_t psa_generate_key(const psa_key_attributes_t *attributes, - psa_key_handle_t *handle) -{ - psa_key_mng_ipc_t psa_key_mng_ipc = { - .func = PSA_GENERATE_KEY, - }; - - psa_invec in_vec[2] = { - { &psa_key_mng_ipc, sizeof(psa_key_mng_ipc) }, - { attributes, sizeof(*attributes) }, - }; - - psa_outvec out_vec = { handle, sizeof(*handle) }; - - return ipc_oneshot(PSA_KEY_MNG_ID, in_vec, 2, &out_vec, 1); -} - - -/* - * PSA Crypto API extensions (crypto_extra.h) - */ - -void mbedtls_psa_crypto_free(void) -{ - ipc_oneshot(PSA_CRYPTO_FREE_ID, NULL, 0, NULL, 0); -} - -psa_status_t mbedtls_psa_inject_entropy(const uint8_t *seed, - size_t seed_size) -{ - psa_invec in_vec = { seed, seed_size }; - - psa_status_t status = ipc_oneshot(PSA_ENTROPY_ID, &in_vec, 1, NULL, 0); - return (status); -} - -#endif /* MBEDTLS_PSA_CRYPTO_C */ diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/inc/autogen_sid.h b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/inc/autogen_sid.h deleted file mode 100644 index d3440689c1..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/inc/autogen_sid.h +++ /dev/null @@ -1,111 +0,0 @@ -/* Copyright (c) 2019 ARM Limited - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/******************************************************************************* - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - * THIS FILE IS AN AUTO-GENERATED FILE - DO NOT MODIFY IT. - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - * Template Version 1.0 - * Generated by tools/psa/generate_partition_code.py Version 1.1 - ******************************************************************************/ - -/****************** Service Partitions ****************************************/ - -/* ----------------------------------------------------------------------------- - * ATTEST_SRV Service IDs - * -------------------------------------------------------------------------- */ - -#define PSA_ATTEST_GET_TOKEN_ID 0x00000F10 -#define PSA_ATTEST_GET_TOKEN_SIZE_ID 0x00000F11 -#define PSA_ATTEST_INJECT_KEY_ID 0x00000F12 - -/* ----------------------------------------------------------------------------- - * CRYPTO_SRV Service IDs - * -------------------------------------------------------------------------- */ - -#define PSA_CRYPTO_INIT_ID 0x00000F00 -#define PSA_MAC_ID 0x00000F01 -#define PSA_HASH_ID 0x00000F02 -#define PSA_ASYMMETRIC_ID 0x00000F03 -#define PSA_SYMMETRIC_ID 0x00000F04 -#define PSA_AEAD_ID 0x00000F05 -#define PSA_KEY_MNG_ID 0x00000F06 -#define PSA_RNG_ID 0x00000F07 -#define PSA_CRYPTO_FREE_ID 0x00000F08 -#define PSA_KEY_DERIVATION_ID 0x00000F09 -#define PSA_ENTROPY_ID 0x00000F0A - -/* ----------------------------------------------------------------------------- - * PLATFORM Service IDs - * -------------------------------------------------------------------------- */ - -#define PSA_PLATFORM_LC_GET 0x00011000 -#define PSA_PLATFORM_LC_SET 0x00011001 -#define PSA_PLATFORM_SYSTEM_RESET 0x00011002 -#define PSA_PLATFORM_IOCTL 0x00011003 - -/* ----------------------------------------------------------------------------- - * ITS Service IDs - * -------------------------------------------------------------------------- */ - -#define PSA_ITS_GET 0x00011A00 -#define PSA_ITS_SET 0x00011A01 -#define PSA_ITS_INFO 0x00011A02 -#define PSA_ITS_REMOVE 0x00011A03 -#define PSA_ITS_RESET 0x00011A04 - -/****************** Test Partitions *******************************************/ - -/* ----------------------------------------------------------------------------- - * CRYPTO_ACL_TEST Service IDs - * -------------------------------------------------------------------------- */ - -#define CRYPTO_GENERATE_KEY 0x00000201 -#define CRYPTO_OPEN_KEY 0x00000202 -#define CRYPTO_CLOSE_KEY 0x00000203 -#define CRYPTO_DESTROY_KEY 0x00000205 -#define CRYPTO_GET_KEY_ATTRIBUTES 0x00000206 -#define CRYPTO_IMPORT_KEY 0x00000208 - -/* ----------------------------------------------------------------------------- - * CLIENT_TESTS_PART1 Service IDs - * -------------------------------------------------------------------------- */ - -#define CLIENT_TESTS_PART1_ROT_SRV1 0x00001A05 -#define CLIENT_TESTS_PART1_DROP_CONN 0x00001A06 -#define CLIENT_TESTS_PART1_SECURE_CLIENTS_ONLY 0x00001A07 - -/* ----------------------------------------------------------------------------- - * SERVER_TESTS_PART1 Service IDs - * -------------------------------------------------------------------------- */ - -#define SERVER_TESTS_PART1_CONTROL 0x00001A01 -#define SERVER_TESTS_PART1_TEST 0x00001A02 - -/* ----------------------------------------------------------------------------- - * SERVER_TESTS_PART2 Service IDs - * -------------------------------------------------------------------------- */ - -#define SERVER_TESTS_PART2_ROT_SRV_REVERSE 0x00001A03 -#define SERVER_TESTS_PART2_ROT_SRV_DB_TST 0x00001A04 - -/* ----------------------------------------------------------------------------- - * SMOKE_TESTS_PART1 Service IDs - * -------------------------------------------------------------------------- */ - -#define SMOKE_TESTS_PART1_ROT_SRV1 0x00001A00 - diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/inc/mbed_spm_partitions.h b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/inc/mbed_spm_partitions.h deleted file mode 100644 index acf41223ef..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/inc/mbed_spm_partitions.h +++ /dev/null @@ -1,310 +0,0 @@ -/* Copyright (c) 2017-2019 ARM Limited - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -/******************************************************************************* - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - * THIS FILE IS AN AUTO-GENERATED FILE - DO NOT MODIFY IT. - * !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! - * Template Version 1.0 - * Generated by tools/psa/generate_partition_code.py Version 1.1 - ******************************************************************************/ - -#ifndef __MBED_SPM_PARTITIONS_H___ -#define __MBED_SPM_PARTITIONS_H___ - - -/****************** Common definitions ****************************************/ - -/* PSA reserved event flags */ -#define PSA_RESERVED1_POS (1UL) -#define PSA_RESERVED1_MSK (1UL << PSA_RESERVED1_POS) - -#define PSA_RESERVED2_POS (2UL) -#define PSA_RESERVED2_MSK (1UL << PSA_RESERVED2_POS) - -/****************** Service Partitions ****************************************/ - -/* ----------------------------------------------------------------------------- - * ATTEST_SRV defines - * -------------------------------------------------------------------------- */ -#define ATTEST_SRV_ID 37 - -#define ATTEST_SRV_ROT_SRV_COUNT (3UL) -#define ATTEST_SRV_EXT_ROT_SRV_COUNT (7UL) - - -#define ATTEST_SRV_WAIT_ANY_IRQ_MSK (0) - -#define PSA_ATTEST_GET_TOKEN_POS (4UL) -#define PSA_ATTEST_GET_TOKEN (1UL << PSA_ATTEST_GET_TOKEN_POS) -#define PSA_ATTEST_GET_TOKEN_SIZE_POS (5UL) -#define PSA_ATTEST_GET_TOKEN_SIZE (1UL << PSA_ATTEST_GET_TOKEN_SIZE_POS) -#define PSA_ATTEST_INJECT_KEY_POS (6UL) -#define PSA_ATTEST_INJECT_KEY (1UL << PSA_ATTEST_INJECT_KEY_POS) - -#define ATTEST_SRV_WAIT_ANY_SID_MSK (\ - PSA_ATTEST_GET_TOKEN | \ - PSA_ATTEST_GET_TOKEN_SIZE | \ - PSA_ATTEST_INJECT_KEY) - - -/* ----------------------------------------------------------------------------- - * CRYPTO_SRV defines - * -------------------------------------------------------------------------- */ -#define CRYPTO_SRV_ID 35 - -#define CRYPTO_SRV_ROT_SRV_COUNT (11UL) -#define CRYPTO_SRV_EXT_ROT_SRV_COUNT (4UL) - - -#define CRYPTO_SRV_WAIT_ANY_IRQ_MSK (0) - -#define PSA_CRYPTO_INIT_POS (4UL) -#define PSA_CRYPTO_INIT (1UL << PSA_CRYPTO_INIT_POS) -#define PSA_MAC_POS (5UL) -#define PSA_MAC (1UL << PSA_MAC_POS) -#define PSA_HASH_POS (6UL) -#define PSA_HASH (1UL << PSA_HASH_POS) -#define PSA_ASYMMETRIC_POS (7UL) -#define PSA_ASYMMETRIC (1UL << PSA_ASYMMETRIC_POS) -#define PSA_SYMMETRIC_POS (8UL) -#define PSA_SYMMETRIC (1UL << PSA_SYMMETRIC_POS) -#define PSA_AEAD_POS (9UL) -#define PSA_AEAD (1UL << PSA_AEAD_POS) -#define PSA_KEY_MNG_POS (10UL) -#define PSA_KEY_MNG (1UL << PSA_KEY_MNG_POS) -#define PSA_RNG_POS (11UL) -#define PSA_RNG (1UL << PSA_RNG_POS) -#define PSA_CRYPTO_FREE_POS (12UL) -#define PSA_CRYPTO_FREE (1UL << PSA_CRYPTO_FREE_POS) -#define PSA_KEY_DERIVATION_POS (13UL) -#define PSA_KEY_DERIVATION (1UL << PSA_KEY_DERIVATION_POS) -#define PSA_ENTROPY_INJECT_POS (14UL) -#define PSA_ENTROPY_INJECT (1UL << PSA_ENTROPY_INJECT_POS) - -#define CRYPTO_SRV_WAIT_ANY_SID_MSK (\ - PSA_CRYPTO_INIT | \ - PSA_MAC | \ - PSA_HASH | \ - PSA_ASYMMETRIC | \ - PSA_SYMMETRIC | \ - PSA_AEAD | \ - PSA_KEY_MNG | \ - PSA_RNG | \ - PSA_CRYPTO_FREE | \ - PSA_KEY_DERIVATION | \ - PSA_ENTROPY_INJECT) - - -/* ----------------------------------------------------------------------------- - * PLATFORM defines - * -------------------------------------------------------------------------- */ -#define PLATFORM_ID 8 - -#define PLATFORM_ROT_SRV_COUNT (4UL) -#define PLATFORM_EXT_ROT_SRV_COUNT (1UL) - - -#define PLATFORM_WAIT_ANY_IRQ_MSK (0) - -#define PSA_PLATFORM_LC_GET_MSK_POS (4UL) -#define PSA_PLATFORM_LC_GET_MSK (1UL << PSA_PLATFORM_LC_GET_MSK_POS) -#define PSA_PLATFORM_LC_SET_MSK_POS (5UL) -#define PSA_PLATFORM_LC_SET_MSK (1UL << PSA_PLATFORM_LC_SET_MSK_POS) -#define PSA_PLATFORM_SYSTEM_RESET_MSK_POS (6UL) -#define PSA_PLATFORM_SYSTEM_RESET_MSK (1UL << PSA_PLATFORM_SYSTEM_RESET_MSK_POS) -#define PSA_PLATFORM_IOCTL_MSK_POS (7UL) -#define PSA_PLATFORM_IOCTL_MSK (1UL << PSA_PLATFORM_IOCTL_MSK_POS) - -#define PLATFORM_WAIT_ANY_SID_MSK (\ - PSA_PLATFORM_LC_GET_MSK | \ - PSA_PLATFORM_LC_SET_MSK | \ - PSA_PLATFORM_SYSTEM_RESET_MSK | \ - PSA_PLATFORM_IOCTL_MSK) - - -/* ----------------------------------------------------------------------------- - * ITS defines - * -------------------------------------------------------------------------- */ -#define ITS_ID 10 - -#define ITS_ROT_SRV_COUNT (5UL) -#define ITS_EXT_ROT_SRV_COUNT (0UL) - - -#define ITS_WAIT_ANY_IRQ_MSK (0) - -#define PSA_ITS_GET_MSK_POS (4UL) -#define PSA_ITS_GET_MSK (1UL << PSA_ITS_GET_MSK_POS) -#define PSA_ITS_SET_MSK_POS (5UL) -#define PSA_ITS_SET_MSK (1UL << PSA_ITS_SET_MSK_POS) -#define PSA_ITS_INFO_MSK_POS (6UL) -#define PSA_ITS_INFO_MSK (1UL << PSA_ITS_INFO_MSK_POS) -#define PSA_ITS_REMOVE_MSK_POS (7UL) -#define PSA_ITS_REMOVE_MSK (1UL << PSA_ITS_REMOVE_MSK_POS) -#define PSA_ITS_RESET_MSK_POS (8UL) -#define PSA_ITS_RESET_MSK (1UL << PSA_ITS_RESET_MSK_POS) - -#define ITS_WAIT_ANY_SID_MSK (\ - PSA_ITS_GET_MSK | \ - PSA_ITS_SET_MSK | \ - PSA_ITS_INFO_MSK | \ - PSA_ITS_REMOVE_MSK | \ - PSA_ITS_RESET_MSK) - - - -/****************** Test Partitions *******************************************/ - -#ifdef USE_PSA_TEST_PARTITIONS - -#ifdef USE_CRYPTO_ACL_TEST -/* ----------------------------------------------------------------------------- - * CRYPTO_ACL_TEST defines - * -------------------------------------------------------------------------- */ -#define CRYPTO_ACL_TEST_ID 128 - -#define CRYPTO_ACL_TEST_ROT_SRV_COUNT (6UL) -#define CRYPTO_ACL_TEST_EXT_ROT_SRV_COUNT (1UL) - - -#define CRYPTO_ACL_TEST_WAIT_ANY_IRQ_MSK (0) - -#define CRYPTO_GENERATE_KEY_MSK_POS (4UL) -#define CRYPTO_GENERATE_KEY_MSK (1UL << CRYPTO_GENERATE_KEY_MSK_POS) -#define CRYPTO_OPEN_KEY_MSK_POS (5UL) -#define CRYPTO_OPEN_KEY_MSK (1UL << CRYPTO_OPEN_KEY_MSK_POS) -#define CRYPTO_CLOSE_KEY_MSK_POS (6UL) -#define CRYPTO_CLOSE_KEY_MSK (1UL << CRYPTO_CLOSE_KEY_MSK_POS) -#define CRYPTO_DESTROY_KEY_MSK_POS (7UL) -#define CRYPTO_DESTROY_KEY_MSK (1UL << CRYPTO_DESTROY_KEY_MSK_POS) -#define CRYPTO_GET_KEY_ATTRIBUTES_MSK_POS (8UL) -#define CRYPTO_GET_KEY_ATTRIBUTES_MSK (1UL << CRYPTO_GET_KEY_ATTRIBUTES_MSK_POS) -#define CRYPTO_IMPORT_KEY_MSK_POS (9UL) -#define CRYPTO_IMPORT_KEY_MSK (1UL << CRYPTO_IMPORT_KEY_MSK_POS) - -#define CRYPTO_ACL_TEST_WAIT_ANY_SID_MSK (\ - CRYPTO_GENERATE_KEY_MSK | \ - CRYPTO_OPEN_KEY_MSK | \ - CRYPTO_CLOSE_KEY_MSK | \ - CRYPTO_DESTROY_KEY_MSK | \ - CRYPTO_GET_KEY_ATTRIBUTES_MSK | \ - CRYPTO_IMPORT_KEY_MSK) - - -#endif // USE_CRYPTO_ACL_TEST - -#ifdef USE_CLIENT_TESTS_PART1 -/* ----------------------------------------------------------------------------- - * CLIENT_TESTS_PART1 defines - * -------------------------------------------------------------------------- */ -#define CLIENT_TESTS_PART1_ID 1 - -#define CLIENT_TESTS_PART1_ROT_SRV_COUNT (3UL) -#define CLIENT_TESTS_PART1_EXT_ROT_SRV_COUNT (0UL) - - -#define CLIENT_TESTS_PART1_WAIT_ANY_IRQ_MSK (0) - -#define PART1_ROT_SRV1_MSK_POS (4UL) -#define PART1_ROT_SRV1_MSK (1UL << PART1_ROT_SRV1_MSK_POS) -#define DROP_CONN_MSK_POS (5UL) -#define DROP_CONN_MSK (1UL << DROP_CONN_MSK_POS) -#define SECURE_CLIENTS_ONLY_MSK_POS (6UL) -#define SECURE_CLIENTS_ONLY_MSK (1UL << SECURE_CLIENTS_ONLY_MSK_POS) - -#define CLIENT_TESTS_PART1_WAIT_ANY_SID_MSK (\ - PART1_ROT_SRV1_MSK | \ - DROP_CONN_MSK | \ - SECURE_CLIENTS_ONLY_MSK) - - -#endif // USE_CLIENT_TESTS_PART1 - -#ifdef USE_SERVER_TESTS_PART1 -/* ----------------------------------------------------------------------------- - * SERVER_TESTS_PART1 defines - * -------------------------------------------------------------------------- */ -#define SERVER_TESTS_PART1_ID 2 - -#define SERVER_TESTS_PART1_ROT_SRV_COUNT (2UL) -#define SERVER_TESTS_PART1_EXT_ROT_SRV_COUNT (2UL) - - -#define SERVER_TESTS_PART1_WAIT_ANY_IRQ_MSK (0) - -#define CONTROL_MSK_POS (4UL) -#define CONTROL_MSK (1UL << CONTROL_MSK_POS) -#define TEST_MSK_POS (5UL) -#define TEST_MSK (1UL << TEST_MSK_POS) - -#define SERVER_TESTS_PART1_WAIT_ANY_SID_MSK (\ - CONTROL_MSK | \ - TEST_MSK) - - -#endif // USE_SERVER_TESTS_PART1 - -#ifdef USE_SERVER_TESTS_PART2 -/* ----------------------------------------------------------------------------- - * SERVER_TESTS_PART2 defines - * -------------------------------------------------------------------------- */ -#define SERVER_TESTS_PART2_ID 3 - -#define SERVER_TESTS_PART2_ROT_SRV_COUNT (2UL) -#define SERVER_TESTS_PART2_EXT_ROT_SRV_COUNT (0UL) - - -#define SERVER_TESTS_PART2_WAIT_ANY_IRQ_MSK (0) - -#define ROT_SRV_REVERSE_MSK_POS (4UL) -#define ROT_SRV_REVERSE_MSK (1UL << ROT_SRV_REVERSE_MSK_POS) -#define ROT_SRV_DB_TST_MSK_POS (5UL) -#define ROT_SRV_DB_TST_MSK (1UL << ROT_SRV_DB_TST_MSK_POS) - -#define SERVER_TESTS_PART2_WAIT_ANY_SID_MSK (\ - ROT_SRV_REVERSE_MSK | \ - ROT_SRV_DB_TST_MSK) - - -#endif // USE_SERVER_TESTS_PART2 - -#ifdef USE_SMOKE_TESTS_PART1 -/* ----------------------------------------------------------------------------- - * SMOKE_TESTS_PART1 defines - * -------------------------------------------------------------------------- */ -#define SMOKE_TESTS_PART1_ID 4 - -#define SMOKE_TESTS_PART1_ROT_SRV_COUNT (1UL) -#define SMOKE_TESTS_PART1_EXT_ROT_SRV_COUNT (0UL) - - -#define SMOKE_TESTS_PART1_WAIT_ANY_IRQ_MSK (0) - -#define ROT_SRV1_MSK_POS (4UL) -#define ROT_SRV1_MSK (1UL << ROT_SRV1_MSK_POS) - -#define SMOKE_TESTS_PART1_WAIT_ANY_SID_MSK (\ - ROT_SRV1_MSK) - - -#endif // USE_SMOKE_TESTS_PART1 - - -#endif // USE_PSA_TEST_PARTITIONS - -#endif // __MBED_SPM_PARTITIONS_H___ diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/platform/COMPONENT_PSA_SRV_IPC/platform_ipc.c b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/platform/COMPONENT_PSA_SRV_IPC/platform_ipc.c deleted file mode 100644 index 92cf1cd868..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/platform/COMPONENT_PSA_SRV_IPC/platform_ipc.c +++ /dev/null @@ -1,118 +0,0 @@ -/* Copyright (c) 2019-2020 Arm Limited - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "psa_manifest/sid.h" -#include "psa/lifecycle.h" -#include "psa/client.h" -#include "mbed_toolchain.h" -#include "mbed_error.h" -#include "tfm_platform_api.h" - -uint32_t psa_security_lifecycle_state(void) -{ - psa_handle_t conn = psa_connect(PSA_PLATFORM_LC_GET, 1); - if (conn <= PSA_NULL_HANDLE) { - return PSA_LIFECYCLE_UNKNOWN; - } - - uint32_t lc_state = 0; - psa_outvec resp[1] = { {&lc_state, sizeof(lc_state)} }; - - psa_status_t status = psa_call(conn, NULL, 0, resp, 1); - if (status == PSA_DROP_CONNECTION) { - lc_state = PSA_LIFECYCLE_UNKNOWN; - } - - psa_close(conn); - - return lc_state; -} - -psa_status_t mbed_psa_reboot_and_request_new_security_state(uint32_t new_state) -{ - psa_handle_t conn = psa_connect(PSA_PLATFORM_LC_SET, 1); - if (conn <= PSA_NULL_HANDLE) { - return (psa_status_t) conn; - } - - psa_invec msg[1] = { - { &new_state, sizeof(new_state) } - }; - - psa_status_t status = psa_call(conn, msg, 1, NULL, 0); - - psa_close(conn); - return status; -} - -void mbed_psa_system_reset(void) -{ - psa_handle_t conn = psa_connect(PSA_PLATFORM_SYSTEM_RESET, 1); - if (conn > PSA_NULL_HANDLE) { - psa_call(conn, NULL, 0, NULL, 0); - } - error("reset failed - cannot connect to service handle=%ld", conn); -} - -enum tfm_platform_err_t -tfm_platform_ioctl(tfm_platform_ioctl_req_t request, - psa_invec *input, psa_outvec *output) { - tfm_platform_ioctl_req_t req = request; - struct psa_invec in_vec[2] = { {0} }; - size_t inlen, outlen; - psa_status_t status = PSA_ERROR_CONNECTION_REFUSED; - psa_handle_t handle = PSA_NULL_HANDLE; - - in_vec[0].base = &req; - in_vec[0].len = sizeof(req); - if (input != NULL) - { - in_vec[1].base = input->base; - in_vec[1].len = input->len; - inlen = 2; - } else - { - inlen = 1; - } - - if (output != NULL) - { - outlen = 1; - } else - { - outlen = 0; - } - - handle = psa_connect(PSA_PLATFORM_IOCTL, 1); - if (handle <= 0) - { - return TFM_PLATFORM_ERR_SYSTEM_ERROR; - } - - status = psa_call(handle, - in_vec, inlen, - output, outlen); - psa_close(handle); - - if (status < PSA_SUCCESS) - { - return TFM_PLATFORM_ERR_SYSTEM_ERROR; - } else - { - return (enum tfm_platform_err_t) status; - } -} diff --git a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/COMPONENT_PSA_SRV_IPC/psa_prot_internal_storage.c b/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/COMPONENT_PSA_SRV_IPC/psa_prot_internal_storage.c deleted file mode 100644 index fb999af51f..0000000000 --- a/features/FEATURE_EXPERIMENTAL_API/TARGET_PSA/TARGET_MBED_PSA_SRV/services/storage/its/COMPONENT_PSA_SRV_IPC/psa_prot_internal_storage.c +++ /dev/null @@ -1,137 +0,0 @@ -/* Copyright (c) 2018 ARM Limited - * - * SPDX-License-Identifier: Apache-2.0 - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -#include "psa/client.h" -#include "psa/storage_common.h" -#include "psa/internal_trusted_storage.h" -#include "psa_manifest/sid.h" - -psa_status_t psa_its_set(psa_storage_uid_t uid, size_t data_length, const void *p_data, psa_storage_create_flags_t create_flags) -{ - if (!p_data && data_length) { - return PSA_ERROR_INVALID_ARGUMENT; - } - - psa_invec msg[3] = { - { &uid, sizeof(uid) }, - { p_data, data_length }, - { &create_flags, sizeof(create_flags) } - }; - - psa_handle_t conn = psa_connect(PSA_ITS_SET, 1); - if (conn <= PSA_NULL_HANDLE) { - return PSA_ERROR_STORAGE_FAILURE; - } - - psa_status_t status = psa_call(conn, msg, 3, NULL, 0); - if (status == PSA_DROP_CONNECTION) { - status = PSA_ERROR_STORAGE_FAILURE; - } - - psa_close(conn); - return status; -} - -psa_status_t psa_its_get(psa_storage_uid_t uid, size_t data_offset, size_t data_length, void *p_data, size_t *p_data_length) -{ - size_t actual_size = 0; - - if ((!p_data && data_length) || !p_data_length) { - return PSA_ERROR_INVALID_ARGUMENT; - } - - psa_invec msg[2] = { - { &uid, sizeof(uid) }, - { &data_offset, sizeof(data_offset) } - }; - - psa_outvec resp[2] = { - { p_data, data_length }, - { &actual_size, sizeof(actual_size) } - }; - - psa_handle_t conn = psa_connect(PSA_ITS_GET, 1); - if (conn <= PSA_NULL_HANDLE) { - return PSA_ERROR_STORAGE_FAILURE; - } - - psa_status_t status = psa_call(conn, msg, 2, resp, 2); - - *p_data_length = actual_size; - - psa_close(conn); - return status; -} - -psa_status_t psa_its_get_info(psa_storage_uid_t uid, struct psa_storage_info_t *p_info) -{ - if (!p_info) { - return PSA_ERROR_INVALID_ARGUMENT; - } - - struct psa_storage_info_t info = { 0, PSA_STORAGE_FLAG_NONE }; - psa_invec msg = { &uid, sizeof(uid) }; - psa_outvec resp = { &info, sizeof(info) }; - psa_handle_t conn = psa_connect(PSA_ITS_INFO, 1); - if (conn <= PSA_NULL_HANDLE) { - return PSA_ERROR_STORAGE_FAILURE; - } - - psa_status_t status = psa_call(conn, &msg, 1, &resp, 1); - - *p_info = info; - - if (status == PSA_DROP_CONNECTION) { - status = PSA_ERROR_STORAGE_FAILURE; - } - - psa_close(conn); - return status; -} - -psa_status_t psa_its_remove(psa_storage_uid_t uid) -{ - psa_invec msg = { &uid, sizeof(uid) }; - psa_handle_t conn = psa_connect(PSA_ITS_REMOVE, 1); - if (conn <= PSA_NULL_HANDLE) { - return PSA_ERROR_STORAGE_FAILURE; - } - - psa_status_t status = psa_call(conn, &msg, 1, NULL, 0); - if (status == PSA_DROP_CONNECTION) { - status = PSA_ERROR_STORAGE_FAILURE; - } - - psa_close(conn); - return status; -} - -psa_status_t psa_its_reset() -{ - psa_handle_t conn = psa_connect(PSA_ITS_RESET, 1); - if (conn <= PSA_NULL_HANDLE) { - return PSA_ERROR_STORAGE_FAILURE; - } - - psa_status_t status = psa_call(conn, NULL, 0, NULL, 0); - if (status == PSA_DROP_CONNECTION) { - status = PSA_ERROR_STORAGE_FAILURE; - } - - psa_close(conn); - return status; -} diff --git a/features/mbedtls/importer/Makefile b/features/mbedtls/importer/Makefile index d81d52f003..823427e6c2 100644 --- a/features/mbedtls/importer/Makefile +++ b/features/mbedtls/importer/Makefile @@ -35,20 +35,10 @@ TARGET_PREFIX:=../ TARGET_EXPERIMENTAL:=../../FEATURE_EXPERIMENTAL_API/ TARGET_SRC:=$(TARGET_PREFIX)src TARGET_INC:=$(TARGET_PREFIX)inc -TARGET_PSA:=$(TARGET_EXPERIMENTAL)TARGET_MBED_PSA_SRV +TARGET_PSA:=$(TARGET_EXPERIMENTAL)FEATURE_PSA/TARGET_MBED_PSA_SRV/mbedtls TARGET_PSA_INC:=$(TARGET_PSA)/inc TARGET_TESTS:=$(TARGET_PREFIX)TESTS -# A folder structure is introduced here for targets that have both a Secure -# Processing Environment (SPE) targets and Non-secure Processing Environment -# (NSPE). Documentation for each folder as follows: -# COMPONENT_PSA_SRV_IMPL - Include secure service implementation code. For -# example PSA Crypto or PSA Secure Time implementations -TARGET_SRV_IMPL:=$(TARGET_PSA)/COMPONENT_PSA_SRV_IMPL -# COMPONENT_NSPE - Include code that compiles ONLY to the NSPE image and never -# compiles to the SPE image -TARGET_NSPE:=$(TARGET_SRV_IMPL)/COMPONENT_NSPE - # mbed TLS source directory - hidden from mbed via TARGET_IGNORE MBED_TLS_DIR:=TARGET_IGNORE/mbedtls MBED_TLS_API:=$(MBED_TLS_DIR)/include/mbedtls @@ -70,6 +60,7 @@ rsync: # Copying mbed TLS headers to mbed includes... rm -rf $(TARGET_INC) mkdir -p $(TARGET_INC) + mkdir -p $(TARGET_PSA_INC) rsync -a --delete $(MBED_TLS_API) $(TARGET_INC) rsync -a --delete --exclude='crypto_struct.h' $(CRYPTO_API) $(TARGET_PSA_INC)/ # @@ -77,16 +68,15 @@ rsync: cp $(MBED_TLS_DIR)/LICENSE $(TARGET_PREFIX) # # Copying Mbed Crypto into Mbed OS... - rm -rf $(TARGET_SRV_IMPL) + rm -rf $(TARGET_PSA) - mkdir -p $(TARGET_SRV_IMPL) - mkdir -p $(TARGET_NSPE) + mkdir -p $(TARGET_PSA) - rsync -a --delete $(CRYPTO_API)/crypto_struct.h $(TARGET_NSPE)/ - rsync -a --delete $(MBED_TLS_DIR)/library/psa_*.c $(TARGET_SRV_IMPL)/ - rsync -a --delete $(MBED_TLS_DIR)/library/psa_*.h $(TARGET_SRV_IMPL)/ + rsync -a --delete $(CRYPTO_API)/crypto_struct.h $(TARGET_PSA)/ + rsync -a --delete $(MBED_TLS_DIR)/library/psa_*.c $(TARGET_PSA)/ + rsync -a --delete $(MBED_TLS_DIR)/library/psa_*.h $(TARGET_PSA)/ # - # Remove PSA-specific C & H files (they go into $(TARGET_SRV_IMPL)) + # Remove PSA-specific C & H files (they go into $(TARGET_PSA)) rm -rf $(TARGET_SRC)/psa_*.c rm -rf $(TARGET_SRC)/psa_*.h @@ -138,4 +128,4 @@ clean: rm -rf $(TARGET_SRC) rm -rf $(TARGET_INC) rm -rf $(MBED_TLS_DIR) - rm -rf $(TARGET_SRV_IMPL) + rm -rf $(TARGET_PSA) diff --git a/features/mbedtls/inc/mbedtls/config.h b/features/mbedtls/inc/mbedtls/config.h index bdf7e5e19d..7192f384e1 100644 --- a/features/mbedtls/inc/mbedtls/config.h +++ b/features/mbedtls/inc/mbedtls/config.h @@ -3719,4 +3719,9 @@ "functionality is not available" #endif +#if defined(FEATURE_EXPERIMENTAL_API) && defined(FEATURE_PSA) + #define MBEDTLS_PSA_HAS_ITS_IO + #define MBEDTLS_USE_PSA_CRYPTO +#endif + #endif /* MBEDTLS_CONFIG_H */ diff --git a/features/mbedtls/platform/inc/platform_mbed.h b/features/mbedtls/platform/inc/platform_mbed.h index f03a410be2..c424a053ba 100644 --- a/features/mbedtls/platform/inc/platform_mbed.h +++ b/features/mbedtls/platform/inc/platform_mbed.h @@ -21,7 +21,7 @@ #ifndef __PLATFORM_MBED__H__ #define __PLATFORM_MBED__H__ -#if (defined(TARGET_PSA) && defined(MBEDTLS_ENTROPY_NV_SEED)) +#if (defined(FEATURE_PSA) && defined(MBEDTLS_ENTROPY_NV_SEED)) #include "default_random_seed.h" @@ -37,7 +37,7 @@ * MBEDTLS_ENTROPY_NV_SEED is enabled. */ #define MBEDTLS_PSA_INJECT_ENTROPY -#endif // (defined(TARGET_PSA) && defined(MBEDTLS_ENTROPY_NV_SEED)) +#endif // (defined(FEATURE_PSA) && defined(MBEDTLS_ENTROPY_NV_SEED)) #if DEVICE_TRNG #define MBEDTLS_ENTROPY_HARDWARE_ALT @@ -47,7 +47,7 @@ #include "mbedtls_device.h" #endif -#if defined(TARGET_PSA) +#if defined(FEATURE_PSA) /* The following configurations are a needed for Mbed Crypto submodule. * They are related to the persistent key storage feature. */ diff --git a/platform/source/mbed_retarget.cpp b/platform/source/mbed_retarget.cpp index 5938cbe1cb..f2f7774ea6 100644 --- a/platform/source/mbed_retarget.cpp +++ b/platform/source/mbed_retarget.cpp @@ -1,5 +1,5 @@ /* mbed Microcontroller Library - * Copyright (c) 2006-2019 ARM Limited + * Copyright (c) 2006-2020 ARM Limited * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the "License"); @@ -1138,7 +1138,7 @@ MBED_USED extern "C" __value_in_regs struct __initial_stackheap __user_setup_sta return _mbed_user_setup_stackheap(R0, R1, R2, R3); } -#endif // !defined(TARGET_TFM) +#endif // !defined(FEATURE_PSA) #endif diff --git a/rtos/source/TARGET_CORTEX/mbed_rtos_rtx.c b/rtos/source/TARGET_CORTEX/mbed_rtos_rtx.c index d8413d24d4..7c03f41c1f 100644 --- a/rtos/source/TARGET_CORTEX/mbed_rtos_rtx.c +++ b/rtos/source/TARGET_CORTEX/mbed_rtos_rtx.c @@ -24,8 +24,8 @@ #include "mbed_critical.h" #include "mbed_boot.h" -#if defined(TARGET_TFM) && defined(COMPONENT_NSPE) -#include "TARGET_TFM/interface/include/tfm_ns_lock.h" +#if defined(FEATURE_TFM) +#include "FEATURE_TFM/interface/include/tfm_ns_lock.h" #endif osThreadAttr_t _main_thread_attr; @@ -58,9 +58,9 @@ MBED_NORETURN void mbed_rtos_start() _main_thread_attr.tz_module = 1U; #endif -#if defined(TARGET_TFM) && defined(COMPONENT_NSPE) +#if defined(FEATURE_TFM) tfm_ns_lock_init(); -#endif // defined(TARGET_TFM) && defined(COMPONENT_NSPE) +#endif // defined(FEATURE_TFM) osThreadId_t result = osThreadNew((osThreadFunc_t)mbed_start, NULL, &_main_thread_attr); if ((void *)result == NULL) { diff --git a/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/LICENSE-permissive-binary-license-1.0.txt b/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/LICENSE-permissive-binary-license-1.0.txt similarity index 100% rename from targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/LICENSE-permissive-binary-license-1.0.txt rename to targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/LICENSE-permissive-binary-license-1.0.txt diff --git a/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/README.md b/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/README.md new file mode 100644 index 0000000000..926f37cecf --- /dev/null +++ b/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/README.md @@ -0,0 +1,25 @@ +# MUSCA_A1_NS prebuilt secure binaries + +This directory tree contains Secure images released under Permissive Binary License. + +Built by mbed-cli using GNU Arm Embedded - version 6.3.1 + +These images were compiled by the following command: + +## mcuboot.bin +### Repository +https://github.com/ARMmbed/trusted-firmware-m.git +### Commit SHA +Contained in `features/FEATURE_PSA/TARGET_TFM/VERSION.txt` +```sh +cmake ../ -G"Unix Makefiles" -DTARGET_PLATFORM=MUSCA_A -DCOMPILER=ARMCLANG -DCMAKE_BUILD_TYPE=Debug +make +``` + +## tfm.bin + +```sh +mbed compile -t GCC_ARM -m ARM_MUSCA_A1_S --app-config tools/psa/tfm/mbed_app.json --profile release +``` + +To update the prebuilt binaries run the previous commands. diff --git a/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/mcuboot.bin b/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/mcuboot.bin new file mode 100644 index 0000000000000000000000000000000000000000..a697054bd57a8a97e973dc3c11029b5ca97ecbe3 GIT binary patch literal 21724 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 C!y~W& literal 0 HcmV?d00001 diff --git a/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/README.md b/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/README.md deleted file mode 100644 index ca2c87049a..0000000000 --- a/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/README.md +++ /dev/null @@ -1,43 +0,0 @@ -# MUSCA_A1_NS prebuilt secure binaries - -This directory tree contains Secure images released under Permissive Binary License. - -Built by mbed-cli using GNU Arm Embedded - version 6.3.1 - -These images were compiled by the following command: - -## mcuboot.bin -### Repository -https://git.trustedfirmware.org/trusted-firmware-m.git -### Commit SHA -6c5be4a98e4d7055ee49076ca4e515fb4b172e66 -```sh -cmake ../ -G"Unix Makefiles" -DTARGET_PLATFORM=MUSCA_A -DCOMPILER=ARMCLANG -DCMAKE_BUILD_TYPE=Debug -make -``` - -## tfm.bin - -```sh -mbed compile -t GCC_ARM -m ARM_MUSCA_A1_S --app-config tools/psa/tfm/mbed_app.json --profile release -``` - -## spm_smoke.bin - -```sh -mbed test --compile -t GCC_ARM -m ARM_MUSCA_A1_S --app-config tools/psa/tfm/mbed_app.json -n tests-psa-spm_smoke -DUSE_PSA_TEST_PARTITIONS -DUSE_SMOKE_TESTS_PART1 --profile release -``` - -## spm_client.bin - -```sh -mbed test --compile -t GCC_ARM -m ARM_MUSCA_A1_S --app-config tools/psa/tfm/mbed_app.json -n tests-psa-spm_client -DUSE_PSA_TEST_PARTITIONS -DUSE_CLIENT_TESTS_PART1 --profile release -``` - -## spm_server.bin - -```sh -mbed test --compile -t GCC_ARM -m ARM_MUSCA_A1_S --app-config tools/psa/tfm/mbed_app.json -n tests-psa-spm_server -DUSE_PSA_TEST_PARTITIONS -DUSE_SERVER_TESTS_PART1 -DUSE_SERVER_TESTS_PART2 --profile release -``` - -To update the prebuilt binaries run the previous commands. diff --git a/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/cmse_lib.o b/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/cmse_lib.o deleted file mode 100644 index 118b2d3fbf0aa5bba92ecece7ed5b57aba366680..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 644 zcma))y-EW?6ov0<1k(j=1YaPPm5pT(1Az$2+Gw+kn;Q(y&gks;vz1tiui!%nzJ-q= zd4aSx@r-fSo2cN0!@1w#3@kHyx7Y6`NkVZFYST9njc2g3{aI*JgO*~o_E&73_hxGq zzDASj3%n=z34AE{5qvDT0xQ7`9tl1GUkcs033J3wmbczk;+XJr}cH*D>$g!Ihpr-qG6Ti#hJ%zq5{_eBJQo&(Jay?z925pe7Wu UIAbiE5#aIv2`+n6@Y^rF4}rCf=>Px# diff --git a/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/crypto_access_control.bin b/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/crypto_access_control.bin deleted file mode 100644 index cbcd4ae3dd6b148d3b7ef942aeae8a2b206f3b05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 521888 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%0Ar5Y#I` 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 diff --git a/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/spm_client.bin b/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/spm_client.bin deleted file mode 100644 index a5cc36b0bdbf59a4eabc98e0a6a2e87ce8010d92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 521888 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%0D3?Gfe=7*2%s7SFc$(C z0|Cs30A@h|pCAA`2;d_G&<+CV4gqw807gRqsSrRm1ke)#Fn|E2LjaQ?fDRBqQwSgg z0*HeEv>|{w5P%~DFcboK3IVKv02V?3VGuwp1P~7aI6(m0A%I8-U<(A$2Lc!f0k}c{ z-5>xt1W*hC42A$kKmgtlz9rzzYcA8w8L70rZ6cN+5tB2%s|r@EiijfdD>00G}a%^$>sp z0+1fT~2 z)PVrR{y!Z8_y_^SLI80PKq&-Z4*}eT09r!;4#NpfW{C&76ece0?>f~EjM?g#b1}0L>r(YX~3^0(c1l)PMkv zLjX7fe`y2+Fc$*o2mv&O02V?3z7Rk<1h5GLr~&~@f&iXE0P`V$R0v=#1h5zaxDElh zK>*btfMXCq0R*rg0!V-WmOucO5I|K3U=;)~9s&r508T;xqac7<5WrCg;4cVZ2n6s3 z0=NYMyn_H%LjWxy08I#B90YIx0;mrGEQJ92K>(*9fU6Kd8U*kF0$2$FWI_P`5Wsf` z;2s2!2m$y&04fl`VF+L*1W*?O2!H^xApkoFARYp6gaC{ofD8zr3k2W}0fa#S+7N&N z1kerwXaoUVfdF1Z07($QGYDW91aK1qXaxb>fB<$u05K52BM9It1aKY#XaNB@Kmg|; zfCdnNCj_tz0+2!g2O)r05WpD-U@8P~1On&<0d$1`5dQ-Z|0f{+8zKI;LHuuv_+JY86_@9jU-vRM|IpY5l#D5>e|3!%ZLlOT~5dT9F{|yoU?;-xr zLj3QK_@9XQua5Zt7V&>H;{Qg(|8a=_;#X-B#D7i1e_O==I*9*+5dVK6{_7$Bw@3VM ziTJOD_#cJ%zZ&u14DnwZ@qY>8{~^Tx+KB%Ni2q@T|2+`@m5Bc@5dTjj{|6IiXm5Be_5dXI#{%0cocSQVeiumu3_&)&gKN#`k5&vTl|8F7wUq<{_ApXBY{C|Y_e*^J<2;%<-#Q!OX|8EfgcOm}QL;U}Y z_= zi2vOY|8o%kZzBF5Mf`t`_&)~me+}Y)XT<+ni2uV7|AP?!LlFO;A^wj-{J)C$e;o1O z9`XMy;(raq|5J$n=7|5Li2tn-|1}W*A0YlmApVa<{J)F%?}7NAR({r`yN9P&CvP8L zKmUNhpy1A3x_0Z{qx{^-{!!5b1`ZlLBqnxf+_3oJBSwxIJ?8K8E1Ot~*KCC1sPSc! zA#L|qKWw*AmZ0tiF?Rd-|vs zS{syKlJP5)^1pgkGKD_sR}-0{yQNIA8~sn3;v78m8>9AP_>s3van1+lLSikgI4h4MsgMlC|kL5)O3qVh1W5Ojy4 z^3lHn-O72Z+F@J^oHy7E=l|JaU2HHf^lLW9`eHa8!_IzKf0QSxH)<$q0jhF+qkVCX zAciaFxfjoAE$X=&&SCVFDL#7O{73W~qIP0<9xBoc)7#;^!uB|?u_JhOz&VZ%IG@o8 zZBfmJ#YaTO#YsdrdPrF(W_Y|rqKboI30RO>Vfp#1VwqyWD!ATD6C5B*K)(m3X`?Ge ziD}0$t%_>-w1t0ooD2;U&`yGBq9gt)=c%h!K5fvy=D85RS5m{eoJL#iKg_c!)wu;m%g>Z<)3#lE3^|}AQkh&uRZU$(Q>%)$j;@|UziKsu z>NRTCGAy67QEjDhow_FVOzWF9XxPZyqH&X^mR8M#0LrH0iV!?(Fn|LfSGs=ia&wzFfqj!sXsErS>yOk5e_v=Bx|q@amz?}lC|?w6ap=xLxk3fq>*$J? zZz#r#m*WR?1^!VOk843nR$^Fe12YWkpqq%UF1l$Lk5k7by)Z0by+gMNy5lguDY_aM z7H^8_1 zMeF5?NDQw<*`eGq{t3FRQAhDQQB^ufE}*Ms;vh*uSKT^6l8CN`Ljsr9kb&-k4`umA#VjpORc{Dv(bn|`SnXN=+MD6tNI`nz7yZZz5m9)e32#))~%!0>XE*cN)|iscVQHw-17 z$DjT>g=RGB(C%j2?}VVSZ|AR`XjJmT z>7`#lgYchcuO9z8bzRNvdyC)T>Ye3(VqGfxE4%+(Kk>Z8_|J_$-2QlZTI03pR7Ia^^di$KdZHuJrF!z?abA7J?5!4A_&7R;c)FDJItF$3@o^0f^!z>MKO-Dn9bGD$I|p|65B3Xj3v_j@9OW1+mJ{Oc ziUs<0a`g=f^6c?@BJQRh;^XUH**5U+UJu70kIK>inMK9QiATG*26}dJ4EFT%t!!Pf z4xYZA!Ih&bX5i`TDJ{MfV>P7LN*_gMP-d3U#IZfz%VbPck!X>Dui>g-h3Z)?}`cfXCT{onm)=kX!E;Yv~l+NyG=!ZS)0m!v~mAOo63IC=6AoCPjKMh^Qq`Bn-BVjMTW;Vw{H<= zQ`UzyMqiMJqn(Yd=-Aq}5FIoq8?tLDX*}IydVvmpjVB46?jenos~{+2+|BmrR*sSV z?vwxSQz>sHm#T}Ors3*>n60H)N_2$fu&A(#f`Iw5eu*6DMwn1ND zkfX%a*<@hkXp??1aVD;uIv2)G*m2 znWC>P@eT5K4M8R7Ye{UZ@Sn|Oeeqs4Q{PPT?>zPI;Yt4wZDwJwgo=ZsQsNyD*Y_FXVwLOkSj{1(iWBpxy3RS zeba=Ru@B`6my5Nnr)n6*s~9a+G4fUz?a(kINAE{2-6 ziuwvY3xjBtPFM1kwkDbS${s%Uwhoz9l}2rpJ*2_<50ysaf-RI5!I@H}es_CxWy&5i z>@Ch_%9TA%Uxl%^_~YRUomN>hzYb>)B~O2g-w8pHp9FtN4WQ-(2&Lw|DlE011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@ zkN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg z011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!)36KB@kN^pg011!) z36KB@kN^q%F9asOpZI=qfl6w5*Qlb~p`zQZq8nS*T~pBKm}s}AU~)y*s;s-ZAhT@x M>VlF~$-n;o4<@|*5C8xG diff --git a/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/spm_server.bin b/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/spm_server.bin deleted file mode 100644 index c96f913307eb4afdd20035799b0baac98659bc1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 521888 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 zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c zNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-L zfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@ z1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14cNPq-LfCNZ@1W14c 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

<-+t+h3Tt=>Fb2) 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

rxX*g&?&0@~JBAoNY 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%0Ak{!aHE$$8eNy1|DyenblJ&{TJEAD#@~dr zVP1(+L*mpBO(+g?6#QRz%ylthLuq}27&BZnBpf3cLSyXf=0|By(Xa$HwL{WdPA=^% zEZx6l&%vEyqv>S3Rt?b}JqbI}Gw*~I} zf~#&?yEe7mI$Xo+OhWqRh*x!6#tWJne%%z@ONY&>dUgZ2`>kYs0Q<`Ho?t-Us4QAK!$b)+t7-xZ{bT+ zeJ3vvDZcw}XuHPlM7*QBF9Q+@z9IY-zWc<5Af;Qn?%Ycxzj6ogx|M!-|Due;`>H}? zN=lt43U}47C{cA~s>=h{V)O?mdDBBOrn_jL<#8|Tj%M)bic@X5z4AM~vztxG>8OB4 zsN7Fojkuq(dOxJ9vd6keI_161!V>ICW3}njY~(jG8?oB?Q?I-Y*6c!kb5cN#e1}M0 z^k~{2dgbTA(;h?bd=tXky)r@C=&jfh*`oTNP;bC|3IBS9e&=(z)+(QPDkm#g^LGc9 zH)9+LIPjJOg?JkS)@DYUt0Xq}FZ@9+QJB;O{1z)TJtAH1CenF)VQZ7Ic&PX)B*pkv z@Eie0(?Pqz^_Ixo^u1^tXGNcyf>S^IX8z(h;i2o%LOdL9 zJM#i=tXepS@nA1(`57A^(E~SlYNgwwZ|qmR>T2Zbfc#cqZBwrt-LoB%#<)+Bs!Fj* z{R7jRB8n@`s}!?|NCNKBVwX!AqR@5VAmwMg6LIQ;J!c;K&6o?VNZmdJwxn&R_j%ok zm~TjnsUdF&XE(GkCOXOkSGt0+xu0ay8ZbU5x>l9PEA0K+QL(P*Q92i`rA)NYzrz|m zwXI5|JN@*AX|MbkVh#k|D-Q7{iz3#-$i-qmug*efsT!JX)}ln=M6?I*EmIBxX9hO>(U zrPQ^>s=3~0x_jm10NtUw>b7-i;%n_cxsifG_meK2qIpP~mRwvf>{Hmag*dZ+G5_rX z%^6GUK_$jI815mbcyI^Yc8r&}J8iHIiej=QoJz!)wqMqAbOjKf-)#Tz4EhnmW2{xH zYhgdK%Gv4($O{8F6+&L#@z63sy3jhn#1kiUq}1u819S&qxVx(1X&v^(TmPbqc4cD} zW+uSSSut)N77rE-!c{ljIgY}<1DEytQv-*l4E{7ZUE*}<`GW@!5x+=0X#e|kzJuqp zgz%@L$oha};aDLwC?`Cv>B3RS{Vp-cG7RkC{7NET7l97$d`w;GP4r{O-0*@Hk>3ZVTu*EyfLB1O86R>2g z4+1&FgmWD;&UNst#`T0Ae|sm1d$o~?M^z_T6CE=MInR)5*h zuQBv%3jNwbzfSyuKQ4=M=nw9y$C=Sy9>=06FVRm=DoQTamp?1I6~iI3G?X174K+xO zDIzo6Bn{ORisSNf^59}fdWxd}vemER6q$`V<=}=TmttjBe^uHC~68$ z?^YCvmfl}@%KZYHydW1}IXWqV44JmN5!v6AftjcWDX`J7?hm}00hU6lox!hc2 zDWvc*?(dXZ^(3fv^6X|7r$C9;!9_z5W@`RUajvD@OzmW;=@j75H&v8`kawCai)trt zZOX=bb<j;ci@uc`dWi+Q?h6uyZH}^1ocWBcM9j*AR}k+LJYV4X>1u@Yr>jxbx<<^}u_EST z2WEaL_TWXG&52cbHP+y?ERa>;4z=s!4x>-&8go%4>#NUsT30ZHID5b2aZV1% z${`YuG1(~4JUs|*=Q5uO_Uf zt%By4wrl;%1HkL77T&&4X~t>2 zd{^0!MB7C7PVu`z6Y|IB@AGwaHu$T+As zg~JMI)z+mr&L~D}v)y!z$zi0SoPHCF@kHz8u4=t(=NvmTA<7W}3+{9*ebb)o*y)ZE zXWAk*pU#VN#5>;bXw-c3>YL8Wb)M1&PT1#NiCv2c4RbIO#?U0xo$drXkQdG6-3kxdThTv+pXE8-%Rg4=wH=rVMf1MI?=^s zd&>LeTU^?@iWFx2o2BWOIPOLJxzgXCdcBm%X)S#goXu;c=gM`PEtgmhuF~*W0Sz%o znN{Cf^{p{|;(_&GHJyRb^yDc`22UBt*;dMo{h{=^zLetgzVZBk{Wopho27=9_&hVd zd40NXdYDo4n@8Li>D~eKSLBJ$*5CU`g2eD;(1CK7ODp0=^Iph$>3;_rB*bJ_E-mLa zYWHf!VqMhAZq)D9qn??H%sTrw~d@&ocAa2yld`Z~>KXtpRVcFE;u zmBd2>FBx6Aal8{}AcG~^}Cv1T`7wEpCQ*1*m6rB}=2ZJDl@3kJFwOLpZN=wYMh%#rG@Nz~~h`@(Lv4?4Q? zV~-~7iif1J78AY`#O*5AZcec2T(8?Zv453adB&51_g9_~m0zRpUTZ5_*O-R*5LXdy zCD;qZy^=YP#EGYM>5b22al{0`en%I@22u(jCJNfAFlG%1HFc zDS-nG8sR{anjlw~4fbc>pTYpzGm*q4FUijN6+ie-Pf|rSlqt)e+tC4ZCND+3xZr=}=>&dUWZn(1Y5gI;(AD&A zK>h;H4|p!(8Pbe9P16yI{o8?NrZBiRtpsnt3H|!~h47m)Di6fEBXOcihR1$sa+Eq= zcbs#;RcaMVOJB$MQAtO;;Z}kEf`&8=acH)5AmNl@DkO0Pl1?@8#D0D%{ zx4#$ol+&ke)E6+~E--DEyfE)?e))ti*hVSUHAULu&qTJXbzXel=MD-XEj=FO7jq;J zp87w*$!)A{Di#gd(e9a|K0DGK0ZCzls2!1qQ)FI>OH9oiGa-`DaRBXGeHV#Yg9jIq zv;ZX4GaQ|sWX$rd7c$XT9McfIB&s!+CyVQst&O~ zga4QsBO(-|8j#OIF?hsy8~zVGm|@bg9si4R=}pA?@9s&y5u%yCk>1TBy_8o<0DjP~ z^iY3FpI=h_X?^~Ss((bEzg6`c`urzV|2X&=r2cs*ZR-9olrD9*z)jPn?k2ctdepri zZkiT#?}j^^&TDYfJW_Za+%$jGy&mpxIxoN-PUji8!|AMoJDko#aEH@b0(Ur_a=63k zl))WN=Z|oQ)42<7nvS-Rj!O0(?XNWYMUpTbSA)Jm9P15n=r^z747ni=&C4|$!wqq0 z9Gt@pZtg4wTRN?GxsKt-xc833kAOvIEr50bk!3S?HIS z1sn}n(Lbnzdvid8_mTj;`K-73_-6+G=^>yY)rDXZ{PKN}^P=&n1{Wi+{)DrB z8cr;ndX6nMrcQevI;6>PZddG=u}8q8iLpn>25x7n8M{cS!<^sBoT4-_X^F*Y6!H>D zJu7>0LqcrAse1v%t@ATPmYf9el^2B{jOx2fblI|Ho#1Q6&74A^$hH zwXK7nRsH;a>{adKjawV=;CB|DlX&R;a*~Eql~l+u?%*Ip$mD-3Cn{^K{csB{s+p_X z-^A=diBi9nqm`$vsetAIy0kf4y;+_u*g7L~5{nY?r7zW6=oHdFC%&jZAV)%wlCJ!! z*rI-bH1|O!S49@Z0J5(ymN`cY9VOi+dM7`8EGh56yQ5%CHR2EIcpa zxt4dxF@*AdR(=;+n%TNENM&<%Om>1hqc5NDgJK4x_ekFto6%z;0IBSQe1vt31`z1g zRqx5u?@IXA5j+V8cq3hxPbk@3?-V9X)9#7g75k6ak7EA;9Z-jG+xMf`FW-VovoZDv zWC;F5>wEo09Zuo3JK2rg5!PgOlGIf5SvfL5npx2Fto$5m+S$bI2>R{~tg#Mu<)Q44 zXR-0WOW5iVO2RpiiQG~bRBF_PEyezz+yu%_U+i6W&x?yq*|zcuCsD)?;5M# z9ZY`~(l@wQE5vrplLxH=j;aW?4N1OhUwJx*S7~y=_dfVz+HMq-o6=z!ey8He#q$Q9 zFYr`063d$U{?o92sky#|({{_Fgu|R?<(l5yCh9&bCj@3USt|{Y?-`4)msIK1`fl(A zA-2vLIYH`gS0VJ<^t<$X^t)1H*0dMu$#9*Z*+n+68?N;y4ZcQ8ILryUFFY&X)4R5b z4bgO8uhhiVrDn&u`MUTJ)m^>T=G@9ywI7vq-CWgQZLJUZf)Lz6G8>EHK-KwukaK7| zw6)IZgZvY1Ckl`meUP8gc4&_)@_pm^Ro)wUV;Y|O@z8PvX*M)OGq&bhIj*Og(&K7k z--dn#oNqEO2I-gBN696*yp^P~CT=HL_dISSpOp{vpsgYg+|FPd+SS7f%bTd5jtXZXU;4ClAkO-> zo8yY&k^X01zTOCp6R(+Lpqs)ce-QF-Hb<&$?OoL$Ov}(~gszDo{$4Yy=5L4hTjY=C z&Ga|kcm?_UBt$o<@rC*k)96^r?&Nl{8<-H~g1wC2$sHjzw2xtRmzpD-g)H+L>o9kg z`OOX!!)-q+-{xa+J`WAZ$Tw5N?}X-4%UO9b@;}HO#K}V69O1jzbggatT-8qx1~KIB3l9$@$)IP?m82sYH3E;&~Yl9Y-=sYB7#vOyl+# zLgPs6M-xSoKGqp*5wu*eN57HXs5=5XAC+{z;C7ysFZ-XgMyR92$T*z);5$ZdqB=^j zZ%6N%Af%z^Q(W@WSvlaJ-elN5(%i4;EOfV3Hlgp6ATAwIZic}wMd9R~;S((CY;Z4WYi|lIx+Hsy z`>b5x4adoW?>J<1f9Kv>@Sa;!mslCE%Ft+V=Wv6ao+Pt@X)d13*buVmo@d1iZRBn)9tcN?z{3&+m1OWElzW8_8BUReH zrJV54FZ`EXtJ3Zj1u}Lm^WO>1M z(XvI_qtvm)s$x?}ie0CUCF#nyYUwTZ;G8m4`N|U>NA5@2Ucy7iZCZ9(RyyAZ#dK70 z3Y+T-N}@Xq2JN2wX|cO#--|cwLQ5H;u-R)+?jXgI!WNO0Qf8*&#Y|oz9`{#w*uchjTuMa+F^AnZQXE zrvvr|7MDL}omtu$8G376d1@2?cG{K2k4LQ&vmAk?F znzC^jn5KoHw zqWvHN{x{%0j;9vxLOgW*q&;GiI?qn}59^Ze2&GiAO8t_qudAX}O2u7=^Bp)5190>z^=+M>V=j+?pMd(m=H)5PD7_M! zL*r$LR(Gqky8Az*RdAf3?fx~$wA$5n535LOn+{T|1@I|-E&0E3207jxvlDGu7rhG@ zH5iMI(1*6;!ItpI!y?7k5%Xqublv`rxwn%22At0)_=RoB7F;)WHa1NO*uus_C`u+H*Aj__LC2jd2*ZFoUX zt7nVy2YlyqeD5y&evIGQ_&przOS_b{Do6E&+E)J*7Y$y~D;M<~QQLA0R#$X9n$+{2 z>i?)pqmD=8dk*}nEz_}R7wUo531%8~{<_BXXHx($~Utr zpWOw%o-d@9Jd8H49EH7in%;55MLbwRBjDj@W981O+TbW>ZtL8wuB?MGI^U!C#`nVb z4DfBrlfS~>d>#HbD*i1hK95oB4@yv998Gtzovzq}>3*c*-48rY7@+Ei^U80%HxBzP zs{up5oP6ul&Gps7t!Qf`{X4~24bJf+`cS?xW|yGwQDZ7^6@r`%xACTuAU~`-0#5jM zvAAnDM)(f8gHgtvX=d^wonOzuRsakBm%8oE+%D#&*j?nMGxFo;qa)3egqZDPo6pD- zdpLECQw;a#fg#gkcC8c~&9S4d@lep%g|B?>PAdFPzQ_9vbX}{n)6>PmO3deU{JJZ+ z-Uj43b*<=?Z|{S=sIC>gazP)YR$VK4VcuAebJ;fhQa+IKF11I3 z^-g(hIv3qCwGMQ;B}6Cv{|}wU-jGf*wTO2eoj&ai(<$dVI$i7y)5+3o0$t9?Z~ARF zpv+NsGAQ$9caY|p0i_8vB7@Y~qga??PAEzMjXv~+Av2+;koJuC`XG0kqttPIe;;Ha zM*2wL?7-^zKc`Pv|Dac1-uyCjW4s62Rf1n$Q!mi<^*T1R>qgrStUZ7Nkj;r=O{tZ% zwFtcmB&MI~sm1%Lp6Sh4HAyRR@A6{P8Tp-_C#+fE=}NlBSB)zghn)S20iIqkl;J0`k9<4@XTJ> z;A@1xq|08VQ|AHRw_6R5#l8xi2mD@0;j3-W@gZ*<_YuZ_JnH%yzapN{{sidv`~QG` zZ-HjG8|#;7uB9IJHse_L895oW8;+ajxEFvG*F?JeBz*v~)WiQUw0qI;-55V9Z5De!xQ;eqx~!oz`4`$0{0Fp2L|qbT zj(@9Kzjyg_X{n`|pwUUx^fP`?=>KEyTi~KB*8ktV0Ly*F`+Zr!3#crhrdhcx?COe$ zp_XZ)APH1&gb(VKFq%F%rn>T%slhVGxN@{*0roE)tZL%N1Y1-4laGN)d1U2xjd)Q zvPd=?EZfiPrFPZ(+%L%e@3KUuWmLj@!g)JO@2c~atWMHkKOyFx_q3}S7o>Le2`l^H z7^z*kTHj~(zA;j}`o8rbvnRwz*qv;B4fdRt^>VvvY~91?X)zLZ_Ezk1_qMB@z{`W5 zFLor0O##ohS*9>v7Kq>b@?gwHp!tZ0=7ZXcddCTI0ou@24(g@vw@qevzJoc1k+rY4 z@J4O#1e=u@9ja~7J82}4W+f-YyAjq5IbtLbJ%O{^XpSPa!w*0)GO0|Ghm-X2tgjZg zcFalikacyahns!euG05|_T`*-eXAr7r|5fGd%2?WZ_MGcLroxMi&V*8Md^0kohxfF|Fb{*~NI~4z!sb@UyaALZ&b# z3KB;vzJ2rHdpnScg3I0Q5;AWxX}nde0x}))hJRn{icRs=#yPAeTse=mKVl*FY18JNfW75w}vRQt3OJL`Tpz;(G~j zHL<%YYfV=8 zeynvo?7z$QT79Z@EbPC?_J{SOAl?Q=Z0wIdM_Ts1h+`Kt z0#tLmFYbozEsWkhVf*vNKg0GB#_sO0ZN0b^w!dOcLkru+iyLA46ziK*pKEZNR!992 zpSBe&e>{PFh;pxjaU3vZp`+c73bwu-qIBzg5$ z$dN%vYYMZIK91oI1q}k@lGhsPoJ4^uhxOtkzHoOSh0CmZ~M^EXYxPA&)7_u=}9o}U5;5E_0%KhJud%& znK1F(54+1>HB9-Q5e?Q znJ%ZxT5gm0H0?XE&{`1Xxk+3PZAr&kZj<;Q?b2FqGF!`S6~Aqh)@FyXwcJ+7){;F| z&i7Gfm*V=J>7*q3ShkkiD!$uBYq{SeKV8>yFSjqINt^_|g73bVCh@ue`(m2Jv`+hC zX0m-Tt>Qy%(!Q9Pc)x7FneB^d74Kwr!kG9r<WLTE!2VvgZDkii^I!XUk-6rwdizRGT zw-?6Lqiv8UvEL=KlU{ixozs}`|I-GIPH`b?`CIeWpI*H`pLYdTyu$u26=AqPW;yfzB!_&8_(T{8Y! z%tbG&cA45n&S1)1fNFT#30m|b5Fo_7BfKN3Zu?F z!nDN8AeYj(HsqWQeaFKChzC;LypH;yF@^NSfpo>x{-&{dniim*6!=3DA=wOs;ixFw|Lh)n#9_3v#|$ENJ@36w$siO)q2I6sO`d< zAU${r{F=P0A5G#i$hue=*tB#%`D_xuW^`Huq1kp$%M(@cSXF}j=d%YPC1$WS7H%*2 zxLt+$(LlJ>dfjqb)?(*QU%0LEx*5;Rh|w~c@uAkw8J^E#zXpv;_qYBXcH^1s7}~9Y z{*TkYDg9klYGz;1O5X!`@FuJYXIdj^0p`BzB>&nzlqQ_Z;JXi{No;HFx(}sEJa^uA zA4-$>eXH+2lml!ZN~_qv)w4&b0`d=ytueAoPRrYDA4;nj>h<$D^fPMs5n4U_P^esf z`%wOiYn@HvU6}88UF&SZ8F{{IolQ8)-G8kUZV20Tt+Poi$6V%0*E*Z7O98* zW*cLaPJ#&^wA(tpP@9VPZjtqCO6Hi;Xs6QT3| zvL^BMwnmI4OWAro+U@!8z0$7nOfM$gxy9q{9{p?_8)@C5!|O7TNq27Xu-7FCBW3Vp zw|KB!l4m^qY8CQKd(TKV4z!Q6Nqngdb48468ixYEz1eQgfj+xA)8+iEX{ViINxkVqHrH(uOWP{FyA6$JZpByX{eZ~Wc27^f4Qooh;4)Hn$!Qr_MLf(c#xre3 zPD@|#FfHr@ykRQXXzmufdtL59$wJ{Lto?}0$2?ej_7%|{qw^?ZXUseH{Wgg|oqNpC z5Ba}G-t*feeuI4rH;<*@9M(=vqZ`$heG z{X7lXF&uvW^Wrybm+$jz-N%jje-rFEEs0f1?4opwFI^zuR?w@G~JT*p4#Cb0xKNc(URWeYmtbL|QwyIKn5!W020MKJ^!U_u(==fHq2X$i^o; zKZ1e0inU&au1QQi=eu^B({eTNl-6Y3B0k9np3>Sa`4`~7A8OclZCHft?(zRE^G|ET zS>C-xQ{=rx*8k?-q9*Z1aOyFRj=e?bL#=(--Xh4tY|Jn?I`1ul9EC7fvAso!*5l$0 zkRfqi1o~S7q_~`xX;lf!>*1-iQ^hUbbb&O`#xrTyZA5)C_kyH>o(QcF)!~#2htY2R_Zt!JnP|J7 zJx8AXMzr^c_8k4s>{V+Lce(#~uUZrK<$3n1<)PHQk>h5}K0SNYjziXy_NsyZxBBi? zn}s#TDEL0keACL=ZK*VuNB=)B?Nz%2tBllhKR7S#RiiSOp?rb%s=3&nMvJ_s(TqKf z<|*bY+|vm89cA#{)7T`YxPA9DHen1Und54|J&l-CBIG!qJ&idnx3Qg0ZmcbN_9Q-$ zN)oACES6nzTIN>K=#cc@oB8?sKlPWcohfWHP|PcE&2hwpj_zqBhbYRAL)RjpOBy}0VlLM%=K z-!$8@Ghc~ay0k0zJ)E_zT6-Kf#(Q_=t~)N?gWVK~Y*((3WN;kE`0v?ciygOagYB?6 z!!p_tiJiIQ9U<6*VVEi))T8iavPe5~#~{=q?9`QZ^Nz(0M;Yb`a68KOsVO(@Fulrl z==LNT?Frg(dsh{$CAq~-ZPE_iZ_tYe!oC*k>$KzcH1-VAsJgO^cIX<<{E|xR!ftVC z8|~0Fp7}jh3vG;Byr)gtp{p>_tiUZ+w@Ev6gH0ONx^HiLm-&x0so5x1*!HH=2CQ44 zzoa_2)Lvbx58}x$;90p>H|0O-gDiumDRxHxZ5ej#VSh?&P~CAc?Yu%CYYD2;tch$^ zs8Ly|-g05NAsA7viyWOBXO7hZIb;P zj2P7Sy36+8u>M7TFPzzhgNHxIxBh})eBm>Umw3MgrXEIc9mYv)f5ExEN@yVkSI%3w zpFnF2CchpxGu#wjH$|)h{$6<#=g0~+C3+RJ?|?nr$NoI*VLtXvu!s8C*UI7PzGK04 ze1A9&(vjYe?#ETQ^84TShkD-+@5fCjvio252jLwz&|+-LaXn{*ZXP-pB{u7ln}U_( zrv09B;EX$O`Eb+SK?VHzmTx@VD6FqrGTa13K68`u74bUJJ$skj;^a40LATZj3|)Jd zOxc2-hEv*iMO${cl}5!n&AQNa(SKWxx{kHP>%;0kJ{_ES9J@Wp*1ZllZ;NBvhFikw zq1$qquPcKw06GT4%gt}V9io1QiqU8`-~ackP33yK|D zeX#5|OZKbSq=nCCY+KxYbX#yne=YOB#oZUSP-c4+w0^LKG22qu`ok6u+r7|H48VH? z-tWZwK)grdy%O((@E(Qt+weXZ@6mWK!n+RdTD<=W@3DCAhWFWc*W*0~@40x7!+UqU zPsMvY-h1HPg7*Zx_r$vq??dq33-4FseJI|0<9#%1^~c2(7a^HIXW+qQ+r>u=Cai1S z$kyfE;>K25*V5~Cj3=*Y9mv+TQuWff{-|sp3F&kIdc=dWeHirBePO>_wok$Qfu!!L zR$AA}K>woA{q|N`*SZe9i?~A(R_P~Lu7`w5Bj2s9A2_Kd=A6H#lJ@aaA3JdZ{pz3C zv;PJ3Gcd2hY=9|&n*pW|%sLq2&wI0Wfh+9A8D=57AH})*FPd;VzYzW5LufVg?e$q( zOa(Yqg?@KuC1om-9>Wn1i(7vM37Jp?Lp9Ag}&=My&;x=tDr8weH_NKO6i@FYew8z;wqZ8~8875e&>@Vt< zT9*Q&58dG>b6lG67jYt=HvBoDw?cof^?p#^qLUF3bL|D~zLAWt(+YN4%tGs3pzd*d z+&1bftu=6Y31?GIu&mRUTknAF8TXg4J)tkPR=~CaGwz#k#-|!QwU)_%I2o$WYU#fN zJ8*ScJ=Ttp(r~Oc2IJJL3HHLt6D;rQZ?b~_yD7|U^q$wyqTbifvfhgLDly}}1%CGH zuZN#f=Enj*FT&4T`l;5L@bf3!8}>Z3l{4@@+r7b=3;(;YL)(q{KgBr;{vU_`dT1&q z!;i)NkTZCPx^D2ci-{NC1j65Aze+c_ zIopRi2O#tj^b1iu*-j-qfY>Lt3_#e=Ft3h=ucPff{Q0l==yt#EO~&Jz4IYX|#x^bM}iXL&;+7F$IMQMHoj}XPh z3<;V$Ol;W;e`oZ)Av=h;TWHs*zVL+|@zC6eVlne)V*Z|mznqrUY#uJ6{cJd;W!T!F za}&ks%;!kv^D&mPDn^ObKvB$SUwVpoL=Ti{CyWt>%1-4h!nemdN6Y`d?GRSiCB8@+PLdr&@xn!kdaO;Nkgk-zxD`d$MUUSG%of#fabEn=N%=mH zJQ8oCIyB%k+NJeE9L_ke!x^QJ3;SH0yuYvBWK|$_BT7HUp+oB@+xUx%_FtE^*)-Zt zzZu|bn@uM6JJrb9{Nw2hT#Bo zck%FZA2bYc)}LU0aP~p22DAJOV!s2~?*R7Oo&CnxRmgKBdyinh;r3or*5NE%qh8Rz zNMz|b{h4Y(H9m0vvn{euaNv=_)h8zBfgT_`b<0x-vZb6_KP;W zSK_@MraSz)@WePVX?NCE>@ZnjS!Ge~-kBXt>%n2tC?RR?qXm*FuSaW%s-v@^kBK4e z@%rm6z3YyN%65ELHy1Ke2Ay^bE&J9e+)~+X=tSHe5hY6>$FWa|B#rg9-b|XXK{^rP zG7;l%jbXDX#?c$Q?w`w<$W}&%=pVB_4)p$cL6TD5IJan@j`;V(k4&a{aIAhAdcY?# zbqC`4m4&-Of4_AJ!u{of`(A@gF{L^r^QxtTzm~K2iY7xq>A{zD86*z zug=~Wah`KujrNALG2&2P%yjg{m_Y5N0yd-T1@Ot+n0-F8Z??6+JU?ra%XZf@rgVF8 z)-$F|)ZR0udF)qkt+Np_!|iIEl5DH~)07FB${&|>!+GjwR@$U?xCik(!pbmBpKZMn zdC9+E!<;{-MO|gZSb+X7mx;=sjJ2xiaGQ2v0iAPQjrfvAvlg8N4aEw4i9zYzWY4tr z(0{_-f3#by6OpeQS&nXCzta0`_MXLlr=a~kV=}XMsRU;G_$g1x?QgqN8B6hQc8tlI zfYzRPED15DGT&+JceKy@5cWQl#i(QNvFulGkN3v-64Ppo2mg;nX`JUnoT}K5ojvrm z&H*fi7aN~OdtZR|UWVrrX!9j_Ux{{Kg!hN>TrQ6V1HP8pyocwL{6jJk^^Mnk`bH)C zh6{aw_{&Z_>rcVJjrs!hkE3uSxoPFJgY^%hKlHXh3JPBVS!f(&p_zZ_wM&R!j~VPr z7)c&t-}b$?8S`6PR?O}J>jtj-`1ByiKDtc$3RUVuB$1D(17}_M@o7D1p)m0T}ZKvK)=z;($b+-AG_%``}nBGj6o05gX5AeD;NFeC&)_{ z$CypEn9q)>)5f0^P3;4Ag>Kiy_R;m)5xnLme7_M97qr@HQ6MG_WPLrp=Te!Ei=RW{ z8qcJuN^riXA&Fd%dWbtO#oz9>HP8q&x+=>$74E&yPn2b-oR&dV7DyZ-^z|KX`l@tm zCfroe&CrOpRDUhjPerk?oUq2pu#6A^W4$ z{|WsuNhEb`OIa=tV8;ZF%v;;;aYolBV9Y<_(AEyY^Y4%ahT{1*#{y?g%Sf!5M#0}> zZS&Cve?t2s8NwrxI~OeUK%jF2Zt5oP8cV z>JDvANS$^Xjk{s1yX%$P!k-Gkn5;&NQD%PZ?rl6K{)XKXO2>%GZkUhIdc-%FlamaP z-bOAR^Gh06wcm8?34$(c$di~E#N(cv@H)l%W8z?>XsjBWrP?_*Cu+^8%CXbJpNd`| z{UP!FSoo11!+T5Q5#Avam2~kYe&!T(HhMTMcwcz65qV0b-7`LeaK`QF>|3K z6~XU`n;#QDZLe#fyxx#X`V~?9@mxpsOWjD-rlCA!YIE8^fI7T6{q6CY`d-cgn>=#%o%R{c1lO8Y zwPhSMF>h+Z>u{Tf>s{D&4LVCC(xsKcMz_)MMToI^816(dhT^V;-Qz4%ETOxOiIdwl zfV&{p#p}P15Qx(#UC9@Qy+Suos*(ob<_N*4ZcvXlCOzM*4(;U_fxP0(>Qz#1M_<4x zHxAwQYvK@t6&klVibbMDT+lXDxKh>oos{|pq^?>r2fshri2q#!e)v(;Rr!qTy-RaJ zY9G3|r;&r|{Eobw#ww`MbsDEA8x8$J79BkiY-~P^82YdnPFz6@hgl4NXEDr1=)c-F z;`akvzu>~7CxWVvhSw>vV>J|OD0I(6@gBN^{m_}WZ4+Da_9!e@Go(jhgg3e#w(Y-- z%5l)v7r*;#wTR~x+s(m3^KzRK=e0cWyJb&!9Y*|E!PS$6*eHj1iG|q8LewI}17}nA z4Be4q4b}s<82S>vqr{c$OO%N%x;+)H1?mCLF*_{Q7(K9M{+HrP7U4@z2n~eYhYPQ@RxAp@X+!zper!p5^0H6|NNZ-|#zL{XTxjsNX#`bVuKS27 z;83)3SJ(RDe z!y+0(vj*OhPz_(`c_UHJeGaN{pA_xbQYD;mM$7NQ!KuiL3umY9I@|L;=uj=0nC%@C zpJ>gWh7)$L%Abtil%#twa?k(x^k~Jc%=H%L`tfNa+@>mSVs3L}x7lzjQryVgZjjw7 z;dZY=z<$&jvdbfI8KCIj&0XY}Ct3|rt#1MzR zOt+2BaaVnyFItA0-r}x0ZrpW8y73ZIUO_|Xj&gyNvtw42>G~WqsgUHel=H*bT+_kuzidBFpE=HrfxPU z7j87VY(X^}Jb7`0wi4mg&EtY>89w=y8#T0*2;ILHE2_Kd@n#b7{}T)+x8ovEmN6R=P#x z2h^U%pib(GXXJFv$t~_NxG%W(v3DC3*U)`7#(fdnVo~R*_)?PIgv6iiL1>p!>>=K_ zZVB%>x3~?{gGMUs!3hVQvA7LL7usj1rnyhp2)z-lb)35wi;2E>+k@0@GANS z)b7pgV@=KNR|(0QgTbSE90?i~gELZtT@$Bu8#P!(-x`M`eE{Aw%s|LwxQwb5cpipb zv7O>XSs;ZjN1S7H3X+D71zGM#Ze|;TlXm%p)2SYn!+p)DAxTdYRi|mzs!T48l44&f z`OrCJACLQlSEwG5!~aE&{ehPI_ee2l5QDN)4E1OmR4DnkK|v ztBNdesTQb)Z%RG$^*EeJdWll-7}u7e-t{LV0*X)yX~ufI~}1= zWSqm!^-{#3y?{G{>i0JXMbAJyib{%Wze(Mgi&ht8c*ZpCNGaCS=q}B}`?k21Xdivi zZv_M8>F36b3baATz+?yTOyh@YH4SX^ldEhEswvi9S5B`uHbM_ypXfJ@6!F;>*}L$ zrx_una6Nk-d9}Tc(v5P6z11fR7fX2@*%-_4TYbKM-}8%kTj@!BH`(A@iM7i6t<#F6Wj(w)@ky#HPlpZv=7`3{g1=2Gl{X{2qqe zV1nbRZ4!mXQt3=Ul|{kUtbP{<9dJ)o7>Y2)5&znCcF27Lk!u}v{5b2Q*%lSCC)ko! z2e~EfG4L?rWAC39z7<^C+tccXZG*z74Y$gHhxKu!mCgy#d={e@;)ZQY1J`nZ*WeaQ zTRm1D@2+bUf4?BPf5<`v<9;NKE)waH9_Q{IkSAKHb zy*;fi2GX4ow(pQmElyVN4*Bj+_G#Ph1_!cX^giZ@*|xj3FKj9Bb;Kd1^`xBE2M&sp zu#((Y$nFOmkd$PJ`R+K6Y!jk_1H@h@@hYr21}H z2P|;E8MxmjXo1z+H^P-TSoa;Z_@&X!BN0+K+##-z!U?X?Z4Wwi7Mn9dcfT`KcQ5$G zI|CzdF9lB8!nZT1hx9k=4e>V1AWPV;3QMm#)jH*qnw>(z!${GfS8hBj_P^MxP91v| z>mQ@1gvG%}tY%H<+I5gB&q9Yuc_sXM)hS~owgJ zO(t&*vaDRR5?oQ46l6)Zha@TOVeF=ZwdF!mv0d4muMpy9`@F%C~P zojW=Di8u ziEV-gYB)}3-c+AOp2%o6&25G`t$OdVO zwO@d%lPnaRSa_tnB`7H$GJ?uw8J#zzw}yBPJ7wVsN-a3)cgO9e;SD=Vm+lX0?xFeu zxKXdjz&Jxxr{hQ5-kMYz4r+v#I$EYSI&KGbN6FfKNdrA0hny6WaYBOaAIL-Zj37rF zTEH0le*C7|_1?6F0ch6|HQ{8NKsx2ALxcGGE zp!kVsBeD#Tp|)V`6_(e}w`=H*%=tI`5E68Y{TYm3>rFG!H9ZauvB0@;`#Dd8WJp_&9gP1 zo$jU3jG=inad6sGM4XT2;0jkgM)4;54z!XV9mm}HhR|jWZkITT8!sHdt8(wt^*zB~ zF*~*pM^b?w5jUTBUcV_7_Xn!#F!#JTY@Z4vLKb4`b1+ml2(ngpNLKCQ*tcA-K4wwl z*4L{Wq9M1@mncs`15Bq2#+Af1;AA)5P5Xi{S12r5+3^l#8ZZl@a* z5*m^Q(!J}{R^m$UY51n(cKFc3#|i9*5R!gyjBKDja`d!{`FXx{Q$u0tN>KYSKRw{5 z(J>2tdMJg2qnOLnm?On4$Z0%SA7T*pF0EH@TLM&q>(6#=^OMox_`jwyZIRME;2wwmj#G>wZ@ks2z{+)__~C_N4T8?s4^EZV zeX7X~(bo1ks7Sk6=nh%i6N7;JlyiP>uM*E>!?m;>=ZbzXTQfRM{pwRApus)*%QbR<kqzzQmj>pU`%w3YNwp^7@vqhq*P=hYIcQ_{+ zvOcsRv1@T7>o9$zXlaFv9*aBaA^+sqS7F^P%r!VP=ZD++ZENnMQYDRPd^Ssn&&urX z?(>)s2c7Zg*PDgt{&q#|7pIlxVaf!ha!d2Hcu0gp-h#*YexYW3^jR^K?*yQ3g+3(?&j+cAdxktcAf$s)m!AmvopH`~ISGt_rFk(FH7FLBLwzW3JbNKSu_36WE zt*=R0q1MiT$$%+_N$@e`Z(sA^=+TZhnw8OrSwXiTK?aTsi9;GO6Dr?wqO_15a(=&9 zwGw>sLEN9a9P4p|qty=7d$kZx$Q(dVMLxDpSn?9q%LYd;wqJ}xIE1HIHal^j=WmkF zdni7$5C<)natGpj&Xo44f$q9O}q%_0$Y;DmT5J-B%mk{{@!hm$_F(CV$f(Vo;obeHFAP2Pt`|T)>^`F=WF*$A?|g{RcLdn zwDaW=4I$05)%V<+j+RZgSn3(qU4BuCJA{p{q$L~BLbhQQM3I!;*a%*!NHe+;mIxzo z5B(D5(~-@?!h)U}V;KaQ!eAJT+j}>fjjs45(Hpb+DpGJ05ax73@7E`V)h1blMC{aC zf*YfmY_6%R#VDX~RkcEbC>Hb)+k!T6fMy7@8)x2PrHMkCc0MTUAqLWU+o^`v?gwWx_L zx9{2H7POn(3gHox@yvU+CbwFcIzagGZN=M=6;?vyKgYRmfiT=@k6NT1C7ju66GnYy zx0XOwFiR~}z{<5^)IaPFv|x|R7TlHncetp%F6(jQ^?Ps$_PVUGsYksD7me3tr7dXG zD{u+(x-7E=kJ=8G2-)R6d&sEgV2_gRciA@ExYj@e?uT22Y^C!E-0=~TuyqMi2$YjmpOKXt0(9k^fY6K8Pz$Ig)W51pF$4@+T-q}JKdkL9d*wZdW?>;uq9BbbRcWT{XC)e8W9-+QkNHV(qVVh@u7qN7+uYM$J z&=S+8mw$E4GYhW2+unpuiN@EprZhXn#^SnToF$y~ASrK8x>fa`K~`-Se`M=u8*Oi3 z4!Yc}t`}U(Y;pH0l0xmo3Gc(NDq3(o4tj9(o%Yb7!!QyOUWYDtV(dP&#R+7T&#qW) z`m1Au<)~Y;O3)XUlmdf|<^zpy+S{?ZNguf-`Z&kp^}1bk%0_v?CGCYE@zJWA5OsgxOBWeJh=BKnoSi@FEP!{m9F6 zoxO(EJ6|=g2#D82$Eyr2YR^7+IdyRqL*k00N{S^{AiNTnNa!1#%iYSY??GDk)ZYr0 zrj%ZyGsLpUsT_JI=9J`TN9B*s!jg^VkYkFt=c^0LH}#irH#y%09=|&&)F{kGZ@*)_ z)3+@>`G;-k>m{DH)cXRprMtXsX_4HP-VD%|O#W?2D5<15={&REi%xi_*0lRU2_LMG z+C2FD0?e?IQMk@I$^^xl2wKg1>H zKk&A>SAE)C80687<{gdO(dGuVNo~&PvMkvGZTevJnurHI?GAUyFQJxabp5`>)ApL| z|KUtpA)tr;Y(x7~t~1+Q)0dzHD(CvPKtmO72f2^6Lcw*$M*Ws*ms--1mouHZ#EHM( zy+^Tix?ArO4$fMo)_%7}t$iOR8}Ga1C%p%RgBzh0$=-xrp-uZrz)NnQB9Dp4jrtZVy-O+z%3$c=$w=mrwlSxck&4`2>2_j8p!6Vq(ko-JVu) z`HLLRyb~=CqIpDD(&OoL1m|&UqG$)QQP1}+GOF(LpIXqEVa!pq1!A; ztE7e$w!x-IUSzjZ%CgHEn=-iqF48I-`B`aGCC`IPu-DHrn>zVcxM*aT`|Lrs``r-*lV_vPKfW8VongQ4P-Lf7V0>RRzNm*`aM&f@Od z-xyE-!5O0a#Tl&o$*Ix(04?+P&T!o+XPE9=XSD8XXO!+F=JEf82Kof!{jo)=o6*7bAHug89!cX;TtCk3;reDT*AMsM`mHk8KO2DS|K#QRIhW!3 z&40-Cv(~G%$2O?7`(ZNh{;d3@_ds@!yXSfADaoJ5{;xhM{Qm~ezmK)X2UdPQ^89EYo`26D^8A?r zc>WF_o_~!G&rfnM0MCEYkLMS4;rTlIp_KR z0?+^a3VHtH|D!yA4tPF|f-j%7O&oc;Qq==GzbH%mk&-Dw9CQ+p+O5xbt_k9 zW4$2L+=6p&pU1wRcc7uDxlO=b>;mrk)cJV2xOu%&RXNGF06QJ* z%0=2l;mi`7ka)j6qvTVpZ#)hy$THLYc17Ys`=`)LN%lo{Wnww(kQx}h%C1T*hCNue zm)X^cx5BPbYy*8OcGCwX&VoHmrsvy(6SHBDknK0wLlVufL$|}?n`zf1UJJWcwokK% zCXRtUMz&A3hb4}Ly@zZ!*~1ePVDBZ{udzoY4urjrY#(cnOza7JKiO`uM^Voys^7v$V5V5Bv?Qf6Z9^`_&nOl|T(v z0z1R=aI6GI#C_w8jQh$N756366$qHqn=q$0K%d;p;TgT5mrHoJJRUl=CFLcS zewMA1hFR##6-gK1YW&q6mGFx*Ea4|7>7hy2AnBnM_`Xincys^Ir(ZDz9l;I&3$zPq zk~TWkqS?5p@0iTb#h))Q_l4xHeRX+#8TNl_BbH%pA>uSvQLyhi?9-q|VWVF#cBuiu!dHr;nfH0DLs_{{l(1X4fi&T$lPht9!s()PCjpnu=lYj(iDqU zo7{F|e`URNBBk`C@X}l5t4r&#_btKrd-T{c%hOA??>dL)z zlbG!u^{yc3Q4IT@U4am(t5FX$2UbIGg4LIpN3kBfqMvHZHq&pP)|#3>9a3_npJHwB zk65L)58C&9$-vAP^S^g0EW=RxdoBzqQEYPc5k{S{Ct8#nKNqVm{OnwL&&quiv-Z`; zR;)7xIUX$uFVVhv2x}_1EnCmt(jLXWMeJ7uqLq^#yyy5nl?C-BXkXpDVwp)}Uu}wP zti_$^-7>XrYBM+HS5Er$w8FU6wBew>-)d9yF@;{x)m9UV^8SG6L%%JH7ZMKr7OKek z!G86t&C!}iUp665fG{w^P{aq?)>DX2ev+HV=g6$VNZ zJf5XZPfEjMw&GnF0y7*2G~;>6FMGmGCmSQ4HZmhoZ%B*E;CWIS9&-rq!gVki3IoM) z62|kSupYA&@4_e;s&9qVIPk5T&<+zBp~Rj$`HyHYI1f;G0A~C(O8O>FScLe=UExD3 zKsy0R`h&a5hxQrThKEGq=mULEoNrTG@%+I($cOeg+6k;egq$87aNrGx`o{hyfy&DA zNMT{6d_MVm=QuS!;hshPc7vZ`a=1{L1}EVws&CI9+{1k0EI>V~LDS0N!hL88)SV|7 zIb5VqxOCKy5;PrXGcDP9GiJ=pn_-?Qc-|*wo<1ut zT@KlW21Ik`m@IJ`t-bPbM|HZ5U_bU)27a0z5~Qb z5lPK3kD?D4r(D<5b8{x;re|lP_RYDuIn=aR`ZAgI2s!Ir+yi9&a(?`?-o<}_tatH) z@<{E(x4x{o*GoXBo38bqD%3rXZ}q@?iBadn;MHqhm1#P- z75KQ5pF=Xui1)dEw4*Z32KPcg+P5-|5-IYdxk00`lk!sOM^nEb(R6UX!;hwwX-2qL z`O)HKnhoyNezeh`(RfVh5uM8AF-Fj6JSLja$DQc;GEIl~bU)f6&}gita6~8n9ieze1&(HPI-bali>;l7n=I=sjF(bO+W;f$bRO~#uK3a684HoV9A z(K2Nk1&H^f-QuBPfKKqE-Rq%2AQ<9D+u)($;DDiiwAVc}E#wbB+6fO$CkVs+Xl@V9 zCiezXC9R%=N{Bbv>RHd?0XKwIKRn=R9fpgrhEdqk$$KwIiZ z+bPqi49omzji8ZCs71JZKblLX=|C&+qxGnh!WluE>qo;kVk}M@XoY^X5}8JMDe|K& z1C3-*Ey8W}qt(ka9ca(`(N2Iy@+pNo1RDLp%1jGrB%c!Pq#upa!k>*~StATt``?^0 zA#HT|%`=J%bu&wRLm!z2UO$)tN7sSFC#B zhm^i!iay*n_@@dSPj}y;=~-)@U3_h`;MKvcJHZgc=?rA_x|T=ukU+f|CQzc1uJ@hci8|;#p!spwqS%>`vFX8l3Keu5&Q6ltF?|{a2tx}5VdwV z%vT9&?M4_Y425Zc-ypmngMS6gaD<6Pn7#;;4*#v7HNcd@gu+mmFA(Mc(zyWt2{73R zlZ`NDgegXtAeaO2yAYvDGhPn!IQ;K}c^qN(BFq;Ea{*z_BFtI%9|Q9< z{Jsb?2ZjMF=-5MQqSSnKvO9CuwLc(vkm&~4QB(4tP0+Qs`_Q4!fW3n*;49h(6gu)P zg;yZFqJwS&y6Rti^J<+m4b!G%xlNArG|G|X$rN33^}Vmw=>b&Z_(giieRr3l8 zi}P5*Kxh&d8fGD|>q0^|P!QSyO3Rcj>t91m7rMxIOWF81|TQgCOnuCSzF!TjPPDwBmU_yZ4@P0LdNmRjJvG0^8# zRO#-jLcQoJ78Dk<%(1+cE-0+1swyr--E{Tg$=@G)3Q)&FZgF`9N*b{0CB&r+U$%Tz zETSR_O{si7k#>UJ*K61GFX>gtyVAc))O|;z?kHIRY&(eFdhd*@uLr_KE@!8VPn$J$ zs;;P@ra)I&!8)Ce+WXzbRTUT;7tF6ILEHiALu%|k2?X*}Q-TUBF04R=HKpanmkZM= zUj+-$C4Ay%`IkDHr>iXhTVfrvV1d**av=psWg*s3e8<9qGF?rDuA-`Re(3_dla#>d zGVXGMp7=VY=U1MpVyUec__ui=)g=)b#8G0&ALdeN%H>It`n(*Uw{#

LquWE|<*A38s0#v&ZGW4|&=BQ|SoUGsTW;4qz9J!R5At#N_FdCG@wTHPhg_&*NggGn`$c%+Wp zB_5hq2P)^4)JqDr6$vBA_I^P51MFAk6lz143hN^l`IkF|+R>%Lbpj0j{L`d%bg8hc zz-*Et%ZUNPQ(KbztzT(7a_pZbwWGjc{1NJ!UusW*!}^poKt8EGnaU~(Z`T!8lvfrM zGEGpyJTL=@2{g?J5Qf@QHW+ScWm&OTsF+_|!{(dv`l-Y=45`#+ynZp_R+AK3jY&3* zDAKsWY&A@8)umjio_13$^E5A*UGtSH^O_Ml;sG8G(mVhA{}utA?mC?nJ*0qjmV_cmKBO`g{*84=RmEkc z1#?TwN^2H()*{V>Y{v$GOHH&;%h(SAX5ft=poEadBm}?ynxxLL6Hi2V>eGJVS^t(|kvcea-hV&rp~}mvswgX)TTpm=o-A@f zd)OI%!MXsVP&qLpp9+wsb3%GH$*Y*Pd38M!A+z|>VW_UE7enn`?jP18UQ6{E*pC$d zrQ=}JKFmn(EUqF=C>9HJ6=h7<#^mX)MG&UlfPrNp375JQHkqAUTukZ=5&)|qftFXG zbZmB%qFab%3RGq1Fw|I5J>W1E08^#V2!fGxA&pNyX{55omG;N}yW;AD4GjpAPSsOb zN{{p_cd~^N40&>as&$2ExD*t!wYNmb59=>-&3lAxLMxDDJvvao87=jjjFMuE%M=@$ zK!F$ZyGnpyN13a2DaonHX#f}fs|z-r`V-=%{`5!jmO_lJ)^!Y#tbcY%%&(s!UXr!` zDBey{uu4Kzq3W4ts(OSjty8iin2#v<9jzHB9--^(4Vq{=tG4&9{7p z5RXDc5)piO64PUn>;;@ipTXt?q|}xd*Dj~lpgop8Y7N#$I@~1QOKsKHjrgX&8+CMl zH{v_~Zq)bv-KZb>yHS7ece})V|59^y9Tq8}Sm{tWden{n@lqS}b7S*+e>a+c`MU+c zg3Y!4{RO}xB>)yF0kB93fJF*n;h#o;a1tK=-J*SyMM_)_@S()FR1Zo>Hi>a21!NRMXkq#8{gH?i~=Z(Fry^l_m9@OFX694 z5r*=6{rC(3oom7uqt3PF3zg4OfQR)Fyri~ae_XF41Hm6%5coIYU4>PPD{Cq|Vv}Uc zgAjGejX)Nx{(|{nxGF7Y3qQ9PFQ&rH=-3;CE>bWTQ&;#Y0;{U3SgeC5N&i{^u2%w) z!B?yj%vDubF_!((5?=uY!1z1aIzxy5>^VAo5RxKfu*}ld2DaTW&?=Jj35z6gjghCj zY#i@IkcJej6|so2kh$`L1qJgZ-AISlm&S0va5Rj2!p&G*US3>NRa&SkhKd0=(!6_E zx_QRPl+=ockW=i$G6F;hS4%0UHJ9iam* zSiUQ$F2)>Z0j*_VgdhcN3EPuXgJ7cwy8wR53ko~?`S%((P82VyWcw+A7lo-=T#22a^O!Q0 zLUmQBb_9^}1v@ru_~vVxH{H35Q51?!@`Qn&;_T4Hb&q5m5vs46`p<_bg8Dthz+(mxU%jRQ0VNFT7Zd%Svo&3eCIg_Tz za$03<_-5;5@Gq4W6KPh`g_Syau&O}gme$fL=H3P%DelgGDLU&7*j>vaE?msUxGuq@ zFa>jEC@GNFPe+^{!2oQeVgcYyEh)l{X%3(-JO~VHmSB)Fb z-mouwQ4Ou~u$CJe>nn#conCeIyoIy{4J`qUz-M=>gpps}!wX|e-m27jT8V_o!b((( z2jxrn^t30eTb0gRd^yjZu}1pD@wz788ShShJn0olbR4__oj4C$W%JZyM}P2-*QepYlV95j z6fa{yzAeb7J$T0-tnXG7mSU8VRTw^VlTK|yp24tI>C-ZZ<$2p%m-&u7H|cPfT2_EA zCv^B>d?HY{6mG-{r)RblI3`IHxvPp~k%BV%s>r82K65RgO&jqj_f#VEa*WK<7Xb@t z7{>l#@7&F2UWWK?m=ZOn`TaNT_kGgv<_EpbjXL|*`j@HBuK4fBs;{G_y?y`PPoCA@ za%YWt!QLDG^qupKo@H^9e!G%5Zr6t_#D?U4nWDq}`ZoHZgeCG2Kn ztfFqhZ0F?e{qFzxt0NZe?9tX9S=(1^JKGTX(iUY#@9XY&PWbD#>w_QtA*TM%1O3zZ zBm3LW^xYX$oTuzxlzObe`o_Yb{M>1a&J}!c)vXWA{-ban+PbUW+WWx0x73HN$^P_> z`y2W-J(uwEga7g6{(^(62M&vy;@MW@@!sXRE_Ty9pZ$F57nAm;*)L?zf4J9ke=ZyK z-tyOOo4V@d>R)DGGpE=5-zp3n2PBFOdFG{OpYf02i93Id319P<;J+*SEL^t!SVi0; zN8O(+c7HN7=9!o7f4H{fm#>`zv(7wxDCo8W4{T}Q{#)&U*IqlIDtLa|ZMVL>FKO&{OCo^cMOEI2;vUQ^yH7(nz>g$j4XgbA|bW zcucCDM@$zUpe^D#Vs z!gC#-f#UVJ;Sd^jGI6OK_>Q9Vtq0bMEWv&)*N(n}1blBXIUiyzlul zvd871O@(_=02+D8a7o{28}YQkPTxAyx6n42r7(BEjoj&bUV7%k6u``dDTFD4se~ba zRWQ{sI+$1(JdIsDn3wL7x+IJ{>5!@FApd}#OR=B?!fYvh^<%WAp09y04DEA??b{LF*+200j zI^2r_&>F77ebaE?9Dw%rSTzolQ)}%3Xe-8`-r;^e04?@90`<=epuG!Pp#C}Ldc+4>pgtIxi+htn3)Bbq&Ojdj z9=H$oodtK$0`!D^N8*#f{jB^}v|rEy^|M?5gmw*DpnkS1 zPpzE{TA;pk{ZzH~7SICm*X(TYdC&s!yYCQg8EAp{&m7P;fVLCHzm6WCrq&*^2kyJ2 zNbe|Uf%BJ$TW$^rGm`@9so+?VQD$Ub zQVPh$3s9XY4LC?uD5x}Gm0D|285Kuo5`JS>KpKkmWUvzPF zNxe;bI$63$B1V4Fi)|ardVSiwt3Dzx>Ls$V_f#?H41l(Tq=Z9#ZT}Dczsq1+Iy$xd z-txs2gc*#WDu2w(u`{Plzl*5jG&7^PwT(;>+gMr1u!PYWD+>vLF{?UQb7I>=GEZpy zA(PLg0-1zlp#0T+J3oR z_x(_c-}-1@pj(NPKCJzKUL#=uL#!#WfGR*7U@)MZK^ovV!UcdafQbNB%5O?H@uESp zJIFO>8Id!)Pj!(ANm73-t9yyWWJ->d%KX+bT}r7-v`gE?lvQN(-JUZF*}73&C`APr zw$3)Uos({n4pflr60a(PDXQCPF7Y-8$)LMDs-Tf!GSf}_Dn8KMIQ1tb&G|t2D;0@y z8tL`?UCnp6~geCSwP5ijcy0={YsEkK^ob;WhBp&%!IQ|GbotwcGJ1^-mf-q)noR(EB)ka50 zJHZ3^Hqh~;^s3WJ-%wd%Xi}A!R^>JG#R+b{h;(AqF_|h2t!D@H{3FZ_+9s|z)y+-k zBKg`@TCWrNG;eS*$=0?d6z>x2uQ?}?j4k3IF`+1NMtlkIdG$NHTa5 zOJa+Nnf2%*_&C|rXCzsK$T8iV9Mwnp(h?)q89|0~WF@zeQY)r^gf6vse2 zQpnffo$`FoVpiM47ZamPsx2h>No|Y~9Jif?4bnQ$Npd2E&V;p?2~it$jI)U)K}ydy zb_^*_m1=EiCk7WAUZ0~_EXLu9j?-zgQ`DmqJ5r=*$34;vN1e3Uaa#J=kx~&|eow`W z^16!6Q6>OylG=$S#y0w zg_xAtU#q{h>PAB=W2Dc6SNex38~NfWZ9jeUSuvu{ORn88#)&DS6aCMZEUEZTQnY4e zAuU_kL`)kRhu+1Du_9Z;)qF<L3Qb}55!u^ILlxpKMGI{jtuS>76)yGA&k{Dx zmJ)?1N{=O{eu}p0&|NR}#wT*i5 z=%Jw^)9|?hO_6U`wzlL+yvWpMA6_qwcl^U`69051mce)-=sO#1DV{aQO6&-U@OHRH)}B9B*$BHK8?!T9SwdjZX>8 z6JE2)9jhdxaI}z^uX-?dRa1F=-zOFQeG(&jx(GupafeOYw$;X;?C(c9*3-U3pOtP^ zPFZ;I;~CF2asfMc{I26Ou?7#=6Exd?vH0ir9#f7P!=c{3XO&ZiqlcKlG=>jMi!r2@CuX~cmMfK+D2k7AnDk&cG?&sMBw!_c zz?x_T-r{hPIGFb6GoU$g@dFI7=zbp#b@Z_!F`xBPEV>;`w(j>YEdE1 zBO9=>Be9CG#m|0F+ev9e_>E5xXFtFN&FUxxd$A5-p7HmRer}g zSJ4_5PTy>^%4eNt6rHg}(HcDVXranRE}wL^DA5MUPJ7(G8S!~l5h>JCF4d5vNvKwG zoZ--`edJam>tT%~=2p>|X%>GWE)Y5Siyn)J8Ypr7rnUh#*aL2Koy`#}0W||W>}-Y& zFu+u!Mu%TM(YAh8j&wMcPS?HG?Bk{8g3_Jv95PoiVc};h8Z+o z?2WI}yFTrT9@l~uTY)DwXpUN-@XILOT+xcQJ`dVdF1MicF3tA%mS}Jo+k= zn6_R-joC8AsfiXaE9YU1eB^~BZ5^o*i;29uyR%ufmA2G<6ZLkhT)ASI zsD%`}ZuCpK>gN2z+JTn+k(RMoFBXdR7nzaQFOsoSuP#5RttA<2F(aXGfaj^3_xfHG zVuDP}JC2>oVB=0Dk;LAL?VujctIQEi++ zEzLsvT@$bm9VJY9V2*UyF=tiY!$f}O2F`r+NY8ea(NQ*<=36Z+9Q8zwPHvx6aB6SC$ZepbF zVARct)O`bWheYZQMcv;->N=5=U{7pgO>|w|ATg%cpoTSzX0#vyEyz8yOVL<3c@Uc# z#gATGX?mDxXUv=z`+F0O(HeWw%%TzHdwYpF`3z&u@YJtjvXg+b9vICcWBMvB3Hbr! zM&P0qCDzD>RUwPhVXj8x#N&A=)k91_BGH4qNnb)!EOYxB`bZ6s@$=aSpLDc~+M(SF&|I9Oyd8Ij*dwr4`q z9_w*5b7E{Tn&tO#7}MVE+1=c#L|gc5wTCmtfD;X7NV?J)EgD5`M>u4>(Z6=3d2|Kv zPamB>U%fnhCK;{~H;a4rol{Dd4in~MV^00s-J{B3sz%CNHBJqyVSA#Y0ANovgg=W@Ew7j(q_&pDWG~&Eld0bK4@( zB#soqp)@tNdtee;DXM1gBmD>#+&Dqx#LZ4W9FcSB$1VaVUjsZ44b0R z_R(m2H~cEZe8F3V-Ea7|^UAYszzf{g*kBwN8;oaF4Jaw+_fXw+Ij!<;Xl|UvkUiYP zW>55(vX^THjlWQPCM zmy1;)<)FE2ha`@UO zYv#1?*-uM{LkoJebZ;si%Nsr=07jdUQ>a_d5=U z^=^fh#9M6p$yQ^=pnX(+L>{9MGw0G`SIX5aqU*-n7DQH$|LT`bXvI32;W^iIKhN_B z(H$u>e5vhUWq2{g$BRi=KN76x)39cok9{9>%)V88^>WTkl39g)>!^Kk*gF&n!_cqk z%ElQM6T6QM9AjoHY>fnL6j{ z(b%VvT1)yi*vwls9x8D=R@AZJ7TQ>CywxgKJKwl=bj=#?G;#laTJsvPtn%(sMvZ?v zd!?5Q*X^@j{^elqSyuj~k|FAV!J))n)=V>I(y;yp*T6?YQ8#q^_=ef9u=2DU7z-^- z-cxuQGx-LiXuN}!*YwfycPJ!7x6e49hK!jM4^0j9@|j!%4PETzBk%MGj`T5fXF&0s z_EIb78)7f>u+#;8vl{mApRMpQvlM>n9*p#ai*Z~B*DuG zH!XQd#THvexzYj8rsXfxZn3u;;s!oTUZtsmww2HG+CRdWu*EjX`B{5{U@AWq8T%)c zR5y~5PH}`ZNZbY)GQW>KTq;}VSW14eahUM3ZPdB+9%nD#N!y);2P}7*(q+;AM?mWap9v4~ug#FqN^g@h0B0Z<)@R;v6Q&hgV`WQ9+(V z+FaM6LcccuRp5SA;hl>&CJ2YGIj3@GxB)D#Lx?}bbua_*!O1*U^q|hL@}(Oy#95;G z7FND+W64I^Mq*45mN@(ApUol`_=_z=j69LyV>!^M76*%@hTj)9g+r$?E?d34sKM+R zh4~_yg^gk~HHP=K&=rm&+vG81%jnZ+i!nR99jp5t(HPyGin(R@;l1!WId0{)rnko* zh;A@uCc)lbxDkKA%}jy?PLroH;n1vb|4gfg}c$?#NcR(^>fEih<74l}CMy zF&lnxZBt)pZ(o0Tt4-Uw&CT9oXxBEqpQg%A63uNYBcC199xd`2eW8;-DA(W5^r>xS zZ_)o-ji~m%kmo;?CT*Nl+4N}&854W1rkgm@R*|tWXBMULj?`5N4o*6rk^o&B-|>+A zOM*3|yoP6{a5-7+=P&Ux8x?P4#soc!R@-v$TGKV`o85+asbLW9nDFIO(I59X1=r(401cb>%r~G4^%TQx~-Iw9ebXL4)Qh z)+bd#tBOY&x%{z{k9tTRq*C?rq}0DInF*{LtTBUrqV@7#=PV`4q0KjrH%_SURo_1> zpw?5`j1IVTNdZ0cwqR4D4CXc_bDom6JiiU+J}9?X*q)rz#$=ETCZN&HRnpRCCkaYg z4$5WBQ<7-83|g*S*hI@^l1w&IE-7ad$|a@s<4gRH_!1-d5(n@Z{v$p^1fO95pYA{6 z(?#&<2JmVBBR*{epLPHr|08^J6@Ga{Hs}|k-=3@wXqbP+1%=OfS}659bs3^6;3Vs9 znB}mJ+gr6%Fi8nG9ihF6QjQTTPH7uZ2Hw%K|TyCa4p`E8p z0UyZG(y||6J*(EvRaXCimm#PDZlVOFM(XJ2Df#_%^t8@jgzx)ROYy+}5j9s?wR&hk zuMzP6j?Va>ptJHP>8$*oj^%%)Q#nAV@_RZtKS5{tPtsZbJstD^N=F)?BYjV2_)pMT z`jd2)eox2vztV9G&~bcEhuX!z_s^oAq_gOII@Cr`=YQy*`4Ku14U6=epv+%APf1+< zkwE*jUkm2`B$c_}Q=yjgKT|0iXieGot)W)*@2x5MNjfFp)1emiKhr7tZ>=dpYxp0v zM))@>j|o4tFJbvR!ZZIson>hMs$l^QMk;0`85tkYv*Hg*PJ<=BA>4V92|A}S6G@_B3d=;PiI;sCLo=%#N8!tbuc3(-CAU+uxXYzYgpnWa-Yqfm zFS==&ddD%8F|^t)8y?wVt3*kRxR{FuVJ@;`UK(p&{tuN<)~JR^K5xqyv(WWIBVD_VtqYgC`QZessor?Nrn+T?}krz zquUZWzX*pWgsJqiu!iaH0r(q{Pt2D*U;C)%&hPm!upXyrlf-EvUGt1m$e2z~7TOyQ zh5OF<6!erE&Z%*eAn#A)$bw5&ob$z=!-_#e&PAx{#hFo% zo+ccU!b>EJ&J!0Hw$t&XGn{iljv^BXzpAqv4Lt9yTBYW z`ZDz6Ti=rsA6Tn`T`yYS%uMR?t(B_oQ7y&snHem9B>;N)3MzSEF~`BP~P!)Y;~o)VpeNQ>xShOUYp55n;XSGlkzu zhP$MwAfq8Qr?DStBj@0yD26Af7&lQ$3L2$k@5FTCnk2>u$*}30I60t}w*z}@qjZzkNOjVYHaE0va4#{cBKwQeI2$NahBq?f+Z94$B(9F@jp3NuId&V)Q5OP3Rxj(a zi49T_!lqtgDpL5CBKQE0L4P=M#>e8Oho#BXTqMnJCfWJk+|I2M2~?9Zh1U`D6-Y~t zNXr?K)`%7+-|wroMM=zwB3ovs0WIauk*tK%j4`#7WDPo3899|4+__Dfg&u=M4Nuwh z5s9)VthT65X7YkG84~0>N%m<^wXMCwAX!?|o2vX@K0>lSRdk;Ez?Y9O4W#C~k%FmV zOe}oa`@^cnpDTRtRvWcw>{)Qa#(Fl|vb+=Ell+x5*>PV>u1I&H_uYi|rKLeqi7nCw z+h{Kr*ub50|5j258SNpPwtZTp)Es#6Z}qlFG&e;O#d*ngg5;?C5-9fNW7gkR;Az{|lKym+bkSK__`HT+B* z+V?V2b~kgcehwR=Cjm*`ha^o)6xPA?B74gQ1;Z0Ne6&BG7)bk@mzjDBDMdJ&)f(q0qbzLT36@&g=5A){-5-pfuiy#X&2k&&KDN_11@2rTn!K(#+_j;qA&lh#O9!V|r+f$jE1t|AIB&W{H zxLjl+cw->3H(`~GtLXHCNZs?15}UlshN*+$$?BjJqos>5cXBnVpws^ARCe;K#6>hU zz))~UJ8>;^>)|I4hqm-4wXm)Z+$Bs!&yl(W2bJa2tM?w96_LT=8@0{IwP+ixk#n*~ zdKvI&m7ASZtByp@_eu{kCh9BV#p%91;vanmoW6ZLpBeXYnYLjPX83SuMIYm$ZQJe1 z_eDQn>fgd~b$pFFu!Xx@$u_8KVqJCfdDk{uJ^VbX8iR`qs5F%)F|UlfXI4v)88oC# z?INZ*igwD-8kOtH{G=Kl&*YlPm`Nr(40Qz3p0j|NJZBcpMBq_xhNNQaNcIws#^s%# z;7WFIJ7&+1Yq-au6%DR?7QmLFZ!dcj8)z@ZqZMb*8eB1m(Y!s#tMz_E;`UL$;055@ z=G8XD?WZk??W66V=%xBG5%rQ!(^{CP;dx$j^}i10iZpf{b=F*c?BI8`JP|oPbkI=O z&t(kyh`%G>r*g^jSGY00$tSyGU=OTF=hFV03*-bVPI9cF-nnr-K4yo@rxSNvd`OPr zw_NOB;~G$72za`N^Qz%zMvHkO^d2`9O8Zn|zMHNZ$03D|Tw8B$ZSG&eok!U#XZlC5 z-yfsJNK~>`RUoK(wO5#l?+00q>s4I~VZ1KAdUSE(KEpQH zb}no?0k$0n+sipYisw1!P_xRlv5hm8OBRe7SovzF zp>2Fm|9ybcs%auU;keP=A1|!JNjyWX{>nhgomG=1zJ|$*_D+o0YV1JGaaD{-e^6g@ zPFZzZs@o;e8xs4ROa|@aQ3GX+RppX)-zIqK&J3gst zi;)lZWJGN9D`>;f%j=w(m`5mw#)0zJoe$b#gE>*a(vXduPjP<~r@%Prq88?JY8&Xv z=B)wl&pR~-m{FNxTth;QMa&jyY0V#S-u75HG;^TNr#Sg&vCY8=647$5Lh+=+H@+*r zC(`+Vo@vp023EP&iFqZ8b%C}vs)y@tDX_{cWT4p}2a1}S1e_KEyA!zcvcbWy0qoB^ z`8sBtRjzY#b+aWhn#j)~v|WmqPH3#bXPmr?>XJpwbA&@byTOU;JJlw$Ph}eE<4wbT zx=cuCh<4u!U%wRY>VDkEy2^1=DLgsx0F$ffiBWW;@C>EHD<2LeMcTc@JG6nuZjZzk zdDo)lRF3(P_J>2BNN<#R>Ai)M1#&xD77ZDQT4+af57!fO@V$aH*B?7rF2w|OQA}P5B{tPx{`3lH1|Qw($6rr zvvns@YpgT;9Br%Zl}La8n640^d(2DQQ3$!j97x=!%fKlxxMF&v8LC<1B4rMF&nbzx zhqYD=T%>ZKywlzfhcYAid%UIo8PUo9=s~QP-gEFpN)3gk^p_eGDHZfQ?MpnM?&U4a z_;AP!exIT1X0G0c`_~dqoo8&b4fgH{8ZzIl*c1FVej9GKua%h5G41b3@ouJKvrX-p zUtxB;DpFJC+vZQ}zpX{u=Itlp*y75j=cSji@5J1VQ@B;lSEOal6DnexjTqz1Nc~IL z+#HY&+gR^daZJT!A2U3NGsRB$^yxh_>&zVKl=~Iwn46eqdPr8Whv_BP-{_U)jkW@> z&K3 z#TgB}48Ixk8C?;T9Zo4O5>urSodL%s9~u4u?zN}72Nz?PfP1p#5+5{bkEfclP61zA zJ7cPMkkQSat>yIieD{_z88@FP!Q zvN?}sAWls1eyuJ*>OuEg()MQfqo;5|Bl|dTJ?@yN7^X}v=iKKVIJv|Z5{x`nF^N;e zbkSHr%;P-O;NVv863HeR^AZHKHDif`t1y+HZf06+6;&0B%U>w>yPqxJ18L3$p0kdA zEHO%6g-erywtwAs#2p*q1r{8Q3l$`*(=!8SUqOfByXxrlkz0M9o7bJA;l9v?zI=B9=6*hyNW!5`KM|nfhZWMgbV#M2XK)f)AD<)`-|&Be6w@H6V8B z?1w&QTR2SZP=yo2THN$_~)JrxO<^OtNTL9 zi2v1d#%C1I!2iZ$KZTRMj8`&=9OygNm31$^Q6acj9r4PQ!Yg;AnTL$2^yc-gF&jD( z$5S6yU+9j$GBZhJo1tpGa0JrQz5~^{dKIWg z-;dwaxnI1tUZ6WR8DIZ!{1qQ52}NW~eWbe&KMA=>H~C;KTD}x-32z79R5FY3rV^Wv zH?2OvxFq$xFI?z#_uK8^BZSBvi-p!3U8s7U%_tFbP zXH|HYl?yrcUnpsdc;Ox;O{WrG6b=X*{c2T-UqfQ82J3pinvV(as#1S2Tj$sCTm0@+ zBWfg-Z1F$5>;N#Xp0M8kwrZh(=R6g#B6O&ug6i*U>T^eU}ybV>H#klaJbl)iL0}0*r>` zTR`(pLGTkzF6t^HZ?$gl9~rVh;Qa)=th$fZTZ__qhB%F_&Lpbf6L(Y{>Sef3_OpFyDxc~pX1m153{@# z&)HM#nZUxAj0P5d(f!GG^frgyJR&>^&UMz?tvU85AcI2GzHZ*=eAOVfG z)W5>w^dEvY94g}lRZ(TZC}GXj)2~GZj}pyRcm&&);(p7EfDR>}Lo@+}bx}A?5V~Mqq2#`>zhx`-z@G=#OP!j)ni@>|6rCb5MM*uaTsk4}n z@{Yg(<2rv|;zmD-W)S*LDyIEn1mD>(WU=z_|L(X`CN9pfdnbDyb$OeI{eHf{S?t0pPdDzqb6Z)qG zc1M*zhGDF1?KCS>`@wRqRz!)F`Dmr_xRTTPC^YJIZLYvQkN141{|$rF|ENPuf^863 z3q$-m0$YjJ+R?sgRsKh&S)toCrVb_1U=bETqoY9smY_`l-ZyM({nz8y`afq=1kMG! z(J-##ip7}vpvE7qNf4fZzQv$iPezsht+;ex`fd52lc{A<%emFMliCe~n>CsRiuOrr zLlaTDuP_-k|EsVA_n4pXKR@=5(EB6yYQK{3m{9F+=h8u|+8?byu8gnLqo=CrUiN z_@^yXfTm}nbO@I4m@pc2N!dF8A4c&zUq)&ZQm-XGMy*u8&i|Q;*{O%N-XZ+`LD=c2 zr_s_J(3?{Bg#V49)Sl-;N{`;ZQWzyr3;)h~bBEr?TqSrNY`Y3pA{ z>BU4b9_ui=D&izgo~k*S#5pqC?C^)#9edp$Vg{R0U^s~xPCG-yjRHbssb?DQ)P_T= z;iLJ=J4Lul(1_M4BL!6_O??=tfAd24}T=-q~BNsL=dt?bs!87p4h5yQ4xn#?-mGv|Q&%nwHYqEcRVau{#U!W;?27di4 zzQM?Tbjg#;9yL9HG&}>3*8i#)-*SwyWIuM{$z_i%q3L)A9>XdwwhGuLiZc2fO&c5Lu1=JKuQ@>mR-` z^1V@^_IbLq*esIlHQvp(q2jcTLp^IR&v3toZ-7-j?3F)QpS9AHT+AQQrT(EsrT)Z{ z^qwcW-|AKRw7tXX^}SKS503o zyPpwWC{T4wNoG&HP(Uv0tC;*315v!yueXwnVeV5_V)~$q*s=3@f^80eLHQt~OTB-F zuX*TQps6q!BXoy*`)=ra(=6GdwpZ6(;3owQ1<@V9qj!Z&#MDs0cHrw#xx=XohNrv~ zh*H%bYU=Hi^}U99+FqjAaeHg`01vyt!*M6&K?@#q)>hvZo3?}CI~ccn(OS zXlLs{9TL#qfCTJ23!)$=aElvIJ1MtW)KkUe*JIEA>LIi)sPB!-V^F%l&lS7^UVjI9 zy#ii0Ihlzsq0}@#nf6=XyV&<`vBFamQuQ!5zCs`I%0H~6hv`eO7hy$E>Q6vl#iOsP zyPJBI9&K;Ryy)I28M8-;0}@LJ=yd((U5)~#gN&Kyi4KM*y%He0?T6m(@3l{8ui5;% zk}tspEzg|zvS4yMlW+A$TVDx8>2~*OHhof1fcx<5NwxQb0{#S(e*|~XDsUfk?BRC; zDsDN>noT{-WgWaqIX%o3l96bqeXPU&$0A1g)}`DV;5f!uC*JLQCCKXT5Qh8M{3*it z$n)EauLW8CWTE3?u6X4lo4-?d7wMA)$+thqM(-5%`q+tg2rKCqxovE5w8)6~zFGd+ zkxJ}EwN090oSC^{@mP_lij$=32RL_aA>A1t?xEic6S5TFB3CxW&LksaOO~d-Xm}at zbuoy=l=Oxc_VuTzyp^puVV=y~R$KUu@4L`t-zm`e4%!iBi~FgMIzrkg{b<2HY@3aE z>Fp4#&5O6$IDDnj?KQNr0w>l)a*&eR?aOasdzoul;Ol1!PCVWCA|N9i`e)cEVvkPp zo8Sq_D)34*aJ_QjLvm zOOX~zvy+xMv~8IV-tkXg3cmi2ao5{=I^v|Vq}}-62K?KBP?i+usJ5N+CZRMV%yGmy z{^nylbf#>_NuN>5NZJBS$;gX}V9IdJb$sZfzJsgq9Vktorm4jdxRs%upc|9lrW--V zFlQQU9O~y`pNyTje4#sIdbE@%?rb)ePL@o~)CWuC54!Um^lTj8d34*;OkSOddS;1y zqWgl+BrQxGdMYNH>o7Uegb@xNKCeACU0aM}j)T@X+RX=Ji0Kw1ZceA9ed0ToHXOUo-L?y!j1*dSdpBb_=fzFtety9-n{8-{_H5TOlQ>BSuM%$b6yrwE zmu;?r&kS)%&^qod(mf)_?YRuxFf9ZWOl`N-kO>Pt~{U| zb&mRbzxHNJlcdr3y6X<{HQTo*8J9_5YEJn|{j;K`rfRbI-l&S(g-nk*tDxh!b`JOl z{cGw#0sC-rIP^q#x)>Euv2*Y>bx~?Kv?e?W-&W5Nf0Md5Pyo-#V__EGy37&h)0sJ3 zB~psRy?GKnryJ)ujdH+OC!#WOm)wNu@O%(g}yya2H0Md{G5nCZ~cM?5#gPO}STl`ejO6^lhK2 zlYVb9Ndjla$qxRHjX#ihXP@rBN&DNMly-~n0LH)lsdYA{W?x&1INEI&58$phZC7g_ z=V}OOH1&ZfHa_(&o4IWg^0^&$NNN-QP3P4<%+gyqS7|{#R!4kCp4bfiWB!;V?zLrf zur5vZo4r?qvF$_lH}_r*vG}Umjys`tWy)&S#pJOyYVos+bI|T^=-s{-3S!z>*O2|p zWVVKuoYQ4szVW?)a|iEh77_J>K8!%bq?$?ZJ7vQLhbZ&06xY`u?n}#P!i{j>^wS9ed-!oS6x+`E%wz5`Aw=^aGEMJ^o(R z`kWQpU%1q^r}(~aXs{KMo++r7ipJ3e1OL4UP!_XCC@@4lF;*9<6ca?s;bK#YT#!BC;eP-oDOI}))xay;ITK2;yd&2K*4J9CuogvKMcGY2-J-IhBB4~*6I;kh)8_o%bCM#T{p{!S`TqSY zugN)QF3&vk%ri63^UN~?5s3W*4VyPz%jR8-P?n4*!lekW=COI?oWG)cHt$O0p;0MF z|2f`oK)3~AF~S`P^$5Q~xEtYj2=~$VE-r5y!YaH!g77#3g|QCLClNLxJd5x=0*$AC zFX4R~!m9{ggdPMM@58e<@lL<#-&^>87vTehg9rhHPY{kE97XsF;ah|OgzphT2&WMu z2xAD0j?L2`Bq5|AOhCv&$VDhbC_;1Hxj2I}qv-euF^s{HMRWk@h=;`w$*NXhc|r@Cd@=2b0(N&Iyie;f61x(P_0d422lf!@euVq> zFj6VPl0EVGo7LxdzW?o+C*8XzPg?)~od17=_5bIz=6pVn+)nK72MBS0N$i<6bofGI zM}H9F!jq>Q5dSmwXy#k*E%WiU8D74c93y><)!Ja}rR8Xjdvf_ap@*x@_j2<%HC^bX z@pmGfre)QV5}_}n_E~Z3Y0pejv{p?-=ad{M%2X%}+u$EJK*Vsb_8+nJ@ zT3;kJ$=3QNC+F`yX>>3WyW7~?(DP__Wj!g zr(zLPLM%5~WI9;sX9_RceXNxc8{8>_99tyaEZf9<=}5#Z>bo0ymr0NDk)XY2Z8s^> z&~mI2?p2s=y)sK!DG=jDn~xETtxTueT_jy0o5kdAd#|pC6s2J5P{My!dSxwgUZ8N@ zx5#|-r<6^Jlwd5Law*C%of=^HxPp2Zrj3=}0Q@+1?gVxzsDVQb;}|iWuga`Z2``VA zL5p5F+oE_Gvoxf{vEtlpiLr+lHGZqaa!iR3K#j+ms~FMcrZhB5$1qlZsSE`Pk$N8Q zo_ghl3+$E)>qwCs6qzwrCy_aI!w)u?rG3iVT3$^0q+T?d&C*_l*rY)5JU4JZsBG2J zcr)U6ApUsZJT?9;#ihnO5Wf}i{ee6+zDFri<2{If8u1?mE)yx7ZOYdgJ>b+0dr;q_ zNa+hqS5ux*wrYH83PH+4NZA>ftfoAnyc*mpuz690k|fN52#XNrB3w8i&Dk0<3mWif zwn&Q17Kd1XR(&vPsI^;2QKf9SyiW2gw~3Xq`N2w=zr0cw?#!2bquTa&WwU4Lt;;~O z!CQMzN{v0>{U3&sJUA(om(t1zo9CTJ}97=9(sEP&YKbQ9gZ-EYgy#xp_C)X`A25b3kLtecs22(e8r#$^;6s!RwTclU@#awIiW z$vxR(p~#CTz2A7*kU_^qbw3(PA9ZG-7xSe%MlFSW$iNWmI|Gb`DRa3Wb3N;v;}Tqp zT{W)DDo+Q9`Fxk$OY4gUuSb2ny~(Ndb0GscJV4TGToYUkRTQ&@X#19sfxW?9<8sJ` zf(n_x$RP`tH&kKl`C>s564?FjRwo09#@=gWVgA;TKpu0-{+rxGLCRk=m$q67f226P zFSwDPBd%*)D_x-I>~~zo-iI-!%T-uP_!Dre;3JYXMkblXj|W)mHLg6@9WEujSFwrZ zz2!YwDm(@-mGGO1+=du2-{C6njbju~>rSM_#$0YX6QqDvaePhM{q>tEzLGTdP5jN= z0L%-fZVeTX_3ln*7`Xo!Z0OO7hWTXDwX(^;NLwNmy5vu8b7M91kLNw)-U*uBWC9>hrwJ6rEpJ-B5K? zy{3At)7D4(@1}Yd?}GYH`dC6dN;s>pp(iy#4@xZ~*5=n@8qwqXc!1cMdcofAPOf;% z-Q>!35b2RIEx3Y6zaF!R4ZX~j(IDwN4{(GYB6W=}lwULmy+V%?4lBJU1&0!T39~ls z_l4kKZS5wfHbCdz+uS$dUz3ygNwHZp_L9Deima>)2f}qJ;yU2Mv>qKWynb{bbq#IL z-VjM+17z9~e=N8g?@ZvlU9liPjU2)6Mf7(lmoLf3lXAxNV^_(gWWH=6H{rPefhjFj z<3z+=ucoQ-b{fx5`=Z|hetbB#QtaO4!Du(w^QDhQCe|?R2V{e}u;zd)EIcqkijA8N z$Pb%I$wz)7{VIl@2=R01>}I7*|O8QFF-7UnleMH58aMbcWQ>X$N6U9 zfNa`wp?9)q#ti0-9gxjrA!cjL3s2BCJ?ZB!+SKn03SVRWyzBROPA? zxA&upEly28J52*#HDP8O@^jTc28lEhlhv8xyCA3b10!7}?;COup%=4H9VvdgTW>X5 z>W0_fJqztTH8yL3*;;II{AgHwS@p~-Ul6~Phg-1njp?nAA$IhtOOWdyW1q?olU(Vo zF|#<;#Yi@}LO1CXv#1Sq>li6l)`U#lyRu=+r?RR0-2rXcy8}#;S;RUkd(b{24J#EQ zX(5(!@dkXo6kT3lF1{!4vlHpVsNf~i%u!~Bbcy-mQB=U>FmpCooVHYja*$UnW9qbZHcdo;kVGK#rCx-!a$4?DB`tUDQ8 z%Jk{0G2@o9E}Lj^({F7}hMNm1Wf?Au*n6@ZBVo_pa_}vM<$w%A*CIL#8shT`+Hzvd z?B(1BujxVJy}mv^>#Xjk{OlhfS|$8xqIIuDCwZ;z{0EcK?(Na(Dt{EjD3$&kB}FA7 zV*y3i9UR~$92{UKDB(L}jA-;yF2cNM)ZGdUgwMMn``#zP;-Jie?-$ zLnKeuo!XzoSm&YE*HqkYh}NC@P{&#=;zIEb1MVsU95#|)wLfT5SW7l+Pn4s0fXptzy@dJHwqQso9_B3f>fC*njdFXZ(kEAGhG9K5BxEs|tWn{S<>lxa< zi$1%Wg7G~41B6k+)oPyaM}&|d>_Q4{TRdf!nsQ7{>B35oD#rU!EUkS35U zGQ^n3L{dzqkZGivtS2v#<0P4>V!X@&<}-#!*N>2*X~&3k=g3Hq6tT4ZRZ95nH-CCR zaL#)O@0f*^y0iTN?^U~h^!w8vn=VI+=CG`bPE}+3m4Q*^>a($6Q5LLM9>nTUi#dD&%zB)$Y zyzLl`*IqtiyqHq&i72rV>E1>X%H%5T*T{THld}rHkpNA79OIJMUiVw;t*5lw^A~%@ z+o4gyhezY{L&nJS?jr9LNUBQsbaYv8(yf~lxtRO>;CF)f-bAfqk)>F9Oo&-BwzS?O zvL&=lKSsEVDEI#>q8VJHy=TdBFIr@|N~{(S%5;sKskZ6M$lXh>6*Yr@)l`d*&b9R! z#QHleVxII#Z0ViW%B8n2Uy`4{{MI6I(Rl55(3(97EcZojtB=>VH^NP$wf!Z+53VM2 zmXOJ_hs7O_JNd!)_!9BfJ8gZ*;s<$omABqL=hj@Yd>mTadu|Hv`UJeT2wg>KOEhD* z)$0;1c|76^acLBKGoXK<;Rhe#JMX$}X?q@|9K=2pVbHSabWA_3g#R{5`)YZl6r=N# zfn3g1nJ3*9>$+=V<@R5Fc!F|_sMa}g^kS^alxJ><{Mwy{=M8FWtbVSf&d-z-1h)HV z-={|7eOnW;EXl)KN8_eOA$yX^;Gm_@o0RZ-(ak5EwVRzoex_`*Qv&tNBGZpu=Y2gy z>U4f>h*U7M{#cUJPbLxR{D`$4GD}HrfDg@Jt>V=(pHC)#>d(#p80(WzCYl`AANftQ zQxD02mb|dWGpp5k{0N!$^%wtybe((G-LB)o=iL;Kk4MNPpGr&KO{Owm5Gf3ONeN$z z`Jc8-g2sq-hAghHkOVH*VO>n5^hosyCH!FuVX$Y(r0+HBA0b>xk@Dsdg0+j zu8(AMJtTfPK3d*I&O(*{_t7$^G~DqZ){48YJi*PYJprv6YxW97SwYuszSiV6dMoOg z5)y!Pf2R!DDiiA$gLuf_eMY<+d+MYW22$MQV%zr(@bBz{e7+xYv*6_>Q%Q)KJZG^G z(AVa*ROLjhfI*(wYB-~4DXHg%oH}j)?^^2{mwH9_$I);v}bNTFHYLay3=^``npr_jIk_DmO3M5(tQk~q~l^ThT$GrTl4 zg47MS{}5y*g#e$zW^186U40|!gbx2bIi>-2tQXn>_=~2PTx=~(rR}5Xd@X0mci*^} zro~g@ZKrAW9x9`<2%Kn|PC|AbGsaC@opbOT39yh$*ibctxZ1T&2Yw>~rZ&%I@1?M5 z8Di#q4OO4*)cf-FksvEE%+-QW8CG=@6J*pRto|B*szsQWRGlN88l^JjY=tdyxs>pg zkZFyWzn|_SeN=vke9Gm0hfuES6STBJEuCXYo|lZ$AELCw?Lv>TB}oAW^YBzizU@m3 zT~vaAUfx&UOW_Frh{LIq9M|MEJAcgPHaXcowwAHvsWdA9?sT2t#no=i#=ld-3r0NP zStb0Ga^A@5NIz_BN|=qtXW@Awoj1Q4f%IXuy5jSA4tk#{ITLt&CpT^A2(2e$!J?5h zBfDhQ(^g4qEb;KxrJg~PIF~t0tX~I9-8qK0hq%(K=cWX1%%53VGxr}~%oI)Hbj)|R zj4o;B#F>?|DwlY!sQfla@q_8eF7)I|L0Mbd=E{`@WY17@bFMTfbG2rPAto2>L*KK< zDj_S;eBa8s()S38eCz8!3~8G74+&g`FR9if>b_LM_ba*5{W4@EJSF5ZM9^=wCKnAt zZw}}+A8@KwSddl~B7GUjmF|&+n#1lUX+=fT@CvSC*i&)X)nHvITcFY0H$u$7K;=Js z&vG$Ca-?w*&rR|t?}EPG#Dx|*Gv+<&)EwbLi=6D~2iZrR$^FLpT*$03xrH)tRDnh8 za&m8Hie~~pVJxT^$AUi$2~A%FGrT_xJ<`;VujZytg2xn&n1N#{@SP~}X+mE^6}1iA zjk%DKNmY4ItyUu%#PdFBs?U(w%ack>enY>mB*!lxjMvfR)2nqDj%^L;S>u!+`}HD& zo>0PHMr|$zlE5s?tL42)`1{yM@D9|4kwtVhjI~Zurf0acH4|K<$SIc@nKFIJNPw%& z1y?no&&&w+U!(899XA%_^>H;<%VmV>iKLIl({y0r**7E*w^t8-B<5U^DQ$BJW%?;M zx*`G8P{x=)y!~$Rx8ibfSp3rvX}+h5mNWK@m%P_&n5TD>DO>xJF%Kv+78Vfm^L-U^ zse>DQo4d)KjL~3p{8tF1ZyY~P9Ea2GWo9LnLjLLcLz?PCY` zv%)+95Er@_^S?nfp9zk)m%{!DZnX+GrC(6t8oi*LIm7keOOw9w@;{Yzt7Rwj>(#P$ zZ&D30PXJa-!1y0A_zA{`6;00c!}{7bCwD||qO(rY5dmMq5us8yui5!n-+5-WC(s+` zAt;=m)jiQSwCo8@ZGroC;dWvci$sfP1^lBCV=o=Y6a(U(Q$NQ` zSCSKe5&)%C*S8)|Q?c}MQBzazIHykb_u zkH$Wh`R?Qp!|6+IbFoJ>=H8R?6VfE6h_h&-T*dwYF8!a2lVR0OM*0ta8dp<8^);-d zN&DpvGkcm`ogCtH`=P<_2h4vi{rduroJ11UO^5}L?NFdH^Ak}i78S5lZZuUDQ($WzejDvl2DRz~_765sV+rkKVv z(u8RInG!XN0`$9St}{Vxu^db;rgByi(HW_pzO}m$_UNPXK9A?5mYBfpe8o#8u})PxuUs{k&IEnXNE*+46RNx^l@e$mPLv`VfLMfDJ-5DJ!}^*asyhz zxyyWHW09BH#M>FEAZmuZVeGxMhkb=dYJtePZ}X97t%Woldn(f8sL?mcMdigu?Tnu{ zM}iu2I7s{cG3=pu#4M5PD7KsjjFTh8id_=)0Nct);>bcDhkX?-=salz&la<{8t{HG zf_eTJxB2qg%WKLUt$gG9`c06xeihVMzYNm)ca56GO+ll~EM*an1&I}9U{B-AXzGhdWu)VfehjqV*C5{t zPG%nX7(J-`01JW(-GRVDg3fp23o8ZbgQjEW@Fw+;3m)%giZx=YSZpyga2=P4*b!>T z!#)<>MVep+FaLp&o{kXPf&is23;O;JU(Nv6enHIz^YR>zIxi1cLDNYIn%d6NbO9*G z?$d#;C7>$k~9Vrpbmb(k+`}rgML{lGAT#go& zjiwwk{tvYOFi6K1#p$+4i5rwCD{-ZCOTA3-SO2B`ls732Xq$zeWRZ1q^Gtx9q{L;u z%^2T84=XK+b)WXs86abIpC*e0fA?v}A`N~$i!!n1VMSOd^md=#QWr(szPfnaKF4s- zUKHjX-oPdWbAd4ie?beCSVx~9`6lXdL#f;6McuOw!wc-?K zq+_zfM=prBD=e2|PY^xZbXl$A3^V880G}bWlaea}%m(1IoUs%eUX=^%6RgGjLF|7_ zuYJaOLx5a#v43~SoMwaNj0MMChTTd=Iw8}(I24HQKQhuf_4`18+0-i+I9O?4#jcR2 zZeoD)c$t{KX|fo{VNA{UdY}xu89R?GlUD1xgSBD}=1vNAwY(=tF{kg3M-B!p;05En zwOGgL*!nD(igzCGbj;MuI225-&2S{6Ka(()c=0&o21sW!-V0K=&53yseA_V2x8r;q z?m15s+Nng7E$$mQKfM*RBazNi%EW=RnIa$BLdXUpofy%Gb}wfG-6wIAsOBm4nnkt< zRxw2beUwPoVuupaEoL^lBc>NW%z+lKl#1X!$U_YdA|>}N@A)u?7Z1ULtVan>VY^tA zg}w2Pi~$3o8WYWz_HX%qh_PMVf5;boa|LRni>Lq;p- zASGvc4&2Vu@lK?k)cJ+(Up1d!d7<~t=Bbr0JGp*hPC3TUhy*9O-yK?2aFOBRx!Qn6 znyq2XDGdd#9FNp{dF3he$H!Rz!aW&u{|ERR7GTxY<+)0m_c&7mQ?RG4V+drdzfl|m z&&oRU3r;COsZOOh*dNvMLQm4<3otiglpE8F&&Que&qCX+RmYzeZ#OEDAYU{R)D#T` zLHAO2N|K*PV5TGo^6n*84tXXi!C+pq9L#f{2{J{;u`*ybBo*#r_z`e!x^@bE1xr5Y zHuRaTq*yC*>xI4w7cc2pvTm8A<%-1Y4ki3~tlZ1k98ysui=Cx;>S~$YQ7U%KQ^K5* zDR~?Y$esP zY-7wxt@;hXppx1b7+Z!vWm^*JdUnj=Lz&j3cH^;>ZD!Cu54K0HxGhLyvHSKV$n{fVqU3W(d%7ld&%W zX&f>>k**lyi)&0!`qKQ5b~&8NmRMOe|LTgIN1 zO~wy}KlsViO9M&mDWP0G8`M9y%tW)b0e0cBqI*9Sast57UNP4k&;zT9Y>`OuS`=gK zjO}0jS;yL%9}iydUJIK~aP*O&rugUyJ$gO6gD*<~Z%hQmY45Lz5!+{erZ^5OHIUS$ z>(p+ekY>gz3Rw71P`?9B(L!K2b&R=GchQRBh8=&}MJ)05S;n}HwC&%3Lx^qmaMyOm z_7ZG?_d!C2KnoT$#0o?40vh&9$MDkli^;|J;$9XYTRtAAYS9fKFB%_5Z)cz;$tk-ezb1% zULR{YI>0hYc1cboICDFZ z7L4-Pi@>hlXik^WVi$9sG_8-XC}*M?>`f8LF-j>#-?&j-yB)IcXE_;IFW|AJ=CI&x z!RQ6sXpWXq3jbZt(SZv}A(@rJcS(A|GXXZ3)xe+}v;9-h7>Gn+my1USGFB1EI9e|9 zsDVg_qcq2R17uY^*EdmOq4|h3arBSJ&f9iDm)VjMny*h;XD%|VPYGR~oVqThGpTjL zwpvKQf+1&nN~l=Sw z)RpHUU^NpO#9yPd#q{mbD4Td&6&2bs_DYdgtULA1eerR4f7B_~iZti%FoLfYmPrgt zQ)YI2K0w-uv?R&`BD9J2HnrXNN8$gH$Z>RF0^J=L&*6*bs8?~IG<`8TM}>SMYV*<= zItBd?`R9rAx>DxN>?m`Yt;=0XxLa+*4~aHl&meLQO3{^63Hu}3AhknW2I=shL8_Bb z{lRg5M>nL0K`qC3n06#TWx!mie>x>(5>i^(E~;yB?>C*)kdFs=rb49jf`>u+7Fg;< z88XG*4YJujYnKPTr`_hAs~Z%^`;|4=rL^^xLXtcl*&Ujl_VQqoRyyLa3Qs4srgqUi z$|k^pZFq^{L+mDu(DChBLZs5DO|;RKXN`bddWLPK^?f{`Whgb2@CP!n{nM`z2eH2C z>}<8E4;=4ks7kbDPOSSp(Ib*ccZpnAdPn&ytATw|C%3-H!Y8=6b%e*hDv^$kTvW^9 z&Fa!yZ*y%>dt=wg!(Egs9#(Nn?}*2CjIhXuUGtyEzqkC`ciX>xx2QEtL63bnqS;34 zN{QO{nnJp?%z0)}#dwYq{z7KNeLn4`)`^>(y3Q$mnvHJ{5Q30_-OdA8Ke5AdbYOM5 z68=`61qm$PgFncBq||B5G>-)D?C0`myQQAi?o4QB`c6vI%-U=bmRH@l*U^@ z0?RAg&cA9GwXIzH!2#VRW^1mP)Jm-J{?w+^)njJlNkAYr+I~Zy4)S>hMFb^KT^(Inj*(V_0Ycq_!2kjW=X*`tQ`HYe{dN7{z5Sa?I!_zYt%!dF!U z-WS-1GfB;3n&Ov&hIZWs{^^4Q8myROsL}4FY4?vg@cW0cCm~5_J9&&b22@nS!zxbS z2N=|bQDB`YeH%RyjD>HHdV=f@LpzP1iTXc{()t;HEc^?+@lR`7xh`$1v0aDtXNjiivo78rp+Sc?j>W8^FXcecxi*us1I+_CfbSiy#cqy4A22^6AMo0%n zLAwb&(mG2_*?3UqJ@BExOhdgi`SzKB2%dod18;SzknX_DZIZqoB^S;fF5N*PeKC4r zaFTe0YBRhI_0vt z6gJ8xle9;<$aSad$Kc9t4i+IgLpjc*P2bo^iZ;47E|1SvYd=@*)FDlgAL0Xe5 zbN1K8mj_dYin*y@oXIJrO5^^ySSfx*eVYtdz)Oj5q4v6`F^!?*vDoevBI|x@k z=3Xc^`pA^!A;R_c9jX|tV2UhaM_&m>$bRKhc>|rl75hC6y(<#14TO8J-Ip{ORNDm4 zE`{yf>ZUW$N`&|%z9ig1$}Q4)ZL9q$iI1dOa z^&4C7TZ@ruw4MpFle64@S@3|G+PuCGC$4Yq7}Rj=lLdY4J9kEhhDxdadx;WGQr38j zL>|&M81; zD7C=~Xa#33r=D8wXXOGHu_YhXK0`K4r2Y+Jw(5U#61_^HE|Z$!kG%q3bHr*8xoxl} zVoo}!RKw;w1#>6Y!L-7<(n@`DJ_Xmn2dC$eZpOlOy(&X~TkkldZQxsZ>*I1NEMuDK z#a4csu2tJbJyDZX5A9{rDguqWC%O6YZr1XuoN3o|aV=bjpq9#pPIquX&oNdC>EM7i zowN$uX!#x`MJ>OghqE#kejBY1wb;3?@j5kF#R#z7qUh9|cKBG6V!oBN3N6KEO)FzX z83*?&U!1(2v~m`{3*{XL2a*`=wnS~$D&a=dV+Uty{*PLIlcmcMC&1^{<>TPL#%}{}5vo<>BhIMySt|OB>JRZgv!fpjR?MKUptPM>b?f;JLNTSV z-p+xh8d%0i8NW>lkHG6a4&nQlSxf>1V^2!)pSmBHjSf=Gt$$TccW5^7uV_(Tw}E>F z8n#u~z*_iX#tLdtI9Ba8Xn&YFK8~eg<}mjBsoP$hgcXciM~d{V6WUQL=3=fPxi!5V z_&5ycU0CKOu-j5v^+|SwHxWUy>#gqx9<`OAje`74%(nre^t58#lz0gK@+L9tmd{>l<=QWpv0%PF^ z)qFxNu^4*_nyDx8&F;sX8b4Dil$ljeVt5ssM={q@ctY)s?iOdVKd-*Use=!L!BSH} zirP#Y7tV1pzr|Q6IvwoC{trEKfZa&-v;$LADD78@ZH#{`JXaxBzVn>{p^Sm%$3ko5 z+I0uu$$2p!GIC8Pbwt42VKWAw}C#c zLa7CObiFSV(v$wI^i znWC&VizN?mC=eh}Rm9vDPJ+%Vr;GXyPP!NEU5H)gUYQ3iUIA82XB?{oF*_us zD*4j0xP1V7Nw+^vr>&zq6Y&MlDB(Adveo}xqW&Pf$B6AszaD!D@pf@iKI)a;v$YUqYf!GR&vxo2BaZdtfuL^U+e}SnP`xvE8pT+M!wTx?r zzVqln7VI4xV@&6Gzm}=}x?(u6eY~xgpso2Ro7JYrIijW*1ACuF3XYzFRM^75abhg| z;h66PU7a_poSP2LeKDF2&Ls;Ar83N4yM5_xtS!gS*(5%N!>-I&#;k(OiclGy&{Psd8{j2*zfldvtTO=#6fG3+!F z+gp$#ghUNrjqRc7pm_#zWv55?Cd!z=TYpkZJ$Fv2`x2$1qj8*es5pJ%9ml9XfzjY-3Gf+*OEzev zDbZcQyv?F_x;jo;Q7%4CrUfs?D51Qdfxi-^+ZO0CWoQrWnYm*dL6Zzd0G})yO9`d3 zSsMlL%Hk24bH%W62W??GT4;a=Eln4L;BM)2@JMN*B{|RJJ*R|iXv<})?vo>3o1o;I zDkbSSNJ-%R#AuxtdqEh<&JjA2DIJ?)o!GxI3vn7}8?|lf4)(noX(rvh#>f)dOI2+D zH5%7@DCQ?eVKbBNh+PJrUc>J_K{YCd4W-!_4jX;q=<_g)>J>v_DbhNx<>| zt4X8Ka}!k2tQx1v#MPInWz3^H&Z++awSI#7_2<-YSWWAnvxe4RwT9OJv$OSAtSN+r zGG6~k^ezqai4tBoYSWm`Qs=5TOjn_FEcz2BC2Phpsag}q|hAI}xTUu}n19DMIh@GDfp*F^ilo7(6n zCkomH%$aGwa!9Vmw9YtJ+!HNOZ5U(W(<9Hym)kRD=}H``3?L9E`2%^3JVU-D`AiLy zhY@-OIV#`NV#YYUJ!+?`tk!>m$~+PRwMq;AdFrTJBPZ5R?YL^B-_JtFPItL1&N0-1m{#`$lz^q4)Iy8YAOOzeKsJWG)WXH%^P ztWvpc2L}vgg;=LNBZY~6W=3F9YsueCDVeHLG8<=5b->Op0zWM$Ie{G{l98{!t%J^* z(p3YYV`;6+q}U`#bG=-_^D{c z?VxpwcKx^c>J0qEs~qO(7lUKr)=2ZW+ZL?;_9ssN(^*beBIBIyiBL{Yf^=}P%ISK@ z1$U6U$#xPX*~|=Z`$8tp=Rfguwp6H$^YjDXp3BpRBXOSoc_hx$*^;2ddAcSV=V>uY zIlKaU1FN*Re0vn!{1X>vOChun-U{b%ac2VJ)JU9*v!yR%l#4$;hl|@HaW2k_;AF;G zE;eqY6j~ht#A&mKZLiXP?2lN#Eqv~||G<;40jl83Z>u^+dGLyJdGPnSZDruWJ0h!{ zD^(smAzz)~!7YGJc~GC=!GGZF%Tk4 zA0{XGa4E){{VX3Il0Ocf%Ykk{r0euJ2j)e7;=s%Z<-m0#d;g6Cd9}WCIj~Xwi37_L zNlb9&@jO zua&iaqjN%lv8J>d;1S4Gt9{n`S=ez* zS#Pl3Sh3ag=Y==8z6O^!Yb%czV&^qJe?BXZQ*R=$%-h7k3)pbMqKa>B;0JX{o17Ve zBhW%T-u#W6bYXNOEC@K`KkM_Ik5F4e$%^6O?cZGWfy~=~fCSU5rN1rO%;WJZqhU$WAK$w`I36EGDH|Qq)W(#~_93Mra;iJm4@(g?aECDjMS(UMqND{e$ zEF&whHMWPGBw6a3aS2^BwwO07;Tr7r2(WCeNusk>lK(2K71`3=V>;OCG4mv0Z+h=9 zMC@-RR*UoHl~^rC!yU?k#Efy%7#)MOr=N*@8;sY_l$ef;!vCL+spLQ!WVkq{$ue(E zOVCXN@1h)OWrU8y6%qIz?8R728dhihOGqp{rX2I8V%EPzo%P?xNT;*@_AXP07qj%G zSVcSb(iMW{4J!6?^7bev(MxNz1K>OJrnGJOZ3b9r(s1H!LYbk9lMZ0sFW+lu2PT*` z3ved@pBNDZuzM@v2lp0kCKlSeWw1M@Sy0ZB)>$BRD626Oj)teehlWDsq$WV3ZJa%P zEAWbizeDL;_7W?dsgBB?EorSZ)sh%V??Hm2Wc zu``CfvpqN!+k$hXdydKtExwR3%^?{Zb2l@z-i{pU{?S@7t@ARhRRxkk8RyT(WAQaT z7EXnI0=wBBI_pn|oc)YP=(ppv7V6Z&qPZtN7E9s3c)Fih3pbmeOKHWCL+PcJRLjYh z%#bT{+bDI3bjVYNTA88(=^wFp58V)(u=#+PG^kA`7dfO?Jw6fjxTvgDIxT%u%J!oJ z#tet_iU;TCy5VIw8RsE?e>EueEqaLR^C|5$Dy4SCcxzlvDv(}{Rf|o>z){bkce_(s z}F)7`#;=Zeu!cJR+k%oLP=Zj8fde#&c?Bq*>OGXL@56_6I_*t;Y#*WWRc)Iw~B{bgd( zCOSVBNE656BW_DVyU&)c8A(RXNvLr{?9E^@o-MJYwl{<3jh5%?RotllPi=1Fvf0cL zDw~}Mro!q)>2q&vA9B+=F(+EhIwDZ%Atz@WRy9|qIJA2HjF>l+2qC!=wG z{{>o*EnOWe7d=5bH%}bumSZ5Ev-$CQk!GZgCkA`QDD&fA}U&{7%xTj$^ z=e zakBWYyQjfp6#J!W58N`kN*%RdMklK{9fbvkw)_*cYbW3x2E6UNu_ug@oxAslPoDUt z_|~_3M8k<);!g3dZ?A(N<>kpWunSS?9y<_NA#cO%dcALa-7b(Wg7xLb#0)eUzC+p4 z%VV^Ttz#>W(=(#5HCzKPWbA2De`R`K$;mgsZP<;%iO8Zg-F3swc2ZnGy_Y6t9pzv_ z#eUZYx|>D!j_964f%HSP8)s~7BK#>g6iBC{TpQhiF^f^0X(z=mcWcDUEk&ZPL%V@L zAKu25*z>5&k;Dj%&FRSAkRv%F8r;3WY`|%_T#V-{lDyd>bBs(ogVWbGlBI;kGC@@-D)u4!Xw(D3uZ1u=2m(mQ*0k+dCTm>&Q@$-j#ITm1f+P zWLED=%8@q9fH6lh7f2I5Ohvd}#WiK#qFz(chKl)p#@F^AP`SAb#`Fe&tp* z-hud3#2*R7?>+j9V$~kTy+KK60?uEJe!SF?HT2>TI=aL%j@ zr?1)-2~L^(9mL^(9lF8*-A>JQ;se5wv8P^f>PbUzN?r z!A2zbv#T?tqG&c+%J{RYN1Jvc>bn zX6)l%cS^^l;A~L!7D!KRx!~$F3*W)5%a$I7JUk2g*YutZw_i_D)uQf> zDuM0~R4L(f(0?^izt&KTY>T*2Tnot8pGxA^!V@d=x}yWx_w!f^TbEa(l6^Ax}A*uM7NJ(Xc2JE zU(!~UMCs+gIb#)068yt(mz_JmzO5>LYtdbAj-R<7g^iEk4|fw)TzzH9y#%|88$E9E zap1(@u9@#Q|Gix@^75ZA{o<3ZTxqwJF0vatd{rLdyDapZIYtw7_ zD5-qLc|0(E{>LYunEjbk_PpTqb7p$w>yS# zm&OXL&Gc^+boCG;{gy%FE%Y0A^K4tp<_+VU$M;pgFBxn26_(dBfxkcW9(^!TdrsGcH{Xz;=r3#g<=|D zWsCXu>Ysxr=Of8DO@C0iRAM+oAgLPOFu2#P1k`}fz|(YW(VI6WgIiV+e61mU6b^+S zhh<2>0;GH4@wtgYds)!|P8^1Q(?O(+!zq39r}8U$3dN*EX#_HNb)5 zPiaHk|xsa;GF^=*L{zVtUmGcofhe8u3;LGb;)LZu11 zTSu)M>-c=>EpP+f$;a4)9}bPfNsc^*H1xCpKF@IL2|UU(vvunkU;f_gU3_OstFEhV z_;I_iUa%ys=Q{Q4dDsGyix||NTAD9yK%EngvKB*^0AGuI=}(HToz__9%E!HbxH$|| zIkz@?7UuEpEc6=7%-lt+NsuP8s*_=xNGfByH1JV@SI#8{s{s6erRXM_jxrX_HeDBm z?ZS%x6!z&~L#tNdS$?)%KSxdU+}XJ`;kH*|?^)B0laMM@mSKugt2KZ-6F6spPSo#( z(rHG5PNu$dX;lK4asQWfpcU!k0Pj*raw*mMQf>l59=y^igpB_PK@SL=N^J^(M|mZT zo890Qm(fGLTp;&|LJ6nJJ#;iIfi&xI=Syc|f^9gk1@aQHD&ZqBiAsOgW~`F9#d14t zfW%!>EJ_O{@8P~FRc@M#J_e=PC59>C0NY8S90rsSppd6HSi+Q`r5qE-4jV z$njq68@dY28Hde_JRoaT$Qp{33Ke6b(OJ(=ITM(>guieopjDy22w#{-j=*dP;6fF<&zmxn)RrocQ&?^an^7Bjr-yL3Kk7EHSiXQ*4&#gj`ME zAA)9|1z*UwDQ{}}&S^I_C%Eb++%=5Qi_mj3o0o&2o|ME~&fvD!hAKb&;UNX$T%{j#5ICi7Rre-% zYi5b5?MLOyyV+L%0RISYC(`E;w!O&xFB8}D$WpUdgMFapDsGbx_ZW6NxkJRPp{w~5 zCipW#4r`q^2oJp0YanlsM|Kagg2i2rwRghODPnUKUE>_kEMYT`WK?_wZ*uGx!Ukb= z&l^lm&JHQ1xl5~{MaFY3#O-xC(u2rp=mXB?1HmwEdTD{D0$n*U*FSilm!Y1h4}P$; zxvJW0sh>q}U??oDRM$KQk>2zz8@}H~&&&N!C6n&_&n5SsQ!-v-7OnBucgJh|^*oew z;69#G)HnHTeG~VL*9UoqVoHo&Qz5|~Ej-*I;~>VK@1-=oI3hroQS9m|oT`bCkF!Ag z_9dv}{x+3PHk?k(k;deV3f525^Y>Pq!EJ~1M5$Pgvk^JczmO^gvIcbmO%n(8N$pG9 zs^&p{am<~n((G$!VR1}M-rRbM%a3v#mw2pMjh#@5vz=-@T~Eicx#_=Q^ZLJGbJKsp z=Fk5R*wA|>C>3yi-B)odA1Y3|;Uw9S7h?4DPLh`h#`>NRlcvXgQ@r4SywpWchj{5t zV327>Z8$?JKY=qO=B@RcP2bd43=$p9^_bj5Z`8tRSyFU;Wt=m$hiEDE#~tZ7>GM_4 zfg4QuUqc2&o+rS&tDXNkj2LT11s|Yg-7;>u(BPB^VkW3Di!sm9l$&H?U73r##tL{P zUzK;;AR+GzXpM~ZVYKA6AZ-uzp36XssP`;WRBTU|jzbR&2ato93wv?H3XvA=hNoIB z&B?ix@Nujk#@^!?do%`T8WkH(t)|09N#iqm4D)#xDaIXBnap(l?uT6-+3cvib>D!t znD|S5#Hy(#8|Vs^EcqOIbX^)Pb%gV9y)>pt=y|>9rSjTOsNmG(l{^5 z&~+$YCR|6oz|){PWlA5zC&7;Ar_m<$`S&Pkq2B@6c3+F04r!tjs_E^WH{(q9jefEz zX^`hyD{q>6ZGQ=HS*6TT_bw{^WU?brq(XQ;`dU zP{-WM#0IymuLCPqmei?q%+(%haKj6my-IXcW=oCoZ`~!(9gN8o7G2{rab5u)*517# zCYi41KhoP(rf(Y*k}4~!D)$9Xz|NFz0d30B((9s{L9M`7R?g)Q(VmD?Dz~2$XQ73eO6sm*A21T=U2mC^7NyMI z-62LeLot~VkG&vzNuH*1AUH?OV~*~QN+F!b@DST4fzK#bGicBKE9QqBMEk%PT9J1C zXAUR9HKO;I><%nf4}HaO}sAv-zpT#(4Tyi=I;REkQZsY4;*p*X@g5!uzd@ zRt(>Oorv|ww@hkPe;-qSpQI&2_opdmN_LRY{oMT}v(HrSU|zUdwo0e(VDtWb`~Mtt ziS+S&?TNhSCE}T1#moLZ5&wTZ|F^nm+GPp2yUxLB9OnO3_J2!{p3_eHKK@Ogv~9GV z=RW^Ep28ld!GC&E9M3IJ;f)7ccASp?3CDjgNArxsqx7KZl+N^>#*c^beDpcqA2jXU z_-_*56WnYbweK}MIkBNGs?Xp|H z4;rlk(!UEF4`x~;!2)YIXttgX+O0!Dhn3#xNN^_vVR6=<-n)WBPFOc8R^iMlWCB<( z?O1O!#aS-8F5(V(H>ch_vaik|wR^}^Sj;@I^hx`iJ8>Jygus#|FF47M>pYW}P(8{% z>Ry6V3wid+EJ;7Mbjd6inN)Nv&)}Sw&Ohoj2Pn+CK-XGb*=vJ`({N%rY58H>k{U>= z588QnP2t`{-1F-2y*QY}&cW_t63LQIjQ$n-zBWp(!G$aaB}oBoM^^r z@+|oACE&w0x#bNC>BMMW?UA4bn6VuO=^dP;d~MK?mU6f_kHy+OqY}RIk}o<1<;{58 zF#0psBf%}s=%IM}^xQ1$zfHoGt`JP%+2~PKePYC1k^eKw*HG?<-a%>EJzHgb(XC8iVA?_`w9I&i3Ftw(|Im2Jr zUxH_;-`Kw;^q6bQX-@-VGxp=$PRQY4%6Xd}`x3YzqIBxa%SjP(7W(OL0W=fi8x2+G z;oaod^-shz+h2&^9|L;Jv0wq-z7J?Ep9k~sb~3pH;~8AnszG4X zcZZh4^Z(=S&Eumg&%W`q&61f(GFgCZhRI9mVFbREv}Czg&XVS6}XV`MFx68|$=A7AjK$SKsXmzum#^`eBsk zRvJ6UE3Dzh9-g<#B!47T(k+s$BTsC>+h4-YHr%kzrMobqm{%$r1r?`a0raw4VlqaH z$zC^Px*UD#d|K7kw9(i#cC&V78|*j4bIKoqJP zttwXeg)KlivXYd4qH+|d+y-a@LV_OD)>gd>D}iz>3w>jdH*UGl$RecB`=(GZ1**73JspO{9LfgL%2s9w=kKMy8r|+ zcFNHJ3!a1>n*5~ywj8$wxNU-zrxSI&3AdNi!0ELpqoHY>2>F+TnBVNk{O0h_d1=0f zfH=wr`Nf&9$aea@>pMvrwX(P_?MVl6^G0>ol0$(}Wr_cfsh*-z zAU({4!5^n*Qob4dNL%d)S@`F}+c4Ky%qN;xIxC~6IfK2_&EX%^0vC@;p4ZSxrW>OLI#bJ)_$kg z*Je~cQJ)LOGro3<^XX1~8SeipoRUc?0oR-md)v|8TR|N#oxel;5cu$n1AWsv2HbkW zp%tK^z&4Vs3lpqmjga>bhZ?cAO7M;N?1Il9;A87xn{&Oy!Bvjoo3r0)~U z19t30{ImWa_s`Rv@uf@_dS22nj33M9-gvrZESG!3={>46k<3AezF8s&xT<#?N z$HP4V|B3j|!T)IdPdc6Cbo!H>nf?^~r#kKaH2ki^FCCIc(;SQgbBfwRpgmVPHVWF@ z$&S82y5mwH)1d^WIKBy#052@j(Gy5=d1aUC1vpEXxuUlOwh?2m2W^{ zxe&q%9G~2!QUEcXhx`WR(XbBVC*mm=xL1Xi>bGb#?e3jAA?2K4PO`W;R8C&D8)C&}Px<=dZ zRoCVN#-H~ZO$M!gNhcPy(I})bXp)&s8d;r#q(e#^uH71kirRxve|ec%9<406+KVx6 zD0Kj}l6(xx$HOEC{j@-s2iMZ3e2i_lrv#340`}axHnx?6Ot7}TG~X@R+fL%%i&K6M z{W6kj=?F6ujJS28-Fif)9wm7gC9#3Bq}4D{xf7|=Tn4uIK_g}l5W=9bix{mbc>hA1 zAwQGPtH$Fui@y|O|10*br?Crf(stskQXYHuV9hz)g-58&X)^!PIn_4T1xe2`XlGI{ z(H$y-9!vpc{x*0;Y#hmTRbkg~9-?sFVHRjNz+6@W7%gA6vEY7Dh~I(pYV7#OMPmtt z${8L7niKp%VCxKnSA;PLG?Q>>J6ba$VG>K&*X9w=naShd{wF>!j?}7iO=}gVXO$~>1ul5sdHAm)l zomVI9`4DKob8*)JTrko(@EyQ?pc^v{Wm2bfkX$OS$@{sL$9&EXI`4qb4;j%7zMM+v z_%>VW^eqW)9x|7vDWtJ(L0(D+Zu{02d{1fd@=>C+j8WZFF-u0lrO{JBgCu&2=&uB2 z=qgFBx`_7DQM>O3Qe3{Tv^xheDE=3qwJrw6!==+)5n8J|kogmz(kcH9TFa)moyp|3CoOE4nM%3{bG zCn|mY%*2;vD%DwxN5=V*>=doE<2_1r&-0PF_dn<{nuoj;jWQ7DT;Ih_Z}5;NIdK%D zyNM1l;k+K|GP+`v?*_PTqbnLR!i`Q@+!VQP^1JWA)1b<-to;;FiaT zkiw*MzD5~M&}6%~gp^F!UBhk?tqfmfasG@}jF?Z;j!XhQLh=K{p<9k!3-R?;CgW?e z>xS?#%9a5NAEPu5T=?Fv8un;l^Gq2Q|1;=YPqMO`A{@tKMDeZ&pTexHWkLZHR<0*I z$#$K#-mD!f>M)av6yJlRf$tgNcHDTH-iX^V<+KY}r&Gbb*oo62JxOA1CpaAR%+{Vx za65K-h{LfH{2O{^XirP0JCn)0#Y_8oMur>x{Ke4Ap6k1Eq%^F!aa~+NlP9?grPAkg zTQhqCiJ4yp+?f{wX_;RHY?+@0T$$YgF1X%fn$G6*cFhtaEqjA1bVuG}fJZwVdI1^% z({N`2srN4xU}1enl23Z7a}f8;M5Pdag!%&YE!+$K2-TO}cBb8<_*Nr*jlbhMO>b1= ziKoj@x=E-(lV_s#oS;3aeob2anovI;?`fJ(s`eyKP!rIb-FC)q(9$&J#&=Dh{a+Qn zNwF9in*`L+9t7)b2?;O(znp_ZSCN9cO>wI0j^5hejKww9NvKBT=~>SaC)pyMxIr6#wM0%iR9I z^a@coWF#e*q6Zv9x?ndi1iRTJF}rAsCs{5PD>7_FiNLdp}y_T8<@atmDVo(oX>?gafucG7^#?tp~Bt|rd}fBO}7z1|O> zgeK1zjf$)~R-vs5*pcm3GM9E(YW(kj;`iSw%L*hg><7&x?+ zOJ;MQ?bUJdGTkiegGmfD+t4mXSS3AF1#I_KL@kFPn_8(^+870^(Tp2k-0N=b0 zrwB*G!6=OAXq;2HR(85UH03|kwXcfpHi2*1j+*oMio4LEZ(&d9W$={~l~n^& z0_(9PaVS7MD5^WjEvBc(f`6a`S2huPxjqRpf|9-Ok-Km!sl4Lj*B!?gaVTSXe%0c# z9mV6cTz@^7-j=(rP_gp4s~jXjgPtD_odd_Bu48`Lo0kpFH!thPvpaSam&jYU@Zd?5 zVDB9cMZr4VmzZ0dw3V6E0a&JMeH8d4YF+$dSY!=Y~>sefZzk}@OqpZ*o=j(FTBSFU0v z{avQ=vMBHAz=Se~mS>s#d3#PNoj%DXsntG?c4tprI_p$V3s~K+KkYy}gO3g#9oAVq z!8OM-PJ3dV#XE31@ErXk|9I`)D7)>;SDB=C+!RF9Dx=>73S`A9AJ*4PSZ5WivEN|b z{VE`Xt4eza(2IutM7^yC687~o`|igL+9rL|_k9K421{!i3wbIBB)PEm040oHrxUvj z{3)8-bRUkn!*I?J&eTTUDdnz;#@w-J*4uQ-aUk7!aUNit7r|kpwc=j^{m4xDSPKJc zaOfM1wI9ZZGOH2N9}(NP4)h%5Lc13zCR<8d29QbQ8s z8^(A`>R7Rk=qp$a!hTEPC-k2Sklf*ENH)=Kk5L28^s+;Sbz>B(!710NI$vFJI$E$2 zsRggL6bV@0mW#7sZRn33&p}rOvbjjvogra;dldF$aX`-*iZh!5}4>gntzKJDG0 zQ?h}ToeeBuvmyaoXo~BO(nX*`S;xZJEbK*a&scyDLu(|3xEr=V86d+Ahqi!1C2PlL z;LgZs>1DWS*bkpnonjo#gg=N#Il_VaJ86B|7D2kq3=KinaSPJFWj3XZbI2VQ<@bXh z1ZI?)+%sUo=sr2K&o_DcY~mL`?)gNfT9{hSs*C1w3h=>N3{yE+M*iBkf_bI4I9A_K zdNQ%kH`5$^gm=!)F1^VQj*VbwNa`fY4AfYWaRv`g)A$m`HdoDLqLkl+(`Sz@73xi` z1|S@997^zX^u9%+UTFrM>g~wE8G{glc3~Vk;aZm*4cF6fnOZnSLH%9t; zokh9xD&56*`?YxGS79$K5AhZNKYfDDt@YtT!n{Ge9O}b$s58#TM~6NSIMIhr^kIRV z)#sZ!u9Wh8%5$UEhlJu{ei8kMGz^o=drp`*We3jKobvRruK7@JY3%bdX{)<&TCM^Q zrMBaC=x3T(aEBpVBmn8a9IWMO1}~!1>n6SOPxOf!@gLDrS%+_Mv$@o% zNm!d^6CU9Esu5}M51W<#VWQwR>G#v9)3=}v_;|EI{IxcqI&V2RQe)uICc<*dnCA_s zX@S>?dICY}F$1hKFtMcHbWO{G>dLI9Ri^+qhkZaQhXp*PdsZ7(onD!};>&y7GfBQq zt7R#yiZ^+URXU1ld69z*IrET3k@_RL7FRf*t>SIV+FjUCqf{w&}#ArwrS%{)ohuWZ&!|#1Gl#bS>mKEey_;2ygqhkjp@QUk$Zr zH&t8xDcyuQu7iFT(6jvDl>}HIC$Nr>0!GIv+^L_y|G)76dBBJ=ekxnQm!&A$i4xTX( zy*+*8yl{iRuHWinb9FK&rQod0%5N;sKQdXY)K2JvvOerZ4Y~eGPqcb!Cpny^NZ!FK(7X@g zK8B)y^RvTN-t3&nYFaEB0I8@eOgK;=jo+TQg`D!1i5!W8sr5?*m zNiKy{-~&5yk|&i^gI-`^)k%0t(`}yo2y86#4Zp>1%I<~Uukw_76?;{UIIWHJV+DUH zxV27{xq67wJfV{QyMW!~Scb1Tu_(>ENL;0@s7XjU24@=VzE6>kF9J{snCXbl;mGXDYvO zL)HN+9kYPse3FR!Bs(kPu^z*MIx`#^z-(ioC;KhqNPVGW#A8icqc{;3=)_V^*z5;&YR`ev1+^{(T)NEx!&YBe!zg z=f1=_zG&a&A$l+dTovB2%fl#7!=Fvqh4T`vG{)|BNJ@Pgcv>CEYcdesRI4M({GqV5 z+W}+~^uJc$hczvcpiJRd`_juSzZq}W_6PW8#49`(D?1=B5{a=yi_!IOF(^I{`2sfg z9U0-GD2Ed467Oqk@!xQ+&|f*aihO>j?F+A9t&H&7CVtOh%sD*^J1ogf{gkU{(|pEi z&vcE$n5@0yUL7IFXwL|T5tcUWn^kqzX0<<$O7wKVn%M_#;w5ks6>t;30XOk0a1(p9 zc0qYLK4&H@uiRspdF6ovzgZH&w}@9(47irm9iloUC zaHRA>D?`#@%rnEGjabtX@GVKEp7^4jzG=O*$_Q?e2X#NDwcX6V@&nTX6q|YGbBvO$ zx;z>yy21eVnYlDxG&wGe8It9K7GzruxD;kDNp{vknv<7u;j_h~J6Y`|4UUK}dL7?D z9ch+%8bD(XdpdFd+Ky4i*N=hCu-_Cq`X1p66=wcE>F(muz(HTBJSpt=PJ-M)I8-@& zH_lLe<0Nl_GHQVDW^zgDmd>6twV8W+kC|nZcdDQ5HA6lw%&DwK@f9q{+ z#pus*%($m8{y2qa*=+Zv$ExQW+`-M&9_qE`dqv%qa}Q(A8aE*f+i;-mDOHVQ8y`%W zSM){uQBQ5>P`e$y=U3Tge94%Z>L{`ou??H>9*rBohJbb42Z6+K?+4uD-VLOUdnaHU z_m6;U+*^UC)c%Zc4x`MgW+#^`46nnub&H$eI~h+kuMGY8$q0V_(gPHl%}IrJz=s!w z_~FpPkuM7mK#%QGf1Dek&uMpd>-)+MxM9JZd-%mwptbHp`jOefHvHl=y%T?W*=aZEmS1B0|MYpc=5y`I$#WT(LGM+YL8=fxXO9AWn?m*)Bj|1-U=K^Wt&jf7ay8^E9A8B+zWUeIO zU_@&yn~#+@O5b|@gC*jM2f>%p+PP3(@d%q+2Bf+VFB;HCHRzAGk9>Gh7f5hQW@r&a~^RN#iw!&IS)E%)ey#Bpjn)IfpO3dgIzkmW((bG zfXAHc@teWj^?XRTqIsZ=UGo@exYyM6I&X0#`!`xN~qq$7Jjf)0ozAHKf(CjcFVXJq)dwd>={BfLBsO zbQ^KLw`%lho8}dOV$2(0IwnB&^$?^*LfWZK zrMfa#0*1p(Ljo+Lg+q4^MX)1)tqv}>6}QT{;G_C(zZ$w7wRE=8nidAfn{J9}J?5K; zudo|-ysvR3=PyTE%j2bRC=W4!oCRG~9q37`_{_mv3CIKr$w#{Hy;-Jo`PQqUEQFJe z(5)5M_Xx-D5b8XN`}QW!IN2m6mBm})g(ldR6!uTUN!A0558Zy#^0XaSL!Y7rVX+C8 zeV+4BDI)iw-(j=}J9I5k$|vDOt-Q~pykj6y0$N5O+J3X}jrP=NUdHCa>RwfKIPNx! z__TW5ang|dVR4fFitVA7ft&K@UV#<5?9ky6lm~}(-6-=?y0w2`IH`?z^h2Sv&gZW9 z?jtT8c9COU(CeV{!o-W=TQ@+r#)uJPLXX5~bO~(nY%);G3)$Kjcr$#n_qy)+#39gH zVh_sBI2AdjjBjcxPL$(dX+6pkCG3C>d?9!qnjFZT@yoA-U zl|!M~!$$*CmL5YdZ58%ty?=~&1XU#8c8%v@J#3!CfG@dSJ)RG3|5$@xxMHgkl=p|0 zNpz-bytTY<^(wC97;dtol!LEP`?(Hhlx;egF^6xUSZ57WPdOxWM|zpVyA1!=l`Zo+ zq_mR8ThlOpb`Mb)XzkBldfCH|DcuMc@8GVaSHaT3enHtYGz9x?I!LooI1Y59ho>-% zG7TKmxtcF={>hKzuwBQPtO4+!_u}k3cm6Df%JX$1pK|jkKBaqP9PY=v8DoK&de&h6 zkeyc3J~r3X<#a46Oh}4fl+*TO3J91`MC)|!VOW;{*+Pm%`E9`eHUFx^#yL#ZIFX%d z!x$O5>YQSmsDf%`rmnoqfRaPVV-&v%wi-EcJKSdt@gLe8&Me-S0IS4w8)^1d9b*e% zpIRB0WLp%2yT$MP2|kklu4PE>p5l|-57)xL5{%GjZe#2zUUov9%rvi5+@8DA>pf8? z=XMZ3gVtCl-LEj3ZXV>Z>0QOy`q6`ogK>@$SBeR~McocM`Mf~CWD17H+2H#zf zDagR6^{B26eqZEWkFN@5Nj>alGK}kG`_CpwY2N##3TQ8;t*%(TbM?8^3#2Sl+M2~{ zvMiY~yVjgrlSu9d7eA=EA3XP9VkO+aUi@p#{p)kTUO?`L7C)r9A3FEYw#r0P%5N%u zlW2*L+4-9@zcHC=a358pX4p)Y8r5zy#kh{vs1BP6_D=Xf8qSbBsMnDuDeQw`%*QK_YEnFx<-HOETMpxvXU=@h1HQPor|UnjF!u&d zJlO#R6y|dYtB1=`NgUN>cv@Y1@l14mj%SkVqX41y#VN%@6xIpJ2k5r4ls3tcZPoo9 zu8%L|9@3PWc5A#xFVA6e*R zon!qBtRqcB7^Wdt91MLr{C0w;KxO?%+OjrWbaA_bj z{lNZM_%Cv=K6+3O8lxVZYkuE6#F?xYaL1xt zfi#UlJ8fX5$z?b*kt721bU2iW^uMNd6TS`*$^(tZmCB0@aDy@iL+=k;gIl2^%sA|t zFOv~zi+hG?ghtRlH)5`p_ie?!Y`pU4BT2wz*}5u9u|rn@x3W3PVGpDfeCucVeK~IB zJ)g;Odlc_QoiOXz-VI!lD$IP`Gezbl3#h7?+*N*4?s$3e&zRsI{o>i4N~>$3DwNGt zjgP#3+2DA@{cgoFcVdiXaZQgIlIQ|xhadZZ@tQGR&RK6lrCu#R?dS#Mp zfhw$+t6H_(e~;YPxJSo4iQM&tAGK@$l)I?CA$QCDHQqIDl=l8Nw144#e#siQUMj@1 z2Bmpp$tKT9`LBU2)UR8gHM?lJjp~;>S50~ZH_eWRkptCrzS|!2ctuSQSNK`G_P-2Y zJ=z;`Nt{sQosV3s6W-ANEfc7wXW9#wJYMmzdu+@Hi#PNbmcDV>Fdo0c4;H^$0k?fa z4_}D(nLy>>q&M*7mo9S`F5T=oB0qo;FqTn{9qi>(4q)!kXnY4aLnKwmwS+^lupwo{ zjY>9L%fKN`0J1Y_8F0IVV3KKSNiM4kh6}RUEHB$|PUM^UUS0e>i}rf0)8|)y?ro@a zEICoxPYt7coN z%G&OhJl-a0gZC`@mCExTkoab6#w@8IpZpINu_L91|9 zVz!sLqqoO3@W2eX$I3Ub1wsR`lpI{cdDVT~=7OcM`u8pyCYAT3NqFV=->EuW z#_jqB_!q)**w7tt8(^ykeRTWcQQIlxJMb}WCqKMRGHZTFi+%?-UxL@wT(P z$8AMV+JqudcRPi)=(_0LTY5}pmvmSvbU!FP32SIS{~1y>T$U)6Cwq*>Ej_$h*Sxid zW#3ol`p7ld{*TLs?1cKSD)KAeR~H7z_LliJT1a~bKg5qd%3(PNs6r-rSf|YRX*Oso6IptZ&q&w z-j^e!DK)>Q|Nbq-6M4#k9;@jkj6#^jspZ zPBzV3lWa+isb3>xoLm#7Z0wJ15i+6_U%yrRf22Q7`(N81ul+yRpP>C$^(Sio_xF#| z{-yqC?f<@h#x_Qq9S1+*Qx1NP-&yt z*hVcj!a8xHAE10G{{$@s%##xQ9F#xJDJla-zqC-zv7#4gR&-aR)L0X>+TP{919#ka zx#Q~DX0`xU{xC~%`tPK6qxCQ{?>|vr_>5-$Cu+;8Y8-2;`R%V&K2ZebVDlXsW*6pzAO&ze*;RpfT- z+oGR3uTD8mvmH|MbI+;9s>SYes>O9q6};=*#qP*F|E2q`a*Qj1T)pj^d!qF5PmNLe zZq(R$4wN3v_a}S!nEaT8rw1z%x8wZ*nwNtWc$ajS76>c)!bII2-1S=h_3?OO{~+x=_Y;%$ZQ_=bgQn#Jq( z^+Yk4+x-c33)Q4KcVf3(;@0h?8BeP~d5={}tY3&(PqT++{bSlnZ4yRpM;~M_RIT@8 zoDKXO@oIbY#_MmZ?TIpCWX`V8e4>mPZT;vWAI&&Qozhtd`iRoOSk0zb6gxwUi8Ox{ zv$`KCWnji5cH)m>8@1RN^Vtb=@N{3x{pZ?F7DefPp9*F;VkaPW4t6r9yTT1RYsNBn znY#k#nKE}=!w<9kh6}XEM|5|Aw>g26tw&)W@+dvI*J$o1;)b?StQPHtSeyf6=6hu( z`)-*J#+oJ+!Pctz&z^n3SdN#$tDUevs6_i+EzT48oL3+)yjqa6g%y~%0RULjm zg_#(AzM-G-rmbZrna@_F3EtGT3D7QhCnW)QE>ljgRPF`$40qcC3puQ8Nbm~^7Zq<~ zCkFi$Yq|VHFYgTmxQRXI52>u1&%f{0=h_p!eF1*rr{{OB74j26(`Rx;J-Q;4uVO-B zqW3~Tn0WI1NrcwrXTF-~B`Jhu4DNS^3Gh;CD#b63Uh9>0#|TUI%Q=vXj{YJLu)^Kms&gU{Sd9#>1Rr z)JR?j!fr?*PnUgfGoVw)0*9KhFd9Rr`&L8aM^(j-U;D9wLB7MCqZ0G}ykEdzWx zHs9gBqRFq+f$Pfda{;a3F~rz}v!2>9NowuYN6~%z)bs2PkC?yKDaI6eRG~oc$U~^r z2nE?TsY?~CZ^Odn{G>ykT(3d4K;{E_p5UlO_|Wqz*!<}@MIvTuo|ubMftk*#&ToJv z@UV2mn@~jYES&;Qj=z9*7ur?m##mUNv$vOJ4P8uj<@vkPSubmYjQfPDTf;fgU2OKf znjiV_(%tEtx7yB)e8(wrX2Jv-k zE&7HP1(K+m&Wa;js!e5_`g8a)B8^%AJ2)lj_og|$EYgdQXL7Eb%aOMA6VkWwOnoYo z{pI<2>3>Yi_A(imXKB;HkszM@?O`GP{8`Yrmm==hAkDw8^NVCb%uJGj02qxMaz=`S zgnkQnXT_U-Od z>Sq(xV}#9kd*`*dkN#WSH?+9INL<&y#l@M^f?g>!>^6wM5WTR$oLPO?V>&qrmI~OZ zF+n!wCCJUU9I=uHObtTER4lel2>M_0^!fkNtHW$!V@I8io{%8p1rDv~8;glK5HaMbIV9bfTd^+WM^1_MJ+hz z^lTb+M&8)ww6GJ5Rh-P`F}4!{ZUXF7+mbq;s4A(lbaHuo-en-Z5TC7Uh);=P+|08< z7jHd$u03jkp^L|wzQr>EV;$P;HtVrxgR^*DF4uMAbh5A=h6V0tgG=Dk+jZykE7;9| zYCJYg+z1Uhu6HAMq(eD|-RpxFdU@ScFHYxG?381kKld7R6NobqQ?9TvQ@uNZxwl3{ zzwn<0;-t4zc6hJ~nI~vcZRa)4?`Cl$?urd%Zv$cUX^kE?I#aK)Vxh{&=iZu?*I`YEgR9lYByeWS&)dTqVw5 z(0@ubYMKUS|9>*GKz~}5e}vswsf|jOmh#b|H!rexGPaKcKcq^$|CsD(ncCdL{J<~cZq5$nnt1@4+0QfKe0qNehXPKMevpqabEbk%2iJ;no8q^Lk zwzn>_;)j9#(tMm@!K;$lo6ZDkJt|OwVnyEngmfLWH`e2X6xTgRVrQhaEmSiRuHVm2 zSuGVv&wBE`x)T|=S%r3U*bUg|_|$_yc-h75vX0uRFr$us6ksvo#H) zaOgk6jU7upxzb0f&}}cABE5e3c>L=@mR(TD53+^1US8Y{D*6FwH`Z(Q*oV+8e_6t* zzG{K$aF-VfgWQ92@W$r%240ZhXDcl%!jsLvfYMVhkVIReNcTb13$t;bJ_-AlDzDPy zikx`ABro;kQU1s6g%hsj&$EMkXr7k-6z>E{806!!y&H?q`ae>Q-3O$f_rmHF z@5@-1!}+Yk;dO$BD3scI3&+mvERCvxw#is_zG`QtciINnAPZ}WBvr-csD}+038T=D z^G2t3MPgV_2+CNYLn7Toen7Yc4y{W!AoMwUI6kd#mO9R@9`m%VN+S!*jPpxB$@=n4 zU%(2BElh@T*aY0mV(BSJ$}%?P*j|hUyO(i{8{k84Cxs1HPO?>68iTQ`SP*Ie31B8{F%mE6&<)f^2SNHUha4^*rrYp^dN1LQc9u$f4I#PFZ6_UGFyC zew?$#(yu#p?=g|@G5CHF=T?&9G%zY!5qDwY zGHE0~UE1l}Q=d#?GOWt_;T+7#>LkWNcJCOQ3VpChPS5`&Cs^Xk-|tc6i#SIOP;MY8 zc>VJdoBtN`%3WW&K}AQO*K#|Lx>0}qED9sjK$aMmNv@)U7_UOt*hw*6|8az|nYyhQ zwP@uGws&qE_2YxUd;S*vuuP&6*ThJL$gGiLGpFy{eP1F zIk!LX7m2+|-^*DlROYy-a>p+OehKRt{|MSFFL~ZOy+@j>W?9(*!{vm+i~-9fx0(ft zFBni>E|hMgvI&Pg>`6hcIE0anGwDsQjm;k4C7^T)&ZQfqJMR*vden?6Hm@o5anE;M zOa}0ePH&QmRlAj)tOhnqxHFiWg;``O)D0MdqKZ|e;PQ!&F;m_Q+6-!7YS^`fffdmv9_ox~ZkJl6Ch3*VHjL^28n}j=eMU7}q1kni zodUZ_j9KEFaO1?Yjq?jVkkq>eDSS4-HG9NXXn2N0=YXbFq6$Y!RD+8o!+B8coJj5E z=qQmO7n3_p&g-s|nBE!&JG+G;3p)jh)>=NTwX%+|(|Q6mo+ybuQR1<8TTxT~Jd>Sp zhP9=3Gug4{tJAIrV#T|2@berBe@DdQPtWuOJ&W#XVXwg2z_^ zZt#@C+j>qul<0k5YnAr{V-HvNe7c6oeqXit_x66ehJ`hNYr8^(j~)&!4eJgrR)xVj zZD)&M?{fZH=m$&{S;qrXf%lh3=>8pcX(1n!bfgt~>=9`*P$K!>&HVYchb29*cH2Eh zpcGK3R%jPpFCUTUYluFe%GV=Q)8lL;LaIo1lgUNkYW^Z{r zFkiLV;(K+LdH9dSO6%pg!iWn91FUOQQD;C9KgMYy7TiBQSz4_R zdw3x7vkpDDdSprIE#wK^@fZIJeP-72;YBR;-rA0KiOGbui++7KSulk3iB__2{1jsf zG7hPXJ-ngkvo%akq=!FS z1G`fHqla5YdieiK*q2Ab(l}-uk78x0#Y)O@KCI4=M59yNWXR*>>tqSFN=A!)+3|n~ zlxXNz@Mt$HeD-wkFM{&XEUP8SD<#8`s9po>MtIWBB#TzsJ3>x7L~(u(?fP)&x8QVW zk`OhAFeV-wY4uO!s9^Y})1V>w-bY9L{##~eo`O$_*hO40b-at~eUzgWdL}CwdG9h2N z9Wka@mGO{rv&QPhnKHD~p!8V7kS0u8tfdp^GT4pg$ASJs&1z9I;(ts+%@%c_#X5k( z*Ue6fk_*;O%+p7}`5;$|NO5{w@w*y^jzP;skl%t`Calm=mjYwdD9F@E zkl-EC_aa4f5!)f~0ZeGc=5%?OL4_zY(Q-sNam|n*JC(t8l|g){QM0V}K0z=D_Cx z(k{gw04XrW831*?fT8L38mv&HdkGmDd{6Vt$ItGs14wJ(}-(unv2Omds^P9zWB*y@s2DaOl_o1F4I#&R_YD2gjO>E%V^_5_*-;dFE+z{dvvxyd1TA znrPXzCbhh$FqLh%3*nlyFHJJr+>CP(Gd;Vy9t&o>DT`ra-49cr#s-vE2!i-hKS&)%TG z>l&;iQDUe%iIF(@?s>p~j~(5qZ)P0xRpX2?4Z7ybi;@}yJd+y=KvxuatxXJCd;VQ) z!Tfok3;G#n2U;q+iOF3C?Ob_LLUXd0-*Nk*xYoP9M$y`Q_g%oM!ixA8IkA;`$&6Z@ zJ7;Y+!$sd>@vTw*hKXw-4ml_TXT5A}joU{xx$P?HYu*ISD`@f~Uh)}=1ua6%xAlF$ zKaeMq>vhCg-}jpX*J8zCbgzd#fVC-7N;CRMxOp0Erzne7x8XFd91fc?A2^zQt{sr{ zuk$b`IB~jneSlhFAi(Zu4p_t;7gj1}VatUoP`1(F+7dEpICKNbk$E-;x~3TSws5E% zXSivQgswV9_Lgi2ArIAcL{1MjguQ$=vVZ&myJ|1?mPnXS@#PZqJ4voCO81F2OJBUS z;8%36PC`y;urUV|JA`syPTsIrIteN*3DTmv21be70C^suO$CwS@k^!+#vrHTGk(SB z6r--Vh>-f(o8Aa=JU^(r62fj--gkUyVv7})X^eT8+XritT91++&zN2~;tT{s4eZ+lR zb$L$-YlhF`BR<8|1rj83@=cJ>kAeReBmOs4vyPYpF_6+(dqZklGo%&W%6=c4L4CYh zjif%ldWmFgc?{Ccr}`s4>D9(oyEeL~jifWGno=leGw#R#IR0I$H%Xf3t@CC?W+=wQ z@k_NnJNEK1Ncp;vSOdOad7^_8qL5Z=F20c7H*7%@!W~Mf%H;t1qy(0@NeSln#~5c@|=(KEZwjP zfIT>hgSDXv#;5_l|46Z0(W4~{`{IzJp&xOBJrVLYyam}W-ZIZpi*up`t#tMngBrzIu6ZHNc*c-W~6R8dE zQph(^zrUdM`%m+|LCg0|nd)&X+Qqy-vBi=>+Mu~2J7{8wQq9!Dv;z|{(Pt1hh=B{# z4pep;1?Ye6`?H`aN=?Z6t8SlLIP<@Z%;VZX(W?&^RoSA0p=a(vrQX^B@U zej)BliQmq*F4tCuE^YtE9Zv?|asexqz4hO7cZNgL!M%xa zchs8UP%7lkS^E#%o#9X>kd}!f_H_V!9sWp-8X==iP7#4j|i4(d0gt=-@!?gWix z1vN?Mm`v=7?#pwkk>2_awZh zfYwdd=sdUbj1O8)XsZy~$E~DQQ>p^oZIGTPpGSQ{s{w72r`;B=$EnE*SB~ad3s(YM z4$ZX+>#+$gvK+=ZmxGduhU>8AS_ao>xL(p+6$qIO*YlcdA@C+rr7pva4@cquELNWl zz69hM4%tzruAlrLUT`*llMip8qqq-;I2BtWKi5cAnpn9 z+D7C3F)f`YU$$0;5Kc&Jc^|_#tYW%pq!%j3KIT`ViGK6*A*#MA258TCG~i zztYBBmmJ+HXl}h$lXv_d1YlziF-{Gy!W*UYfi{2MkdsiF(}sjosrWwwOP4HaHXJ&x zeSH}tlk(}%Tr>ObIj}!4dL*a6YB}wdlSgurHTNg}rU2Sl%R8d=vrQh|YSP@twGfX3 zWhl9IKGMn2=0JnyJG1YO1Hb#;Z~utj`~z#SE<_7ev^og28qM+4K?7C>T|;IwU(Z1n zb?jlXbz|X^#8Db;pV@59{jLjZt#DaRZ#ER@A%k)F%KGxJy3!$GtlJSC%wW#6zYc8T z*Ml+KiFT5EO6qhwgl%L+Ftdr9e!H=-=XG9aN+?WkdID#lSj7vBzw5a?;JSiatFp;a zrnBukidD${{7oi&8mryXV$F<&HBrlcpaM1ky>ABOc+7+;M3OwX>(1?y4g0NjLg}>Z zhkZlfUDJ-WS7s*8lF6puEG8XybWf;m=GsHTcP|ID+B)77~ z7ac6;*(pe~@{9IA758iDTCwjj4aWV9@_Q{^qAsmK#b&2N62~01HXeHT)jbT$H8Luj z%GCws%qB~#qmgTfRf6Di-5apN+O@G|pBSsWGZ-^*#jAITPVn+$OwmC*^CDW|c6>QE z;1(_Wtd6*~Y=IS6guvwINlF-PlKSuUn?6#G`~!dPHR;Y2F%!4=trPc)&_(4yd9aka z)og5uRq6-liFYIKSmlNPgY-=!>GMe646JtRB))kn%52RlJ47x0LyKG)qLyCY_svUh zw6m^Vo}0UPXxbL}?adFRqAgj*o?B#Z$Y{-{|`!gNGn6TfB%KVeR5JpQ=IBbJ5f>Uw(t1of#0w8#G+q`gT?`x*c5E)*f1SmolYI6>pqZVcuZYflFD38P$ru1H;5VI`qo00mjm zflEsN|GHWN1ViE;u@0;wvlzvC6thXY>7!f1X+X&N7JR894L4b@+f?7HjXcO$Wf0cCVR%soFP>><^I!ECPdag{0W?Tu zaA2hp!$e~rwY0_+JzEi{TGLA1*212^54pYneQs5U=c*adkFa}%T~mtO+IyDwL3eo% zxw7!Z;iWf+7Dn@5;8yK$WoZ5sH_N&N;q#UtJb1R0#01?2*nP_fCogTXc*MiMJ{l5#rg26`xnhYbSE7xAJsNjVOh(N32z9zIT&~2L zq8vIq3#`!yy|gE6a_H?G+#0nRHaiSI8=|XI`p{~8t%vNU4Jb$P6^dvBf@hT zlusnRwc#iS?0}D?w<^ru@}II@f+k0^F6d?wik3=T1K*rb^sL0=44qK)8BRnx{M##a z4SM`9gJxrx)KVjSW%seR))aiM}s4HJIu9a&vjRyn2j^4Vbj5lQtOqW z{&-sFAGIEK<3>^sEMs?uH%YH3{cgvbs?UWn*S0Z3uYB1-I!Cdk)-t;DjxDS4?hW3z zZ10uN^Y>o)WX&61aQv5)K^JF>RI}t=Xuy~&`K4u*g-f?o)+~Lu@{Of*JIQqZVr|uu z2kx`wPoB7Ro%JxcOc2dd;j%KRX4w|Wo$84{#FTx*{VlFK$M){mxO8r0Q%9*f-|8qf{O4jwnAipUQI# zk~wTWxXh6>kpr6_)vMF9I~>dERJYCODp+g0!Fc0*w;sHcI`t;o7}YR?Tn4zN!==|; zdbkSU(rGRoTr=PjG?xI^&2aIWi-+qLxH!$l!8OxX>p}TvK!1tXwKK}|~zJWOaFk$)U+V;K9J7pFMh zym$lTSl(2-T^rResPD06`P%3~X;n2dc6K6ZEU2YAB>N;t~0QY?sS!81E1|YbZcSY|8Uwhbj z#01=D;=qm%t7uP4Q-mKgC43xxPX4PP*|9u*g%~>(b8$VS=u)5ZRQKR^p@)S80qsf| zBDBlHE0u+e#>=m^9)2u^$^5*XowCKloU|U}i*_ss;cRO>#2qS3LJD(U9@uy}HuavU zFL6*wxSSN%9_eK5IEC7?qgwXmt;84nj^xs5$KJrLTm*sNa{<`$l9?+vge-v*f7 z;V|>Za5$+gzKx{(AV~p>!qE4JpX;!(4Ch&i>2Mv}R5@|&pCPSSEIr}j!E0WqAQgdZ0Y|UQV|8>gEomPx% zL3+6@tMWwycj_0AvargKWcKo_dH*lg@;7r6g|5Ao_f#HV;X0ahYeL7~%H~QHWu}oH zDc?1W_C(R#5m!=m%$k$dl~Q>ESg&WK?YJpUgmwCoT+TnIgR!Bekkb5eML6UJkMxTF zf@WI`_#;e=^3>HAmVF)IO3p*}km~Kj4Qg$_l#J-RW)iu2!9$%q_E%)B4&yJFHP1*3F5D{NN`Hv3k z+S$&?m+l{Z35QZ&W3GqgT%WFaez8$rww%d*T|PV*x@;Isn9t-MmAUMPGGVSrPzO-3$VGoOriDzubiYcvixwF zDYS0K-6Dlfxats*rggrWnA^Q#TP3Kc=?ysbr(=#g`Gc_kS&jP$##LPOYEePa*Quz9 zOV{jOdQTDfvJ>C)qkO7iFliB`uGdPJ+VMF!oJpOpz?L{{ua_9br%Rirqj(h~!C>Gu;`CDx#Ki2Xxs9azkY{ED`{5au2%= zDRSK_82tY)#@+dz{X?k1QYAbG_C`A!c5Gm?7 zbr}hug4?hZwF@AMXcq)3;*U_FDyYop%p{^Sg^E^1Vq2FRwwoqt`~RLNX_WV!_y4}1 zer|8hbDw>G&U4Q9j8%Q}hfovuobhSL8>4>5l;13MEIp9#_lX6g@uc8M9%$>WXzwkN zHW!>^iHjs}xXerFXPA-gH7g!Qe@%EP$;)%?W;j25qv&p3cUXfZd~N!VD_0 z`JN^G_{+RL=O8yX;WyuFOR2oP`-JmAeg-T1%>hg1#&T{0|8mFD_0HL>)CW+rU$gp3 zbFP8qFTQzJIZ3FnHQAP!e`k4>{aX*!7s@cu zZw2htlbx%ZXIH8w#CemN#qk=C1|wQic(P1Wn7jaECske8R@UQFvvE#+eZ;?2$&>J` z!b9-@hYj=hqs@_VeJ0#g-dYvBUKOQje|0#`6jgxD^!ywBmHheQ5BF$~xeic@R1!1n4FVMjr6vYt<@4zYH5Rfq9 z<&P2mDHi^*X!!B?_Q&v3Lw^iUa#Z(*V4>N66Qqw5rAy;|zh@xc8pP{h@!lAXmmwq{ zq7#P-CyuAwloL@tg!MO)6Bk01oIkdL$}*LO5#(&(JHpO03nR!=*z6Zp8e?G=u`n;N zFv%=TSb3RN^h06gF?U$mav%%@(y$T){WIn+dH-OKZbGtmWX7$dxv>Vv6%seeaB^c0 z_Gh>yUwzljwl%lXe7+X;im-nC#nF{7I&S5!9a?!>4>X(tAY7mhEB13^x7ayv#i6*n zhTrukoBCFMDj`C~!M33p``qDD9JHX-@?XMaaeRKc(8N`VO;-ae37Q<>b`c(u2>xZi z@*Z|85gZ}n+U@~m#{Qqe&POYfB_*;a{Zq5({JPoOOqkmv5I)D9=^R-pW~#C8P`7Qr z@R5Vz@n!10V_A*A6tXs((<}?s@-<<f@kUSTlDo@0nzND{AvK2F@$?rJQ9k zE6GAuiUlaoe2+Qp?sDW>7pc?zz|+*#tL5g9*q{S42cbozEort(zZZQv;P+M5%!?ic+VsQf~(m1z8lJ9Z0-9E;!I~tD~tr8Nyv4EPG_! zqlPU`Ge)&qei-%vA}HZCcFhUsf_0EKBA?A?edIH>;`ayU3dNT#iH$QQQ~hBdf5Vw* zIp4WJIQepkR(ktF{$JSqdG>Wz$$1aZ8}6>>#>V6BJFz~bjObr_kamr42cDZ^&3HSo zZsv=D^-~r$B_fZ+#r#j7fDtI3CZa}$P*$gcI>Fd+r3HCR!PL=a7s-G zRUM2wyLQM@>2>I^jh2!slcDoA)3zxOJgt$6w*`_9q{W8z<`e5Tw>EVfjZM(23oA5+ z*R??FOhtE8-*`<;`ffqg`^|c?&h!+Xt%1jC=M?q_J3>^xlqW;yg8*Ssn zdw(#c*~;*5_d=E=4)utg=KAIGbWx#QYpy80xR<*;9{oI3Z)N3=my?1&VKi%D6=V=^ zs05D&JSLoR#~a++?H7Tv&8HOr>*X*wHo6w`bn9fF_o2~~udK#;ik;(_LfbyO4*Wz| z8b>XcgTEhAX5&V8j$7Ag+MOWjrV5|!vpb+G2>gnaWatVyB`fxIWkHL?aG}>w|9+;t z1O0oQ^d9=a2xtKnw0&~ngNJt59mkL2T{p7Ie*JOW!lEZQ(Ow_)d=_wZLeExV^`QdTZ?6QGT@Z#y=U| z){Gqs#+8FVd~#>`C-#N#1ciRE1mv^^OtBdvVu*Nu{yt^FeyN>I#*-iDv5-SdG(N z*%Fz*$rjCacV;=Cow>l=L3Q|>hkVoB$z}Lvbw~Vp@SC%I=dmJowY;Jy(jS*$wT#RL zYUrRQRN}M)ekMldRYrFMde>6mVe;s~Vdbw(66IU3`HHESZO{&_=CSG0<&G;y#>qeR z{|{<^nn-fF)5Wi#J3xqV{d7~#uP$ zoU584@$#b>TQ*qO+G@ptwDNb56y6p%N&vXi6BKVPC+_Utxqj ziFL4SvI{;dY@Ga3YmNP!$AEJTcSR`rjbeQkC-C#2pMc*dnBTC{(#jWfv9f|kfi?5o z%n>+=QW`kZW+l3l3RG-Fty;#74|q7gM}z%*7BGikrGWGAQsE9CvHt9}q82|0xbn^% ze|;HYnrQ{x7DDFy3n81l6G2- z^s{aY?oCs$F7+z^1h&{Q_qk=?ar?TD!g6!*m4s&m{5Qxa#4$<39PF+FwqB*JUIxCZ<*g02Xq-Ltih&WC8)+7cvyJ}ci>@V z6J*@Auy$}K_=ko}?%YP4z{tJ=PKkn8bw||o85d~^p6a|TgO}Ig9+$H$^Nz0@+@RWk zb)d>3S<)eFm8L*L) z`92+LNXu$VWVOZji8Zr)s#(9{$@97P;S7R@`UK{&lB3H`v2{T^b!%WdAF(E~rTMf@ zkRJ$>u1~o~gZNJL>S5a=E|f0Kz+Gprk`Y*q`|~@cMYS5X2le!=MoDHswn0;$lms+O zd~b7?bU6$&8n2S{^*00cu_07m*WSDY_gpj4F6yfCI_%agEvbQBmG_#!ky17`t@-TsRQv(kagh>pP@*Poeyj% zRjD`QoVu5!Nf*)W8jJsJ#NP=tY}0nH@3k>Pase+UN9!WL7Byj#HbG*m8tt84&dH;C z)yTyiy;P^S_fikMrI&i(O}&;%aNEIO`-_MA_G2C%_R)KlM=>(W+NnQVS${r*`{Fq# zBfWkpzRhkYP5oX4mQXCku&RDDY~VpkmRlCd4rJ>_lo zJ>uvw?OH~Mm2Ewm(dq4%Ip}K^;`}%ujyAVj(}@l%Sv{)J!`i1hG&NUN4|Sx&Cg76r z^tzO?iPAXaA*?K6Iamxk_fxP^O_k31hDv_yNw~4k>=kkAC7?vA&3cqf$4a)XU$fVI zh}q-Ge{Qb}n)aKdAzQ^g+TE(EQIJ#$!w!)Z|8v6D455(_v_i@U{d1bPUwD;$&0=3C zqecy^Mqzg{E5WhVJ_dau;`(tMW~-abwF-soe;5sg4zLM-FDW0{_R!O3Pp`} zvSRPSdF`LnHt+WLCu6K9palG8k>$CepJ64+r&@Hl?HdI?UDSr6d@XuHrCWnF4C@%y z-aA3(fL;fh*0>R%BUTf>$I41pMQJVL>xWCGX<_A)P}(TIegb;b5%eM_lT;2Xzx6}@ z7Z!fGbPZ&@EvSomh=oU8zY8t_@rH{Ys9>CoOt)bakF}-(Yt75BJqF%rdn)`}dYhI( zPiK(s#E2WMNR>+qD@Rcevge|2=>w@!bw0_!_`Tw^41^I+ayTc2m3{qA#(@sQo*!rV z9`cYR*VwBJ$JjgT(R2*ZMWDa;Xe2LNr*mLWTa8sRnfcuvu(3G$mA8Snpejs&d}%@% z*~Q+a=B@I6-k+!@%)UXGZzxyT%K%x>iPUW&0VTXPlr?HRcE7#Kb!Z_=3*9jYm_hrM z&*1YXw}2CUL@(e7=z6zly3l0BEKm1B2jNoYUdkw@IRH8pl15a6lTm||N&-v8jCv#~ zBYpzS=o*|rNWV_orgu`lS4*XlbHI92ni=+Y>O(ZIbMpT{-p{0WNoyp1NZrGA>jhZJ zmLLa*)%Lp}B!YqML1kzU(zt00>hb@pV44$_xTl1b8$+vs?=1R7qtjk?M~v(*0H)g;Y+?ORB37(<0dOCeVD zw~v;#QZDvZRc@PRZ6zPRxat7j**U?%hRj;Cb0zAduS^|3%J?P z5g0;xRRYaQCD1E84CJJ}AqqHhHH@NGF-UF#1fy*A|z?FG9+g+ydY!xz0X^R82aH zKNn}Ve&yR}*tM=mnlG@BE4>=zA`<&QnU6=j5ejD#sXjG-hsL=WjX%__Adr%egJq-H#^E38b(*7)#BVM72+JSn+5ax0aINAg4tY zNC_7}c&Fff9&bv?hj%gPpZo7!{=7R?dIGXP6*kzba%)0rj-LjsdLZPE!mZTBHk16% zF!;dZ#$I;8hnqa4FbApq9WgwC7_h3v^6@@S)R7yCurfVRf&D1f3D#q*fgDhYplCM8 zv7zh-at`S$d0E$L-cNex;D!ZYyEHB0{{T>sdGK=v=8nAw%rrmbZjh=A#{gA6!Ks67 z6q?KUYz`+(nkU{3*(4fy?W(HL)FzF&e|C?B1jYSjaG0N(fH|RQd6?hGI>IH;pK+0xzb{m9tzYMu=a|^YD zpkEbIKE=1~?!-Nd>Rtol_Ce{6l*D?I?C)DtR|M@0@a`j+IHpB)_vX2vfkCP3`%L(+ z>EkATjD6A(wkm-5`{* z{jPz!pBb{c2gS--*K2MTC82}bn9KZ@wb;TC*)lo3J7Qa-Un$0#O7g7jyCd~;1oW3@ zRK-7`e^TEheh!zGXw~hmu-+c%9w!oaMv*d{gTZJfA^NBOn|*@6F0?y6ia|& ze)u3XV-909+YZW-a|M1ejJCF+L#2457flo~Lko*Tl{6Co@f&kaBzfkRlPd z6DiWL4(JOa-4n>iw;rLvE>WCM2EO!BSaUS&BWxV}3;H!7uzHnj-t$rb8cUZ;_C#3X+&n@F~s_i4ZeHIbgC*-z0?1BUm zY*ScZkCeG=M1C}=vtpjU_tW{QT~$CbNU*^iOOsCBpY4su%tX>^253dT&-la-ppEI? zXhgqe1D!iIuO_N1sKW1eR%K#t{v}9zjtQYz&~OPUZ-C27TH3QD`nG^kGog`TMcP+} z>D$$01x~H0p}sW{k+jFpV|} zYHPUhoIHD#PAX#S+Ky!wS||RnMtm5ItPZzigq0VNn(QWxX6&etx73r+;5Bk`)@qtH zL&~>s^PS2>pGidx_9@pPO>iS)^p&73NI#@(VJTO6{)f%CAy@>du%&Td6;IQ~BnOv3-A!4&*=2FKw4eZh46zb7~j z|K|rS_&+abZiv(q^lAgt1~z%S%iNTJ`}}0&))(Rb!%pDvn7^#3zZYD?o06jbjz|5i zcBM2VH6?(nPx@jMU!`|U!<42><^pM7xGeXk$6QRzWs!GWgSjakexUipV!F#~X&Bx# zhPmuyF1NssrIC8T_lz#aJdg=qaw((oyzQ9HNFMkzyfdMZLb;FJi%dsNS(?VNxV}Vf zSGG)PN`<5e`S>$J=YWpGSF+Q!9CQGECsKw!WijXj;E|;?;cTIz{M`+g3b`Wq0Z|RX;4#)b7JAIUx?JVarX_8JbB?GB>XpE-D>l9@29i zz$?3YUnp=+6*QdHLsDM5X=@-QRktaj`M%}cq`M(Sqpdc|XPE_GPCiIGHRITHRmfOM z`w`rX1$4FGsGO^{m&jvPXWM3>rvg(9w?3rRs;`5qUI-b$4?CGx0G*>C3^>u%HM+lj>>qGqP#C?O=oH7QjUa;@p`+5t^Ir(S+U;Pt3kV7fBrvjTP6DbYCu!t`Ei!c zEEzW;&YN(~4H#>wW;~v+e6(wO*k=S5ajImjT9TLq;-{J}>8^Uxm z62lEpVkRoESB zuj~VUv`-R$kQwNXKLdw4bANa0@JRtq{Fnq#)ko9b~ zG8s#bVFy926oSMd<;jorl&Cjw3O?3OdSM@XeLk)9V{|W#_Q)R!em>+J&}O)$f0pd! z5ZYe>PAm~LTIk0yl&R2 z{hNXN5mMfR%Ne+A*Qov5xhZgYo7olr+N(mVA7*;vf9u07GN=;b_CN;d36%T*Ma5wq(C$ZK2$IgOC=e2`@6b@=rR$&54$#S~i-?mzpKuln||eX8KRGf^nB zKnh`SWe)TxjgEwhiu{C1aD<$M;Rr|tX|{KQER%_YQ|%RsO}pN1Uk%iGn(xoFaI{( z`q{1{W5Bh}O1OKn1Wm;$~YnfpUGXoje?L&ev z^#Wu%&#^kO?$2|Ql#F)Lv=iEEVV!;wU!{6!N}JeZiIp#*|21bLmomjDU(q)vjkqO3 z&jGipP9^oDUqaioDhLiih5H_-4tX-Q@eK*sU&9tt2zNh?kvz`}4#I8fYtBd>uoF$a zh&-HUdC1wHAkB8pvcr0s-(}zGAAQrEv2 z5X>TOiB%a>(~XcPNkm?P%0*^n*e1WbdWVy*Pj)6PO zpprnHjZr5+UF_p)cQ}*F$oJMB!F;Ea8;{gV`6}1h=U30Nlg9YzSctih`~M8)qv{n z9SC;aAGItW?U&?ZNHiZe$HJUIn3*w(N^*6KqLj0Lr;ygf7)5!s#?m^; z(i*wskA0`Z73n*pVquaHgE2-?Zp9cyDffnBeE<|6i#_=s*3Os2zCRlKudy(55&PFM zit_hWjH0yu8KWp4UxWvG(H$)Ix=UhzE*g7lEKCi;yd9%XAig(a6s7fQjG}z(h{ayZ zVsHOL?DJ1X>Sbdr#0i908KWq7l`)D^S`nit7k>)#b+5A#d;Fd>ASISL6Yd4-MwKap z&#tylg(U>xqzWgaekH9J76h>$pgFN5{P2(TE(*WN-uYoKd*_A+pCR|_!;9E^M)+;^ zo*w>%y|cq(eDr;CxRAXw!+&D$%fqkw_-%IRJ|6+P?_c-o|I6Gz7IXg*CS@K}0&E{) zlSdBB{YwVsepRe=bC=+rJQV8#p!#D}68d5wM$HA~k5M!xxVch*SEz&P)eV~ zs2WhMF^W<;5~C=k_hS^Lv_D3j0JWQ?`+r&`nxZM!#llcp&&H?|pjO8yO6!>zMQN>! zQIu9?EUo{xW;_~A>%QN^AoiOtp^9Tv65`9dgt{(9Q9h=}C`x%oj7mbBQ)ARzP?KW0 z`fn>pRy0@1u`raf?h=ZRQIv8pIM4%#Iv1mAK>Zw}C}lZD)qv^@4vgskwl18Fj_7~K z!cgo-FQE>_C`#+SOQ=0D>IA;k$0$m9SByFVYG*7T|7|6BCz_8k{hG7)5D4 zcnP&MMp3whF={TTyJA!l^06RB%>{KwELZ>gy0A1lBNfC#P`X!MLQTGevcxD#DJ@3T zfEpL0PJkL6qmmHkh!{orH3wre*@Eayb`Q;DIyRGy{liT5K6DS_qcd4o&qy{io$0xS zy}$2yhP}V(`3HNS?1^JD)W3UfVDB$_s-iR1aUaL6WKuAFN=;y5g>a2wB6l`^)we$l zm5tmq&csLlZixQc&aE!w$F45wDqCH+bdfG&$vvwIo9T-r2a3M*Jy2v$d!W#nxO7nvyCmYB+vL5jD@G9?H>k{JJZzi%maCu9`2^<{M5x6zkh#Mduf)Pp;Jb6Os98&n!t%(r+4a@xzd z{Kei5mdXN_&pa<5&1K|P_uA;!+4y>(W#C&cxDKusDoat1I*n?T@&#mPNWcx`>Yt!U zMzt6xSIXD!em=eA{I@G8)Gzqva;FuVaXtzvcOhQ|IQv9u=ViogcH7RjCUoD&*Y^Nv zm793|`3ZY0kSJT*KMtA;LyI#j(tO(mG5KSYkerIQ3y%#?8J?W4IIBw(lmDg>l0N`l zir;`5N>0Ul6xeAZ+x{<4(ZKq17TX4D$Q_D}`ZWp$dn8Y76`#`BX$d>$ltmc36 zsOo`uAwLC~m?7+xi4=3W%XR?&NGodRMoo>W(mS% zP?$Ae10bp-+f)sF=2wBAIKJs0z{!P`m&>;2Q{VX!SeQ$jRgJI}-*m#+$gEL#O@C7m-qdKIMa_t*}=Q1aJe>;jjgCcZzaP_{%^?YQhB5*F!UO zvuvs0yX79~ylNOwt{g`?ui=3rkV+aF4`-3Qp>Bn_GCk~T8?&wpw2ASYbrEuNC|s~#mT(gU70)Fqd>%wt0> z%wo5bHZR;h$dd%{t)9v&{F)oz>A61BcS7gasckqbQ;J#rl%86C9ev)`0y%TJ64Jt= zydq5ZY@+-mdP9dhk}I|R9DLOS(}u7mDEB+i>Q2x|CspVFnH!omPO7!1e@$9aIfy-@ zkNolSs(x(;4{V2rv%sZcd3zn4x51G%?wn!gtwX162A_pX`wB7f6LhU3lXm)G)gjDh z+XAN2FMZTsNT26===0F;Z?W&&fZjV4lB!g9qmbI?EH$%=C7(Y&=(2AEfey0u#%<)fkBVP*X6^j4bI4S#1{U{HU>P)V z&=u?ND((`WDCkmGmUN96td$2D1$mGbc7&4njdus8!$P8VCan97$nP@zInKj%e@3xP zD~DZDoq^(7)umUz&?N{@*m%Th_%p?f7zD2SLmht|#f@~5^Sg!)E$mW1*4CM|VpZ3$ zVTrSz>(Ux-3S?WK?h^9afL2FwJk_NY_kJ-x{;P`B0qyp|72{1`K6q2bc*F6BHXPa z5&bk?Za7TigiABX>C9#z=>h6+L!AWliP7*q3G$gFbzAMqFE>xdU7(A&PgnOxq(GCw zA7yiT2HjWFmpqKhCvgjTwWQskt2f9>uND%7;2Hw+i+DL}@cjXX?1-BMy}nLJ)4eK= zGj1Ds&`^8*!7C4L3a*9?maJ!wb`E*AL|#yEv@`wwqn-BYB!gYjb>zuMbo^Dikm_s+ z@ZzPe&mYO{`t+e2yXKizcipZPyFZ4X`_vzG4!QrM&aCODk&Y0rN*DbFI?;bjukZdy zGdGa6SJw^HG=Hgjg;Uf0kpVbD8|MVF%;LtmPW48OU&jk|yQHr=QyF1X1>vMQTg+=X}lEM9p3F*CC%W{~Ii(yvnV<2!n} zbm-J!qZ`J-*AoNkY8F!LVh>FyEk6d(lhMHmOoW zw^k4Q!@eOeZ^0~(px(l2atyT0IoJ_=#ZET9g(}sFmgMK{&f^?#jkvTgJ7+f~cdK=G zb_@Ek(Cp&UN?{Flu6Ixd?1Za|@^r2CyxGT5w#QJP&x&UsN*V<@<4E0@C)G>h**_0q zXm7d%hOQRTMl2+Ga?~*8igejSN*Zo{fAFFd4^4rVm)WHC_g^PDlBF*L>v)Shv2r71 zOI%$>F0q2J_4w?R0N?U_7iWwQ@U7&Bx2RfCZWFmdllc9=+Q0J-M(l)Qk&pU(tM?r$ zGuMnV_vd>$XHOHs+5d&x1WBeNy1cHN|K#bs<;sg3D81Bm^CJmkOquy@+=X2$XePcp zRM4eY<#lOfOKh!>9j>BWG-S`7=-LRA9vpMj;fbcKzypPRtpr#q8=rL^}TG(v<*wE4&) z8&LaZtVWG}#7gi1N}%Kp!;P$|4zhq%M%=|2>P~gWJ$tHi5cEGP`YPOXPeHQ@Nx0{L zzfHFuY}SI@%F0&uYfS`+ZFr4t*RWR!e{IAzLSPeL#%%y_m(>p^U~M2Awqv;M5P)H( zV`w+PbC<6QFP8^%guynn_Pcps!1^O0u>ImAS<^oss>ol6)zKio(SmWB4|yZpWpK_7 zSh>AHjkIzfX|)ce+f(46K{6}@vM>x;2wD?zBUZ@0(1E`Rt0#0aK~=hW?3##LNNX(a zd{l$X9u;#bhf8%c?UZuzp8COZ`vS_4gIi;tA`sOR4Ij!cVIS8N6Ade2Rn9v%x0_|1@ZRsBtk}e4^KNLESULk5cEPunX z!VnI~7?k9nfn&JQHtDETLxU=|mT>X{;6{;)F$kPF$Q>GFPcYIy(4%puIgZehfCSsG ztc3=30C+m6Kj%8!TNz&EfU~wAy3VVlqPG7*sf*fvSa!Vm-eo|l@qB;(j%BdUb85i; z#5X`t;x0$}hW*k02Q*mp%pdN@P02z-2X}?+;U@p$8Svjpk{=$DJG&t-6*vKw*3Xd3 z*Rd9!_ZG6*3);Y-enC57&X7ri&Ii3rx|?is5DKJ0e!k}z>OuwUET|E#EvC5)6mX`w zOlvh^8YW_gypUlU^78S6=0ob758e?hwXLcm*aBgeskm0FT1@6LgtFYSHNaP*kg59w zXTm<4)7d=oQB9`U2E2?Dg4`Zdb!cZms`^BkQ!h(>+nqVh8P1wVXK}o|Gq@dY*U)`y zG_@@U1$l9Qr;qfD8Lo#kzB#qoi1-A=7uS|hFoeYxY->y7Q}uFNPg$9*S&(P->pSje zF8_jy&P^J}f?N~4vAN+<75p9T*IO~vW z^$a0%5UlA6vPz>fK@;35$WI^S(tse(eqW9qBz{M*q!8AMa2c$$lsj!3q0dlRgKaja zC}$j^@HZchr1SspcL?)qkNP#g3%vl$bIH<{=8XR}R~hE_1$pmbE(1BiZ&5Z!eismW zWF##biSfYbfb}bk?b#mE4lD7j2HtqFr|!`fd%_nH3%BbaNlSO%u#tdWb7@QDY|uz& zgO*I^1Je9QGo4pr&#ZIt*VR61lky$9Zk1?|^LsL#^Kk1``=~*l*^?`kjeZq&rzoB~ z5Y`H`6q1yyeY9VB0CZ%JzNcqE_kK8V8j>puX-3b)+&*~6n4P(TkdOKRowX{^miIP4?YtFpw1V4bSRqEJ+D9WgM21$b z04Fo}<(h4eqMn;M{3pwAYUudsi&LFu_i}j>S8-^m^B!j{Y@;=xXYcISH4mLC`!b%$ zt^krvt0P`a{=bEJ{(lMcMx2nNPA*fQ z8lFBHGDmuOaDU~#o%YEmxU>vNW^k|Qq=52Sc%s$fIfXqd51T1E`3IZ{%=_s3Okm3g zlosT$tXY6`-y0X!-NMT&1K3r`!=W3>q#4!#@3!orGR3DUzJTW(9zUMn@ce?O+qW5Q z;p)ct{|#;WGakIZ{1r4Fn$0+;1@<3#*i}qLOLm25rt(2|aA2m&Kfq-GJ2N{n_m!ge zBsAA8u{jA3P8Xfcra||D|1WdrF4hl7K7JTMRR+U^HPIQY!#d$fv=Zf^c zNc(Z0qWw@7s>?9=n*()uQ2lDRM_N!s%3^t{;OGcJ%;j5qc53v4g8{Uj^xUpvnQOKBrDqHNB3nx)M9#8Sr-n zzLUR~5g%!8YxmPyqsCXUF08nE%onOlfU|g^x-_yckoWJwjLS|xES*ZEL)vMNA)ZqA zG?tD4yE;=@{Qb&*&_n3^BE&x#@mK7BZtrl(iZhhHF%Dz<-+@Hvbl+cU0KX)|sRt)* zt3BVV%Fu&H2>aB^C(w~FH}8OtUwqhUbN}cBLT@L}aT~0XzBUb`a&l1DoK*0Qk7j8- zWbYCj`o@ehRYpLmXEsMVyn4vMX*Q)h(N+j6s?b`T3LG1r@KM3T%YYpeN;#v9my6)? zAK-@Yay586U*KDleXmDVup48L`?$Zq_Go{<;M8O$fWNK+nh9xy$N9C8T}lK(bVlXY zfYxkme%|iK>7-A&CJgk5f}bhu5zH%}5PsQTnU=8zvPA*qZ_sYnH!esr)EhPjl+r*d z>f+&BQrR8AsZRYgU8A9Xlw&;VVI8ExtV)zT> zpf3%tC<&UXlV2M&!r=yMW;4Fh3 z1Pt|mZbPjxiVHxk6@Y%p_2;d7N-nw{vPvm-Q|lXOEwLE9=ipeMP@Il-uKft@ zjJ9^+ZQVZ%t0|YBA|2`E(re53Mn(A-kVv;*SW-%Oy%Bp~--pWFnU#Fz1@tv_Cg+&} z878ran~;bZq#M15u`}hEVHHbqdo}jbi;6 zSUOjf`@!#$y(-A-*;!3$VyG7x@r{kXh{c8QGV_#Yu<}k)Mz&~?$j3} zL^Wa#D{Df#d}5uZ7FKZ_TM+NBp7F(JedCK|Jiq$P{(GR$BEt5{M9*un^ggE954sQ{ z`mQiF#gT?mB_j7vdqD&9VT=6=lw+NCN3sRyKgiAZB{B`hF!pZZ=K5yyg{>u`XGrmK z7XM!%JDG+1A#h5_W?nX-ee^1u*h$s}3n-LJLL(quzuWh`;Zqmi?Bj}W@=?2P$FuE{ z_T@63#oAz&B5gq!zhb>LLs6FY{oW#0YLTJTA|{si9XP#Fi(n*s)lHZ?R8(vI%1>}V z?WGoq)Z#4AUwehR$M<1QfwpM}r15p`VZ~qiXm|Z1_~D%8pE!GKt$e1@>vSR&@c;kC z?nFNFke>q~$noL~a=NYDN$s$Mee=isp6L4tS|GddH2SD-QJ9FLa7gqs90HG=KXNhp8&Y|=!;Jv;OfD@$4%zMILm%r#8P z?l+zBNUuOyp&$izJYVuG4zMUtX)6HEivq71}U|#AXQG(DXd#Jv9E{N*Y|=d zeElT)^`H1!#J=thPAvWeD2JJa6KAOzc77!PJn~=ZrZBsrVcun9Vkhe@RDzFsw<2F# z=D+E|o?w0x{y#PUHI_#%bC;K^Qr9OICe1=@SCO3d3Cy$>a8DwoU(&admFZdUE08&! zA~~Jt1GtZR6Sf9d##}Z6)8V40$yYx}O#TFq3+=+ugSI&X8nTwj>3FWegSN_5OV5MD z1a8@c$34(1xQeXKywU^9inyIB@@jT-RaX^i>#w3bT{#1JT8}*GTC{b1sv0_mIVdME zBvJcD+I6m>TD+Q-`GQwnqpsK0Epd{J{F`XUNXwanl)}ZHA6Z!fUP`IO%~fgZ(+ksM zsn8lz;MUf`Y71gfS5X|dVPtf$P^Y{U$Co|Sb_&y4IKIRs zayBw{v+rN@7>l;p>w!u>6LYE>7PTfK&h0qAZ1c@Qef$Xz_2JEUzl~>GwB9QAzq$A6 z3^qsY=F%ZoUBzMU11jpv0#GQP!`fqUZnqnc!;av{&35f^S2E_nGCi{&cNx3GT8cZY z>DaZBoxE~raYHjaU}0zHQ?M7HC`Wn)tYtK3sG)mj#^@P}yf^jmmVB=O{U*-vB}Qlt zR+!m=o0%?afyBRpk+YqXNzZRXl=Gm_jrHivcJf1LPuppJZsg>6_=)gkEtpe^;D>A9 z4vud?u?Dz_gWBzkZ=op5!s2Kh@QP>--|kS96QH?v2k==V^OXmjMB@6~-J`N-y!SXG z+zw#cNxy*K!1U6vKchJS{C(Knn1D0(QeZbS4fyp2hqwv&z9L4^Yv%%fS(`Wr=lG`8sGyw zd`?y|AB$o>zJQPU?U8gYcMPUlN$2D>Y%ae!=BpLHircx%SW1p;)Cv480%jlccYVxX z6a3}0tC=3H4STL^iGTTW2PfYNe`PHLxvGY*aWP+)!(J$NZ#ME)0AI)41HPVyuOaP( z4;smRB*iP?2RH@MI(P_vxc18(YShOZ$Q<-vyloE$OI%bxAL3j8#T)lr4$RAl%kv>} z$=hR%`cOgwYOu=Hk(B5_tUm7YldKJ&2&gQNd(j5lDco$d>hpaR(y~XayJI9bVWpC` z=Z?{fQ|PO>iAx86Y2wxBJ$JJBhwTxf@qZf9jGo)xkpycg*hyu zdqnGs+MyAhO0fY|fTeV9cRI`S4ur8Hm#V56?c1YawtyC@rnR38%(1E)3_y6$W`C=@ z8a*}xqudI8h=JP4#YvKM2RL~g`f~rpW4rli9NA%E^ze2)ZoX8tHpd)?*&)=L9jT5n ziB639eP^ah&1Z_GJ!c%!+hpcFHqx1xPv`n;AiF{R zdgI=wq(N2S09NHf3VRJKmKf8r}031 zRaGT7?xsp})<`k8i_aJWYcj^%A%VCQP)mjc4A%?^7*htmnbM&`&rnXTQAjN*QuRu25FwOt9sa zJ&*ru%09#YBW17wvj8?=7QhC~g3rp$Y3h5AEcl>Pck2h8hFhn?s>b0yi*(;Yl3xk; z_YXqfn@JeDL!~9n`S+LX`_ymNXd%7yj@{zWexZ}|dY9av?pU&r*WrTu6j{Gaw3)h$e0-Ntqv|s1On$Yg zYl$Y;S#IhQOmH!ZwXUR@T_)3YlB!EkAve6xWe`l=+ISib+~vc&O`2Tz>n^u<>2%cR zxyvYp(HWm6)tBE3IgQb|Gtp1X-8ybZ1%-!P33SIe6NO)$bT6bgM!<*3^i+WB*s&tP z@Pp&>756@vU`l@wVISD>;PsFx7>V2MA@NTIgbv?|?;m_BVA^}{LvYQ-vvkKpPXz|; zWi}tyQyo`9`<@U6QeGvwA60z~__fnet2vl)`jkcC)l!~&BJ`$g=xt5lbS2Q6=4%Du3N?TDYKXhbhVfb(>aX#3a1WDw~_y= zUCT}qbj!tO)9K|CA8r|pm>*{3!d?%5%`fN+=kjsumqD17&{o{wVkbeI_&j~edh7so z?wo=vJC*>!#)kCoz&`aN#&`=|0osO~-v4Z`H{khino< zon5=${^9W_lTZ1q>GOk61?&~vwvQ?x5h9#@C)crh#hQwQQG897B&^V6~N`%IpPOb^Tw!2Dnylxjgw4;KKQFtRxkH>K4ae*fq z*bi>8CLb0+;@EjDvv;k1xc6S?z6;#SAwZL$Gu$qmv`wd?zr#7rd9Z&>b{`bwReTx! z^~i$J9io4tCgS5IxLt_)ehKyVn@9BLM8B=YH(&JIT6{a{?eN6`Hz06`Vss$JN8sb% z@B!HvP|HF6i&67HIYIsO^`}0{H}Ozku+q9K`m6D6BHm8CfokJV#d|E?Ie4eyJrVB| zyeY?tcGP4D&Lva)NL?esz3R(BuDguB@_I#@)Br0-@mvHij-+gTsk(23-3H(Y(5 zb3Rio*(suY?}W>@o-QBZW=C?o1up;be8*(SXkUtyb>JwWh9;_Q6pu!MtzCrHVm8CR zSApG1gwz8S0{l_r5QsV|?7bD}d~s=O& z9hs2BBAf8s%e;IM9LzS4k;U2#$td1HJZTF33fi{aL-iBUKBbrrdotXVJKlqD-kUK? z?)P$*eURm2et@jE{V??f%sKg}6$ABQ$lFL88Dfj>5d~5~sSIz$;>j$?22Mt#EgU#S zpYsq!J>*(YKQoHz|4L9lGKzZ3WKiFDo@Q|jW7de1y@OgL@Doi8ZTz^Go9u;E$_t*G zSj{iM8T%&>X0x?O3A*vv@51GK&jlaS;;EdapijZ#EZU2wHYou8Z_kgQhw@f%^W}U+ zx$fY=*d&=7os}$;kAmNydUfv61(C5reHtqj&dLMjI05RnSUJ7`^;4`IpMm<$GseBh zy%jz46jF1r)b&XHJgfENa4SU)z|MuFK)2^S=y~9efxip-w1@cDRM!<4cg*@h+OBk+ zTo^psIsU$iLmzaGA5xKTbJ86s@`G9CICw4xAWuP39E$Q|aHYk3V(3)j=PSx{!BX69 zDay$pZ&9BhSsO+94ZWOe=Wig)MeZ>1IG@HH1Kk}^4`Vm=y<7`w2~u+t)zs@*kFOdJ z9q%m6-8@I*nwPisIFagq@2%P%vZSJ>o8DGRgKT>c-pNkf5mO2u1N9WKU{66a#GBAw zr&du%W;$4LVRybPZzfnx;?mT(X~9{t*VQ86B=ch+ORIWnV zMxIproj_PbY^vqhed}PuBA}cD@15+AkY!~>8IDzq-k$_a&2L>9RV%=Zx0Y>dut#L|7!!2nup{4av%x+s{&^H z-w;T^f5_kA|8s#c_`fzlXJLxrKA=NUd^fD3wiD~8ApdE|zw7MsRbm5$_$_M1{Tldi z7|?6<+$3PyyS@x;2hW9*e|3re7j$;4+|=KjnB`HMJPvz0atSE;(eNn8CMA<-arPtDCvy@KhT&Mcux0&4BiE zN?IIv`KO{~{f{dSh{;q-w?uvY6Nn^);(|WP?1kFokN*(v!)Uk`gflcyz2-#2z2i!1 zC}iOdN5eI^;`|HsasD}|sfVfW>Sn|C3|D2Y&qeI#qL%1iMx8;@-k+l_WM32NXW;AU z=-0Kb1YogI>+EN-J_)V$c`C7i+A_pk{^Yew5g*ko%rZzuM!t8m@ArAljR`D<2N``A z=By&b;zXK55!0A@;sT(xSm+zQDR5Dgak%}e1eZjtpIDi5>>Iu&xwjUuy7Wr}u`~lA|ngi+? zksK`P7kt#-)vUc=KyHE7&e~d0Ca~P?@Mv*|c~Qv*ir+=W3KYMKkPycGKKl7Z#nPXI z|KmW5%vUP#{Vpn_fbVw^_Z?&Ke?)%@{ttx@BkmNR$xW0p*!~maOz`?tMgPL{4?Jgm zt`_iwabFuq>odu$&Xk0@ z>U`pzKWq2;blsv*3O?%4A?m7LMd?)`)=#|H->UBAAeVM^y5oyvbzOC0%`LQEik>^9 z5jDJ33)}=PaLKbF#d{MFx_gy*2uZUtZ{V-hHrb_vj!7fAstl~brI<<5AoXT*Ynx_6 zzn|KJ5KBhDOHS7kqy1dlPMluBskt`2f_BGN ztgf9NRr+fw!yNZijB_;DhvJ@aLIokHiJn572c0Qe+0sXTCtxR?h8--67dwMVhf3sy zMn1iixSbnefvkqFGgKN{2tSGT6Mn3E&)Qlb$(1f`Pl0B?36i#B$`jKZ&)Ipe+VOWE z=zj%#8H^K&^?vg}%-0>F`(l2||FCk(um$;sjbXRn7XRwlW`3g9qbs0!o1KSj;BmJC zF$Izh0yqpD_`oOoe#2VIMfNS|Q*U2L`illQBDIpRQ6KG3YR_Dtb;scgos1rKz5yJs zeHQ{N&$UJR)pcPPdce<~UZu4+KSeD)&b`~6KS)*e!|^zOnV$Aeqi}ZGi8g`$URVRo z88upea+u~|`ZWh`_09BaLO8L$hi-(OR<7!5NF6WWZbtl?9+DGkWA|7KRD@L(={dmwxqt4}?V)ro;(Rj$J^1w@ zy~-;{owIxdWS#{Au;fzbCJ9oLy#!MCsmF1nPDcS-RNR%NNo|3F_B9~!M>C5mwYEb>BTycTEoUo zw8<^5xBO=DU9Amt9wVUhGh|z^cwab<;l5So`+U- zsnpy=9kX~j&+Y(6K;8B8pKh>~j{I;0zE|+)*WH+F|LghH4k6c=Dt7(+aGXEE)IQ>= zu6VIMccFa?PV~GrzDtN-YX=%u_eC!^KCyL}g@t*s5eP&cZKdVv*Z z-S2TCk3$_$&m)|bPeL#HDDS_Qii5_C12*Ho$i2`0#XIA2)4P6rkegHw>94i+Tv)FC z+556j-lb-sidppNiHKdPk$Uavhr4;D?WZz-V4Z`-`nDwKTqh!jFb&| z^u34CcXh4vrRM@%#ToGA4@CE!e;jA0I^&;+j5PfvBW(;u8u%?wfENR+2Q=1h>|=7B zv9b0ltPEssg|!aw0{_ve&CucIFfxD7#~sj^Kg{2_QQU5A?p2<}4q3)HGls`+sAhAz zD@cfRXW+)8A0O&ATTzek zf#u)@j_Jt7tUe3jsDIyvI&iT)IB^UIQ;oQnIC(6)~eR(LdXCRx#Z=>zR~^(IXcWfBmcr%fR8)7p-zw6jW^2pE7YF5iV`sJ@%v2X<61~w!14@EawpJlcLsNE*c#ZP>Q$0^ z*1-3_;8qvpGFE|`po8R&I{Ttx3Lk@2xct#smD=tj!t9`M?tSm0T0QnInpO|y{&Mv+ zDL3z(HtjC53!&=a(&r-mUL}*IKij*!OV1Zk4R4<5P-Aq@#?0bpyJUy=)9z!s{>y=_ zmX#mW;bg+Ov|T#w^on7asmn)W{XM~D20VP`)!zC#tTviEQh3icdp7uQy~-5CpV*>H zR|B)HSCK$<;Ous)b0_-w^`PpZ4MC?&Sk3}f;WjXT1^8`q7fObPQnclFJ%&O7*qI6N zCtyDX8L_$>ai>JRp`_<-pMbp|RCUI&xp9-w=^|ojBqDPiK(R})yxNYi}(fhB& zx-OYu)x=0BR<{5X1~yG94o#FW?{L(g6<7?UzFaLyPJylN9OPoBuztCU;Y3KD2=y3x z9%r$8xDDCp_g3`#xFLNwKdphK2ioDJ;of&p4QZXW2G(F#jQLo4**@AkqLAkFD%AB9 z)Uf~yhZ^krrs9N6bSQ|sPkB?{|3})J$2V1_|KoQ{a&j5 zLZP>d&F}r(w17CT?>|3yrT6U1bDnd~bIy5|xlzjKxi}wTKK5wLyi@Y&(C!6)TEI?R z4*YF~m4&2w39RGv}if^|XUUemV#GE;>xo38jKb(S&}Ed3_fAp*uZMgEVySOycyx-ZbJC6 z(<)H@@m(DL#&*#QGr8vBt+lEV62E2<>28Iuu#v(a?HM9<1|>@Myvs%~Qkgwck561^j=My1NT@iXp*_lZ%q>Y>?#GFGCZI$S`%F;v7I+rW zj%7+a)&@yq;E3)`-N*C)axB^&x}kg}@ECC8Gw>K-j3MQ-UXk({=F09LJLR=~73n3r z-1$d^R=t20n&4ZH+&}e?TNT_to}H?+mN-FLpq=(|=TulaxZHUgZc|uD+FtHlhL%DT zJfsUL{2}hX(3ZIfvOX9=^f;q&k#ZN=*_nnhpwJ;o z`AKpey$3m-uJg(5J|n z%N6(6z3xV`E=l3l5i8(9uFsM4C1`jA$4<$|;M-YM;>8JQt&@14sxW8iJ}e544X#zt zyXV2~8~e&7$WK#GpNP;rd;)bc;kT*?GPpq)r^t?uXTr}_(Fy-@CvnS`VQe$t-U|0` z6zL|aeYYY%@Dwy4MBBAV@h^ox+S}ENzXBFEqVYE>+;?Sw7Uf=yvTg=cqkWC0z3WO@ z_bGX2z@MqWh%6*A8TnVric`wEwZAM^&;GsfuwOJ)DVfq%;eMhJwcLVQgtJ9T`0nn* zdxuZAv`|k+1TOoV{Lz_9`u{KVV{ba#KOsHMwJo3$e>_d=>Sf$+0+UY@yg0yXWk%sKxo2g~dq1OvCm|o%{Oe zWTy#I>Qn_YGlEW6Yzqs17Zy14EifGW0yytxp&d2Ae!2r@QR_>PsS=1rdYYg_X^$!^ zQaDJdsrM_C)F%QV$o)lc(k-AzXSV(hRdU@dg9S!_^;AL;{VzasJQ zQDe%q)Z%aDXAU368)$NI%Cy6+!Y9eahg;R~@eBF(Wpj32vhceuZ*@2pu6h7kq6-p> z6Q_MEyOkV#`|lk5rDZ&Si7n$xW06nw3Ev(>*x^L}(r~;g>rjfWxFz)9kJ?4+{`}y< zNta6ASUEfPj%Pe7U)`xSBQz&h+|>NC>Z1wz!;wEd*LC0PCEXt`x%lvuTkeVNq&*04 z1AMSv1?g|R+k)4Vsa4m&?mYCr+VN9E2ds>vAoCP=mu9KGEKh&mjZkE&xBZ&;j>8kKz`-Jr!XO;99MuSry zzOzc5V;#Shhb|DD^W>ohmGgCHopXbvR!x^QOpMKFTPLXneVd>vk=nBjkksES`O{3u zkvx5~^k_vLN?dW{I_U$|d?)_ir9vsm2Eq9o=V<3DNff3_DrTrH&$d<)^>{TEN~DXU z4U$T~UfMg@h8C@oc(|87FdF4Nmb+GJ5GFeD_fEaU=>_L+8R$E!021wMP);6l8&~Mj0xL>1F5Zkf zZ*w{&Ml%6<<!tmJ?{Nx{QeH1De}M9>M(S9^R!&$Y)wBE1m-;*Ol0kn9$}+6j zj8Z3{EW_g4oQ%Y3a*(oj^m^%o!Sm6s6%P!D|Ir*(n_6#^Sk)TI&yRxU1pk~{9ofhw zF33SC;^G^fg8*p*hxd05^=YJ(5~*ht3u*gx(!oLNq^Is5gmRWnd;l-=ys%o@%Lz98 zojt{2Mk&JdER-TFcrXR0VFC6JRQsLJpydYJ&9wkz{#{} z#1d(VwMyCpY}hkPa6)!4e~fcw$LT+7+Yd9EEkX;{g?Q*5!Ke57=wbF7ouul+x z2Wut0AUN6W%wm&M*kN)Wl}$Eaps<#3l__;5+qi1r<^+@D9$?lg=`SpPcZkkY@=)Vi zl-_Quk{-pc+H?x^StdgE<+Dz1`#Py(P%JDyuyCDF*%m*Gnlr)0bW|Q`6rJml0&O3) zPO1kyEALme#X^>R#f`v_SiX(X7f1%4a5oWH{=r=i*p;|PPWow>Q}EGDxrq9f;#Y$@ z4OR<6K6LUZajn#sv_WEYEL`6RRf~0!UPrM#BdyL&(2ucJI+%1+&afsU?6I5HN>AOl z8d%Yw762K{2LbN8Ip-7`zZElqOG1y0V{@GXQeWw1`YGAStatL;A4TY%na@fWhCeGE zi+$F~c~{|ulC^Q$r`p)3w6B^tjuV zjJd&Jwy=z3U@%v7B6un;PF*D}ooWMa*H});Nk*&l9$>T%bzmlli75Ad`)cWO!fNR& zF4f8VFmE)h@2G4wr9GsPbecpb>5R}LU3dB_=|KDll=Nij7b!HeXy%N!?Vx$X767;J zk;P|d4&8#(eFZ7V`GE&^+0PpuZ)<|;V6V5eKGY>9r-x^65dsNP?jKxSj zi<>3ZH~*o@&iT%lk-yinM*1LejkKbSZ;MsaOv4@lyF4kqL~ zF*}jssfGW2W;%iCW~A=KOnAbXg?gD;Yo!;*2s_?HXahnoB|Sm2GB*d?%pv_=C%wW1KX@2WGDU7`cZT>xj-^cDusBc zY%k1T*)i(RU&>Pse+j#BU$(|TN=;k>ey<6TvGS&Q?vRD-L?>?7t7&&p`&3(NAUnjE z?ojTdm?q*r;622Xp5)@gw`+XKyxZIa{=FQB`xXEHV&|&Pk88%xCgSa>O~a_eFL%?e z2z0IW);HRw%ydq1YFwk8LJNgG4*JkG<@T{}wh8RzW~ZMtOqpGIPIY)qca&=ZI#fbB z$i05jWQ3(I9#YG<^Ye!C&dP?oEWEI{XQ)fURjlAzBWD=ZZCE3kKW@+Ch)%FWBJu?E zAK?8>r@6_vX@X}UW6ZL2)@RQ99iHdZ`( zjzaLa?a^~9vX_)?s#szvM+pA5Ejjo5?4{>6RV*!|5d3XhdhQR|%gQ!aEZapP_}jMZ z+{*07&TX!E>>P#QZ`)(rWQ#TX@v>(s9=9w)82+|BzU$%Q#%=N#YxWc8o~d}EjKcA^ z?Fqa(r+?gTBL%noMm0yP1jU>R_!EgAh`;uV+9GNwPwaK#mC8QmXdyy8lLMx=m|s4vTvatB;$ zi}^~q11_B<{Ytq5u2_rdO1V+jG0>~x(GM;XZ8rH&pRXnQEL+~zNAy?wO~dXbS}nNx z$9IWd8?pGdY@*pJ4o&SLy6t!Ae@IOEvSmKeZohfy;1@*4Wo6bb9CEhOI*+}ln&`LY zpT-X&y6(ZzIS?CjoLMBxd<9hoSq=W%j#!9<4wVh{6bKD?|_GHRJ_cO zbx6AV;$_t{xUqMF`Wu@siK^%9@R|SG%8UX(mKwZgu9C1ZcAF~}T6d1M4!!AED>n#s zo{GeY&;(!D!FN8B}bl9nzO7xy88*Ac7r4c8zqg#A+0Z4E4`3(ukGtrX8YHz z2{)BUcNr3K?>k-kXoU-FU?jOjiqCMh2|}?rPUnz5UFwq92cQ?qb5#3`q*g=U6F*hT zFI_L49DI*$B?QF;;luV>aUZu1U$!r3_Qe(nH5MORt*RO7Q`ZdhX=+S9u_oQ8tr_mq z)r|1zYX(CObOc`Z-ccm2 zEqcSC*^w`;z43L!21zAeQaPpdxf>-xtJ(1b+;@-EyqquHJ&HmoKG4eC7i?wz=iLLpgodmWON*Ga5+F`4#6dz(fxKSiiP zi@^=e`k)WHR`ee81YnstEhWE=14EzIYX_IHx>o01jeL5qrgoam;1%JH@#<_k?*=6_ zu}u^WKBUmZKpPhx*};uhB30kwkX98Kd_~e4mk+Na)kW~<7`#Q&s@xdwQ=obU?cY@f zuS>dP^gmQF-i;XV0_l!1D#RtX@jT$520t|?Zk-NZSM64zc2JzEHYqM&;syz|z|tYA z+HD$gZ56g^R@h3^cBz`X%O=zoNXLfERn2@m8j@@fZcc3wXq;yml#; z13U~m@7sWgLE{8O654o?^|7@DZE9^=`RwulY*i0HLyz7iKNf|E!J98>2cge~7zHY# z*8sN`P*HoIflK2}1h=WEKt+2kRBj`vh`yNvP?StMv42+qN2HWxQOIb$ zpenCG27COF5^3YIp@5K6+Aa{3xLWjHDtho3deJ;Yx0SCYon})dt!BwoqLlPop)r4n zUGf4tB~sx+yL2jnAR+()BF9Q1U_qwklmJW8QZV|tdT#;J!8OGR2z#plZm`9AV=&jrKQu+-TZh?>xp8x>4?R%DqAhD? zzO2{yT+*89uNY!|FBmiwmZL_mS5E}ZsfqPHBXR23T43G6?_1!jgtwTDKcrVrsPOQO$Q}NXS2h_28Z|uwX>I84BGSe{2bUNTMiT_Dcvz{J>Fag$3@F_JWOy&1_cN>V4qq2xQH{}n#YRT3<#-FxNs;BloEyZd;g~vkom&jrb zh>ac678{GbOdJj=k3g&8!60NE3Q@BTu!%xOk3O;*jaPUH^Ftl$RlPI=m=O!ihykX| z1f~ExMA7@EGEcOaCnD}Us&B!pC=_YEoc0V>7K9YhJW)b!)}qaV0DXqqe_*xXB!iCD zPC#U?7AvVn3$FGj3Z*+TI4|Zh-pWNG7o`tfH z%LDgb1{`MIKebKEMqx7DlP`TeNMBtjeUq&AJ_0<71r~}}YYieGB*n6HdWmrq;_UMK z6oNx$3Rhi-{CqX*4YbAr9ui963d{8HN)3%zcRbETA+B+1|GQ+Axuc=z=O|RB@hga*p zBhcQ#)x7shP%&S&4jKMsYsx2aKI0Bh&c+VVeH)XF+ichm5~>qx;(RH%NlmbPr_h6O z)tl|DIAz6vYE*a~nyQlMJwq-@!iyb~4habzetMM)G>m0%3Kw1}&H=8Dgf2E#iJ2$q zdC=<*ssks%O%0xtc82>DF1q_o3Va4i^G|kTv#NcTx(GbbYRF%x!oi-XT*({V^^H|i z8l6sOmFw01lbNsEjj)wt-@0-#n}w5^&8foszj88rZs270j&d@S8+cgv2Cb{EO6S8X zc>y*~aZ1agGuaw>mXW#8Q}uCsB~E6l@MFCvTDc`Snvtx`Fq;cr_dPI8apB=@L=&SdzDv)#(DID}G~GJcjPE*}54VxV zQ+cGd3~{5Z7A0;pzUy#C+$P_SxD4yL=hn%Y)^kc+7QX9H$2NH~;>KFb5O;%hml8J) z-*sry2{`~>g~`Efaskpc;`_^v~(+hhkqa}jID_eQHliM?C~Gq2_IJF+!&xb{f97T6Zb2x8b`EZ6*%!kK3y_RrpC@8=Ykz z#>+pQWh-%(m46I3{H6aa>%mJ;q;n76+C2C+;mt34mL=a8coCqpEV)02o4&6?6Wq-> z%Z_N^-_~P};LV$3%#VcMW&W>oc%Mqq8mDQ{A%=&}<#!oqxlRAS&hH={{2N*5VWADP zvS15(mF9;oG|&8s!o`l{Z3QP2Zeqt*N7$p_O`xYlFXS?ShiHj6Q0q^KO%;02j z(s2(mnM}B~iiJiO=E0*C8=wu434d4RhO9l8z*A_#Y}cuZ`7Vn2O@Q;Jwy~@lD@8HB zn(7m+qU9{=+iVw`R@?Q*FguKQBs->x)mof|M9X|=>YSZF_1M+&k`oq`&vwnn>&WY_ zIJ%iBaTg%hgViZdO*K@=eLcNVv4^?TbylD_nn;XFuZGtQFecr36DxX5Jx zPk`DUt?9#Kd)jntS(~00aL$8$VwTcI`@|jtFO=m(tMDMTgW97GXLNmuSD7-8Sd-?N zU#>?EHA+@Ni-ur<#>%EW_UvP7pSb;fQ2H8Qw7r6bAY7cEUZH=Pw3p^Jd0lE>9$J5Z zXiZ-QR@eH1^a|MVgBDFl>7h5j?PA8i083&DoSvgL?Z>;)WSo~7KtN#C;d3(6qn4xa z6u0YNMjadL3pB3pL%@g!A?-5e+Ysx)>rKHB@J?te)EIZMc0&Q@(&LqFD*E!Voan#{ z8{}-lPY-F+3OUe1Q3!e|34A3f75VLvoM>tjMob;9L+bO;Tx)gtDz+EAg}&~zLzWL5 zPTz#CV&s`c$^H08_?7}JWj)#o@oJcrX!Eb2hvhZ+FH+`f1h%>^14kNM;mc#tl(E?uGDE<0s}<$r&blS(Th; zI^3!^TOr>-KDU;td7O{;yC&9Y*>!yY6@rURXd) zYrUAETk^T%#2NcYq|#${(ORK<@>DsvFcdB_QCX9s{9XTlYq;&28d4Vh_Zq?_K3d(Z zPlLCdxTQ&k;=`%{v@G7^`ouE}b4nGS4$g3~hq-_rZH)Fn6`&rJfTzF~ehJnLjhM$w z_>C%>>tD5U8||)Q7qGU_yrngR>t9Re1@^b;c+Oi6 zuJQ%RJkDagipq^bkUd5)o&o4N^B+9+g0d3b83->jy9D1YE=cBw?~8mTkF65Cdp%;x zSF&M?%9{!saK$dr_pB=1)|cp*5qvA3tF81DyJ$>U&y*%Jcr`HdEi_U=IeE)e*Jqef zxk2jN&b~^Fcyx|s2UFVwozXW2tD{PvmS(Jp$J(gk<7-wyLy<9eI@(3trPOO?6hctr zo<8)w;|+?>e=}6+XffN0Iq*cx$TY>Gz0@j?pI<)TuL?iWRh0p4rqIo(f+n%3jdav+ zqO>PaCzX$tdTNy-8P?-x_cHBsd1ee=*t5R}r;~AfS1`UXz9oD4Iq)H>!X;g-l?^BL zX1aE|RbdGn;73}S%E31m%42L;%~xpvGfiPv$Y5f_?YLjJLU&IKbT;jBw}wn;8?}#M zYHirky)zs$BOW~a2?3JsT_Z69NqgTVkHovS5ie|siKP4fE>L=F;Fm&_gVsmuX+G6h zjCOLoTe)MOz_f2?X`TFJA-~>Hh7~pkt1EsYehK&`;TMaaF^67hHo=x6Xq6^{IjwNR zT!G}WitTno^UiY31jcfwJi#b@(!#Bo0KJ=IX2}z5Rpm)e9&1-h#bnSo;N=JQ%*Wd77^(~G zE|0Eh%!8-ODK^UYA>b9B8N-hLqa4RL^NmWXnD#gpvLISzUOaeQPTt8_0+<#53Ql)H z-p}-1h)zS$*ji3!A?y&S!DuEtBFRa}`Gu!Jq7-qqiLSTo*_hS!_9@_B*Sqc(?-gCr zCy%=+r+zlp*c62lOKoFB&|lgT%vV=Fd;DYQU13J;cDc)SZ7PmZF&5gjZ7C$1{v6is z^>+67Am{&ujx_OY(B-uvawruCS^>1HB|ySw;L^Yt`0_ zgk*pYJRix>&P+B0OpW&!>uPHu34I^r45OM4n&m><5VOG>>)X@Qae?a*oR->L=OJhW zh<7g;{)epA<_pQ()*p|Voy~Htag+VKW3Skm3$Iq4NlUA(0k?jlYiMnvTUASPv#F4e zVZzT>G2=^u2VJ_ilK`6tG$GXW30vUGF(V}h>7Yl!=~EKWz~v0^K0t``L;9oku3{JQ zciV^;dnfb*L4!V%@pf>0BXMjB+ZEkfTbOaP0;131CmqlHb|L&!@5Evicv)dp#W&e+ zR=7KpJ+PzJXZ9t#dEfhOT6M9LuVI2yoSbjElQ_${nuDR+oLmjH>7Xmu$&40i{v5K6 z^TV>n^qr)A-lp9jI+(9L_NO+zwz1t77Y(D>cS0&(j(@1{I3zBp5l|4IaLtlWyeN1DVPXLTob`-t`C|lVnBWw5dTRQS={rZL{`s;P&D65!ilS4<79GSHV6FqeQ=M|Tjimg(i2>=Td0_*krU z&_b6GU-xCJc2``T2<;5u%bh^n^h^z8L!qBtowH3IYqUJH6|niXPXj$&Z+TA0v$mxB z3$Y^YlUL=(2Mb+7n2p%-jmLlk&w_dVS_R#<`G@@Y?xfIe6jCasL!bZH}#@K1TbcPBgrQ@$B!Hp!AD&QEeUU zXZ7*L+wI>6qPWdKYb>=9ZFAH>npVX6JOpPBj8PRd-TypyZ+xBc-H9%O3{wNCk2)4y z!L^Z=#@M=;S_;+G#MLn`;7MB_HYhV zV0X0}S=LF^U0b)MoXxS6Ci-G(lUbve1HQ)Ndg>MTX?I);lYQZ|xjfOwPKw!n&roye zu~epwjZa{iHt1^$f7yK_bmY7k0tW-M<(?}Y)X&#IxM_v{iMgun*1Ke(c&xw7Q)A~& zrTf{OGWR-rN6>nRogB4a@**rbZ6GRNuG)zeQ!D)W-tLXtt9EW7L*xoR)S(}NqC6fzj)5@L$K%qU7*vldX|y z5#zy3$WP$>3eBUhElzZD%9?arq`uLzh;@DMX<2A0O<>QJ?(~dWFNF7Z3GG99^Rp&p z&7;w>+MquVv^G(9w10#fo>%lK7n&35xc8v35Lf~D_Oa<|l+09Tf~RJnF2)?`)Z#RJ zQzPdpw2-6=jYV_!AgqBOE&8aPWy1|e_mJ*{b=c{SMG6n9UHp5|{5S*VSa9OrYmYm{ zym)la+c?c|KI4sK^<+2fXtOuvw{lhmC-qkG*je3pE&8^W`I54|Gayz2q;Zdc44gdR;=~2 z5Z?9OB7Td>MSVQFC(?OaB;2ThRFf#)+x>J`wu>>FfQ=*%l-<3dkye=^KpL|M`=+_u z*0>Y&Hl0k98;3NqV}1zn&?|9kop^TliQNbZX&r|M#j* zi}dBSc3ZfK&iVDp7N&Yr`4$B#7rRzrKG?zss+#3wCR$5WBg4B@%&2DYW}XJLqW4#W z$%d5{C*E{~GmIHA`B)!Je*`So+WA1D-v(%Q^cD8gx>)Zf#=RH&=a_d5?`%hHx)-%C zaNBS`!EU0t5mYy*2vrU!r<_RVjBaYjN@lUj zV}D3s=Q{6k^5N4Fq{H1U)tU73Y23HlKu;E$*vV9v`260U3m0MM4m?huVV%Iv^&nAY z*vIhW9B2hC_6Fi_JkRvAX}G7k=Yu+`{WvJ@%wx*ck$xEFa+p;2l`ZfXvgD-zs0@mU;Nj zg%p%w%l)B&F(e$LG2BiXKNKCBL_?jGZCg~Jzz9-{pwouI>qlmoaah879yDtBP}Smx z@?5_y%5{S;{#7Adi!`oa_M)|NE`!@M>)VTmSeVfS5yE|fir{;5VO6rFOy#4K&k>ve z&Mhn{2JW**piMOo`_aBGGpzgVT=nBB+P98?=RDH+2YHg~)s5~_Xe5+(;R|`Y7oSIe z&9FxLcSZjC0qB6qpc&SGD;(7TEB##1V)4w$zb#;g6jTOAtgNT4d{M<37mr!1J4GSQ zKa-SpPLRUqBXnl704r)#IyC##sBo_0L2<5ujUv;*WavJN#?Zd^1Zv*jxXY7>8iFga-GT!sGfN?q@H;Oze`vfh-OQMdNkUPX-!YSkH(VD8Z@3* z<7d&Td#j(dFr#pzg8RxSU1GF+0$J#)N(T0vzlT2gDpvx_hfhKeTqI{ysm)YYb_6s& z6Mnr%zoM7({GgaLE4PYYqqez%3U7QZq<%+jmNq7TX_rYK;Sm#KAVXN*Y>pB zSB38jJ*NBf@Lk=L2YC$l{XFi8ZEy+ga~U4@#Jd(3nD4@U%buQ#IFs@@qS>-A(plZ@ zUPyFWt~|3?XrIEBRuH|YmD#6e%Qu-!t}J)NPG@Te~$5RH9}H z3vKEuv+-?it7vAo66MH0!E7ZwnJZ5!F5EjeUlU+n>|Z&Px2(zD0|8XJO zWkN|q&Fh;(e0HKz3M}h@Msr#Z$u7)i?)WgAVcAhhb^lt(x8&q%kpcX*` zC~}fysWcwgaeK$;_iQdEEO%eME2BFyCj6gnx+7yitGXXD`t#D6@DGq`-R0g@T6X`D z*2J8ce!QTw=6^04*DQHoH7$PmgvK)tp@;{r>ML1GVr6B4Uj+&uKitBYQ!Dx6wB@{i z;rmy^$!3dyorVj4FS9qr1ZWqA4bCp?mFXOGTwza!#g9rG7yfB~RMMOYg^M_* zDpkz@o>hl&1I?m0|GB8DV)8JaXt~%x_CdL6i8#w9y2V5L09OG%i=UmG=+;AP_H@V; zF-;UMHs}kn)<-gM<9{yFbg|?)Q`65O(g8)5(q4{4I{$|IZcy5oIUmYQQwQ=;-@*-} zW<00Zmc3CjsWO^WE-T>7?dHSXy(5a*ci88%o%{`x6Ve#y=S_{lHXGlLf^xEj!= zpc3AVBrEM>vlHFg;Aq#N8F7D)`*h%!gA-fAjJUrcr2l8}ywQ%U2zN|zn#bYa4!QFe zB8(}HXp?Re1s9;BSzZCfpL^NF#?U%ii|VtsU!7$5lTA@>7w{TP^VnPyN$D> zNe_&UTBYH`&jL4%xVep{&`cAH5SBYL_7$W1nWj{CGUaWueZ^RrS&Vf# z$`>1G48HE`3k{6wOnyrBs}F2ndWjSCNZBDBuD30FpAOi}RsbGM(-2qz82 z`FOKW#tV~(*#8AqTndouctkx-QzQV6??iBeY58}^2EDgq)vVP?eYuaZKDC)_>0+fG z3I6tozStp;vRN^+F7{|Gyqh49hnKzipzTz{h0_n&x$uuYD!c}mTo;tGpo70D4|YH3 z-Fz45a4!7SK+aqf+QWO&alWCOd|~+I)Au3&UwZ`ie?nqI;&9DrF5J{JI9g8*G&dgV z4Pc***rb-Fov;`jEp@q4YTbV+m0suuO7$tFLK8;=f9BA65hsdou{LZODBUW;MhrCO z<8+mQHm+4lqp`;;1NtTmmzB0HM=8w63&7a(S9+DF)L-#m>L-eKpnhmkMz12BKOkQW zU@;6e5gbbf@+oknx|j@;3-${;m^t`4D%=(i?S~nqjOpLV-_pb|i5Pt@oTrR23kxP@ z7l#pC+efG85iAQj=l{?*D}Lj!R?vTj5gWAAw8g1zZLu#^I}P)8nhri4d^-3du+1Im zYy&PbB4eF`@n?*THLw4hOJCr%6<@;HlSo_KM^HT9*^2uiRk3axhoG1^6!N;;`4V}utr+kmvQUfSu(VE zgKOwa4bJjYjMXm9C?->E8jf=zxC{>b#2kUH$k*FVFfAu^=(?G3RyW%&I1G*-_UIdh z#&;Xjwe$+YH{Rlpt<7^ST`<+fY@LQt+8>F9?#Z0r;Lb$x*W<00z4fbObSe!$SBrkV zjUUlRuyH!F3VcvF6X~}?vr>|o-<|Xlw+;ML5Axxe-FHhGUI=o3ey1^Nx4;TIQU}^z z!2V|iO$L3Ivfjj4bY?bJ2>%3%Fb=xc*(uEPbeo;?8yi~lXyjY;HC!@Ov8cMnwaJz6 z@*tO{=5xQ-KI9Dak62h}vA`KeRMiZ^*=@6;4N?~XFDG>C&&hwjNmZ-z>1E!eho%e7 z_Gn8+f&NZf1v}ha-2&6(Gkc8L>gLTw>Cj-&tSM{~+c|`1Wv2z%i9+ss3+j@`jh_>| zcX`(MAptr~eF|RwSlsFWTVe5V4*+BXDyMn8;ZwqR2M}{>5@uV?X z#QCulbpCCpZ?I_Iz5}{g=&ae=*WAvCzvVi_Vk1j9Y=#!3-iK2O}qP!h8`Qw2Q=Ytxw%<4pxrUowEMB~gM+grp8Z!q zX`kiKp*xgPwJ4Pj#N)?UehM8!xm)*ig^myTG4!YQxonBOWGeCNphp&HA$xl+M*i8p z=R;-Vg&^8AnR(&No)1Gy$0w0*GxV0+42?~OsN1;*I#N5;;_(qLSZgN2L&g{_DaP zkWEGYzg_XqR{SU6hpn`5{{Cp$l8p?^p3u*VXt}eicvkUyXn6 zSMk)QtMMy;6;JKF8vn?z;;HS?_(YeE>|&u8U-kX67X+K@(;T@j&DDNfEoaYlX|DF= zYMPzbrMcRlt7)FSF3r_GT}`v%x-|c-Uvbx^`EULD`R8Bu{lE3A?YcDotzW0EOY`6Q z^}pAp`EUJdxGv2=zgU;5P;6kr*Y|s%PXqCbuj}(be+J?gTo*skmx1`{*ToO?V<3LY zb@2mz7>FNxUHtX!kG(Gb`u6u-*Z=F=|9{uTU*G<3u8Y6E{eQnM{`&TRcwPMU?LX1` zOMJP${YS2gzrOwZu8Y6E{jXmae|`J6T^E0S``2CtDK)!og3)}`g1kiqrXb$LArr{T}}6!U!|)=x`F;(O;_}*bcIMa(9f&sZv0ic zSx7g~-+{B_wcr2Oet39DbU$PPArZRIs!$fWIk>m z;2y|(2JV5pC*dB*`wzGW@*ahIAn#w`9?0v5dmwKe+yi;vfO{bCD{xa@v4K|cO+QEP zHf(mmmqEIz)9v-MNR9HY?%d z4pEuW@Qg!Bo0V|$p{sdgugNQ3lb5?DZ|?_J^Irad^5V>@>|H!+Khk@(*VK+{qtZ2<17{;*z1M^G5mt?m!I&>u#1 zYWl;@_lGHU^@n}aA4YXti^Jr`+w{n%VGHh$@(>$qiD@6gRi5o6} zR&H!cp;Mh&!h{d~>~hA{zHzB)=`E;nj+4RJhTWrW6FDaQ54n$RKrC`>URgoHK_Mh z4}C|#YT)_Ch2^iVAm8uct8aX*{5!?>7<|hcOFF6^rMO4ovo-QcOV_{+PGp42(4v=j z$aX=G6Rmxqj7`!*B&bSf!@1iqn>A8 zKwaz1hrR}0(d4`9p=1Kly>RT(AaB>umYbwg$TG5Z8HQ@UW8=#M@Jt*dW z8&YEw$(AVb3B;flHPxYIGVczk+Ky`PO@XFXaYp{1+EfBw>vd^CW^8eQaFq$4?JY}b zU%^gJ)9q~=G=6V+PGC0P=~43>3r68WUkfyADtrS4k*J_w>y~5k@U69_LdVf9}I&v|VpVP>jXQ%%QZar^- z+msHdj{HYRHS)`lX5<$%M+%(8{!>c9U;^NHD#R z8Y9-dp*NvhnehamgLk<58yVKZVR?wP@ZE;qK(e7dk}En)woq`N=XFR3nw{y+Jw3e_ z{5`$xo9rdhY)IPQF|_`e%Jf{w;hF!tV*efBT4qdXo_Xb1%_i2^^loT6#TrUCzTt*p zE{A7x{rulC*)syXXQ)S0$JeOA-6hsVUlNIT?OxpC@`2mW9NweHO}f@M{HZ_NC&3D% z_)62od!G}1s#-Q%z5O+CMd^d=xYtSzO}t}`<6J4d6Et0X*K?Swo9yCoO)Y!FtH}Q<@+LZJ94$yckh-PxT4Zc z_0QdCTujjDp%sSlh=`rzsln)`{36{{j~-?4O|%L?7oLf2BD~N$2v4GM>LBkq8pReV zia!od>IycCZ8}YI9tze(L&P8lS%?Hr!lG1rQh!^hJqk{F4#!m%+)OVx9>Md8U&yt< zsu-=)VXPnBfe~58X4c1;Ea3>B;$W*;pCv5MfeimbcB>h@a@Ip)?!Pb(x_~>WfCgbM zVPe!rm>u;Q8&biQNp!{$rQCSDY#M@_hY!!zHqQng7m1b*T=PPY$467+-9`l?jjry{ zQml2b4euK2DFe;53vHvl?lq+hE^|V25qKOe9k!*giI`sMX3|BvCp^SuZJ;%KB6owS zdCt(`0mesZuoKajTAu^=c2kGVYLiqpW(#^14WGzvWoykHwu#U(Z)dl<-LJV%!luD- zaI!=?7vmln7GyCdoXglS)MG?TextO+kG*knQ&~A?l*!Vu(s5f8(WGcoVp%D@5nWB6 zucT*hiOcj2q=!7kj;0hxDN;fP#iPet30_{N&2w|+S~qv8DgnRQ^GX@>yoI00TTGwG z+wj|s-#Zw?Dn_hoGjSqOJ0k$8b@i}qguBycz*B;^jRa`z*~W}p5%>!v5R*yLT4bOL z>G41ymEM!Z@x;T%T&S)RvzQCdLKCSF$6VM{HDWAt;pwV=otxmnSXD*izS7~43}tK$ zg~tRO9SqObJT?5REF4Z#jqPYL@EtAavjL%p{j3l14z^~_aCUndZ|Z2VA=beoWGXb; z`!qKP^&TN7iTLv+X5G_gwlD9!qtUXn`es+4$sk4 zvX?!OYam`#Xl!tLv}usmyOI}pr{ujFx9wMPYY3!wakqd?FOigolB@w$wwVa5A<3Rg}S+ z+04WSuA8|axD0{K!|$=*GnKL6?x-5~A-x%X*nlsD-IxfMelbLEp~-k_cpv%be)1z3 zdutcHSu)|r8uR@1T_Rr2`M}hTbN4Xe=0Qv`qc|CsznCUj zabw?yZ@@jb-%Y$UryrlU$lg(jbpfgW&9tbCG=-mo0u?4~-Qx%w`NMGW#fgqDupU!9 zW8`LuOt*^0h%v_$(@1jdJ6U$3G0P#RGji~_TxB*#`(`G0)UULf+!K)#ZOm(kEsmX@ z21wvLgT8>rQj0qqt~$I>14>u^;yoE|^t{aChO9tSZ$DfJK0o2^DhYj@g5Q1kr4_TL zw4zjx9o8|hU*IKunrDaG3~Kzedy|L06q8z-IBh#95AM>+iQI+nCZ?9sI{CR0f7-1p zkEY|1jz>7K(|+15PD?FS!Kaz_wL7_VPC4(GgVi2z>Wumr4A{uZdP2WnB~JnD%=Mx;i|R-tU6zibWMYDh~?Pf+BmTt~}7nvoR3fE$bE6U|Kl^D+;swjuj=?1y6Z6r3ev zK#{4(=7J6v!h$|2)imY?CZ&)GFO?Zfwwt(PxF;FQR8JDZ7RecyFCC#kE1O`1|Bv$J z&{R*>uo$@ClEa~BN*#QQ3o0kueI~?>41{Q1?rhLQLnAaT z_}Ppb0z6Ls#4kS2lbkg+IL#wK&V86C&NJ4-j@1RYvGIW;jhRoz7oLP94HKTwmFNC3 zl)XaoWIky?>A!_P*L4;l+CruV`dyGFud4$!P6js+NoL~S3S2k8Z{kLNjyGdkn=1?A zGOeIYLA405*U_Bq5kND8I%>S9G`aCqsr67wX?KV*c_H0S(iNb>ZYMe0WS9P!1r+c= zI^#9zSW{;xE|aG+nV9A@52KVg*OTfO9dq486`LfMnM-tj0hK2nBPw~W$8L+aO|`+c z64p{WgA@Hmv^iER&nr!79t+B0!z>$*c*-~VO6+ZjO|en9wc$(6kdsWiM+Ny=+em0S z&BvE%ue{E`{1^Ublsp@L5yrG{xz4}+7ycs6VAQi)xKp+m()zx3;V6thRlk_ zayHpwveJFoROmy^OjXW(T$&{tEmc$NnD*sdYp#AabX4{%w7 z0uvi$E81c*;~a&y7%`tORV_nHDTI@)XuXNz;~lW{)gPmCTnO=*GI*tiy5gF7*o#Po z>_b%AVY)xh#lrGiCfc|SoP@G+nlRxsQQ7d4Y@8L3JlqXN1}qnJ@#rqIoGFgVR|7e?T| zH6Hh^k3joyT!3k>5Otz}=FT1+5r4 z`cotE<#KfBg^`0yF?fG_6`6SGe&=XhlR3WBQHmR%ep-dw*}I{8P9}g%jXuUT{-^mz`;)3Z2O6#ylL0QRQ2Q&=@nD`LOYb9 z;r50s?2H4yv8AkZaXRGOf9@OuU)g<3xU{S6Va9w$^V+I0CwD%?g!6lt@Nc@TIGOL- z=v94jg2Ha?iPm}~_`t)1!>n2iFrz626HY+xX3f46=R=e(yN5#4(H7VN?D|j%OYb=z z@^=|bG$UeM@tP{vgcB7Wdk3?S$$ooP;n{Z@0)LL%C z&gmGsG*GwkokjO*R3{gCvMZ`m_5QYs!>I)8XbR`h99UmrY{SMDpQ_tP?*etJQd`EC zH~DM!jPs0ldo^#iY1D?MigLzM=hn3>UX%lkSJAw}aNJz0$2fIonQ<4sR`j*3Y6Gv`m_l4Fvu4ta3{SQ}!t|o}3oyRxu|t?$4}1tKCfI*?_7a;x@qG zu`b4xQAYXVrhRWa=12g=^=^>L$W%(GTXjZ2DGA@6WX7Hio(Z8B7~7`pzrXC^GaB~9D%GHq8Oki19w~cR72)NdqoP!IemFL+PS3>T5xXFtM1YVUMn0$jugs4CnAI2ut?S0h&#b#*klHLUfHzo0IZ-G;iB!B6f`zdNb8vSB!M zQyW~d{=F4GK&)ATj#oAKWG3X<=^XWR-?dOv0cv>L!kYC)B&5LTqb>>|s2%9~0b@aP zQ*N-77_giF+!^R<^w=){XQ^r03{P6xs4%a}cBa~1yHs^2_%H9(oFS{@utCyy(39=l z4%vPy@*DtG$cIYp6tlXIwZ;VEi*HD4g!Z3QPkxwHC8W)8r@DXce6x#1x@ZXx_Z{%8 zNsY_?=B#Eq(P^rpk)AnjCQZbR3iz?l0B^#P$WP!Io%=1^nfC@{;0v{IW!JZ|{1N!k zro0aOSzpUyr3E{yJ^3!ri*{-+6W&<$t>!Lw?uk2Paf$(Ufe)vqIM?9qVNu|JQUbD} zWu@m6{QWz49D6jj_7|(BqJ9T75a0y6GWQs3{z5F$ek}_&$QokbHne@hr8^eLIW}?9 z-yn^OmCrt1&S6^IWI_xT<&Z4F1Ou1bygsR zn>o}&bvV)Xc=zYW{g+IS;AY=4?bv25-+qh0L$CKa#?ZzK3uN9ZPT66mEky-V0?q zpAGTt3*es*|DQtCtG_{39PM&CQ0LOnRwFwK@H48g>**YTnd$Y=-b-(+Z>>4}xMGbuW?-9BJp({fr9e-H*2lG=(xil)pz=s9EfuWcSgcp^-1KuUh zU`CrjeGYYv17>aQatvhxm4~t+@z)cufXkO@B0hSOBWFghf}}2UDesAYwz7A!x5i;L zVQ<9^?5TZSvDS3hW5K&|;BbN3Q85%2a)ti{Z}%|c&qFH?*_3CRDjQ;E#>{v;?R}#< z0INi~ke!~qz2HsAO+jKKysuaMuW^-!+-NiX?(6^3e*B9c`r+@2HNH?k$i-w1cO{)! zgju=;H-K?x*jhRh0W(dwsxXB+dUXJn6GYREb-wgCdVxVZ02NF zmJ&*NqVbzIf|k*&t~aa3c~7dd)%{2J z91pD~bKJeqH$^8B>{ZV(|6hCW9Tmm$Zh!X#atHtO%C5VD?7-j|$BxCjn!YC*L z5)?C-bI$3Ym?L10V9rV~fDsd@7ywaG48L8&pdPR1-tYbAu6Mob;he|nuBxuC+1>N$ z-96paw$^1DYS|UnlDAVJCZ&w*+SIWd?dy*#` z@|ui^SR-B{5m($yzKy5X@ODf5-Y?MFh9|QPZ20%L$&$;AQdW1@#MpDIy^L@M!E><1 zJr1{1+$s!s%f0JMb;XuSmfx*TFaO?kl6*mTu5540AsIhsvW%AT*+4(BX)ZS9|G~F8**i_ulM_V}339-LxHk8`S*G2RX5n%7Z zyXCX7))4eD7-N;bIa?)6?(6sEqvf~sVs=$bEb=Yus(Yb$5SC#_j-Pw4;kUnw(V~ET zgJe>?zf=f??ZKpwq1d;17^SXe-^Tk$P-ZXpkH~+)PXvp3UqkkU_@mBSyjfPY|0|ED z>^RC8T6kWoS z#F1!b#2g%nu0)K9xblK;isv)4PvUd-#_^&nju%|T%4A!1#K1Qx8sDTo#dtbE6Q54k ztW01qv9i~m_C@ujcOopXhkHff7(I}EW4%INhAc&|mwdG@ey*v8cSxzT&o4w7PXTps z6cICpYL$!(@y4^oUp|ies#Cm}eQ$X#=vqW`1N|KrbcoPwRpm?C6PQ#$lPXXV_ElegEqvFo8|% zKI2064kwJqDBq>gFtO@~e4U5F)9wKLEL5Np` zd&umF$sv~`PKW433PQai-9u+bP7b{sc{)^Qs9=!SQ1?NzhfW@JdFbguI>Q8EUc=lm zsO{vi%fn8G;a58cafiEk_KrILr7c5yLkGhS@A7mV)$;Kkn2utEu*0W3p`&I_o`yvh zdfJgg@bYzL2$DmT&*f>_nB>pa$jHGyB-ovEx?Cv8Gr#*w-HrJURs4=3#NQ>t4u$!= z4z;a(%F{^_#Cj#U$Iecg9LrjpAt~FZS2){jGM@ULV&<4(CC8I5J#apYe?R4xK@kHR z{Q`kJs1axLF^AWd*HIVm!{FJjmk6L?O$}@X{6f|xcLUzR!7CT3@$hz9oQG>z;~As| zT1}<6-^tssond zF(&nLgq&xMyb$4m5K}*81@TwETWuJ0+&U{c;P&!q>E1k;QT@uttAm3eLBi~k1 zwr`q-JcsqTQ_iJKJS|(q>(o9U{k2`I@hMl(%BJvYrUBmQq1F^3Yg>r7tE&sjMH=|_ z@SBwx=(f`uB9(xTk{A47L&qa{Z%CYlDSC!ys?^yyQzki1jg`K`$wZ2=;QB4bSa9li zLujjvOPLl@ww^V}VcNCDIUm>RU2atgu2jiSmYB<%;hlQy`C(JlnP%xPXH3>N@q2Mc z&NeN?;?4$)3uSz_EK|FML5?-fulib8g*1u{i>^KQG*X^Leg7!<^Z-xMJK#)txSz^FI((!{7z-1-h+(+Wdo-1tC>4>`Qc7ojx%p+sPccf{|)cz z5!|&NE|6L)3~`mhx-vO1Ed|$G@GhbdA4hmqc+Bt^U zlI)wqvuTmFN>Z7#p;W-ddi1Cg4qz?uaAwE)!&>CqHOuKyU{y9zw!hS*4O=f;r(Q1B z+Nq|m+PPEl9)bN>mu@aw`gw`(OB3sUMV-nfdI#m|B%wEopd$7!>xD0-_%hax@5?$e z))w0JHT$JKjoS8nwUq4@mkfNV>)j?-X9n7kwZZZNsA4R`THIUUoi6;c?^wG@%zxXr zHrhY?7N%EZT=v~SJ%@chwA7USo-QZ?vpEs=Y_+oQeDsuK3NDZcv+T5)f*VR}N^xH_ zu7pmJ8$(CmTqFGJm3M%2>D zW#t=Gby+>kd%euDmg9}~9Zk?j->>2{DuTsA9N2je%VpheAO zwZ%IcU<{+h+H3^NRc7!W0T|7*-(GhAg)oPQ5e5aTTrdtJ-t36yH^(;ED|wNpU8=#! zD!EXu%&1yJ%JLrOVWfX($Iiay$ne_-Z(?QCo^UD8GNPnrep)V@n_O~P)=%z|q;9*PhmN=)#8fD$vSxV z3V$V@B~0%l4Zw0}8BM1g?UpPY&$HiG8VWGCDy+D|#cu`9-E6v;g* zxe>Vb{du~?tKeH3u3~<2D#mjbTaC7ekf-8~74J;<-ULQ7d4u=P8?v+Z6n>KICC@D&LjtzqnRfV}m6BFDoXv;am68^?67#bj^GXg8 zT1QY5XOOJsqP??mhH|D+L5W$FhCO>rA7}e42WMQ^N3%X9qYu0D?w4?7{&?$dZ9CFN zCrj*v>TInF8Cv36U&)c<*D+;_F?&mSZG2zi9ukZu`Yv~|7FkbYL1tP=gPYcomor{xrU=`}t!`RH zghu9@uavaB&vRNI;b*~f6@{!1sS`U0BUahuXxs5~t;gQgXnMm%UUj_Ynn2eo(NWgk z>rCs&1(|K+DZ+atNewmH%ZXf$=c;$O8KBYR zh9!QL*A%SEOiSTfzR2ZQiel4o=Kd7F=UAerY04{6mXWJ6Su6K)mumFR3W-d`?-2KL zjnyr0XySUm8R~WYa;C&`m_Pe9h`$h5phDvk=A8RFqRo-e7=PJ z)}f^wZNnxcEyd+Hn`aDX)9gCbuU@VCav#?Io|7AVU69UCxf%)9^lAb}Yn^+ligmnz)IR6GhR`eL?g!>?HVPqQFRQ>4RP!>Q~s-o^`3U0Eg7EgSk_oDG?(YfFEbVJ zq=x%aFy^$Wtv-H*23z#>^tvHx|NJpw$lc>}H#iY%t8pvw^XzwOg%)zR=h@{t@->o* zT&pruKCgqe&Fcc*djBe`GA^rMuE2aPA{g;C=by10d93^s@>%(6ejZ-hZ7#Te<7x?O zoqKmn**b^TuPbxJ@2)Cy#K<|P%t?NCMwye0oZ}_^1nD=^OZxD4-`t6N6PVYqdr{=u zT%IalFW(?flW&x7NVj{%X-|2_&1j1AmyI5sF=quL7R~3lz{A}Sv#}|-78dMxQ3tjk zb7irIcj4;F@E5{sT$y?m?zk*sBd)XO<#GPtp}7ttNMp1I&URw%EJ;1NTOspE-7`*M zLm`6nz|3`i;|X;vE=an)L%a7U|jy-cmJQ+ThNG)rP?sv%kvyr5fm7(}z^_ z;bJoDgC_c*D?SchYZh{?xw4F8&JsOQ)5JCYvgvz2PcG+L%5!%}vdgw4Pr`NEjmesF zuJ!gD)akyZ1WIws#XM-m`gu~^&H4p?e0_ZL5p5Ljlb%P{4hSOba@px0amc z8rIvE>}ny;1-@0VD-)ltT))}~V|8kN!BIxG6MY>Iy>_CnGn09)n@|haL)^xcoGcd! zXN&O*)JNQR{^c>Yk+ABS7%zGPwv{oq)#Ok6tE)b1R+|TFS8J8w&C1>( zP>j9x552%$2q7|FA!iqyqmA)BcEYnR$~;!H)vmCuhBG+tN9YBs&&zux>sY{Z5x>+H z?=02QO|90Lc||6ZcbD_?)pO6ugn2xdL!}yOkr=b1_1+VBCqPswALoL+3SEqi(&{ts z9cO9k&bF~`i35&3S|wA=6?pRjPqa$jvt(yEU$?WgNeSPjleDe!-?zoP%lY~prG>=~ z@^{62mo-w{x$n|Z8d0*noUgq`x}}8g+F6=_-_F=E6>&`S*gCM`*J-~%w}Ea!L9)Q0 zfgZA;fkD1rGM|B-QtprWfu4P3zZH7=beFjY4fK-rsV#61=;IgUJJ8d|GpIJJhnsut zWH-0KZne{Hfqi=PkOc*J{wVz~8E!H+X>E13jvhW9wX*>~CsnJI2grVOk5!h+0z7-V z1$p}Z_(U?Fpa5ULA6@nHb_FXZk zt!%(EDDX#PY`V58oA&gP`~IjDAnW1VQ})X&tEu`Z9x@+UfLoA^30s@z>xWJA%e=d{ zZ{R;FNU;?IeEa-bhiy|P1vYVjrz9BLxwbXW9)7+7%0kX9K3)-*(4lF3ho<3N!rnQDMXROLx=1@?3oMJEm)q=*y6 zDMlnJ;u93%mRxLns9k760_Iu|59daW8r2##!dr*M4Ciuk^YU-pymh;v@Xp)fur%g;10 za!7P&0(5oY-Y)g>Dm?xnHpeMs()+h{Y^vV%8ydyE-Mno}V^9AHX6JZ3z7StcQG7y7 z9NPpV6>;&AG0~#%(1cJ?WV|RWCN3^9Hi2`GNsJ0tY96Nu4Hx~}BAgWR4~Yv6XWQjZ zmCz*HaG_CAF{2dWY+wDc>fw=CFoCUnaA;%{3V*J1R9s|&;!o{yZW4E?OzzRmv%8mf z4$b z#I_K=`FNyF|KgjMAS?&+&HEu*V%iR|5Yr7%#{sbk(@x0q#Pm^2yJ6ZD!5R%WJlODp zD7xcL`@&`m-0qF6^dB~?cW7phP9xO(M3WD_mM%6Zd!Bad)||bem(x#$ufCC&KP~C8 zcB)0i@#7|S>Y3FyZ(z~T*tBjV4FAg46$sVTH8i#KI8Ll4H1CG+L-a-%it&eRadI*~ zF2|4%Hg43|ieWKl?Ri6Nzun$3^3tS><3IQDDBE>o!=5!8nrUmp0E#)SBGNyg_u|)PRn+_O^V|W(po_el7Zv(QoMG6RzF8 zdtc9ayS>`IhtpKqC;mjgPJeIpPZQ5ywASVQu>*H34Zpw3yQ*vQYT$Bdy)#=TbPgX- zKRzVI_nwu_f*JBRhfE**rE|B)v4gg!dXxUA@^=nexb*4hk_+vJ&%NohEvjebOU0Po znn#kFwzk;3@7(kI35~su&z=?AW&hxAf)Dzk&b@#kJrT z59h3(sh3qOiEvwKXOJFrv@UlpENoNNxN%e7j2gA_!`QKNzgJY~-5NIR_=A|3jD=^< z28Gz$`|)`^!L=bnw)M2N9bfY8TmAjFZx8CRV@L6;kt0{lzjR5~c+#Y`GcR5ge;z-6 z`rFT+>ty!nQ##MX<6?DLnU348U9a}uxG`klh7Dh3d-lAvUb7}EaO1|0Pvhd2tDKK z^YMrgi+2mw=sJrz1`2e}KwPNk*(|_5UnYC!YY}tBkH8q1at5)sT z$4jW27#p{1kes~w;p4}hua=fJ^J(5Za$;uY)t8Bhe;aFQHE1|_^19xwS|zkKH*ejp zK?A#c(b1Xv`u2U(FEzD#V?e-%ksUksIC$$;==i;RuLZPhIrjdOCtdz((`JOplqt(M z2L`@BoSPfL_T!VUU$+vAL?KVUd}%y7Bjdt>e*IqG7&`RC+{>5cLr$D1jB|DMTGGAy zgB9N1H`06eem?d3_3lS=a)zCK`_{&H`}SwAtE=lyb9XzvZPL(q)q?+`-s=ptxq=i`@b8Imi8@KEY4P&KYv!&MT>S> zu3dX9*2Se;`TO_6uw%y_jyiDQ&~ylg4!J>~SGHeCLq? z14k6)S{5|Ua!C1u4rU*Fucd-o`gicG~jb!RTXu{q?x6j!wf}ckhn8TU69B+|jXTLWd4MrrO$#7I}K!)m2y5 z?$)G9)S>?UpZcfLI{XwYWYg$uVjEM2-W|LN2A6{APbzFAV@IQzl{ z_vrTR``j5m{2*`c+&LLHZ-%e&@yYYtwymfjDr(=(o;^RmtE|+x{_dZ>o^w+izdA`Z!VADx9|M&bLadoKYwn${{H=O z&l3{XbZOk!a+#Oc{m|pb@9E8+JWbY0Q8#ZsgZr$O+M~_@etEx6R;3ruVh8 z8`a3bz-VlG`sJ-bL0^U+J$kEE-MSq%0RU3~fRzBiTmV2105}c+WB>p`0DvC=AOHZi z0RZCxfcgNyAON5k09XY8$N+$~0Du?(m<|Bc0RTz?fQtZt4gl~902l%Qd<6hr0svV6 zz()XJ8351^05}BzSO5UK0f30f2Y_AP@lP z3ION=0097i0s#060B8XKtOo!L0D%1ffEEDI4ggpU0CWZbngIZj0KioM;BNq+0RXTL z07w7;S_1%f06-=H@CE>=1^_+)06hSJPypZ>05BE+=mG$Y005Q)0Pg{S2mpY6|62h7 zApk&Q0N?@u@EQO(0RYGWfI<0FD6w-2ea~0Pqk1 zI0*nG0svtEfIR?U4glx_0K)+QZvem)0B{BX+5iBL0Duhuz!d<%6#(c308{_~lK=n@ z0AMEoPyzth0su<^fK&ir1ptr>089h`1_J;S0Dv6;z+?d65&+N=0LTXbIspKq0f5H< zKtljvBmmG60O$z-_y7Qn0D!vyfHnXS1pqt+00sa6(Ez|(0AMo!uoVE<2mrJP0A>RK zjsSo=0MG{jI0yjD0RX}QfII-82msgz0DJ}jGys660KgsqU>*SQ0st@r0B!;RGXQ`X z03Z$kXaWF~0|4g%0Dl0$8UPpv0IUH3ECGP~0Kh!}U>X206#!TO07w9UGXTJL0H6Q> zPy+yX0Dv(7kOlw@1OPq(0674_LI9vQ0MHx&I1B)|001Tcz+M2r2>>_>0K@_SGXa1t z0KfqNzzP6Z1OSKt08aqmI{=Ub0E__u<^up#06;PTP!9mO0{}Px0OtUJLjb^O03aOz z7zF?r0RWc)fG+^REdZbc01yTMi~|5h0RUqGfC>O$7yu9h0GtH?>;V8C05Ajqumu3V z0RXoFfE@t9NC4mx05AyvxCj7@2LL_;0DS-e4*;MH0N4cp+yDSJ004UcfHeTXMgSlV z0LTUa4gvsQ0f5B-Kr;ZK9RSc30Qd+1Tmb;u0sxx;fM)YXCq50DJ)e zG5~;n0KiZH;4%Pk0swFY0J;MJ-T**v0N^?RkOKg`1pu}K0M!71I{?rF0B`~TrUC#m z0N@hhOaOpa0Kh;1U^xIF1pw*+0A~PzEdam-0H8Af5Dowg z008O(0Pz4o2mp`*0Qdp`_W%GZ0Kf(SSO5Ub0086wz#9PI5CC8b06YKy{sI7W0D!vy zKoJ1o2mo{d0JH%BPXIt20B8aL^alV=0RZ^`z)k>Q5CE_c09XnDJOuzo0{|rezy$!H zJpeEq0GJB^+ynr80Dx@(KokJb69A|L0A2zB3IJdX0I(YX&;$UE002n00sj9-2eaq0Pq0- z&<6lQ0RU$Jpcepe7yy_C0GtE>8Ug_80DwmTKotP60st@q03rc^LI7YM0I&oASPcL) z0sy81051T5YXCqn0MG&ecnAQ@0RYwm05bsqJpdpJ04N3kBmh7J0N@4ytONk;00093 zARPb*0sxKz0CfQX*#C2||5dR6Z(#pF!2W-S{l5kK{{Z%XA?$w$>^~p&{~GLnPuTww z*#G^o|2<&;U%~#*hy8C1`#%%*|1<3WTiE|h*#CL3|JAVnZm|D*VgCoh{>xzhtzrKI zVgH}P{;!7pPlWw{1pD6^_TL-!KMMAL0_^{L*#F6}{}HhN{;>bKu>YT6{~yEt?|}Uu z1p99T`>zT6zZCXg4*S0r_TL`%zdh_fUIVzl4eY-@?0*y3{|2!C4`KhW!v6cf{!fJc ze+m0<4Ex^@_P;mme_Po9cCi2VVE^~Q{`Z6Z-w69Z688Tf?EiS!{{Yzk`>_9i!Ty`T z{%?l;Kdk)z0|2o9V%YyDu>YfB{|~_a-+=v}3;RC=_CF5xe+lgW3fTX2*#D`p|3_i} z&%*xu!v4R8{htQ=zY6w$Fzmk(?Efs-{}-_TLfHRru>YyB|4Fd_O=17NVE;G3{ttlt zPlo+hgZ=Lc`)>*R9}D|m4*MSl`#%cye-G@x1oj`#?wUV?{r?L4p9TA$0{d?U``--q z|1|9X3D|#U*#8-@|E*#F7sLJs!~TDP{T~DSe*yOY2<*Qj?0+%re>UuYec1nXu>WbW z|5DihAlUzou>U%+|8rpf&%^!?gZ*y-`@aSD{}}9lUD*F!u>W^q|HEPb6JY;MVgDDw z{_Dd2cZ2;u1pEIt?Ei7te|OmbGqC@zu>TIQ|M{^06|ny|VgF~t{zt?9-+}$-!Tx8! z{;z@k_k{f~fc@VI`~MF1|2pjdCD{K;*nbb$e?!>+7})S_I|3$F><6!?s!2Vx>{a*n4uMYeF5%%8# z_Wu;@|4`Wf-LU_Wu>bX7|5w8PcYytG4*OpS`(FzCZwvcx1^b@|`@aqLUjz2v3HIL( z_P-PCe;wHWi?ILGVgI+o{`m*H zDerDqk9*=eX?2_L)7#E-m!5g>;&RZ~C61d-B?M6gJ5m*>8jA z@Y%UdNG>+yhDbuVV~y7 zuLg$rPuy02e|J5*XJh_ed~wa&)S`|(cH6v9zfgL#)8xRFq4jKq6ON3!)$CEEX;`qO z?s)&oEq)W+6oKaTHlFU#{I6vlcMQASc&)5_=jYx#yq@5#efFP&ca0qWVaAn_3*Ym- zoBBSx{pGC9<=f4irOEpTrOkhk(bu!-kp@F#FZEXp_?G?Xbelweig%guT>0{}VfmlV z3FZ$hsk3O!(yZZQN|y%oxpU*hWV_x8mieAVkuB$4ydX_HHFId?ywOQ3dv_Vu{P2kT zCm#78D4VgX-bK;Q!Q-!W*cbM&yV)~yhe^x*ok9i$PLySYk19GkZ1xUW0>o*kqQr&}g&&lwjJ~v8(diYi_b{ zF}=b%Yf~m)F!adlx|90Px^7{+W%Ry9?=&jPd?FvOSKO(*s;+k8W^UU-jn8cUHmhyx zz_lCR1*fXbdgQqALusPUI^XNBsBUuW_>1K;#qL*z6s{YU{#JEQu>`Fz#?UTrYdrDx~eHygFHb8W6|P#7N3 zf3xN4enGiS+O_VWt34!Rajz1CeQ%cKHCVlHU2^tW-_U!a4Sh#>MOqk}*L}SBh<0|W z&9hEcMefE8>NV8Y($lG!eSVkSfvty48*RJLtGxcyJ&79LZ&uzvnl=#+|L~gq-9PUA zG3nrrXZux8Xgk}z<;cs{=k6VN{Uzei)AF#}4)-oe!loLUEVmL*IcFrA+P%s6yrZ3~ zc7Jj-I^S~r@P_N!c-_mif2TJs;MJ&;PjYPc){WX0dw8YMl5U?pUW8k1{W9lFYFStF zp5t2;SUD|tJKfXge4$J3$vKxcd|Potr`_iFDc3iRdC=m{!FkQP?#kNOs>9l+eo2e; zh7P>4I%tA?(1*Durxp|(dfwXg<6o0b?|J|CfaDXAIg7`|+_c+vy{Ylu3p-bKG&CE( z<@p*s|Jd>9*sINww4(c%RlZtvkT=Hg<(&p;kP_YR^1Mr(|*0~m_Aje^GZ!R&Ahg)`J02G7o8tj zJbOLHBcs!ryoY^)E8@GFnO++mf4+TI;K!>k2Y%h&?_uW{(fWZL3J^;WB0GI>-ga80C0H6o}m;wM;002t>fZhN=eE?uO0B{fhum%7g z0|31M02=^60{{>J0IL9iO#naz0FVg)9036O0|2%Fz#;&k3;2LQqW z080QM7Xau00Av6F1^_@F0I&`K@C5)i005ByKwSVp8vu9)0JsAH4FLch0ALpYa2No% z002w{0K5T!qX58H0N`%`;1~dK7651q0E`3x?g0Q106-W3a0vh~1OUVUfCvB>4**mF z07d}7Z~(vy0C)!gyaE7n0Dvd}U?l+X833>X0L}ma<^Vte0Pq$7I1d1v1OUDP0PO&P z>i|Ft0H7HFun_=w3ION<0ILCjK>)xh0N^h(_0N4ruC;)&70DvX{Pz(SR0sz+lfExh7EdXE-0N?-s*aHCB06=>H zU^4)a4gk~v0J;MJ9{~V;0H6&3Fc$#m0RRL601p9xCjdYL0N@Y+FcAO{0ssR5fOr6) zH2}~T00;m8oB#k50ALOPFa`ja2LQ|j0Nwxq&H%t`0H6~9&<6nM3IL1-0I~ppmjFON z0KgOgm<9l(003P8fK~v&KmZ^P0MG>hW&;3j0Kfe2<03ZPX zwg3PM0AM2k@D~6u3;>V;0KEYK0RZqB02mGcj06C@0f5^8z-0hH3IL=50DS>~1^|FQ z0FVs;Bmw|s0Kjqp;1d8a5CB*M0E__u`Tziv0RT$?AQAw$007Jc07e4yX)0Dvz5 zunPd#2>^5e0J;MJ4gi1?05A~%7zF_A1^`k409ybc0s#0507L-*RRBOf0Kf+T<^upb z0Du+%z$pM=EC8Sh089q}HUR)b0f0#WfCT`s4*;kD03HJXl>opA0ALUR@C^V61OS2o zfJXp8DFE;a0C)=k{0#sY0sylB0CfOB4FEU}0L%pd1^@sz0Dw9GKs5mH0swFa0M-Ej z5&&Q}0MHKrcmn`v0{{j9KqCNvegCHc0IvanSO6dn0Qe37xBvh*0RUG3pb!Aq3;+ZH z0IdOlApk%L0I&=ISO@@|1pq_->^0Qdp`lmh_w0D!3gfE55>1OPMv06GHzjsU=V z0H6&3U=IKU002(_fVu#{VE~{T01yrU%mDzp0syT5fCT`64*-x00BisNbO3-90N?=t zFb@F80sz(m0E+;CD*%8T05Aan4gmlk0f0RKKr#TZ7yz&X0E_{El>oqa03ZwiI0^tH z0RUzIz(D|D6#x(o02BiN*8za%0KjShpdA391ptf#05SmpYXD#g05BK;I0gV*0swLV zfC2zu1psgd0Pq60DyD=pa%dT1OWB}05br9#sGjn0Pqq3a0UPp001`tpdkQ| z2LSX006YMIPyj#|05AmrIspL90f37Dz%u|K0|0mk0K@|T*8qU_0KioMU^@U10|49w z0Nw!rX8?e<0Du?(I1KyI}uk!2Z97{r83aKMVWc4EBFN?EeGU|E942 zGT8qCu>YrF|5IT9=feIEgZ&r4{?~#1&w~A53j2Qp_P;mmzbEYfJlOw4*#An{|CO-+ z&0+sf!2XxP{$GUs9}oK<2K)aE_J29-{~*}^4A}ppu>ap+|3AV0$HM;4hy7my`yT-N zzXSF^4)*^E?Ehfc|4i8bHn9KGVE^-B|LtM_tzrN9u>Y@N|7XGeZ-M=P2m9{>`>%lg zSBL%2h5bJR``;G!e*^5l8tnf@*nb_^e=+R;U$FnjVgI|p{x5_5zYqK01NMI*?EeVZ zegK|6%{NVE-Lq{~N*n zN5TGoh5a{x{qGF>-wyU)8}>f}_J1|(e-qe$UD*G{u>bpD{~N&mC&T`S!v6P#{kMSq ze+>Jd4g22-_TL!xUmy0r0`}hy_TLotzZdNP9@zgku>WbW{~uxh`@{ZAVgLKV{?CT} zzYP0-0QUb7?Eh`pe+lfr3GDwA*#D`p|9PV70 z|AS!vKfwMkfcVJ3|GUHfzl8m73H$E=`)>pLe-8HF8TLN`_Wuj)e-Z4z6YPIE z?7tiA|3ujTda(Z^VgKD>|F6LQKZX5Y2m9|0`+pMlUk>}f7WSV9`~MmCzZ&*`FYNy! z*#8%>|HEPbSHb?bhyCvZ`(FzCe+~BkAngAm*#9xG|7&3XgJJ*8VE^M`{{vzF2g3e8 zg#Ax~{l5hJe;D@P1@`|G?0;R@|6{QKEnxq@!~VO%{%gYi7r_39!~Tzj{l5wO-wpOZ zXX1bU*9BF(DsNSC?a;APXUvHacu+`nXNtCtuAaVup^>qPX`Q;bd!?pjb`MLV#v)5A z>n2T`HE+?<#o)8j9%Z?EH#hw6Xm97|>)pq}$=;c(&Eec+fp)l$%Ff-rhjQA% z)$!-FqsxzJR>$L)IzOgSr*>M|PEf$lc50_tJF01A9f|wTI@X(yOj#^Dw{vVd( z<6;(DuE95f^1dQW{%BJlH?Og>J-@ZNgcF*pqc7PgEB!;8t)`(~e!BL%Z?6EywzzhrY0~qkmXVh7HR2}XG=kOn{ckGrS;Qa)Ahdp~AVZ#= zD(WFsLv+K#GOUk7RsCR#ux^{8AHOfp%3j|=KM=POXAzzlOoA=Y`?uwTRG)(_^XuPX ztdqrh#C!z%9OIym0I4SQ6e3-Ml*!rx`AnvLNLe?<$k#y{f_b)ozCw!I&A24w>myx( zc>|JA$$AHI z_W!#-2TuMkf3B{$lhDPfokQDp5_eaLgQTt0(b2`po^zJDwUax!xVkyHNL(cDE)KHx z?b^3@c9J+aySX_#w{w*_w0CioIoZ2OWbLJn&RpC7U6<^+_W#nQf6L~a|CfJUydo^t z$)#@IhfI?1G*tBac(=i=n#EOmEi=OmFhIJT9vb9Qiab$4wim&#n7oTM(& z_Kr?&?d{#%r0y>5ouuug&TZY=OCeAtNQ`Xhnvg>p4vG1xs_8DuZYg3k2 z`^Ua(EdQ;|tNhm&rrNB{Z9QwQYtM6ir6yMG`yA(qMd!HY`=-aofqRwSG73au(GPgh)YAayx{#k*|giPzkQwW57Ar~2L z7atMIR$H6LtIfljYV-K2Jl1$^os>eJYkBf^Bl|_fejgDnESaSim%NOlj>kMart}4R(5(h;^ zhIuJQa~_IlMO^Q z91jYxPP2W7Z9{z4K(`+sL$xzq>ns%Tf3J+*{#LoB|E#j$x5})a|E#R)Ijb!EtupK3 zKP#*HjGdmx(`H*VFwo7;FEEh9;}Cu^*qWm`x9HI#)ugRDPfbk&pAMUHSgakM&%mAj zZixvIT#$F5sFz|89QNJ_w$u_jlRl%R+X$3qIp5!F^S zQdNvk95fVKxkV-Tgbv5!G&Qs6Yl29b!LTx|N&*6)W6_F)_^{Ae1$r2lkT5z{!J+@k z9FaS6A_udrt`G&WlHi6S)hbwJRgrRMid4jNzgGW|87x$8?$88m?%~5@qLm$RS5DS+ z#@&Yt7OJymm30!M6XHgzDk-N?s-Y^4ior;-kqM(Y@7jrAp>msJNj#d7fR9@9Zx9yJ zRxK10HzYJVa*T4%RkrK9Q>1QOP3sHzkjgRcK*%TGBc`q`Fpo8t4;RAXNg zPF06}ebA2bTfziLj8k?vFflG#xz(AjHma2jiNwQJ%3=>TB~sS#U^Q%2HB^sT#dDrD z&s)W#tX1vO4F5_2{S&bP21hF5Y7Pm?Jkf|BnZZKkVFA5Kh)jr5;Je5E4HmXmH54BG zvjJ&jJbSt(F)}^^yD{tAKN@mVEfO2ANDPmO9zC4%`!S`psM*ZL6|KT~^;xCx7;KDa z>{78Y(cloCHe&O5Na;t0JGx+}YA-Q563>2lhBKTgKL|E1GDN@R;P8eadf2|s{-V_3 zC6F=?%z~ZsEYpMUK*~Ha3wHkVr@yCoj)t9&y+O(`uY&0+RUU3pGIwIW1$nxdX7%bK z9gIA7-Xv1x*&tnsJl2Ol{UxgEO+-2u!My20q^ymVNVg)``PxCGZ2iZPo<*?F@uxpv zHO!8E+dGKbwvzcM9~Fd^=aLMB=4Oa)i0Ar3bC`$LKFmV2mf^4jT($OR2OPW5sDzq> z68;^ivMs2hkl+)QAeg6NF+g!vbU>xkosP=p=(lle$R z_<$lm<@2605uS)r=5xw_B{C0BpZ}(uEe)si-!1&F#cbLCZoxm7{pfEnPLJLHy}N%Z zR<7|+1vMYj@3$hpKutqO&&Z@+!^TZp+O~1-*xB8~(>JhBsA9;l;Ugwao;iEz^0jGO zcJ1Atb@J@_{D)7Ty?9$*jdTAtvm^_p?MGa%&fdT2?*143PW5yxH!AP5aZ=YsH~+HO zv0}SM0k7X=;}cUInw%c58=NrUMBKNG2gzI1@2yTKUw!gqJWjklxAvsLmG!z! zVp_eh+dd_s`@L=H{qM~9G%~=y%ZlOW9JXF)E=WH=u}{`JouYFd3%A_#54)s3q-9If zsoDpdyI3}8{bhKo9wvG&fkE-wilf>?N4CCrDrIV`xJB!qXKnBrY`!&iw%4gN|ETlz zpD)U7qQ3IhRA>Fl*wmqhbx&@ruNl?8k@u)>&G#QmZ@X95!nOPM0w3Q?Yx=#5X&v!q z()@&&uuVy(Nf)MQ^3Tut{Qbm&(kQ=;AJaaas7M-d&T4my+f0M2inrEGhc+F1ykc4$ zyE`+5>EW`!+dHO7{T#IeOqbQZ_4hDs%urB7A?&a&4hEJOMx-cF0-<&g>X{lJVa}?7v zk#F0FX*&7o=4httjcT{!Oxyi|Mw6MoJ01>x!!$N@+-Jvh?rK@Rf@%F!|LqB;_o?|? zJ2TCjZqZ)MbdQ-NC}P^jM(b-c{lB!yle2Bm>|(S2Y&*QRIn$SIi-&ucu4UWfLD-(z zY@2M&9My?!m*U;8J=nJC=sd}kZJ%&Kxi{NJJbTG8ww)F(ugYQD%Kk)p2OdWY%6OF7s10kiD9G9tW;@WccTN&BMi9^`|O4w8E~A;b2v` zNMJs7rNI0dV$%ww%LV355d)SXe!#WBP zGAuI{%bdkB`PsAo`mgnr*dzjdK%^x4-0uh_8Dd(e{y`QP}kG-2oO~mGE z%7rLb`=wkRe#SUrE#+l07^ z@)U#&QHZjIh+ss0RXqjjY(u<2`CNoQq8w#w5uu2ts(PbQXBR>Zu@ZF#AhZzMP(B>t zpsF_)1e~6P1hUK8*FyL+B$6 z5QYdNgfYSdVT!1OsEeqFFhkTwm?O9{?vT#IZzY=hi#}?6{#K%eJj4C7(mBfnxtW!4 zE8ZArgm*F;ef}u@s_$ir(HE~)ndPW0#ydnYHjdWf+BeRH9Tsl={;}x0HpUGy6pxU{ z$>Zgf@_86jD8WNh^say-^x5y zWvor!Z)HKMGS(*lx3UmbSu)BnV)lU{I{~a+A=Z6Y5!LC2xaWIX|^3WLjV>D3-19I7f~nKftYKR;g*%GmGEtS>xlr(gRrM^z?58UMGkHL5Z(%5eSp zAIt4hl_jH$-AC|io7t)|mdSqC|F!H+Z5i@4e=B1@386XqBLzqSQh*d71xNu>fD|AF zNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu> zfD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d7 z1xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PP zQh*d71xNu>fD|AFNC8rS6!;GnVDF2IJR`t6S%3chhl~FItC}Ha->Ht!+>pJi6k(4L zA^Z?xL@Xi%u>g^bNJpe1@Mb+fggEIIXD?Rg+1Jj`z@t^Fqgb)pa) zH-g`yrXFW{2kS;WMby^&|60oSOZKPlbah8tm$PTl zTNNQlSwyHJ7AcD)RU{*2F+&v#kg`~zid3X5wyGi>DT_m@$VSTIf+}*5vM5kR5mFY< zRZ)hNMU^VJdte$uQx%3tS(vFpgp@@KRoEkC;i3vLQWo7*;fIt(Z&idKWf7r@SfnhH zRFRC7#SB#}K+0l;DpHZM*s6+jq%01pA{!}-3#!OL%A!COMMzmZS4A087FDX??&I?# zG*w}Ul!cipL`Ye*P=!5G7A~p~BW2M|6@Exr^j1X(QWg=ah(*dGNfpURS<0iN6O-mDzcHXxS)z0q$~ z3su-7W#OUGvAY~Duiddv9l2nn5l*J5HEI`U)g(^~!ve>GMbfhc} zsUjOGiwmmALCT^)6-7u{JXb{-QWjOJ;2z@hBQ#ZEh?IqyDnv+Gv`~dTQWh?%5F=&L zO%==);%&v;dkwyMF5>?PJG2^7fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AF zNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu> zfD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d7 z1xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PP zQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbz zAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi z0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS z6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AF zNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu> zfD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d7 z1xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PP zQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbz zAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi z0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS z6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AF zNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu> zfD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d7 z1xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PP zQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbz zAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi z0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO-%<6`1&9;)}eGsfSpa`Eldn lnpF2lO@6jAKkuVhm48E-=6x(u)!(YhH&)f>4*&iE{vRyD+qwV% diff --git a/targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/prebuilt/mcuboot.bin b/targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/prebuilt/mcuboot.bin deleted file mode 100644 index cceebfcac1a91f9ba1babdfde08481d6a8b9eb69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34912 zcmd44d3;pW-9LWrGW#T%gaon??j(Q{)&W@p*fN<+ZUQa|h*n#z6GXkCE)kbTs}B=U z2r6|FTqaRk^s8;aDv6pF)R%PBN$y_}K0`Qx(1-9P!dD1n!oR;G{?9~OKYj-g!U*3W ze2Wl4IE`=?A&PJwVHjZ)A%?(kB$q?bAyBXe{F)Ff2q_3@2R4 zKp+aM5+$IT_xMi{>lV*e&%Ov__`ICyCCW~9|DY-Lol|LKlES2AcMs>5DGZlg!9PyO zbOhV->D~1o*B=@>zSc0k+xfBckf)oMtlqi`G+IQalNn^DZMmbn{?IT=IJ%vOD!VPn zy}Otw*KDi9bNBY!iw(-_+it^i-?lsO{N=V9Jb$r`lk&`t?o!3a)S_Hn!v;L>YIp$8 zjSctUIeU9Op0(Qt@ciAjf8hDSwzGJ4Z~GQc$95G@X*(yKFvX$VTFfXjzuFe?meR15Svx$tC&?uD#rT%|NckFH$}h&hUC_D z?iprWZ%2G<>LOU-Zp=-WAQI)LBRZ1bZO7Z2!w#{otFDt5b<>Elbc9G`PG+}9s_P$OWpj|1=5 zhFB|B(l>WNxw1+jdNO-j_gh0-&vHY$Gt-B3=YHtQ=$>5m=Fpb2EK+_K5p)IJg+sa# zPsqv(i?0vyS5<{FJ=xtG@=@D}VDh`~4Rh9IM@ex`cgIjelo>LdYajAO34T9{2!?`g zVaPBdhOByF>92>+jQldJGuT!dlxdbfMg;wwA^kb)kY(7@{gy~(3iDs-{-Fq{mLG)l zR%3US!dP;`7E@(dZ+vZ-eMCRZ{>d`T{i!GK-msN9)Nc`4u~e)SyG|)jPU=KGg23!Q zO?+La@?CWmX>aqZY@OUbHb9i~BewT$Rx^i#JaJ<5rFxM}w@D8aFAyicY6}93M~H*{ z+~uD1szF{LJz-#uWxUGDs|@_H^jDebj10URA$D`2J~G{4lG}#|M-Wc4!}-MNtY4Qc zuF5Bl)4fIFEYV5(Q%aQO?@@j*7hyJnK;H+HTXu*%9ijP4_5O}wPme0>5yY>g#tP!N zKRCmo4}Lnp*!>m4MpwSDKGIKS-Xg~H1&2;FoLDedccebYrV3VLhrTS*-;RFHRCxV| zYW^N_*@tTOo>_BEL5FBi9v>-riw|!%I=}O=nq8eE->C9=f`}BhsfM=4%-4z8y>cya z2%pbX1pQR`xSCB!*hh3>7jc%L7Kyivc9kDucK+SV%r^(;%{BJM(>LeqM0UQ2x*wj{ z12`OJPgEHFo*Ko#1ZOHX{hf0yK?(i2YVNY&#<`1w_ai(!_wwLmxkUa-nvan+Rvd8a zL{smb^JfOD&iK4vN%}IHsuOwn&iT1CtxjK-^46=7Qj+6fj|+>%GvxNwVlnE@^j;&z zqEC z6iWoGl+6{3e%6JRsd_=2jFn+bhuVcE;@=x#OhVhuYH@Wn*xT>qs?bJKS2id6me3#W zCB449?~8WvvTTRw$I7MlIYlv~V|EyB3l`QF*SiXIDl?l`nY?K4>v^xB>@xJ1mMrR{ z@0ZqE6I_0wmLXBAJCDNT0do~{?SKh*v*Wq1(d$ki9tucG-Y2+Blz z=ZM?$4v339-v@QX+f`4{_wKwBtrzOaIP71#t3nO;&iib^TmMxHU-TDB#S)pu|Bn6e zd~a+2@?`9z^Sy5%W~X@{vWWe;I}Fpb{ZD0wczEuJ`4< z>b&;hbBe2AUzjkf3L4#$`^?3*KH;^iG2>;JaTDf08#sxYT051%-)QgO`ppho-xhHx zehqynD+v4CYO#%$KHYCFX8W?lCqzg8!3as)d}iwY(sr!*(^%b#7BNlKi<>gGsRSK(jKDx3*4P31H+T?{`IgE?|&c8!n-_7>^oJ9&1_GJn8{AnY%|Kw3`Yi; z;S4u^&o~!ijpvd%XHF9355q+18YX1ctXV?MefQnA>HgY#?iOyZslD^I4a>oB<_Ndr zRlx6^wRhu}o8=mG`fLgZ8Ia{m2fn-)Vbj)o0^NB3BjBzmp>Hc*j__=t8}UDu(C3PD zh2w}a!)ILHqZoZ_RDOkVIi7#qbINEt+n+J@rf!<%LZDQ21o{buLSa_Yx7mRCe_qgygTVy!*`A{kMeJN2Yft(>&eTpJew?O1&kt1?kDQjNNq= zN1*8}P}vpnb{yS;_8xD8>131`moAotxI%Y`brZ#+GF>dv##7h>;KeLo+@oY9<|WVf zrwDJQ^OCLgwT;4@{SxF2QBn@v5;}w)Q1~0t?q~j zO!t}SeiM3058u^-X7KGz=f`;Mm`;BtJ~iDa@fl4 zDw`Dg)1)cAb#Gk-{Ueoi6%u4+JXTjx0-k9WiBPL?PU0|jmvpfrX`wpHD?^M> z(!~fw`RDs;C&d9BN?JvmK)Ur}Th1PL%4ZA3TBOlD12J|JB{)U`d!V)G#1C^~(T`&~ zuR&C%3gF>l4yBCyhTe7?yVb6j!Rbn*u2ZTDn&~@roqF*6j+jo;M=S)T`M2FKYP!>G zaijE3hfUh!wjJdoMy3(^QMGh~*Kl-=WXmb_rc0(g#(RS|(`%br*ELC8E0J0Ky>{^8 zShOid9AEUtb*;y1iF8QM9COYjvM{s9U+GJ~wi?IAY>#6-?eV@CFCRmjnJQ!PSG?_3kJ8l6SRIvQ6)9qi*bF^` zM5Y@VsZq}#lWXmYjj?-)%m{66rmrH8$mFt@Y9G#F!zNG5ZcH!pD}!pLk-? z{uqyyCd%!jwvH+#=A^oIUDx&%R40qwLS+UoeyRS-r+Ua`#|Mb*yW(LyZSrz;vTdWt zwh`s((b9ZF&|bd-{rX$&vg{^z%5j4S^MZ9_F~87b`rdGVeF8NIar~`!Pi;>gW)(g9 zbc{lz@Q5%45VI2yr;oNrVk;X&OOVV+i5M+9ZQk;hkDOV}v2?ZlCy%6T-$4 zkFcIX`|ViQso2j6xxP-*Crf?ek*S4>fh9AJV6M&)p8EiQzH6Q|l@v(FZ5`K=sP5Q+4RY@8iATj-nSm&~GxNGDYAxud(R2 zHKgb_{Ri%*dL-0(Wy44;`YV<8ok1-9038)8Z^$PKuL9RWzqT%8XRWwXC4>`Rd*9f_ ztjfmkSpQ5QH?cF`o&m-NnFt)`M3?lGNF3SSlz-8fdNfgns!)))LZx+8pi;gXQvK{!y^r>E-+5d!i=(PDd-NEmO#BQY44|xar z89C!3y3eV_QFX?}FrjLK{@-{o!laSDgQ7W59a>FNgPwD?>Q@J2i_6RAXC6SUg5U%0 z;(~&{Pa=fPmk*#cg~tS)c1|8F)5-RAuKafQ@Cm0#3W?pm&eC#7HTu9ugfvYT?8>_< z|BL?BBKf@5tp{CyHLQPa*C_+xUfYUiwP?)0oww z(L;*3y_{bX^~(JtCYhF5Euz$g)c+WvbqP| z+pCoieB6;L6T4KPlZ$Rzf77k&3fH*`R^>OiqbFVy+wxomCO;8))j})*Q)>_Ap=W^1 zez-q8+_96vrGMFf)2(?Iz{)Qt_TNNERZ67HxKk~&O%Jld>>@Is`Fyi`Zjsr} z7VN7uB%|8B!7O`6mWD*^e9mIU8u?L9m54Ona7`atDNm) z+I%+?*(ppc`CvYLljN2VF`MC?G!OMijO4m$Vu`p^KY2mkQ%xkUA;mR;xV-<-Fejw9 zmwrugjq+Lz*T|0c-~f5P61K2j$sb`wm10`a1x$kuq+uGjQx%*RjFA9$xLI37igo-6 z%B6|&;rW$uoclCo29f_+`_XCh^(k{#eNMpFru-nzXUKfYWegX%3<(G8n2?t=WHH4| zA697rDXa=T4t+m6O@DNf_^U`Zv~SM`sjP?O zdKk}~65~E+5v!V=+#}`)!;pFA2y4D}9dwP8Rf>~g`MX7vO!L0$NV~`@2bp6W zJVJG`(etKuj_R>b3mYBK&o~Vp)rjvZ2p?7Zmq~=MBe9sRv#fSf2eo||ITqEyTC#Oz z)I)n>%yp!2bsbaq4YXijmoufhT$f){!*cvM=4#;Gue<>#w34n_SfaqiIrTSG4k8;ANSx5?60 z=fMJ1n{m&1I*w~fuOWBW+)Y+pBa+&?Z>N6MiUxS^o@ieT+DiF&=cyF35O2PG?pG-v zKZaQ8xfh&9&r-V|d=}yCs}Y|L9u+?C3ij9rcbva`sRs7=L~_{>c4gi-r^>Ry99#&S z!Vs=tm?Cqy0dnzal}h&ww$1ru&cAzesy2JxSeYZAGGqk}VcwP!$u|2>rIIHQdL+fo z^agT_{)Hk_q~FW6>6JP)u4UY1gLXLg@4cXJj@reVcF@KK^~!3Mk@d<=>L-xIpQuK` zOm&v+(ruV)2SfKj-bt*3o!vu}6)MFfLatp^QR-g1Zn;pp{_cA=-Boj^aQ|(a?y9}J zhWdk0)z-;4bnstssAJdam|jx*wR&sUU0r_la-r&h`-OXM7o^*2>V&&)yX&4!@RAa; zT&NsR5N^F^)20XN?!RpVse>QODw@HS@5+buJhZsO0XY zLM-ZghY(-qwszN`&Gp+s0G5cv`R`FU!ul%*>&c;W(4(auV~>G2)&*nm+w%TcKOaE( zQj}**(klEly33Em`nf>+S!G($(fHfhX$8mW+jvPcO8Rn1;h}Sdg*K1*(H#=glrA!@ zyuy#Me(VG|c(ibj!V{g}E?eY@byrEW{8;pxu~`3jUtN+<;#!Oz4!RVp^^0-x{{8*2 zem0;(To=%{`?`FcjqQx6_b2PIuo!gBq>yiBCH)JW-zKt6IU=j37hBd{XtV46s?0iz=U*1`AEesF$XrmMmc4n5)myjIWF`BeKP@hNee zX!e_$jLpgZFp^0!G#OgVt?3?p6ZHXL53JSrVxfok8^v^y+jUqq_8eAu*oDzi9i3mv zjQO5Dro(*4<3_}b5^>#x`M3BTvRRw|T=bB>ot>72`8Qvff4yHHFtr$gQM*TU{)_9H zWj$7p=8i=xM+wG41Ph*)fVJHQ9QoglhxXTq(eW6G6(gY*ZZk%5acen=o?0*T)Nn~p zWBn$&{^$)e3jLsoN%Y0nMfYMUO`1hc#EdlQS}46uzY6qb<@{c;5ACwe>qTZ4QTD48 z!wK2ajy0w0?q>pYWqqBf5yuDRpQ^9x|1G}{`M%CLW-zoRH(FwYUYkgoi1HVe)o3V= zDQUozG?FaCQrc;ySWcABRbDIizw7ru6aD_*j&suaIL5I!1vCQsm-rT) z!VD!jn1LAlGh|MtJu&zNdAFKHT;QN_{zlU#YiTycnHEnoAq(@Uk;X#19_Ivf zohkh?0iP5feKPJ!#C@G~oj8q;xdt<}mCTS>tdLImR^?hu5(7HaL6-n0$IQf6i}&wT z(`)0aO2QyNA_{X!8vH+-*jt$ZDP+A&AXZd{C%c{rxDmD> ze1MQqRE82;5L|0}MKJ6-j-;Ck>Y*Pv_k)~9gJG7~1a3$-@r8$sd8jfZNJJqEm3;1Me z@tItq2CucHay{@!SxKxdjqAHl-}1CI(6iCn^6`42m5uf9MvYW(eL~thx3|BDy&p=xmY&+G-D3#^ZqmH2boACbK>J&m0FLwN8!#(Ngtjd;%@d;q0v#xmq< z&n!IkXfY`xm}khdhW7TZ_D=tW_I9c($m?o}Ev4DIi^`%Z#Z_(gmkqw1l;e)%yl~I3 z&t?K&X$jcAHDl3xhs*)@;ADpJnFGAN)R(Nq0AHv?bipohRU7=g0A5b?pb&k)0L(6c zo<=d%;_p)DU<4~{9bwx_D`3<3J*THRyU?RXH-{8fNb{FN_IIiC2-Q^d{*#!w6@->R z$pxh$;(Q&oQUW}F=Mi(Dv=L>6lt>}w<=>+?cK|3HpcKkoY9VPq>$`{Ri}f=|q4Ke` z(daSxO#w>_<23;WeYduxKqA(k2OOKZ^-YzP@Aa(l5qp{@AJYOh%pv7BR5ns>V`w1) z(@b`;O1sKorL081msS3(j_Z@uelq#5aFoNEn0UeN*{Gw7wf9xfY}dJ8o)p zQ=Ul6Pa|fmH!a6FY3+Zamo$~8O(Rqn-Kyz}24Ic>a*#A}sL4Y2#?F|gfwKWl(+_=} zuO#Tc$Y0oGZzjT2f4)D@pX<-@XZxr4C;PMfnf`QeWfv&_3bdLTu%mB2WtT73Ulhp1 z+RQy);LpTby%o#wX9TA0CCbagll+qc#9>0KnJtxrpH@@eIT}4an(E&q(^^cplp$fp z<_BIzUs8M&3K!P70wJy-phnZhTmHdNWpAAq-M7Esf*;)Fgq!OxkhEl zjovKq_AEbbsUW~UTJ~tWI=RPJ3uyBD@MKz>EX`*0e|nG6uLs1+!Kb~nHwJ&IOk1oR ze5M9*d*$Gh>+xI2VPDoP8k(tAzgyjmou*!|-)jt1drd9r-paugt+utr(rSKTGYZ8Ou-r_#+bfC zDr|MDf-PD1oBpi8bgbnztfdZk0v=0cpVDM)wt)ZbRA&RLX4_I) ztuNdyD&BT)ofo{W&IySasHR-Zq*)NTqUnXhssOA3O+TZ1mMBxOM@;dMavDmrX_y7d zDe5%ZxFFrI%B^aWW**b1l}Z;bz+S)_%1Pq(&3~OwHoBzoG86fb40<&L7)^IF02_<} z*G3)Wm;?4`u51XfjzsERH1!6grXrO~rru3cC8Sb1GWjz>4-`*yt@^#d|4~h!i;pp2 z^6S9MV4Zp=awh})HTy@w3vup_gTDvTO!SEj;udkM_!z9T66g?d-H@(V<=~kNij%e? zs=Mbxd;b!;E9KS<#Ri$hGj8j}ZHuJNX)8&}b;@%nzoS|)wS1_~nB<%W|1|WFQToRy z57D^J1+HrFr-M4chgx|%ul!{wJ~GOGD6jj^`Yz>pyz<>4YTLy1XIhTY)|pyN)Y?h% zz+`{G>CqcT`Q?AvzAfH<3$OJ453P^uwZOb419%u{vSnQNXOss)lhh)htCY0yDJC-T zlF&IYv=X~e#3&ym?Ehq5I@X>j+lQ%F04FjPm#I&kE*mvGObs*X4d7l>PBY36MtDuL z9mh5BV;j}O`DShx)xjCZWhW`V=~`Gn(-ey~kFhNTl)|)-)>w3RjM~J+VMDKIS<{I) zFQ>ebt~bRYSjNCA18@!{oI3xf|4FB&oPyURN*XjBrjTMyEV?=2wTX|4`fT_BYmY_m zyCgje=^WDUxFp?#bfPR8hNP7Ltkw}as<>4_W!+O6eo^m&IY4PH7JV1~8E88#x_!V~ zWyvVTWV%n!Vf+mAr>A8WBcxbpLVHY|LDpga>aj68w?D-WujVOGo;x3hk`hT{8NkW- zPjG$&3`v6qlSWJ}m37*?34VinDRe4DOaWKD&SAhzngWcyw9W+Ufw`ALk45K>#G%tR zQzNX_!dD}g_H_A0J#DBn%BFy?J{GMWiT9P&`WlPw0p8FN$Dwf=w0Hg!v`H61JETGD z0kq--G!D?leI0ae$7y#r&XV$bIvxgjDx|PSD^fEwUc-q)3DNA>aR(SgW9TbXb;MZ z1M^yt>a^}-6#dAht=$ey^w(sLpW=%h>)c6fj{F21`vf>^FTj}&IDZ?y6pkBw+U&=k zLH{0jkmBQkA4FGn$RTK{n)K&6yn^NF2EOz*t;<(ezZAgNM|;gGGAZgml{0xI{_nKN^qQ zNSYXBx5`pK+1(7j`_cTSus=9p7<3BsiiM}!2YdbXv(lqU55d>|e>VN2`R}{FhM%bY zY|rMyYBts*Q|6!Ho=whvzyBHe9|1x0^-*1=-~W{Sb>QzU(mq!C0-EZ0IUg`#8u#9W zlpo7d8yUPMJq2g#IVEQ#=|gHiyMJ>Ec%dO6?KRzmTz1k;H@ec-(G&(+(>LG)rI1*g z$xiy4@EEqA{rP6w=d=uJFh-nL9BfWjZ7y;(HOdleqRlV88ufI6fM9rJ;$u0e`@F z8+2{@G0Xjd6wEKR>3@AemK-IQH@&X@K@fl`Q`)d61H6y#84#s(_;PUfKL}KF_`z`6 zUiv#_c(;0#820M-aZ3LLzdxP*#r`~5-o13&YLT{kW%L3TDI080 z#E7ssVRbJ?-xdd!B=E91(Knkvttk~!PUp9Q7RLK!3{s0DKE70%gH{YeI_S_AaN$TX zjpM9^|7zLRlGZ9=*OBuY+p3Fja$C~@Q34S7K)Rn=!bbEqC6deH+cBjxt|KO7Astb= ze-@&beEb-_=NqF4nId4{2HmPNOdyGHgzILO82KgYQ-rc-Xf?oG2V2HH$9M{ zjTd{iWv{pQsV95-)Z_Bv7Z>d=5T}TZuqI~vXEhZ!J9eeCO|-!H=eXywLOyuhfi-nQ zOE3dwjAto&sfWZ~(z3KQ1?Rc84#oOsfr5MR#go-P3o~N{2e(2-nbEo#zMn?-49F#G zz}(`>wfHT8MG1;r6rejb#YlIwT3%q3T$TEY;$tuc=D?cJ+eR1T%2qS)_>D%Ui!yXO$L-5GO z77R39>bJ=7M*>RAx2^wvp-)x*PoH|`Et`KVkcN|Iss1#06H;3~_QFTqp4C=~U$Vy* zNNG8&I>9OC$mVBE&l;aIV7{_3U$EDsm9cbxdSWc;fkA)KS24sWpN$2w_6mg~_?C|D zxzZLT5vSR_kG92t8OEWD>lwa^^*`G7&EAy3Hy5T1c3e)B=d}_^J&NMap#O}Vp1_^s zz@6P{2WNB4)byV>IpG3*4*F&J+rT$1Q=y{}<n~I*rq8~ysBx!ok|9fCp z*#8>1S_j8E3KLM<&;DsM53U+-|7{I!m-^=ATOk*hTmt!3)cue{ZqZiI>)Fu(|5goJ zk)smO1~4zwei?wo;WfTw!p<{~6bgI5zZtafCP(=)^~WUN$J>7JLfcc(wmKG{zw!Q4 z-SExJcdM^(wW86R)h5_!x#yDe448}%!b-$jTdei0+Tl#J#ZQ=t(hDt30)*ctTB0;g zS9l?KUna(PvwHCg&Xgy?gM|@+2I8|d6*HQF7UO?u{b9@i?QaJCMZ57*W;t|GobuK| z)EWeDz3)+A{L=*I3@*_pKqH2I&Wp5jM%j>{tK^)d_-~UT^(6zPC)zW#eUF0kef}Gf zZf>!*8W+M6L#=o$6S4WKQKL=Tzoe#rkHVtPO6VF!C#!I<_?)o#c$|GC@RK^^y7D+= z4yERx6uuQ>NFbJK3)bO<}E`~mq?W0w6F{-5~HJp2Xl zxAyH(7goaIV!Oz2c>hVtx^J;EdF}fqH!J#Z-=J8^56kA6QsArPbnpni06#y zjc#f^!6M$#g`JN$hES}u_}9T=(?eEI7ScVseH6yZi(q(U6I!Cuk@g{8XSpWNC}aa5 zkEhQ=N$_-dOU*5nUh0cRY!mfio1tegq;iuUIc90?4x8s=FGd>4WO^jpHuZ!MXu@Zq z|0XHM;@49TniDW;#_i%d=z33G*qe#ZoncpE*1)^1GW!hkER}0WlZfUCz&;D!#^FAK z{=-{Q>#A*V-v=tDC0#r44J3G!IdDiKwT*5a=8Kl$7ce#StrV$xIzL)ZiSnyUG#HD2 z4faZ04^xi~)ytD`IL+p@_}$1Q563i#L9Kani|OG;_jI&E_h92*?`#4JuA_BHE%sS3 zlT>Rk!U{77Y>1mAV{1lZEV}-pS;_(*v0#q^=eV%)y z6hNB5gg;Vt3M`2fE2AdXEzQd}2ghKWjM zWaDh{#^VQu6{XRAdv8?oh}qc7H%53SyW5(J6UO+Oi9ga^OXi>NB{Qy*4@&lqJ1ZH9 z5gIG%B_^+^IQKXs9Ps{iK*!)K)b5D4q2^#M(@_bG`)EK%oR9Pv^g&L!V<@}hhlzRy zeA7KgrcYAn$Pt!(o_3UIxfR^EUB2U>(u;wqepPod#_V%){+|1@sU>$1^WnmW+k=8js|H#hv!{II)I#t zny9x>en={l9=n*Ob-%q-IMknf(rC zBkKKm%{#Sh$M|Efccx+vd)vs&j;diw{i=uv4$SUPlVA*cfLHe+d zWxe3T6&4WXi6N@R#?LZXKI`vKs?JLdsgB9GvkLx%-k8XAL) z*kSaP4h9l-sudQX4)SgX=rjGI9J(ft5sGC!lCL7}&yCN{hXPFR^8uH9r;Ux>r>masK7G&AG}VO@n12|eno07UQL;7P zMyAPELH*p2FvyR44dc5-|9Kw;yB9cJ8t$Td@Jp)!3Iun8KNou0#>r^!-U%fqLMQYYH4M9N)Di3a6dyBP4lNjKiL3e8&%KfZoHuqiG-X z%&0zS)O-vk>><(4~v89J)8if!|`+itg^f-^MyJ!BOe%V0=fma?pme!lW=m zwL`O{^GmrCd`(W)-;ZDJg65@z+z002b_~?fEJFt0uE9U-9rpm%RkTBwPI~gfU@Suz^EMML(!@fueM<*5fBT>8YJSg;6`V^V17;<0qL+yQpW?bV*$^>c%mI>e+!f zK3~vqQ*aj0j6D=07%}_w#8Uh;2G04y6A#$|ei)0sKE|{(xGCqQ9E|SEVei9f^nVRa zD`~~FYqr6}nWXc!LEDE-MNPzPm4k)anr|o^j#iA~tQ(`l*%Ru2uTp|*m&z9h7(~Co=(>OZ$Rd zL!1p5Z-HP}f}S~WfwTFf$}-9|sXrg9On2ZD-h#LnmYymg`mlMO_W+bLZ#(cKf$*Hdg;kLW_HPmMfEfE#!vM)YuTd``8k#Je1Nb_=9SGl zd@qh~uDCSe_?M@w3R`HJ%+8*6;yIP+(MQqrVtlHN+{y13cw=l3YL;O#!t<5D~8QD+Wqk+%L4&Q1~G zsq)6|c$r5!vqWYeTf}3It*YxF^D~ENm+&Qrk~d_R7I^GloPP#B2T>n)L!{EPIw>c> zt>vGU=L1F!t{}4F`$o>&b;^euW**bvQd^r_ogvw99|N-r5(d8nx*_!ye%20u1ed-a zCuZeqRY9mg06pR>3YucRA!mQaJIkwir;DcSBGdZ@(x2@cnB?qJ*U4%A$=KuQ8<^sw zeoog{unxe>rE;v*gTCPj%7os?Dt))r!l)KbdYHXJ+z=9bZ`y6BM6xc1d!*umX%e7+6~)7 zbxXI0+Q0Wmc3R8MY+FlJs58S7W(-?GXA6zbZwWncdm|vta%~A2*<8 zWNunko7QA&v4$DTi2)}6glZLXJf`Lao)g&PyEWU|j59)p)K)G;^aixK6s^6b-xj)W zNxH|-`gkan-xhl7daKLrS&DIVOnyvDiOgK@*%rF@_Cn7>&lFEZh(leD*Si*>_HR)8 z$4j<_esjG(%p37tn7$#T#r_i(B(}(jvYdyv= zYsMW3sjEW<-W)O*^Ide_Dnq=nD)bKjSm@zJbPgX2y|WIpSi8rQ_Tn~tKR?4`eUZ-L zYS#?UEYE5R#gv)7DrDA~LT2N4Tt5xzNo7a}7zcHahaOs76?!}4@zBBR1Xr8qq?%d1 zC3L2+&Q*-rpzrsu$LTeHvB&z1(PINFq9b9>m|SHxWM*fJ=@?@tiy2>76*^$s66#!g z68Ao(doVNXV!+AvvRDIONEH@)wjj+Hs`t(Uv=eH+HznKP0W|<;IEDr8V76@I@O+`D zK;ij9KlY{rJ9u`vE9LogNnGt#*I$TpHb^v`QxGI zW;`BxP;>$_ej{!R{S_-8oxC;Y$_**VKkd@*@`ZK@Ssq{LK9>V!-bRg20qaawSx!}G z#P!DwzR-)p;f=n~BQC=(ho=N(-b7!H0NV#MSkDt1s%YvHn~uy7Oer& zUjZpfdu2YPR_~$h^$zIQ{q#q)P1>Sm<5CayHTF=boq&1_P|r^JAZPV$RiPo*|3$f0 z!34+;yXI>xzl}1VqRg2oCD?6fM5#d+ZI=&Q4YXxjD~0qHN*zV1)0472AK&(iRXFDx zdf%4r;hK5}Y|DM2F(KteU+6!)Kkz(pXEt!c$Z?@m?vp!lDyDraVr)~kC$;5DO5M0? z#u74-G#Arc0-QPss1GeoYuz3?_`MR(?(A$&p$IOZ2Ny8tLl!+oF^N)VJ7&3V$=1-> zqHUq}>$ip;xOFMTJ^eh_?JjfJ$j|g#?$Q6O!1HbnD4Pde8~BikzYI0s0u|l2=&{gS z>-ez2dVe;kn_+&Ab(w5;Z3~^5*?{B)gm}{zYPGG{W8A&UQ|u}A zfQy-c{gzcB7WB(2cuJDOnUIB{6#kIwSDr7_b=6g&cWsoa=Kz0(1-r+D z_4$d{?!jJF7%~C$?FpH5m?I|3^<+rT6=RHV1Gnx6uQ*_PJoNT;9M-KEux_ZPRDB=t z#k`wRb?P(oJu8rYQ(d+vB^wlJEf4XW4t?iBCT^)G2aq~BtkC6_pKT3wURxD<&z1wa zwg4xroG&yYY{mOh^y?At3Qx8NmT;=Al~T7gAS^UO0>#c;_Qv6XDNm;FKRl52ue3m> zKQ%B3l84eVdBGrm59dIs3`_Tv;f+eMvyfspYWFXk^3l5wGp`N2%P0~&*OIIYr# z8zH}lO`liNUDuTfA6QR>$1RAwXGyLgE2lIpbJubK0J!o^b$E$WCVOM!+Z=&vkv&+ zV_a@}F5l77F4?ECH%j?r*16#CBE;+x*P!0K(ZIVM((iD;z;S%N%;PpWShQB`n$EPy zYt$lvxty1NnR6uPst7SG$>Dn{B1GR>9_b~QW#YyaUZ^c-avP4iaI*+@(?+F(6iTHB zU$6lZvv@}itJNU$PGN@NG25=<_K-BmCS~ECu=+B(ucqsxb1(}!`>vQ-c50B8!7enN zh^G@}*O>9(Wze*lb_Ms^6yxR=qU^vKg>$|2Zoxa)@9Qj;?(GO-e|vSol}xs{w&NzX zP-d3zi3r^L_^$hGke>DNbbW7J3OoC>X zi<=#`O4kC$wFR{Pnc$TYvjRD(y5LjNIuG9aK8dds+}7}Qp`2ud`I_cHz{WJl4g7>%d*V} za3^GJA@p#C)$B#uCuVsD`t%(7v_)F0&U3yIVOTQzOmH=N`~CchJ&Fd`qDM1>&!9)F zR3xuQkBpMrT_CfPMPg=gC&+BW=S<;bxv+!GX6gL^3vF@%^f)W}`xtsW&$&*W=X%kt zJC0UTBS+S{iHsAjBJFddyEteN8>JMntz)Cam+T_=?sR#9$Oo%cyX*34bVeLfiT7dY z3Agb`3D$^=G#)g|^zHbtMLqyayMe69-9d(uMw+U5aiIJ)tCd|j!I_-uP4c3iUY zrT;WB3m(r{bR*7sJQ!p^d6PUD{$;qe$mTgbkm@=-VC8X>2i}c%*YostsA(~ZP3!wI z+KLhTWo#?%nfXy~TH7+j_GqyUy>urKd(2Wpz7>1g?ZdRpjlFoc6Xlo|Tia`DV-b5< zi(T2PZ{rYqL5q0+4R?8s5oH>g=BNTj`TCYkL`d^6&tkQ59O1&f=tW z+sIb2`rVXBr8(_a)%Y$w7Nw`GJttBFg(7ZUw1L^;S*_9G4@YTV!odva^A=04Jg);c zyrAVL(6Z|w{en6ZbWTUM9Al~L*l|@x+n$Ov1S^6GL62~Qn5A(cV7W!@_bJnuj5b(% z%B|=Lar~o~Ye~bnZ_;9Yy?gpuExuceAM0hHMNc=eB`o%z(_tNAU4=~e$na}xa!)#< zd*P;nR_vZvtJBF)bQQhdX(9cJ$U(8z$+YYXGiLZ3>33xTv-nb&AVzc66_l#8h&x{w zz^}mK&Y5a0rBWMV4)(uY%3dGek{-zEV71nOb#@EjJmJ&9^T8jXJ|M=M*`mX#e-ePNRxk!w?;3Tw;P&cT*QkZI2Csf^C1!E$ zSZWJ#tO3jeC)1FEFUJA*w%)4H>U6{~XP+Q`b8kl5YLP+iPe+L3dc+9M;7%LU_|`Mo zTFqGWUhtyIUeZFLyn$NoM6Fn~aa4XcHK2P2eYY{oTzK|jf1$y>@?6#aA9h&xI<=nA zwb^`T@_vW340gQJOILepkZVC}%Kz0cZ}S-gax?a3_+6;6Y%E@5^bK%+J6-Eo^ceO9 zH=jB41|v|;Pt(5ndaD@zy7U&@7pN_Eel@r}ULCHUZANql{zui9M1|I%QZA zMDH=S4#07q-~|#c$5|*NZcNo#aE3^>4C^8;)G-p3{d#VhH`KwD70%PMOwaK)?IY8{+s)uUBed;_!A4(Udnd=!F_?y{(mbwHMHrklDwAD7W75 zhhV?HZ2{)ZJxa?z*Q>|c>iu2t=hD=rTI%LAPwv+R{)oG=P^SiMKhNQN=BvhNjm>8s z-A_}iQCdipzJEX0im~2Gxe-xbO_ZzMe*pJEt~-i3)8osDz3ncXT!SAF+JnI>mFCk~ z&DHw2`OLNZbuA@;7#)eXapitc_zFvevAk7oJ;J>}XOj3!uu^m;3|b4{2A9IqNKj@4 zW?jHsVAl1e`QUKMzai;e%5Qy6)QCm@1S)eW@A-5s6b|m=`BjQDv=T21=aAqWd037W@VKkSU!U$@)~MY?_;qr`l#A05{}eflK<55B*!4B><76p#J@-OlHkoRacobi%qYS?5r{&nDmx66y zGe5)oka3t?mMvcj@iu5^c_A^)6r4CK6w(c&&UYUq%u+V6-Tn8Y6Ib>CdVy1Yz=5B< zLFR5gQ~w6$iwGTbP6+OFWU$|Q*VmLc+r>YCUsQ{0G5ZUKb>jN3NjK#gz7BfNn@@6d z)JW*_&>rksWZ~;5#tzNYwg-M6o2#zEEp>$5)3n>YD}2&w69b7;trn7xU6^g$+(Pf4 za}V0;8r_uyNAx-KvD2i%5x#3Az7gF6MzIT(CN(u+5Cc%?1GDGo(zMsY8SjVNVW zn)M#oFD?#D2ov98s=pOWNabcUmNlt1T1hw2TGkj z0sk0Mm*U-wcUp!hk3r`i4AynsqnI!<+DEnXN4T8h%!=obS`fgB!S@k?yw!C?87!8)n5pei3s4}+aAUHC5J0(VCUP{n=@FnT@;m65B+(cIjT$ntvN1~R+r^A}{(9n)` zr>m|Xs*xO?_HgMm>t~1bXb(P}>h$bxHe8)fA^&!abhLNrlxfyl)8rs2d^y~}t(SE2 zs}e5b1%8$zFw3vY-|0Sk9H#;0J(5c;bTZ4U^UwFbhn}Pd{}d5YNs$>j(0;0QL)O9E zG8gor8AGY3nFZkH?#NLhw0D(BZ-v)P(;rPoTUDVo8GNwS&GynUz5afC=La2Cp)IL6 z`zvpixNs`J4w`Zq0<)k@dNG&Yo{Sq*kcTvZrnTUv(|G$g79@M{7%UFEP&i~gJG;!I z+MO)z!LqCJ2cdt`Gr#zT=)A$%WAt^6f!b0;x*I$NbMQQ{(**2(&wY4+ay^C+KOg)q zZhZp28VcpR!Exy-XABv{o`b(~>##;tzceH6JIDxv_b<4g$R;lAfE-}gs{9r10y6tt z@MZ9W@=ETgxYadj>+M#nVbd89r_>jV zz7(?^q}Cib4B*AF$)#b>cJgM}m!|tHlIH?OJU?6_PL>snCuUtJzT-|i@{&{tU4kgt zoYBcFTy>*$h&!F*js)+)U6R1e2B#P)8!BsZH{v|~`|d#Zcg2nZQnUki=zNk_>M_f| zkct$}z+4`^kyWzw#)VNAqcRWS!|>yAoZCV5pabmc4`7jl#uGkmv&gQpNW`9v_@XV; z<|lUCxvvzDrd{>%L4Cvs?Isp|Q}sDAj%F?)xL-FGl}5eL>S3Fx_>%Exe1=lbQ(f|S zH(w>6$EYY5Gv}dOFG-^+u_Pk$v-lRRN zwWo&^!}7ySQAt0r{_E zdhPd_5i;*v(9O5~zV28|#cj)0@p{$q6P@T249ZGob$;Et_Uw{b{P9DPrOZ&&J7kp` zkUkXs!H@$z8;iE!F7p!mQ1pSJ`I1T=SMMP8rpMLWNxkK9^)^zU^0>NzNKz@%*4s*v zR%0to=|MTK%@z7y-Q()5Bo60+;ZqL_bHfaP#!v4W?#hU5%4h*YMp{gUhe`!(i2Q^lj6U-=4c0UJzSV`YOJA^|{CI_~W@d zmh#=#4Bk=m`*S8cBt4`(JEdoUzpZCLUq%F_>y@gZ_ka2H`3>n=H%JRCJ+Wmsrbegq z)j18v9$9kyXSzdk2h_5`w}4lY75LqdT@3AgrKzx6g7z+X>7DuM!A~MC{rm2;S3T~9Qc;@a8sHUXOM6g3$>8pgmdGmotANO_;w}vy-NIC$&SRg z7V#Z=`i;}YZO7Y-x1DUy=%0$SAFdFwLkBKJ@W#JuA!>+ET z`*HXRuW7mX19g_aL1F^4MJr@fg~|`(j7-aNkqk4ZJ0$2u%6C+J0d2n$wWuwQn<>q> zr))RBpiK&vABT5@FJ!}wEE9eL6h9R>K`H(;Y&+eFeNqSX2k;-F$M-0Er7aq~L+3H? zn*BP~`BP}5&xkms+q_BCH9@mWXZMm_w}Ll47NdLra|gz%3?kc{=5TbUT^1|D=qv_` zYi8S0GW{|IU(z^R9B_eW4nwXqR*xH@}?*99LRHAlIKX|%|YIrOY-I<@|?(XUXtfbS z3C4Xz9UcEk^@?h`K0Vs{xG*nQ5V|(7EU{adHjD01tUQ;szi)uF)75?rI}HaThP2h9 zquWq;qzt>K3vt7_@m`sp4%>_W;pOB2*>v*%Y3_QUn!3{b%}Yoki5UJV0@VkVs;3}e zvC?*JlK=q(3846=Y9WwdVgrduP;_S2wA;?nj%NzYb_TUG$JX|=x^s55*6!J@8nHda zc0H%qPG{Y1ck0gWY4yFc9paw`iIx3*?metzjT)t@jOYc693RX=ZzE32Q`)Oh<-A}P=s6?ewTRan%%Y0D z5>=)dDPBRf(?eG_hctr$qsBOy#*k)+rDY&34>&JL$L;_cs^$ph3_y)zP zN}I>{lAPIC%c{)qUHjzZrCTos$ug2Y?P9u9QGN_x_b8O!R*qdGg&r0rM1NIz2v`OE zK`}+CJ;N3V`2SC9Y;7obGIi}ySiYbfsf}_DRmmv6C;Y91lqu>f?8kmRbRM=EG%?I7 z>8B_I5S76Fr2)K3&m*&3Ym9R7NdG;@rafS%AK zSuD<7u-pR6F5?U9e{5cH-YK1+ti6CYI=oGP8dWT)_?-L`k;P-9$LO7E_DE8=P{Z=d zF_XQA^oL^U`D5N=N#XKX$~#DTAeNFjrbS8yBaVj=pZz)UnF&6XQXK4hEiinZ6mFD4 zdl8z3&;}_qfY6&*%VPf)>seZT(>jZAQ8ibNFv3n^XDv?!Bn>o#Rm=MR;wa8a358R0 zWu1gQTb+L+^3Oon$hnw{%Tpp3&`p0d*E-}nk;nx+CA9JW`(i@wq@s8F{%GEf$os1) zc{8!!AY*G4$O+6BdV)!3N#Z&(;{yb2yR4kVd#dS#Krb3FEnd-Edmff_ z#Z0b6=(IR#;G=Z~_J^Evr>sYm!1t2If(LLWD+d@rW8!p}d`dzC1hHz6$NqW}P8Q?< z8K;$yh0SB72Gzba=XVk1IAI#8y~KyZ>Sby>_8g&g0#+n_gj`kj0okR%h{)RwYhChr z1UaX!&k0PgjB7QzYN5~V^p!aZ<>4%x<)?nkws89g@5o`js2w!toxAco*hP^wa_FFS z%giH&Y5U?jUQ`Q`(MIUCIK=WzV>~aNpoU&6l6?&Cn<$TZUV+hed(CnZH47#vsb++u zm2|+|RWp);4!ubyJLK^*c^>|LCTse`$6AsD&f#)^pz%Lcse0N>RArbzP*Ip z1m&c()sVLQRAyTgkoN64lz7G_br;FCh@);mArCU>tJyapYvjWJ)u(AjAx$;p4<=#1lC%^ILRX<0HT?}en}jH( zFXB^?rIWI{lehbOc%PoaJNPGgPhwAL-jREPG(l>;9LXPh!!&2gc+;u6Rj8JvZI1E~ z5}&BXvC~QVcGW;$--p`K8%#Rr=CWc)b+SL^viZR2jz^Re%0a@7V(moEkhE_+(gF^$ zUM2Y)6zTDR4(2wJv`(6pi7VwEg(hLb1>dg2Z3@m?YK@|wP}Sp+Fm|+QJ|B}pw{AiI zGVQOX1c5yuOn+Pski8);3BvYrd!d6PCIRen);#AdJc_;1(OF~Kf4Jz>LdW@$lLfAp zqu7%kojyj`hs!u8^@_RBa&-haW~8zZVMP>9{qlaZ`uvbfhdXy3??Vd-pWv+?a;6^T zT>a*;5tA$RXb`9Cu8zq2S@APWt%4C&Df>s+46Cr`eycE)Um-L#S%ut2*zUSM3S?jj z%Yq$MW@;7O8?e_EJb_&qZOAwpGBCxm`V9CKc%RY# z488%T4|DoY;cJFZp-;7dnmZ7l%ML)dpSL;{TYF?TtQ4g@aqY9e(}C->1XmrnPLsIm zz+sxi^(XM{mbm^Ce6#2@x*OQ?HMzuOsf7O3buag`dx?)wT+YxiZ-CLR%rl^GnrH z%}r2)QWyCoM;X;eY@$Y?kETS9h#I3$oMqNWwUM&WtD?sI7Mx9-WwHu-ptbrnQ}Z4X zhe5q&F>xU3VNef)dQGX!YnUO`7w0w1A(cbw7TCS9nS_B<>`u3vg+3q_f^91CoJt8? z+MipyJuNEn<$3>?HOv(23o7w8^yk;{8R**_fFz$?j8>b`YFLQSZ_N~QGl_2vP}U8C zu7;l1w?wTTmS17(uO0j34Pr_PVs$L5*;H$)6Lq?H`VYcP_rIfQ5;%MvvA~k(Ofh9^ z3*OdNk&f2SPF~urIC+Wfirs78ncZwMi3-I*;B%mhI=J&MfAqs2?AYGBZR^&afZw-e zi`UcL-Q{*ay?L|C>D<)W>9E^7I@)cvwzk&Rr=Hrlal?l7>z{mb-MY1F*Q{B+x}~LM z)vA>%o12@Pni?A$tyXJ8!-^Fv>g((4>gtv+UtU{VTT@e0jmu)OR8>_~;;O)9#$_^@ zUbe6YOMbJBJvd?&mTGd3E8oVGj$L?zf@~eBN9c{}3(N#s21jpHY{m)tMo8an-vxSH z8)_A1Y4StBGI6OmK?Vv_1-@I;GYG^ap3EDcuF;NsZ4uOXW@cK_!^RnN|1BMMNxp=| zURdVK;~!dYJ~i?lZ0^QsxN%LyB52fj(yvfFZ1YCUf`-c*SBAk~`3AUg>NvGUP^eFY zDD*JRQ1qV2!72XwYdrV$-naKzerD;vRL(SKOEC}Dgvx{pJv978zWQz=5}X)CYuKJU zDGjh|s12p#S9zXnM@&SXj!|Ncp}8h8&uH*wdJyx>!SF5R0A^S=dMx;obl(;%x~!)eS_i1N|IP1OKeLEK#R5h8fEeQ*>)ZCi!2?ruM_B|048ZMQ2V%=s3<8 zusjNVn*%E|mGcEvReV-cMK$e7;HZx#eLGXsSj?EER8jrSnW7&4Tyu`7R*hZTY~2`%xU1O4yTG5Q>8eoG6{TBMLqnv znDf%A^JTg#F}g(gL>DW+YI7DnM>Y80F||Z*HA#6XMs2D&PvB5$M)f>!7jr~rb%9KGeQK#y;;bs7qf)ET>a^KS_bl}ut&Epf$lKe zjmYYMyb*cfT@_=15l9y*0Uogc-AYOqKUB8l;ict|n9LQGRTg8(+9`3i_71zF(^%4b zS6r`mN|c;+Ep`|fXT%R<2k0lsNWbhX{pgMKYkZl0XB+XupO9?$mBAnSFz2U;Q5}cB zvF_uMPR;K>Mm3q+#MtA{HXZ)*n>WfR{4Zu0s5*Y&_m7s${RPY^PP|>k*mng7&R#w^ zWTo)L6ClDXKmAPgQ9*1 zw|pEuef;&$k6&JYX7wZC)bP63o_%8Av!`M!;O!uyAYT>Jm?$JM9)@WC&KW}JIPKhINmx#;k7f#qKuI(yqrZhy9!sNPcL7&%Af3b zH+l2cMIWAd=J`V3z$=$Ruhw;Dzv=x+-I;?;?%~;&2F}k@@BQubOH!_R4{SEf9C~fG z*1dF2{kEF^asG(MU17(M)M+V< zll;_qDNHH(=TIX1k7SlDdGJGdeU1RXY#DEAUeQ|FT)Voexz$?7io3c4#T~^yhu2f= z@&tSw=K{K>omoVUZi`vx;)**JvLvU)gQ2XdIF0&*!rsG=8b%n&*$;+ z+ni*%*wyU{xNL6M4p;Xk-r~0ToqTOKY}<6&IvmrJ?~$RW`+t*be%4rKfp^>;{9$77GtnKc?ycwm zJKrfwzmhMoKgK(Hy^ao80zx3sW|_d|bJ!3|jSQe0r6%$o$g$Jy*_NP9P`P$Eq?+>G zo&axmZFTuw)G_Vb;|%<9ibUR8>LZK{Nk#>JNi@96FL98nnwKD5d55I=91PT145`G&gMIEixHeWT$SCo8*6tH(RZ%T349Xw$`qwZe3YbvC7)K zav9oOgr4*8e%N1fKar?Ij0yS_J;bAU8}+Z>2@#;vz?&$g?w1=@(DNwY;NfMVC&r^h zK>bb?k%vU5&(k$k28j~o2gr^w2HJS#-#n z>*>bOWstL{+irsiDz6XKCR0?qFz;ZVYQvm!M8UG#5N<1>6|^CDH$v z6gcSCWsBepn5g1u%oxA0U^kiKfyp}z#@%-Di7OV}CtZenTr$Bf>C)cgqI4tb^Z(^~ zM#-`d!J$6c8-grb3wg39+c|QVo?+SVBb-ZdcU(uxSjl&4mL2-)f@jwQ*Cu`u{rUS} aMc?21xMlXu)f->k{AJmD3v2d$QU2ecpMJT&TE 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 z04YEUkOHItDL@L40;B*bKnjooqyQ;E3XlS%04YEUkOHItDL@L40;B*bKnjooqyQ;E z3XlS%04YEUkOHItDL@L40;B*bKnjooqyQ;E3XlS%04YEUkOHItDL@L40;B*bKnjoo zqyQ;E3XlS%04YEUkOHItDL@L40;B*bKnjooqyQ;E3XlS%04YEUkOHItDL@L40;B*b zKnjooqyQ;E3XlS%04YEUkOHItDL@L40;B*bKnjooqyQ;E3XlS%04YEUkOHItDL@L4 z0;B*bKnjooqyQ;E3XlS%04YEUkOHItDL@L40;B*bKnjooqyQ;E3XlS%04YEUkOHIt zDL@L40;B*bKnjooqyQ;E3XlS%04YEUkOHItDL@L40;B*bKnjooqyQ;E3XlS%04YEU zkOHItDL@L40;B*bKnjooqyQ;E3XlS%04YEUkOHItDL@L40;B*bKnjooqyQ;E3XlS% z04YEUkOHItDL@L40;B*bKnjooqyQ;E3XlS%04YEUkOHItDL@L40;B*bKnjooqyQ;E z3XlS%04YEUkOHItDL@L40;B*bKnjooqyQ;E3XlS%04YEUkOHItDL@L40;B*bKnjoo zqyQ;E3XlS%04YEUkOKd|DKP2fq?fr>1=%dks`_@gHXVATHosbtpI4Ql%x|m6&#N*~ T&hr)XSyj=>eCNZzcl7@QJ!G`~ diff --git a/targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/prebuilt/spm_server.bin b/targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/prebuilt/spm_server.bin deleted file mode 100644 index e4412b02e571e7f5f026455b81ae39d4cb7a4d35..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324832 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

9I0oX>F%pqTdQ@!e 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ðwr-T~d)6BUUh_&4&LV765Qt*I2rw3 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

`q7goov)UZH0{x>S?r{&tgEj^j{K{Rj!uJy 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�)R=;UNheK1C-XTyXV>MHSVLZ_u3s_sVU&%|cbosY0xV|Ag# z1ho5mU4g1O(T}=RI}{(TrWpHJsW6R>_=CO;@XA^Si&{SeIRkjY2xp zsAe6xdf9BGN3o1uC;h2jwhrlAEMwP9+tkalkXkb@^ScdT*;jQrEv#1;!F;KOx(;ik zP6&3b))gtcHj^UtN3hTFyFVZ`(vf}BJBZq}l=e{dd4!GUzSI|5u0dQu3`f8?wCcg^ zLn|pxNkCPrAa=5Gj2NC$b3($u169_b=2@BkSZ9o*z;Z2OQEP#v6j8f<3rsgexFRMX zpS3qeT|N%;nON?F__@3Q^QEn7%CpZhNL_vr%GZ{wOHJh#b z-&Xv6-uL!~;nLXa-<$ipY}FQjmr?UE1Aocl3pBL!3`|VxH*9Rz!l8BBj-9={eF8%I zL_`l67B^zjlv#6@E?=9zb@#pl*(cAQzwzkl^Ox^Rt2k~&>)GN(lJ+C6SLGboeDA=^ zey4i6mztFJ*)+N9;#+@M?Od@#E1%bIN}UtaoSU4UpdXep;6&25%!l%=n)g?yl&(H` zGIsT|>E0*aom+d-=*kBDCJ8NHI_{X7(*6GSjQ)3Lei{`V)MZ87Ip=K`nh7$_PwJEX zUa#<+_oA)0f+82GS_7807Q8+}xF=%`i~Po+(3nY4Jr zi|mcQgDtlu&hb5!9yI*C#f!zcO*B{Dp4Qf|JaPR{<9a7IS!fS$-^g!tw`K>9WwhC+ zZ{^;7M}CihOKbYQPiPhMcJhLhgviaQW~mpZYV*&}{ak%wVaf2oO%>^%PL!pNILD4p zn?23%FdeQ&zq4gpwC?Etn(1-u-mEmHiQ9p0@0l(Z3XQ*+Hmd_H_A-6U)8g(jjl_IG zI@9SyLZXyuH8<;752n|X{nfXaW(l*#l`-8im(}aYv};@EydBf;&!(~0nTC1YOV=?S zpV|euF)a_=nmdQ-8NFuLXr}2%zC$0T>y&3(;+eKLt2~c0eGi0~Oko=Dd^Gqi)7jW% zza!JSt98{1ruQ?$cPE(UrxtAM%yhTgs=I_~pDq=OjMH z_SK^0l?t}MoKA#lvVCSA{O&f}Z^qlB!`QyF7met}_TQo0qb_V8UQpy6V*4>zIOwz=_>qV zzNS+#SM{k9omJRfF`TGQt`b0YbVC%h%$wtr1viAdasVSdK*4 zA=o-gQT{k$H`aNB@{WjDtg{H~97lN*#6^@%L$p<|a}{MDV_gHJ{wO~W^bSZ6oZDZn~BL}#q?7-d%?f)F3n>oi39vj~5zGY{)r z#X4V6-VQMU>%2kP&4>XA4Fubc6y+}>;;_zctn&uzSR;I}&IGLU3FR^ov52||D6U&w z?al5&v)j=4^S~HP-antak>B{Id`>k+ld5RVKX@*iCt{N|>vK+Qd?+?w^T$WNK*XkN z^7+VT<3`o~u`#1GL~O1mUx<8-pYk=4uk};DCi1m@j zW+~zg^3xDfL@DwXA;J(A>T)AdW)?yRF%M;e5ITsp$d5qSA#jl_vWsHf`c-}KMc#ov z0i0I^E)&otzow6UO_A>llcQ5aY*8G$X19y_{zeA>Kri&tuX!EA_l1E!FT{@q*r!_9 zw}!g%N=?f`1ltF{`(tBD{k*((e5u-HKgP1+g79ltFvp34F`|1Q=Ya@Bgd;MH1My2% zaCP-0)oS{W61@!&h6p2sF~S5<2VsgZL)1moL)1r@BP2u{fz(tGr+So=U>#m-OP zigmEe_`vK8&N@YAZX?`=kqk{RR;0=2ipnpBzGiqU;mX*uqh1rp^-3-N zO^0s(i+Y{@wcdS}sQ1~|NosCz({%Zkj(U8{Sbe_bQl!rj{s#EX&5&<-6|upHZ#mMK zZ#m7R<~P0g2jCZ0HpUTUj32I8J+(1iohQOFlV9@E)p;JstMg0VG34QHjH*uVm%Quh zJXR;~m%O{`JXRo5l3u~_Ie|)}g$kSA}g$GKqwy^7a_Gj^^CQpQEcEqy0+UEkC zk*B3zuhvPi^;nrub)E>*wdAeMV?P05G5wJOqyQ;E3XlS%04YEUkOHItDL@L40;B*b zKnjooqyQ;E3XlS%04YEUkOHItDL@L40;B*bKnjooqyQ;E3XlS%04YEUkOHItDL@L4 z0;B*bKnjooqyQ;E3XlS%04YEUkOHItDL@L40;B*bKnjooqyQ;E3XlS%04YEUkOHIt zDL@L40;B*bKnjooqyQ;E3XlS%04YEUkOHItDL@L40;B*bKnjooqyQ;E3XlS%04YEU zkOHItDL@L40;B*bKnjooq`-esfQ=IxbVY!%xPScpm*W5b%`)bk&NLKSE^I8clp`__ z>k$e>4nm12L>RL%tPxHK5u4^PCN-z+k$9hTa?|HI)y~T?@AuRELd=K%G`}A6DL>6; zV16d%uUKQ7h&7nLiF6y%e5Cu4-bb2)v=HePq|cD%BQ<-#VY{3$hVaFoT=j45KQB<` zHG<Fw8*v{|TkijBDLXFNpP}p3oo(vG6}^6_!Rgg3qJK#NQsDoQ0^J^S zPAme|(Hkj?aCO8WWs#_kRHQ8A>X?a?#X@zgK+0mhI<_HYk)e)5NLl2l;{s9^3U%Zo zWl^Y(7f4ws)lrF*1^1*Tw2`tfR);xK79w>tN6NxU9d1Zjc&MWrQWk;g=#7*`xH@8x zvPe`%DpD45b<9M{Vxc-#AZ4*$9ovwy$WX^2q%3mOaRDg{g*x()vM5x?3#2TR>ZnA@ zf_qvM+DKU#tHT^A3z0gSBW2;F4mYGMJk-$*DT_dL^hU}eTpck;StP0>6)6k3I%Xne zu}~c=kg`~>j%`R;WT@j1QWiPtxPX*}LLK=?Srn?{1yUADbyOl{!9A-9ZKN!W)nSg5 zg-9LEk+N`7hZ|BB9_r|ZltrLAdLv~Ku8tU_EE3g`ij;+19W#-#Sg4K_NLj2`$2O!a zGSqPhDT^F+TtLb~p^ki{EDF`}0x1inIx3N};GWlnHc}SG>M%#jLZpu7NLe_k!wo45 z4|OnCh*9Uc4_bW7T*Ut)?9gUN0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbz zAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi z0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS z6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AF zNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu> zfD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d7 z1xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PP zQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbz zAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi z0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS z6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AF zNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu> zfD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d7 z1xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PP zQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbz zAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi z0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS z6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AF zNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu> zfD|AFNC8rS6d(mi0aAbzAO%PPQh*d71xNu>fD|AFNC8rS6d(mi0aAbzAO%PPQh*d7 z1xNu>fD|AFNP*ufFzMx_mw6S1$5@(GG4ps$s#K+U6`VSitCt^A&x_RabJgib^>UBn Izi#CJ098vJbN~PV diff --git a/targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/prebuilt/spm_smoke.bin b/targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/prebuilt/spm_smoke.bin deleted file mode 100644 index a0df490131dc3aae6034a3bbd1b9b92da9dfc2b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 324832 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o{UDrCJ9FXkRJ9_XL;z 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 QUs->QGT-IU?;q~}0EG**^Z)<= diff --git a/targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/s_veneers.o b/targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/s_veneers.o new file mode 100644 index 0000000000000000000000000000000000000000..94b09968af3187e8f97841c99d044947d2690b33 GIT binary patch literal 644 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

m*!{!X%y%e0`FA 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�W@Na>NV>)Y_iJ%moafQ+-j%V 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

HOD8+a1;)i6HIwqwd0C(uPTUq9>4c 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 G`hNh|9nKa2 literal 324832 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

U` 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�TK~PeysqVQ@r8UUwR~ocw<(nmeE(B5 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 zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2J zBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZr zKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{0wh2JBtQZrKmsH{ z0wh2Je<3jO-Nbj33zbvLyG9k=4i(+*72W8v?%Kkb+yd8oDcIU diff --git a/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/tfm.bin b/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/prebuilt/tfm.bin deleted file mode 100644 index 7ed014ed5e79802574a764430b471909e34ea601..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 521888 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 z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH* zAOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8} z0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq z5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLhq5+DH*AOR8}0TLjA|7Qq{ te>eW!!~&Jnveu})ZC~DYD{o^<+f@bU%iHYoc4>L*Sl;$cmHg}RzW~~DvpWC) diff --git a/targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/prebuilt/cmse_lib.o b/targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/s_veneers.o similarity index 69% rename from targets/TARGET_ARM_SSG/TARGET_MUSCA_B1/prebuilt/cmse_lib.o rename to targets/TARGET_ARM_SSG/TARGET_MUSCA_A1/s_veneers.o index 706fd2b99688e42f18b231f883d1703aa6b15824..70479f3b4dfc9d524c08f2a389cd7886f2b6495d 100644 GIT binary patch delta 160 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