2146471_ja-JP

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

2146471_ja-JP

2146471_ja-JP

S32K344 SMRエントリのインストールサービスが無効なパラメータ、サポートされていない、および許可されていないエラーコードで失敗しました

S32K344 用の高度なセキュア ブートを設定しようとしています。HSE SMRエントリインストールサービスのセットアップと実行中に、以下のエラーコードが混在して表示されます:HSE_SRV_RSP_INVALID_PARAM、HSE_SRV_RSP_NOT_SUPPORTED、HSE_SRV_RSP_NOT_ALLOWED。この件について、どなたかご教示いただけないでしょうか?よろしくお願いします!

私が使用しているアルゴリズムは、ECDSA P-256 + SHA2-256 です。

私は次のことを再確認しました:
命令キャッシュはオフになっています
データキャッシュはオフになっています
MPUがオフになっています
SMR領域は内部コードフラッシュ内にあるため、メモリマップされる
XRDC構成はデフォルト、SO HSEはコードフラッシュにアクセスできるはずです。
使用される公開鍵は検証のみに設定されています
スーパーユーザーアクセス権を持ち、CUST_DEL 状態にある
インストールサービスの前にSMRを消去しました

以下はコードの一部です。
#APP_BL_START_ADDR (0x00401000) を定義します
#APP_BL_SIZE (0x1000) を定義します

#定義 APP_BL_SIGNATURE_R_START_ADDR (0x0041ff00)
#APP_BL_SIGNATURE_R_SIZE (0x20) を定義します
#APP_BL_SIGNATURE_S_START_ADDR (0x0041ff80) を定義します
#APP_BL_SIGNATURE_S_SIZE (0x20) を定義します

// ECC公開鍵のキーハンドル
hseKeyHandle_t verif_key_handle =
(hseKeyHandle_t)GET_KEY_HANDLE(HSE_KEY_CATALOG_ID_NVM、0、0);

// 公開鍵をインポートする関数呼び出し、HSEは正常なステータスを返しました

// 署名スキームと署名用ハッシュアルゴリズムを設定する
hseAuthScheme_t 認証スキーム;
auth_scheme.sigScheme.signSch = HSE_SIGN_ECDSA;
auth_scheme.sigScheme.sch.ecdsa.hashAlgo = HSE_HASH_ALGO_SHA2_256;

// 復号化スキームを設定する。このCASEは、
// 暗号化/復号化
hseSmrDecrypt_t 復号化スキーム;
復号化スキーム.decryptKeyHandle= HSE_SMR_DECRYPT_KEY_HANDLE_NOT_USED;

hseSmrConfig_t smr_config = HSE_SMR_CFG_FLAG_INSTALL_AUTH;

// gs_bl_smr_entryは非キャッシュメモリ内に配置されています
gs_bl_smr_entry.pSmrsrc=(HOST_ADDR)APP_BL_START_ADDR;
gs_bl_smr_entry.smrSize = APP_BL_SIZE;
gs_bl_smr_entry.pSmrDest = 0;
gs_bl_smr_entry.configFlags = smr_config;
gs_bl_smr_entry.checkPeriod = 0;
gs_bl_smr_entry.authKeyHandle= verif_key_handle;
gs_bl_smr_entry.authScheme = auth_scheme;
gs_bl_smr_entry.pInstAuthTag[0]= (HOST_ADDR)(APP_BL_SIGNATURE_R_START_ADDR);
gs_bl_smr_entry.pInstAuthTag[1]= (HOST_ADDR)(APP_BL_SIGNATURE_S_START_ADDR);
gs_bl_smr_entry.smrDecrypt = 復号化スキーム;
gs_bl_smr_entry.バージョンオフセット= HSE_SMR_VERSION_NOT_USED;

// SMR インストール サービス、サービス記述子も非キャッシュ メモリ内にあります
hse_srv_desc_ptr->srvId = HSE_SRV_ID_SMR_ENTRY_INSTALL;
smr_entry_install_ptr->accessMode = HSE_ACCESS_MODE_ONE_PASS;
smr_entry_install_ptr->entryIndex = 0;
smr_entry_install_ptr->pSmrEntry = (HOST_ADDR)&gs_bl_smr_entry;

smr_entry_install_ptr->pSmrData = (HOST_ADDR)APP_BL_START_ADDR;
smr_entry_install_ptr->smrDataLength = APP_BL_SIZE;
smr_entry_install_ptr->pAuthTag[0] = (HOST_ADDR)APP_BL_SIGNATURE_R_START_ADDR;
smr_entry_install_ptr->pAuthTag[1] = (HOST_ADDR)APP_BL_SIGNATURE_S_START_ADDR;
smr_entry_install_ptr->authTagLength[0] = 256;
smr_entry_install_ptr->authTagLength[1] = 256;

// サービス記述子をhseに送信する

Re: S32K344 SMR Entry Install Service Fail with Invalid Param, Not Supported, and Not Allowed Error

根本的な原因は、MPU が適切に無効化されていないことであることがわかりました。MPU が適切に無効にされると、これは機能します。

Tags (1)
No ratings
Version history
Last update:
‎11-21-2025 01:12 AM
Updated by: