NXP MCU 技术william hill官网
直播中

山中老虎

8年用户 921经验值
擅长:制造/封装
私信 关注
[问答]

SE05x - DeleteAll() 失败,返回0x6985的原因?

我正在尝试使用 DeleteAll() 但无法使其正常工作。我正在使用 NXPPlugNTrust nano-package API。我正在采取的步骤:

  • 在单独的会话中,将 UserID 写入RESERVED_ID_FAC TORY_RESET
  • 使用该密钥创建会话
  • 发送全部删除
我检查了除 DeleteAll 之外的每个步骤都返回 0x9000 并且用户 ID 确实存在 (CheckObjectExists)。我将我的代码与 se05x_mandate_scp03 示例进行了比较,它基本上相同,只是编写和使用了RESERVED_ID_FAC TORY_RESET 。
写入用户 ID(相关部分):

    uint8_t userId[] = DELETE_ALL_USERID_VALUE;
    status = Se05x_API_WriteUserID(
&session,
&policy,
0,
        kSE05x_AppletResID_FACTORY_RESET,
        userId, sizeof(userId),
        kSE05x_AttestationType_AUTH
);
使用全部删除:

    smStatus_t status;
    Se05xSession_t session = { 0 };
    size_t sessionIdLen = sizeof(se05x_applet_session_value);

set_keys(
&session,
        scp03_key_enc, sizeof(scp03_key_enc),
        scp03_key_mac, sizeof(scp03_key_mac)
);

    status = Se05x_API_SessionOpen(&session);
if (status != SM_OK) {
SMLOG_E(\"Se05x_API_SessionOpen %x\\n\", status);
return status;
}

    uint8_t userId[] = DELETE_ALL_USERID_VALUE;

    SE05x_Result_t exists = kSE05x_Result_FAILURE;
    size_t sessionIdLen   = sizeof(se05x_applet_session_value);

    status = Se05x_API_CheckObjectExists(
&session,
        kSE05x_AppletResID_FACTORY_RESET,
&exists
);
if (status != SM_OK) {
SMLOG_E(\"Se05x_API_CheckObjectExists %x\\n\", status);
return status;
}

    status = Se05x_API_CreateSession(
&session,
        kSE05x_AppletResID_FACTORY_RESET,
&se05x_applet_session_value[0],
&sessionIdLen
);
if (status != SM_OK) {
SMLOG_E(\"Se05x_API_CreateSession %x\\n\", status);
return status;
}

    status = Se05x_API_VerifySessionUserID(&session, userId, sizeof(userId));
if (status != SM_OK) {
SMLOG_E(\"Se05x_API_VerifySessionUserID %x\\n\", status);
return status;
}

    status = Se05x_API_DeleteAll(&session);
if (status != SM_OK) {
SMLOG_E(\"Se05x_API_DeleteAll: %x\", status);
return status;
}

return status;
我附上了一个调试控制台输出,其中包括设置用户 ID 和使用它。


更多回帖

发帖
×
20
完善资料,
赚取积分