This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CC2745R10-Q1:关于 PSA_IMPORT_KEY

Guru**** 2550420 points
Other Parts Discussed in Thread: CC2745R10-Q1

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/1569912/cc2745r10-q1-about-psa_import_key

器件型号:CC2745R10-Q1


工具/软件:

您好:

我的环境如下:
板:CC2745R10-Q1
调试器:XDS110
SDK:SimpleLink Lowpower f3 ver.9.10.00.83
IDE:IAR Embedded Workbench for ARM 9.60.3.7274

我考虑将密钥存储在 HSM 中。

在下面的测试代码中、
我将 PSA_SET_KEY_LIFE 的第二个参数设置为 PSA_KEY_LIFY_FROM_PERCENSED_AND_LOCATION (PSA_KEY_PERCENSED_HSM_ACCESS_STORE、PSA_KEY_LOCAL_STORAGE)。
调试时、PSA_IMPORT_KEY 返回错误代码–135。
当我将 PSA_SET_KEY_LICENSEE 的第二个参数设置为 PSA_KEY_LICENSE_PERSISTENT 时、PSA_IMPORT_KEY 将成功完成。

您能解释为什么返回–135 错误代码吗?
另外、如果可能、请告诉我如何解决此问题。

#define KEY_HSM_LIFETIME PSA_KEY_LIFETIME_FROM_PERSISTENCE_AND_LOCATION( PSA_KEY_PERSISTENCE_HSM_ASSET_STORE, PSA_KEY_LOCATION_LOCAL_STORAGE)

static void vos_store_test( void )
{
    uint8_t u1t_Key16Data[16] =  {0x00, 0xBF, 0x85, 0x49, 0xC3, 0x79, 0xE4, 0x04,
                                  0xED, 0xA1, 0x08, 0xA5, 0x51, 0xF8, 0x36, 0x23};
    psa_key_id_t key_id = PSA_KEY_ID_USER_MIN;
    psa_key_attributes_t attributes = PSA_KEY_ATTRIBUTES_INIT;
    int_fast16_t s2s_status;

    s2s_status = psa_crypto_init();
    if (s2s_status != PSA_SUCCESS)
    {
        while(1);
    }

    s2s_status = HSMLPF3_provisionHUK();
    if (s2s_status != HSMLPF3_STATUS_SUCCESS)
    {
        while(1);
    }

    psa_set_key_id(&attributes, key_id);
    psa_set_key_type(&attributes, PSA_KEY_TYPE_AES);
    psa_set_key_usage_flags(&attributes, (PSA_KEY_USAGE_ENCRYPT | PSA_KEY_USAGE_DECRYPT));
    psa_set_key_algorithm(&attributes, PSA_ALG_CCM);
    psa_set_key_lifetime(&attributes, KEY_HSM_LIFETIME);
    psa_set_key_bits(&attributes, 128);
    s2s_status = psa_import_key(&attributes, u1t_Key16Data, sizeof(u1t_Key16Data), &key_id);        
    if (s2s_status != PSA_SUCCESS)
    {
        while(1);
    }

    psa_reset_key_attributes(&attributes);
    psa_destroy_key(key_id);
}

此致、