Stack Crash when used psa_ps_set (not */ns build) to store a certificate

Product: nRF54L15, SDK: V2.9.0

Application: Matter + BLE multi-protocol

Hi, 

we want to store X509 certificates in  secure storage.  I went went through Nordic supplied materials, Dev Zone and tried an implementation without success.

Material went through:

  1. https://docs.nordicsemi.com/bundle/ncs-2.9.1/page/nrf/app_dev/device_guides/nrf54l/cryptography.html#ug-nrf54l-crypto-configuration
  2. https://devzone.nordicsemi.com/nordic/nordic-blog/b/blog/posts/persistent-storage-of-keys-and-data-using-the-nrf-connect-sdk?utm_source=chatgpt.com
    1. The above one is good one, and it would help more if there would be sample application. The one provided is not easy one.
  3. Sample example: Hardware Unique Key, psa related etc.
  4. Nordic Dev Zone past tickets but can not find much help.

 psa_ps_set() fails for PSA protected storage without TF-M 

I added the below code in the matter + BLE application which was based on Nordic's Matter door lock example. I started with certificates initially, the stack crash occurred and then switch to the below simple example, which apparently someone else also tried.

psa_status_t status;

    status = psa_crypto_init();
    if (status != PSA_SUCCESS)
    {
        printk("Issue with initializing crypto engine\n");
    }
    else
    {
        printk(" Crypto Initialized \n");
    }

    MtiCryptoKeysInit(); // see the code below attachement. This one generates HUK and MEKE


    int rc = settings_subsys_init(); // added this based on a previous Nordic ticket, I don't think it is needed. Matter enables this by default
	if (rc) {
		printk("settings subsys initialization: fail (err %d)\n", rc);
	
	}

    uint32_t flags = psa_ps_get_support(); // this works
	mti_debug_printk("psa_ps_get_support: %x (%d) - %x", flags, flags, PSA_STORAGE_SUPPORT_SET_EXTENDED);

	status = psa_ps_set(1, sizeof("HELLO"), "HELLO", PSA_STORAGE_FLAG_NONE);
	if (status != PSA_SUCCESS) {
		printk("Failed to store data! (%d)\n", status);
	}
    else printk("SUccess in storing Helllo --->");
    -----
    
    Debug output:
    psa_ps_get_support: 0 (0) - 1Store CA cert: uid=1 size=6 ->uid=1 p_data_state=0 data_length=6  ->trusted back end step 2 -> step 3 -> step 4 -> step 5in trusted storage_get Key - before hw unique key dervive key --> in HW uniqueKey: S1 -> in HW uniqueKey: S2 -> in HW uniqueKey: S3 -> in HW uniqueKey: S4 -> in HW uniqueKey: S5 -> in HW uniqueKey: S6 -> in HW uniqueKey: S7op=0 length=32 ->In T0: State=67  ->In T1 ->In S7:T2 ->In S7:T3, State=67 ->In S7:T31 ->In S7:T32 ->In S7:T32 state=6800->E: ***** USAGE FAULT *****
E:   Stack overflow (context area not valid)
E: r0/a1:  0xaaaaaaaa  r1/a2:  0xaaaaaaaa  r2/a3:  0xaaaaaaaa
E: r3/a4:  0xaaaaaaaa r12/ip:  0x00042f78 r14/lr:  0x69000200
E:  xpsr:  0x2002fa00
E: Faulting instruction address (r15/pc): 0xaaaaaaaa
E: >>> ZEPHYR FATAL ERROR 2: Stack overflow on CPU 0
E: Current thread: 0x20012bf0 (main)
E: Halting system

    

I traced the code and found that the stack crash occurs when  cracen_key_derivation_cmac_ctr_generate_K_0(operation) is called from /opt/nordic/ncs/v2.9.0/nrf/subsys/nrf_security/src/drivers/cracen/cracenpsa/src/key_derivation.c, line no 1134. I have added the printk's and I see  the  printk("In S7:T32 state=%d->",operation->state * 100) getting printed. I have another printk and it does not get executed.

	printk("In S7:T3, State=%d ->", operation->state);
	if (IS_ENABLED(PSA_NEED_CRACEN_SP800_108_COUNTER_CMAC) &&
	    (operation->alg == PSA_ALG_SP800_108_COUNTER_CMAC)) {
		if (operation->state == CRACEN_KD_STATE_CMAC_CTR_KEY_LOADED ||
		    operation->state == CRACEN_KD_STATE_CMAC_CTR_INPUT_LABEL ||
		    operation->state == CRACEN_KD_STATE_CMAC_CTR_INPUT_CONTEXT ||
		    operation->state == CRACEN_KD_STATE_CMAC_CTR_OUTPUT) { printk("In S7:T31 ->");
			if (operation->state != CRACEN_KD_STATE_CMAC_CTR_OUTPUT) { printk("In S7:T32 ->");
				operation->state = CRACEN_KD_STATE_CMAC_CTR_OUTPUT; printk("In S7:T32 state=%d->",operation->state * 100);
				psa_status_t status =
					cracen_key_derivation_cmac_ctr_generate_K_0(operation);
				if (status != PSA_SUCCESS) {
					return status;
				}
			} printk("In S7:T33 ->");

The prj.conf settings are:

CONFIG_NCS_SAMPLE_MATTER_PERSISTENT_STORAGE=y

CONFIG_NCS_SAMPLE_MATTER_SETTINGS_STORAGE_BACKEND=y
CONFIG_NCS_SAMPLE_MATTER_SECURE_STORAGE_BACKEND=y
CONFIG_TRUSTED_STORAGE_BACKEND_AEAD_MAX_DATA_SIZE=2048

CONFIG_SETTINGS=y

CONFIG_ZMS=y
CONFIG_NVS=n
CONFIG_FLASH=y
CONFIG_FLASH_PAGE_LAYOUT=y
CONFIG_FLASH_MAP=y

CONFIG_NRF_SECURITY=y
CONFIG_PSA_CRYPTO_DRIVER_CRACEN=y
CONFIG_PSA_CRYPTO_DRIVER_OBERON=n
CONFIG_MBEDTLS_PSA_CRYPTO_C=y

 I have also added the code to generate HUK and MKEK - below is  the code. The below functions calls the same function and completes successfully. 

psa_status_t derive_key()
{
	uint8_t key_out[PSA_BITS_TO_BYTES(256)];
	psa_key_id_t key_id;
    static psa_key_id_t key_id_out;
 #define ENCRYPT_ALG PSA_ALG_GCM
	psa_status_t status;
	int err;

    psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
	uint8_t key_label[] = "HUK derivation sample label";

	LOG_INF("Generating MKEK key");

	/* Set the key attributes for the storage key */
	psa_set_key_usage_flags(&attributes,
			(PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT));
	psa_set_key_algorithm(&attributes, ENCRYPT_ALG);
	psa_set_key_type(&attributes, PSA_KEY_TYPE_AES);
	psa_set_key_bits(&attributes, 256);

	key_id_out = PSA_KEY_ID_NULL;

    printk("\n Generating MKEK ------->");
	err = hw_unique_key_derive_key(KEYSLOT, NULL, 0,
				       key_label, sizeof(key_label),
				       key_out, sizeof(key_out));
	if (err != HW_UNIQUE_KEY_SUCCESS) {
		LOG_INF("hw_unique_key_derive_key returned error: %d", err);
		return PSA_ERROR_HARDWARE_FAILURE;
	}
    else printk("Success in MKEK gen ");

	PRINT_HEX("Key", key_out, sizeof(key_out));

	status = psa_import_key(&attributes, key_out, sizeof(key_out), &key_id);
	if (status != PSA_SUCCESS) {
		LOG_INF("psa_import_key returned error: %d", status);
		return status;
	}
    else printk("Imported the key \n");

	key_id_out = key_id;
	return PSA_SUCCESS;
}


bool MtiCryptoKeysInit()
{
    psa_status_t status;

    mti_debug_printk("Storing Hardware Unique Keys --> Starting");

#if !defined(CONFIG_BUILD_WITH_TFM)
    int result;

    #if defined(HUK_HAS_CC310) || defined(HUK_HAS_CC312)
    result = nrf_cc3xx_platform_init();

    if (result != NRF_CC3XX_PLATFORM_SUCCESS)
    {
        LOG_INF("nrf_cc3xx_platform_init returned error: %d", result);
        return APP_ERROR;
    }
    #endif

    if (!hw_unique_key_are_any_written())
    {
        mti_debug_printk("No pre-existing HUK: Writing random keys to KMU");
        result = hw_unique_key_write_random();
        if (result != HW_UNIQUE_KEY_SUCCESS)
        {
            mti_debug_printk("hw_unique_key_write_random returned error: %d", result);
            return (false);
        }
    

    #if !defined(HUK_HAS_KMU)
        /* Reboot to allow the bootloader to load the key into CryptoCell. */
        sys_reboot(0);
    #endif /* !defined(HUK_HAS_KMU) */
    }
#endif /* !defined(CONFIG_BUILD_WITH_TFM) */

    mti_debug_printk("Success (result=%d) in storing HUK!", result);

    derive_key();

    return (true);
}

  1. The purpose is to store X509 certificates securely. Is there  a better method and an sample solution available.
  2. If what I am pursuing is the correct method, then  please advise a  solution to overcome the stack crash. I feel that I am missing something, since the same functions are used/working  when I try to derive a key based on HUK.
Parents
  • Hi,

    Did you get error "ZEPHYR FATAL ERROR 2: Stack overflow on CPU 0" when using your simple example?

    Best regards,
    Dejan

  • Hi Dejan,  Yes. Please see below:

    --------

    E: Stack overflow (context area not valid)
    E: r0/a1: 0xaaaaaaaa r1/a2: 0xaaaaaaaa r2/a3: 0xaaaaaaaa
    E: r3/a4: 0xaaaaaaaa r12/ip: 0x00042f78 r14/lr: 0x69000200
    E: xpsr: 0x2002fa00
    E: Faulting instruction address (r15/pc): 0xaaaaaaaa
    E: >>> ZEPHYR FATAL ERROR 2: Stack overflow on CPU 0
    E: Current thread: 0x20012bf0 (main)
    E: Halting system

    ----

  • Hi,

    Can you provide your build command and complete application log (for your simple example)?

    Best regards,
    Dejan

  • The build was done using VS code.   This is a simple example and we used nRF54L15DK. 

    ### prj.conf
    
    #
    # Copyright (c) 2024 Nordic Semiconductor ASA
    #
    # SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
    #
    # The Zephyr CMSIS emulation assumes that ticks are ms, currently
    CONFIG_SYS_CLOCK_TICKS_PER_SEC=1000
    
    CONFIG_MAIN_STACK_SIZE=4096
    CONFIG_HEAP_MEM_POOL_SIZE=4096
    
    # Enable logging
    CONFIG_CONSOLE=y
    CONFIG_LOG=y
    
    # Enable nordic security backend and PSA APIs
    CONFIG_NRF_SECURITY=y
    CONFIG_MBEDTLS_PSA_CRYPTO_C=y
    CONFIG_PSA_CRYPTO_DRIVER_CRACEN=y
    CONFIG_PSA_CRYPTO_DRIVER_OBERON=n
    
    CONFIG_PSA_PROTECTED_STORAGE=y
    CONFIG_TRUSTED_STORAGE=y
    CONFIG_TRUSTED_STORAGE_BACKEND_AEAD=y
    CONFIG_TRUSTED_STORAGE_STORAGE_BACKEND_SETTINGS=y
    
    CONFIG_TRUSTED_STORAGE_BACKEND_AEAD_KEY_DERIVE_FROM_HUK=y
    
    CONFIG_TRUSTED_STORAGE_BACKEND_AEAD_MAX_DATA_SIZE=2048
    
    CONFIG_SETTINGS=y
    
    CONFIG_ZMS=y
    CONFIG_FLASH=y
    CONFIG_FLASH_PAGE_LAYOUT=y
    CONFIG_FLASH_MAP=y
    
    ###Crypto Related ######
    CONFIG_HW_UNIQUE_KEY=y
    CONFIG_HW_UNIQUE_KEY_RANDOM=y
    
    
    

    // Main.c
    
    /*
     * Copyright (c) 2021 Nordic Semiconductor ASA
     *
     * SPDX-License-Identifier: LicenseRef-Nordic-5-Clause
     */
    
     #include <zephyr/kernel.h>
     #include <zephyr/logging/log.h>
     #include <string.h>
     #include <stdio.h>
     #include <psa/crypto.h>
     #include <psa/crypto_extra.h>
     #include <zephyr/sys/crc.h>
     
     
     #include <cracen_psa_key_ids.h>
     #include <cracen_psa_kmu.h>
     
     #include <hw_unique_key.h>
     
    
     #include <psa/crypto_values.h>
     
     #include <psa/internal_trusted_storage.h>
     #include <psa/protected_storage.h>
     #include <zephyr/logging/log.h>
     
     #include <zephyr/sys/printk.h>
     #include <zephyr/settings/settings.h>
     #ifdef CONFIG_BUILD_WITH_TFM
     #include <tfm_crypto_defs.h>
     #else /* CONFIG_BUILD_WITH_TFM */
     #include <hw_unique_key.h>
     #ifdef CONFIG_HW_CC3XX
     #include <nrf_cc3xx_platform.h>
     #endif
     #endif /* CONFIG_BUILD_WITH_TFM */
     #if !defined(HUK_HAS_KMU)
     #include <zephyr/sys/reboot.h>
     #endif /* !defined(HUK_HAS_KMU) */
    
    
     #define KEYSLOT 2
    
     bool derive_hw_unique_key(void)
    {
    	psa_status_t status;
    
    #if !defined(CONFIG_BUILD_WITH_TFM)
    	int result;
    
    #if defined(HUK_HAS_CC310) || defined(HUK_HAS_CC312)
    	result = nrf_cc3xx_platform_init();
    
    	if (result != NRF_CC3XX_PLATFORM_SUCCESS) {
    		printk("nrf_cc3xx_platform_init returned error: %d", result);
    		return false;
    	}
    #endif
    
    	if (!hw_unique_key_are_any_written()) {
    		printk("Writing random keys to KMU");
    		result = hw_unique_key_write_random();
    		if (result != HW_UNIQUE_KEY_SUCCESS) {
    			printk("hw_unique_key_write_random returned error: %d", result);
    			return false;
    		}
    		printk("Success!");
    
    #if !defined(HUK_HAS_KMU)
    		/* Reboot to allow the bootloader to load the key into CryptoCell. */
    		sys_reboot(0);
    #endif /* !defined(HUK_HAS_KMU) */
    	}
    #endif /* !defined(CONFIG_BUILD_WITH_TFM) */
    
    	return true;
    }
    
    psa_status_t derive_key()
    {
    	uint8_t key_out[PSA_BITS_TO_BYTES(256)];
    	psa_key_id_t key_id;
        static psa_key_id_t key_id_out;
     #define ENCRYPT_ALG PSA_ALG_GCM
    	psa_status_t status;
    	int err;
    
        psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
    	uint8_t key_label[] = "HUK derivation sample label";
    
    	printk("Generating MKEK key");
    
    	/* Set the key attributes for the storage key */
    	psa_set_key_usage_flags(&attributes,
    			(PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT));
    	psa_set_key_algorithm(&attributes, ENCRYPT_ALG);
    	psa_set_key_type(&attributes, PSA_KEY_TYPE_AES);
    	psa_set_key_bits(&attributes, 256);
    
    	key_id_out = PSA_KEY_ID_NULL;
    
        printk("\n Generating MKEK ------->");
    	err = hw_unique_key_derive_key(KEYSLOT, NULL, 0,
    				       key_label, sizeof(key_label),
    				       key_out, sizeof(key_out));
    	if (err != HW_UNIQUE_KEY_SUCCESS) {
    		printk("hw_unique_key_derive_key returned error: %d", err);
    		return PSA_ERROR_HARDWARE_FAILURE;
    	}
        else printk("Success in MKEK gen ");
    
    	status = psa_import_key(&attributes, key_out, sizeof(key_out), &key_id);
    	if (status != PSA_SUCCESS) {
    		printk("psa_import_key returned error: %d", status);
    		return status;
    	}
        else printk("Imported the key \n");
    
    	key_id_out = key_id;
    	return PSA_SUCCESS;
    }
    
     
     int main(void){
    
    	int status;
    
    	printk("Generate HW unique Key\n");
    	
    	derive_hw_unique_key();
    
    	printk("Derive a Key\n");
    
    	status = psa_crypto_init();
    
    	derive_key();
    
    	printk("\n----------- Store somethign using psa_set----------\n");
    	status = psa_ps_set(1, sizeof("HELLO"), "HELLO", PSA_STORAGE_FLAG_NONE);
    	if (status != PSA_SUCCESS) {
    		printk("Failed to store data! (%d)\n", status);
    	}
        else printk("Success in storing Helllo --->");
    
     }

    Build logs:

    Building psa_ps_set
    west build --build-dir /Users/subumuthu/Nordic/psa_ps_set/build /Users/subumuthu/Nordic/psa_ps_set --pristine --board nrf54l15dk/nrf54l15/cpuapp --sysbuild -- -DNCS_TOOLCHAIN_VERSION=NONE -DBOARD_ROOT=/Users/subumuthu/Nordic/psa_ps_set
    
    -- west build: generating a build system
    Loading Zephyr module(s) (Zephyr base): sysbuild_default
    -- Found Python3: /opt/nordic/ncs/toolchains/b8efef2ad5/opt/[email protected]/bin/python3.12 (found suitable version "3.12.4", minimum required is "3.8") found components: Interpreter 
    -- Cache files will be written to: /Users/subumuthu/Library/Caches/zephyr
    -- Found west (found suitable version "1.2.0", minimum required is "0.14.0")
    -- Board: nrf54l15dk, qualifiers: nrf54l15/cpuapp
    Parsing /opt/nordic/ncs/v2.9.1/zephyr/share/sysbuild/Kconfig
    Loaded configuration '/Users/subumuthu/Nordic/psa_ps_set/build/_sysbuild/empty.conf'
    Merged configuration '/Users/subumuthu/Nordic/psa_ps_set/build/_sysbuild/empty.conf'
    Configuration saved to '/Users/subumuthu/Nordic/psa_ps_set/build/zephyr/.config'
    Kconfig header saved to '/Users/subumuthu/Nordic/psa_ps_set/build/_sysbuild/autoconf.h'
    -- 
       ********************************
       * Running CMake for psa_ps_set *
       ********************************
    
    Loading Zephyr default modules (Zephyr base).
    -- Application: /Users/subumuthu/Nordic/psa_ps_set
    -- CMake version: 3.21.0
    -- Found Python3: /opt/nordic/ncs/toolchains/b8efef2ad5/bin/python (found suitable version "3.12.4", minimum required is "3.8") found components: Interpreter 
    -- Cache files will be written to: /Users/subumuthu/Library/Caches/zephyr
    -- Zephyr version: 3.7.99 (/opt/nordic/ncs/v2.9.1/zephyr)
    -- Found west (found suitable version "1.2.0", minimum required is "0.14.0")
    -- Board: nrf54l15dk, qualifiers: nrf54l15/cpuapp
    -- Found host-tools: zephyr 0.17.0 (/opt/nordic/ncs/toolchains/b8efef2ad5/opt/zephyr-sdk)
    -- Found toolchain: zephyr 0.17.0 (/opt/nordic/ncs/toolchains/b8efef2ad5/opt/zephyr-sdk)
    -- Found Dtc: /opt/nordic/ncs/toolchains/b8efef2ad5/bin/dtc (found suitable version "1.6.1", minimum required is "1.4.6") 
    -- Found BOARD.dts: /opt/nordic/ncs/v2.9.1/zephyr/boards/nordic/nrf54l15dk/nrf54l15dk_nrf54l15_cpuapp.dts
    unit address and first address in 'reg' (0x5004c000) don't match for /soc/peripheral@50000000/vpr@4c000/mailbox@1
    -- Generated zephyr.dts: /Users/subumuthu/Nordic/psa_ps_set/build/psa_ps_set/zephyr/zephyr.dts
    -- Generated devicetree_generated.h: /Users/subumuthu/Nordic/psa_ps_set/build/psa_ps_set/zephyr/include/generated/zephyr/devicetree_generated.h
    -- Including generated dts.cmake file: /Users/subumuthu/Nordic/psa_ps_set/build/psa_ps_set/zephyr/dts.cmake
    
    warning: MBEDTLS_PK_PARSE_C (defined at
    /opt/nordic/ncs/v2.9.1/nrf/subsys/nrf_security/Kconfig.legacy:880) was assigned the value 'y' but
    got the value 'n'. Check these unsatisfied dependencies: MBEDTLS_PK_C (=n). See
    http://docs.zephyrproject.org/latest/kconfig.html#CONFIG_MBEDTLS_PK_PARSE_C and/or look up
    MBEDTLS_PK_PARSE_C in the menuconfig/guiconfig interface. The Application Development Primer,
    Setting Configuration Values, and Kconfig - Tips and Best Practices sections of the manual might be
    helpful too.
    
    Parsing /opt/nordic/ncs/v2.9.1/zephyr/Kconfig
    Loaded configuration '/opt/nordic/ncs/v2.9.1/zephyr/boards/nordic/nrf54l15dk/nrf54l15dk_nrf54l15_cpuapp_defconfig'
    Merged configuration '/Users/subumuthu/Nordic/psa_ps_set/prj.conf'
    Merged configuration '/Users/subumuthu/Nordic/psa_ps_set/boards/nrf54l15dk_nrf54l15_cpuapp.conf'
    Merged configuration '/Users/subumuthu/Nordic/psa_ps_set/build/psa_ps_set/zephyr/.config.sysbuild'
    Configuration saved to '/Users/subumuthu/Nordic/psa_ps_set/build/psa_ps_set/zephyr/.config'
    Kconfig header saved to '/Users/subumuthu/Nordic/psa_ps_set/build/psa_ps_set/zephyr/include/generated/zephyr/autoconf.h'
    -- Found GnuLd: /opt/nordic/ncs/toolchains/b8efef2ad5/opt/zephyr-sdk/arm-zephyr-eabi/arm-zephyr-eabi/bin/ld.bfd (found version "2.38") 
    -- The C compiler identification is GNU 12.2.0
    -- The CXX compiler identification is GNU 12.2.0
    -- The ASM compiler identification is GNU
    -- Found assembler: /opt/nordic/ncs/toolchains/b8efef2ad5/opt/zephyr-sdk/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc
    =========== Generating psa_crypto_config ===============
    Backup: CONFIG_MBEDTLS_PSA_CRYPTO_SPM: False
    Backup: CONFIG_MBEDTLS_PSA_CRYPTO_C: True
    Backup: CONFIG_MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER: False
    Backup: CONFIG_MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT: False
    Backup: CONFIG_MBEDTLS_THREADING: False
    Backup: CONFIG_MBEDTLS_THREADING_ALT: True
    =========== Checkpoint: backup ===============
    Restore: CONFIG_MBEDTLS_PSA_CRYPTO_SPM: False
    Restore: CONFIG_MBEDTLS_PSA_CRYPTO_C: True
    Restore: CONFIG_MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER: False
    Restore: CONFIG_MBEDTLS_PLATFORM_SETUP_TEARDOWN_ALT: False
    Restore: CONFIG_MBEDTLS_THREADING: False
    Restore: CONFIG_MBEDTLS_THREADING_ALT: True
    =========== End psa_crypto_config ===============
    =========== Generating psa_crypto_library_config ===============
    Backup: CONFIG_MBEDTLS_PSA_CRYPTO_C: True
    Backup: CONFIG_MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER: False
    Backup: CONFIG_MBEDTLS_PSA_CRYPTO_SPM: False
    Backup: CONFIG_MBEDTLS_USE_PSA_CRYPTO: True
    Backup: CONFIG_MBEDTLS_PLATFORM_PRINTF_ALT: False
    Backup: CONFIG_MBEDTLS_THREADING: False
    Backup: CONFIG_MBEDTLS_THREADING_ALT: True
    =========== Checkpoint: backup ===============
    Restore: CONFIG_MBEDTLS_PSA_CRYPTO_C: True
    Restore: CONFIG_MBEDTLS_PSA_CRYPTO_KEY_ID_ENCODES_OWNER: False
    Restore: CONFIG_MBEDTLS_PSA_CRYPTO_SPM: False
    Restore: CONFIG_MBEDTLS_USE_PSA_CRYPTO: True
    Restore: CONFIG_MBEDTLS_PLATFORM_PRINTF_ALT: False
    Restore: CONFIG_MBEDTLS_THREADING: False
    Restore: CONFIG_MBEDTLS_THREADING_ALT: True
    =========== End psa_crypto_library_config ===============
    -- Setting build type to 'MinSizeRel' as none was specified.
    -- Using ccache: /opt/nordic/ncs/toolchains/b8efef2ad5/bin/ccache
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /Users/subumuthu/Nordic/psa_ps_set/build/psa_ps_set
    -- Configuring done
    -- Generating done
    -- Build files have been written to: /Users/subumuthu/Nordic/psa_ps_set/build
    -- west build: building application
    [1/10] Creating directories for 'psa_ps_set'
    [2/10] No download step for 'psa_ps_set'
    [3/10] No update step for 'psa_ps_set'
    [4/10] No patch step for 'psa_ps_set'
    [5/10] No configure step for 'psa_ps_set'
    [5/10] Performing build step for 'psa_ps_set'
    [1/293] Preparing syscall dependency handling
    
    [2/293] Generating ../../zephyr/include/generated/zephyr_commit.h
    [3/293] Generating ../../zephyr/include/generated/ncs_commit.h
    [4/293] Generating ../../zephyr/include/generated/ncs_version.h
    [5/293] Generating misc/generated/syscalls_subdirs.trigger
    [6/293] Generating include/generated/zephyr/version.h
    -- Zephyr version: 3.7.99 (/opt/nordic/ncs/v2.9.1/zephyr), build: v3.7.99-ncs2-1
    [7/293] Generating misc/generated/syscalls.json, misc/generated/struct_tags.json
    [8/293] Generating include/generated/zephyr/syscall_dispatch.c, include/generated/zephyr/syscall_list.h
    [9/293] Generating include/generated/zephyr/driver-validation.h
    [10/293] Generating include/generated/zephyr/kobj-types-enum.h, include/generated/zephyr/otype-to-str.h, include/generated/zephyr/otype-to-size.h
    [11/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto_base.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/bignum_core.c.obj
    [12/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto_base.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/padlock.c.obj
    [13/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto_base.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/nist_kw.c.obj
    [14/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto_base.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/version.c.obj
    [15/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto_base.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/constant_time.c.obj
    [16/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto_base.dir/threading/threading_alt.c.obj
    [17/293] Building C object zephyr/CMakeFiles/offsets.dir/arch/arm/core/offsets/offsets.c.obj
    [18/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/nrf_security_utils.dir/utils/nrf_security_mutexes.c.obj
    [19/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/pem.c.obj
    [20/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/pkcs12.c.obj
    [21/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/pkcs5.c.obj
    [22/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto_base.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/block_cipher.c.obj
    [23/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto_base.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/oid.c.obj
    [24/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/pkparse.c.obj
    [25/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/pkwrite.c.obj
    [26/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/dhm.c.obj
    [27/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/nrf_security_utils.dir/utils/nrf_security_events.c.obj
    [28/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/memory_buffer_alloc.c.obj
    [29/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/cipher.c.obj
    [30/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/cipher_wrap.c.obj
    [31/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/md.c.obj
    [32/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/pk.c.obj
    [33/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/pk_wrap.c.obj
    [34/293] Building C object modules/nrf/subsys/nrf_security/src/core/nrf_oberon/CMakeFiles/oberon_psa_core.dir/opt/nordic/ncs/v2.9.1/modules/crypto/oberon-psa-crypto/library/platform.c.obj
    [35/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/pk_ecc.c.obj
    [36/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/psa_util.c.obj
    [37/293] Building C object modules/nrf/subsys/nrf_security/src/core/nrf_oberon/CMakeFiles/oberon_psa_core.dir/opt/nordic/ncs/v2.9.1/modules/crypto/oberon-psa-crypto/library/platform_util.c.obj
    [38/293] Building C object modules/nrf/subsys/nrf_security/src/core/nrf_oberon/CMakeFiles/oberon_psa_core.dir/opt/nordic/ncs/v2.9.1/modules/crypto/oberon-psa-crypto/library/psa_crypto_client.c.obj
    [39/293] Building C object modules/nrf/subsys/nrf_security/src/core/nrf_oberon/CMakeFiles/oberon_psa_core.dir/opt/nordic/ncs/v2.9.1/modules/crypto/oberon-psa-crypto/library/psa_crypto_storage.c.obj
    [40/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sxsymcrypt/src/aead.c.obj
    [41/293] Building C object modules/nrf/subsys/nrf_security/src/core/nrf_oberon/CMakeFiles/oberon_psa_core.dir/opt/nordic/ncs/v2.9.1/modules/crypto/oberon-psa-crypto/library/psa_crypto.c.obj
    [42/293] Building C object modules/nrf/subsys/nrf_security/src/core/nrf_oberon/CMakeFiles/oberon_psa_core.dir/opt/nordic/ncs/v2.9.1/modules/crypto/oberon-psa-crypto/library/psa_crypto_slot_management.c.obj
    [43/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sxsymcrypt/src/chachapoly.c.obj
    [44/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sxsymcrypt/src/blkcipher.c.obj
    [45/293] Building C object modules/nrf/subsys/nrf_security/src/core/nrf_oberon/CMakeFiles/oberon_psa_core.dir/opt/nordic/ncs/v2.9.1/nrf/subsys/nrf_security/src/psa_crypto_driver_wrappers.c.obj
    [46/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sxsymcrypt/src/cmdma.c.obj
    [47/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sxsymcrypt/src/cmmask.c.obj
    [48/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sxsymcrypt/src/cmac.c.obj
    [49/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sxsymcrypt/src/keyref.c.obj
    [50/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sxsymcrypt/src/hash.c.obj
    [51/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sxsymcrypt/src/hmac.c.obj
    [52/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sxsymcrypt/src/sha3.c.obj
    [53/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/silexpk/src/blind.c.obj
    [54/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sxsymcrypt/src/mac.c.obj
    [55/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sxsymcrypt/src/platform/baremetal/cmdma_hw.c.obj
    [56/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/silexpk/interface/sxbuf/sxbufops.c.obj
    [57/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sxsymcrypt/src/trng.c.obj
    [58/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sxsymcrypt/src/platform/baremetal/interrupts.c.obj
    [59/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/silexpk/src/ed448.c.obj
    [60/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/silexpk/src/iomem.c.obj
    [61/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/silexpk/src/ed25519.c.obj
    [62/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/silexpk/src/montgomery.c.obj
    [63/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/silexpk/target/hw/ba414/ba414_status.c.obj
    [64/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/silexpk/src/statuscodes.c.obj
    [65/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/silexpk/target/hw/ik/cmddefs_ik.c.obj
    [66/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/silexpk/target/hw/ba414/cmddefs_ecc.c.obj
    [67/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/silexpk/target/hw/ba414/ec_curves.c.obj
    [68/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/silexpk/target/hw/ba414/cmddefs_modmath.c.obj
    [69/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/silexpk/target/baremetal_ba414e_with_ik/pk_baremetal.c.obj
    [70/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/silexpk/target/hw/ba414/cmddefs_srp.c.obj
    [71/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/silexpk/target/hw/ba414/cmddefs_ecjpake.c.obj
    [72/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/silexpk/target/hw/ba414/pkhardware_ba414e.c.obj
    [73/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/coprime_check.c.obj
    [74/293] Linking C static library modules/nrf/subsys/nrf_security/src/libnrf_security_utils.a
    [75/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/silexpk/target/hw/ik/ikhardware.c.obj
    [76/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/ecc.c.obj
    [77/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/ed448.c.obj
    [78/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/hash.c.obj
    [79/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/ecdsa.c.obj
    [80/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/ed25519.c.obj
    [81/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/hkdf.c.obj
    [82/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/mem.c.obj
    [83/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/montgomery.c.obj
    [84/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/hmac.c.obj
    [85/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/pbkdf2.c.obj
    [86/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/rsassa_pkcs1v15.c.obj
    [87/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/rsaes_oaep.c.obj
    [88/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/rsaes_pkcs1v15.c.obj
    [89/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/sicrypto.c.obj
    [90/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/rsa_keygen.c.obj
    [91/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/rndinrange.c.obj
    [92/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/rsamgf1xor.c.obj
    [93/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/rsapss.c.obj
    [94/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/sig.c.obj
    [95/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/util.c.obj
    [96/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/sicrypto/src/iksig.c.obj
    [97/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/cracenpsa/src/mem_helpers.c.obj
    [98/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/cracenpsa/src/ec_helpers.c.obj
    [99/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/cracenpsa/src/blkcipher.c.obj
    [100/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/cracenpsa/src/common.c.obj
    [101/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/cracenpsa/src/prng_pool.c.obj
    [102/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/cracenpsa/src/aead.c.obj
    [103/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/cracenpsa/src/cracen.c.obj
    [104/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/cracenpsa/src/ctr_drbg.c.obj
    [105/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/cracenpsa/src/mac.c.obj
    [106/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/cracenpsa/src/lib_kmu.c.obj
    [107/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/cracenpsa/src/key_management.c.obj
    [108/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto_base.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/asn1parse.c.obj
    [109/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/cracenpsa/src/key_derivation.c.obj
    [110/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto_base.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/asn1write.c.obj
    [111/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto_base.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/base64.c.obj
    [112/293] Building C object modules/nrf/subsys/nrf_security/src/CMakeFiles/mbedcrypto_base.dir/opt/nordic/ncs/v2.9.1/modules/crypto/mbedtls/library/bignum.c.obj
    [113/293] Building C object modules/nrf/subsys/nrf_security/src/drivers/cracen/CMakeFiles/cracen_psa_driver.dir/cracenpsa/src/kmu.c.obj
    [114/293] Linking C static library modules/nrf/subsys/nrf_security/src/libmbedcrypto_base.a
    [115/293] Linking C static library modules/nrf/subsys/nrf_security/src/drivers/cracen/libcracen_psa_driver.a
    [116/293] Linking C static library modules/nrf/subsys/nrf_security/src/core/nrf_oberon/liboberon_psa_core.a
    [117/293] Linking C static library modules/nrf/subsys/nrf_security/src/libmbedcrypto.a
    [118/293] Generating include/generated/zephyr/offsets.h
    [119/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/crc/crc16_sw.c.obj
    [120/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/crc/crc4_sw.c.obj
    [121/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/crc/crc32_sw.c.obj
    [122/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/crc/crc24_sw.c.obj
    [123/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/crc/crc32c_sw.c.obj
    [124/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/printk.c.obj
    [125/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/sem.c.obj
    [126/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf_packaged.c.obj
    [127/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/crc/crc7_sw.c.obj
    [128/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/crc/crc8_sw.c.obj
    [129/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/heap/heap.c.obj
    [130/293] Building C object CMakeFiles/app.dir/src/main.c.obj
    /Users/subumuthu/Nordic/psa_ps_set/src/main.c: In function 'derive_hw_unique_key':
    /Users/subumuthu/Nordic/psa_ps_set/src/main.c:47:22: warning: unused variable 'status' [-Wunused-variable]
       47 |         psa_status_t status;
          |                      ^~~~~~
    [131/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/utils/dec.c.obj
    [132/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/thread_entry.c.obj
    [133/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/utils/hex.c.obj
    [134/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/cbprintf_complete.c.obj
    [135/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/utils/timeutil.c.obj
    [136/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/assert.c.obj
    [137/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/os/mpsc_pbuf.c.obj
    [138/293] Building C object zephyr/CMakeFiles/zephyr.dir/misc/generated/configs.c.obj
    [139/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/utils/onoff.c.obj
    [140/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/utils/rb.c.obj
    [141/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/utils/bitarray.c.obj
    [142/293] Building C object zephyr/CMakeFiles/zephyr.dir/lib/utils/notify.c.obj
    [143/293] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_cache.c.obj
    [144/293] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_core.c.obj
    [145/293] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/fs/zms/zms.c.obj
    [146/293] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_mgmt.c.obj
    [147/293] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_msg.c.obj
    [148/293] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/storage/flash_map/flash_map.c.obj
    [149/293] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/storage/flash_map/flash_map_layout.c.obj
    [150/293] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/tracing/tracing_none.c.obj
    [151/293] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/log_output.c.obj
    [152/293] Linking C static library app/libapp.a
    [153/293] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/logging/backends/log_backend_uart.c.obj
    [154/293] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/mem_mgmt/mem_attr.c.obj
    [155/293] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/settings/src/settings_store.c.obj
    [156/293] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/settings/src/settings.c.obj
    [157/293] Building C object zephyr/CMakeFiles/zephyr.dir/opt/nordic/ncs/v2.9.1/nrf/subsys/trusted_storage/src/internal_trusted_storage/backend_interface.c.obj
    [158/293] Building C object zephyr/CMakeFiles/zephyr.dir/opt/nordic/ncs/v2.9.1/nrf/subsys/trusted_storage/src/protected_storage/backend_interface.c.obj
    [159/293] Building C object zephyr/CMakeFiles/zephyr.dir/drivers/flash/flash_util.c.obj
    [160/293] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/settings/src/settings_init.c.obj
    [161/293] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/settings/src/settings_zms.c.obj
    [162/293] Building C object zephyr/CMakeFiles/zephyr.dir/opt/nordic/ncs/v2.9.1/nrf/lib/boot_banner/banner.c.obj
    [163/293] Building C object zephyr/CMakeFiles/zephyr.dir/subsys/settings/src/settings_line.c.obj
    [164/293] Building C object zephyr/CMakeFiles/zephyr.dir/opt/nordic/ncs/v2.9.1/nrf/subsys/trusted_storage/src/storage_backend_settings.c.obj
    [165/293] Building ASM object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/fault_s.S.obj
    [166/293] Building C object zephyr/CMakeFiles/zephyr.dir/opt/nordic/ncs/v2.9.1/nrf/subsys/trusted_storage/src/aead/aead_crypt_psa_chachapoly.c.obj
    [167/293] Building C object zephyr/CMakeFiles/zephyr.dir/opt/nordic/ncs/v2.9.1/nrf/subsys/trusted_storage/src/aead/aead_key_huk.c.obj
    [168/293] Building C object zephyr/CMakeFiles/zephyr.dir/opt/nordic/ncs/v2.9.1/nrf/subsys/partition_manager/flash_map_partition_manager.c.obj
    [169/293] Building C object zephyr/CMakeFiles/zephyr.dir/opt/nordic/ncs/v2.9.1/nrf/subsys/trusted_storage/src/aead/trusted_backend_aead.c.obj
    [170/293] Building C object zephyr/CMakeFiles/zephyr.dir/opt/nordic/ncs/v2.9.1/nrf/subsys/trusted_storage/src/aead/aead_ctr_nonce.c.obj
    [171/293] Building ASM object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/reset.S.obj
    [172/293] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/fpu.c.obj
    [173/293] Building ASM object zephyr/arch/arch/arm/core/CMakeFiles/arch__arm__core.dir/nmi_on_reset.S.obj
    [174/293] Building C object zephyr/arch/arch/arm/core/CMakeFiles/arch__arm__core.dir/fatal.c.obj
    [175/293] Building C object zephyr/arch/common/CMakeFiles/isr_tables.dir/isr_tables.c.obj
    [176/293] Building C object zephyr/arch/common/CMakeFiles/arch__common.dir/sw_isr_common.c.obj
    [177/293] Building C object zephyr/arch/arch/arm/core/CMakeFiles/arch__arm__core.dir/nmi.c.obj
    [178/293] Building C object zephyr/arch/arch/arm/core/CMakeFiles/arch__arm__core.dir/tls.c.obj
    [179/293] Building ASM object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/vector_table.S.obj
    [180/293] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/exc_exit.c.obj
    [181/293] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/fault.c.obj
    [182/293] Generating linker_zephyr_pre0.cmd
    [183/293] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/thread_abort.c.obj
    [184/293] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/swap.c.obj
    [185/293] Building ASM object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/swap_helper.S.obj
    [186/293] Building C object zephyr/CMakeFiles/zephyr_pre0.dir/misc/empty_file.c.obj
    [187/293] Linking C static library zephyr/arch/common/libisr_tables.a
    [188/293] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/irq_manage.c.obj
    [189/293] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/prep_c.c.obj
    [190/293] Building ASM object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/__aeabi_read_tp.S.obj
    [191/293] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/cpu_idle.c.obj
    [192/293] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/irq_init.c.obj
    [193/293] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/isr_wrapper.c.obj
    [194/293] Linking C static library zephyr/arch/arch/arm/core/libarch__arm__core.a
    [195/293] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/thread.c.obj
    [196/293] Building C object zephyr/arch/arch/arm/core/cortex_m/cmse/CMakeFiles/arch__arm__core__cortex_m__cmse.dir/arm_core_cmse.c.obj
    [197/293] Building C object zephyr/arch/arch/arm/core/mpu/CMakeFiles/arch__arm__core__mpu.dir/arm_core_mpu.c.obj
    [198/293] Building C object zephyr/arch/arch/arm/core/cortex_m/CMakeFiles/arch__arm__core__cortex_m.dir/scb.c.obj
    [199/293] Linking C static library zephyr/arch/common/libarch__common.a
    [200/293] Building C object zephyr/arch/arch/arm/core/mpu/CMakeFiles/arch__arm__core__mpu.dir/arm_mpu.c.obj
    [201/293] Building C object zephyr/arch/arch/arm/core/mpu/CMakeFiles/arch__arm__core__mpu.dir/arm_mpu_regions.c.obj
    [202/293] Building C object zephyr/lib/libc/picolibc/CMakeFiles/lib__libc__picolibc.dir/libc-hooks.c.obj
    [203/293] Building C object zephyr/lib/libc/common/CMakeFiles/lib__libc__common.dir/source/stdlib/abort.c.obj
    [204/293] Linking C static library zephyr/libzephyr.a
    [205/293] Building C object zephyr/soc/soc/nrf54l15/CMakeFiles/soc__nordic.dir/validate_binding_headers.c.obj
    [206/293] Building C object zephyr/soc/soc/nrf54l15/CMakeFiles/soc__nordic.dir/validate_base_addresses.c.obj
    [207/293] Building C object zephyr/soc/soc/nrf54l15/CMakeFiles/soc__nordic.dir/validate_rram_partitions.c.obj
    [208/293] Building C object zephyr/lib/libc/common/CMakeFiles/lib__libc__common.dir/source/stdlib/malloc.c.obj
    [209/293] Building C object zephyr/soc/soc/nrf54l15/CMakeFiles/soc__nordic.dir/validate_enabled_instances.c.obj
    [210/293] Linking C static library zephyr/arch/arch/arm/core/cortex_m/cmse/libarch__arm__core__cortex_m__cmse.a
    [211/293] Building C object zephyr/soc/soc/nrf54l15/CMakeFiles/soc__nordic.dir/nrf54l/soc.c.obj
    [212/293] Building C object zephyr/drivers/cache/CMakeFiles/drivers__cache.dir/cache_nrf.c.obj
    [213/293] Linking C static library zephyr/lib/libc/picolibc/liblib__libc__picolibc.a
    [214/293] Building C object zephyr/drivers/console/CMakeFiles/drivers__console.dir/uart_console.c.obj
    [215/293] Linking C static library zephyr/arch/arch/arm/core/mpu/libarch__arm__core__mpu.a
    [216/293] Building C object zephyr/drivers/clock_control/CMakeFiles/drivers__clock_control.dir/clock_control_nrf.c.obj
    [217/293] Building C object zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/flash_page_layout.c.obj
    [218/293] Linking C static library zephyr/arch/arch/arm/core/cortex_m/libarch__arm__core__cortex_m.a
    [219/293] Building C object zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/spi_nor.c.obj
    [220/293] Building C object zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/soc_flash_nrf_rram.c.obj
    [221/293] Building C object zephyr/drivers/gpio/CMakeFiles/drivers__gpio.dir/gpio_nrfx.c.obj
    [222/293] Linking C static library zephyr/drivers/cache/libdrivers__cache.a
    [223/293] Linking C static library zephyr/lib/libc/common/liblib__libc__common.a
    [224/293] Building C object zephyr/drivers/pinctrl/CMakeFiles/drivers__pinctrl.dir/pinctrl_nrf.c.obj
    [225/293] Building C object zephyr/drivers/serial/CMakeFiles/drivers__serial.dir/uart_nrfx_uarte.c.obj
    [226/293] Linking C static library zephyr/soc/soc/nrf54l15/libsoc__nordic.a
    [227/293] Linking C static library zephyr/drivers/clock_control/libdrivers__clock_control.a
    [228/293] Linking C static library zephyr/drivers/console/libdrivers__console.a
    [229/293] Building C object modules/nrf/subsys/nrf_security/src/zephyr/CMakeFiles/mbedtls_zephyr.dir/mbedtls_heap.c.obj
    [230/293] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/sys_clock_init.c.obj
    [231/293] Building C object zephyr/drivers/timer/CMakeFiles/drivers__timer.dir/nrf_grtc_timer.c.obj
    [232/293] Building C object zephyr/drivers/pinctrl/CMakeFiles/drivers__pinctrl.dir/common.c.obj
    [233/293] Building C object zephyr/drivers/spi/CMakeFiles/drivers__spi.dir/spi_nrfx_common.c.obj
    [234/293] Building C object zephyr/drivers/flash/CMakeFiles/drivers__flash.dir/jesd216.c.obj
    [235/293] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/opt/nordic/ncs/v2.9.1/modules/hal/nordic/nrfx/mdk/system_nrf54l.c.obj
    [236/293] Linking C static library zephyr/drivers/gpio/libdrivers__gpio.a
    [237/293] Linking C static library zephyr/drivers/serial/libdrivers__serial.a
    [238/293] Building C object modules/nrf/lib/hw_unique_key/CMakeFiles/..__nrf__lib__hw_unique_key.dir/hw_unique_key_cracen_kmu.c.obj
    [239/293] Building C object zephyr/drivers/spi/CMakeFiles/drivers__spi.dir/spi_nrfx_spim.c.obj
    [240/293] Linking C static library modules/nrf/subsys/nrf_security/src/zephyr/libmbedtls_zephyr.a
    [241/293] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/nrfx_glue.c.obj
    [242/293] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/opt/nordic/ncs/v2.9.1/modules/hal/nordic/nrfx/helpers/nrfx_flag32_allocator.c.obj
    [243/293] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/opt/nordic/ncs/v2.9.1/modules/hal/nordic/nrfx/helpers/nrfx_ram_ctrl.c.obj
    [244/293] Linking C static library zephyr/drivers/timer/libdrivers__timer.a
    [245/293] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/opt/nordic/ncs/v2.9.1/modules/hal/nordic/nrfx/drivers/src/nrfx_clock.c.obj
    [246/293] Linking C static library zephyr/drivers/flash/libdrivers__flash.a
    [247/293] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/opt/nordic/ncs/v2.9.1/modules/hal/nordic/nrfx/drivers/src/nrfx_grtc.c.obj
    [248/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/main_weak.c.obj
    [249/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/banner.c.obj
    [250/293] Linking C static library zephyr/drivers/pinctrl/libdrivers__pinctrl.a
    [251/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/device.c.obj
    [252/293] Linking C static library modules/nrf/lib/hw_unique_key/lib..__nrf__lib__hw_unique_key.a
    [253/293] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/opt/nordic/ncs/v2.9.1/modules/hal/nordic/nrfx/drivers/src/nrfx_gpiote.c.obj
    [254/293] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/opt/nordic/ncs/v2.9.1/modules/hal/nordic/nrfx/drivers/src/nrfx_rramc.c.obj
    [255/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/busy_wait.c.obj
    [256/293] Building C object modules/hal_nordic/nrfx/CMakeFiles/modules__hal_nordic__nrfx.dir/opt/nordic/ncs/v2.9.1/modules/hal/nordic/nrfx/drivers/src/nrfx_spim.c.obj
    [257/293] Linking C static library zephyr/drivers/spi/libdrivers__spi.a
    [258/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/init_static.c.obj
    [259/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/errno.c.obj
    [260/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/version.c.obj
    [261/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/fatal.c.obj
    [262/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/kheap.c.obj
    [263/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mem_slab.c.obj
    [264/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/float.c.obj
    [265/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mailbox.c.obj
    [266/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/idle.c.obj
    [267/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/msg_q.c.obj
    [268/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mutex.c.obj
    [269/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sem.c.obj
    [270/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/system_work_q.c.obj
    [271/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/stack.c.obj
    [272/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/work.c.obj
    [273/293] Linking C static library modules/hal_nordic/nrfx/libmodules__hal_nordic__nrfx.a
    [274/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/condvar.c.obj
    [275/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/init.c.obj
    [276/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/priority_queues.c.obj
    [277/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/queue.c.obj
    [278/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timeslicing.c.obj
    [279/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/thread.c.obj
    [280/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/xip.c.obj
    [281/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/events.c.obj
    [282/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timeout.c.obj
    [283/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/sched.c.obj
    [284/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/timer.c.obj
    [285/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/dynamic_disabled.c.obj
    [286/293] Building C object zephyr/kernel/CMakeFiles/kernel.dir/mempool.c.obj
    [287/293] Linking C static library zephyr/kernel/libkernel.a
    [288/293] Linking C executable zephyr/zephyr_pre0.elf
    [289/293] Generating linker.cmd
    [290/293] Generating isr_tables.c, isr_tables_vt.ld, isr_tables_swi.ld
    [291/293] Building C object zephyr/CMakeFiles/zephyr_final.dir/misc/empty_file.c.obj
    [292/293] Building C object zephyr/CMakeFiles/zephyr_final.dir/isr_tables.c.obj
    [293/293] Linking C executable zephyr/zephyr.elf
    Memory region         Used Size  Region Size  %age Used
               FLASH:       64420 B      1420 KB      4.43%
                 RAM:       24312 B       188 KB     12.63%
            IDT_LIST:          0 GB        32 KB      0.00%
    Generating files from /Users/subumuthu/Nordic/psa_ps_set/build/psa_ps_set/zephyr/zephyr.elf for board: nrf54l15dk
    [7/10] No install step for 'psa_ps_set'
    [8/10] Completed 'psa_ps_set'
    [9/10] cd /Users/subumuthu/Nordic/psa_ps_set/build/_sysbuild && /opt/nordic/ncs/toolchains/b8efef2ad5/Cellar/cmake/3.21.0/bin/cmake -E true
    [10/10] Generating ../merged.hex
     *  Terminal will be reused by tasks, press any key to close it. 
    

    UART Logs - stack crash below:

    *** Booting nRF Connect SDK v2.9.1-60d0d6c8d42d ***
    *** Using Zephyr OS v3.7.99-ca954a6216c9 ***
    Generate HW unique Key
    Writing random keys to KMUSuccess!Derive a Key
    Generating MKEK key
     Generating MKEK ------->Success in MKEK gen Imported the key 
    
    ----------- Store somethign using psa_set----------
    [00:00:00.436,094] .[1;31m<err> os: ***** USAGE FAULT *****.[0m
    [00:00:00.436,098] .[1;31m<err> os:   Stack overflow (context area not valid).[0m
    [00:00:00.436,109] .[1;31m<err> os: r0/a1:  0x00000002  r1/a2:  0x00000000  r2/a3:  0x00000000.[0m
    [00:00:00.436,116] .[1;31m<err> os: r3/a4:  0x200045e8 r12/ip:  0x00000000 r14/lr:  0x0000a4c5.[0m
    [00:00:00.436,121] .[1;31m<err> os:  xpsr:  0x09000200.[0m
    [00:00:00.436,125] .[1;31m<err> os: Faulting instruction address (r15/pc): 0x0000435c.[0m
    [00:00:00.436,144] .[1;31m<err> os: >>> ZEPHYR FATAL ERROR 2: Stack overflow on CPU 0.[0m
    [00:00:00.436,159] .[1;31m<err> os: Current thread: 0x200008d0 (unknown).[0m
    [00:00:00.521,288] .[1;31m<err> os: Halting system.[0m

    This is a simple sample program to verify the working for psa_ps_set(). The HUK and MKEK key derivations were added to confirm. 

    Thanks.

    Subu

  • Hi Subu,

    Thank you for sharing additional details.

    Can you try to add CONFIG_THREAD_NAME to your prj.conf file for finding out in which thread stack overflow occurred? Afterwards, you could try to increase stack size for that particular thread.

    Best regards,
    Dejan

Reply Children
No Data
Related