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 Reply
  • 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

    ----

Children
  • 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

Related