I am creating a sas token to azure iot hub on the nrf9160dk, and I have my access key provided by azure and I have base64 decoded it and using it as key and I want to store it using psa_import_key. But everytime I run psa_import_key(), I get error -134 and bus fault. I used the zephyr hash library sample But there was no example on how to use psa_import_key.
[00:00:22.361,755] <err> os: ***** BUS FAULT ***** [00:00:22.367,248] <err> os: Precise data bus error [00:00:22.372,985] <err> os: BFAR Address: 0x0 [00:00:22.378,326] <err> os: r0/a1: 0x200125e5 r1/a2: 0x20040000 r2/a3: 0x20020ec7 [00:00:22.387,054] <err> os: r3/a4: 0x2003171c r12/ip: 0x00000000 r14/lr: 0x0003c7fb [00:00:22.395,782] <err> os: xpsr: 0x21000000 [00:00:22.401,000] <err> os: Faulting instruction address (r15/pc): 0x0003ffdc [00:00:22.408,996] <err> os: >>> ZEPHYR FATAL ERROR 25: Unknown error on CPU 0 [00:00:22.416,931] <err> os: Current thread: 0x2000f4c8 (unknown) [00:00:22.423,706] <err> os: Halting system
Here is my code, and I run
int import_key(uint8_t *hmac_key, size_t hmac_key_len) { psa_status_t status; psa_key_attributes_t key_attributes = PSA_KEY_ATTRIBUTES_INIT; printk("Importing key, length: %d", hmac_key_len); /* Configure key attributes */ psa_set_key_usage_flags(&key_attributes, PSA_KEY_USAGE_VERIFY_HASH | PSA_KEY_USAGE_SIGN_HASH); psa_set_key_lifetime(&key_attributes, PSA_KEY_LIFETIME_VOLATILE); psa_set_key_algorithm(&key_attributes, PSA_ALG_HMAC(PSA_ALG_SHA_256)); psa_set_key_type(&key_attributes, PSA_KEY_TYPE_HMAC); psa_set_key_bits(&key_attributes, 256); /* Import the key into PSA */ status = psa_import_key(&key_attributes, hmac_key, hmac_key_len, &key_id); if (status != PSA_SUCCESS) { LOG_INF("psa_import_key failed! (Error: %d)", status); return HMAC_ERROR; } /* Reset attributes after importing */ psa_reset_key_attributes(&key_attributes); LOG_INF("Key imported successfully!"); return HMAC_SUCCESS; }
And here is my configs
CONFIG_NRF_SECURITY=y CONFIG_MBEDTLS_PSA_CRYPTO_C=y CONFIG_PSA_WANT_ALG_HMAC=y CONFIG_PSA_WANT_ALG_SHA_256=y CONFIG_PSA_WANT_KEY_TYPE_HMAC=y CONFIG_MBEDTLS_PSA_CRYPTO_STORAGE_C=y CONFIG_MBEDTLS_ENABLE_HEAP=y CONFIG_MBEDTLS_HEAP_SIZE=8192 CONFIG_TFM_PROFILE_TYPE_NOT_SET=y CONFIG_TFM_PROFILE_TYPE_MINIMAL=y
I have tried different configurations, like using
And I also tried to generate a testkey that looks like this, and still got same error so I do not think the error is in the key itself.
static const uint8_t test_key[32] __aligned(4) = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F };
I think it has something to do with the configs in some way, or the attributes but I do not know.
Would you please help me to find out the solution?
IIf there's any information missing in my post, please let me know, and I'll gladly provide it.