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

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

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

ソリューションへジャンプ
884件の閲覧回数
Feifan
Contributor II

I'm trying to set up advanced secure boot for S32K344. While setting up and running the HSE SMR entry install service, I keep getting a mix of following error codes: HSE_SRV_RSP_INVALID_PARAM, HSE_SRV_RSP_NOT_SUPPORTED, and HSE_SRV_RSP_NOT_ALLOWED. Could you guys help take a look at this? Thanks in advance!

The algo i'm using is ECDSA P-256 + SHA2-256.

I've double checked that:
Instruction cache is turned off
Data cache is turned off
MPU is turned off
SMR region is inside internal code flash, thus memory mapped
XRDC configuration is at default, so HSE should be able to access the code flash
Public key used is set to verify only
Has super user access and in CUST_DEL state
Erased SMR before install service

Below is a snippet of the code:
#define APP_BL_START_ADDR (0x00401000)
#define APP_BL_SIZE (0x1000)

#define APP_BL_SIGNATURE_R_START_ADDR (0x0041ff00)
#define APP_BL_SIGNATURE_R_SIZE (0x20)
#define APP_BL_SIGNATURE_S_START_ADDR (0x0041ff80)
#define APP_BL_SIGNATURE_S_SIZE (0x20)

// key handle for the ecc public key
hseKeyHandle_t verif_key_handle =
    (hseKeyHandle_t)GET_KEY_HANDLE(HSE_KEY_CATALOG_ID_NVM, 0, 0);

// function call to import the public key, HSE returned good status

// set up the signature scheme also the hash algo for signing
hseAuthScheme_t auth_scheme;
auth_scheme.sigScheme.signSch = HSE_SIGN_ECDSA;
auth_scheme.sigScheme.sch.ecdsa.hashAlgo = HSE_HASH_ALGO_SHA2_256;

// set up the decryption scheme, in this case we're not doing
// encryption/decryption
hseSmrDecrypt_t decryption_scheme;
decryption_scheme.decryptKeyHandle = HSE_SMR_DECRYPT_KEY_HANDLE_NOT_USED;

hseSmrConfig_t smr_config = HSE_SMR_CFG_FLAG_INSTALL_AUTH;

// gs_bl_smr_entry is located inside non-cached memory
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 = decryption_scheme;
gs_bl_smr_entry.versionOffset = HSE_SMR_VERSION_NOT_USED;

// SMR install service, service descriptor is also inside non-cached memory
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;

// send service descriptor to hse

0 件の賞賛
返信
1 解決策
856件の閲覧回数
Feifan
Contributor II

Found the root cause being MPU is not properly disabled. Once the MPU is properly disabled, this works.

元の投稿で解決策を見る

0 件の賞賛
返信
1 返信
857件の閲覧回数
Feifan
Contributor II

Found the root cause being MPU is not properly disabled. Once the MPU is properly disabled, this works.

0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2146471%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ES32K344%20SMR%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AA%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%8C%E7%84%A1%E5%8A%B9%E3%81%AA%E3%83%91%E3%83%A9%E3%83%A1%E3%83%BC%E3%82%BF%E3%80%81%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%80%81%E3%81%8A%E3%82%88%E3%81%B3%E8%A8%B1%E5%8F%AF%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%A7%E5%A4%B1%E6%95%97%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2146471%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3ES32K344%20%E7%94%A8%E3%81%AE%E9%AB%98%E5%BA%A6%E3%81%AA%E3%82%BB%E3%82%AD%E3%83%A5%E3%82%A2%20%E3%83%96%E3%83%BC%E3%83%88%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%82%88%E3%81%86%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82HSE%20SMR%E3%82%A8%E3%83%B3%E3%83%88%E3%83%AA%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E3%82%BB%E3%83%83%E3%83%88%E3%82%A2%E3%83%83%E3%83%97%E3%81%A8%E5%AE%9F%E8%A1%8C%E4%B8%AD%E3%81%AB%E3%80%81%E4%BB%A5%E4%B8%8B%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E3%81%8C%E6%B7%B7%E5%9C%A8%E3%81%97%E3%81%A6%E8%A1%A8%E7%A4%BA%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%EF%BC%9AHSE_SRV_RSP_INVALID_PARAM%E3%80%81HSE_SRV_RSP_NOT_SUPPORTED%E3%80%81HSE_SRV_RSP_NOT_ALLOWED%E3%80%82%E3%81%93%E3%81%AE%E4%BB%B6%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6%E3%80%81%E3%81%A9%E3%81%AA%E3%81%9F%E3%81%8B%E3%81%94%E6%95%99%E7%A4%BA%E3%81%84%E3%81%9F%E3%81%A0%E3%81%91%E3%81%AA%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%EF%BC%9F%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%EF%BC%81%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%8C%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%81%AF%E3%80%81ECDSA%20P-256%20%2B%20SHA2-256%20%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%AF%E6%AC%A1%E3%81%AE%E3%81%93%E3%81%A8%E3%82%92%E5%86%8D%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%3A%3CBR%20%2F%3E%E5%91%BD%E4%BB%A4%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%81%AF%E3%82%AA%E3%83%95%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%3CBR%20%2F%3E%E3%83%87%E3%83%BC%E3%82%BF%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%81%AF%E3%82%AA%E3%83%95%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%3CBR%20%2F%3EMPU%E3%81%8C%E3%82%AA%E3%83%95%E3%81%AB%E3%81%AA%E3%81%A3%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%3CBR%20%2F%3ESMR%E9%A0%98%E5%9F%9F%E3%81%AF%E5%86%85%E9%83%A8%E3%82%B3%E3%83%BC%E3%83%89%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E5%86%85%E3%81%AB%E3%81%82%E3%82%8B%E3%81%9F%E3%82%81%E3%80%81%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%9E%E3%83%83%E3%83%97%E3%81%95%E3%82%8C%E3%82%8B%3CBR%20%2F%3EXRDC%E6%A7%8B%E6%88%90%E3%81%AF%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%80%81SO%20HSE%E3%81%AF%E3%82%B3%E3%83%BC%E3%83%89%E3%83%95%E3%83%A9%E3%83%83%E3%82%B7%E3%83%A5%E3%81%AB%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E3%81%A7%E3%81%8D%E3%82%8B%E3%81%AF%E3%81%9A%E3%81%A7%E3%81%99%E3%80%82%3CBR%20%2F%3E%E4%BD%BF%E7%94%A8%E3%81%95%E3%82%8C%E3%82%8B%E5%85%AC%E9%96%8B%E9%8D%B5%E3%81%AF%E6%A4%9C%E8%A8%BC%E3%81%AE%E3%81%BF%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%3CBR%20%2F%3E%E3%82%B9%E3%83%BC%E3%83%91%E3%83%BC%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E6%A8%A9%E3%82%92%E6%8C%81%E3%81%A1%E3%80%81CUST_DEL%20%E7%8A%B6%E6%85%8B%E3%81%AB%E3%81%82%E3%82%8B%3CBR%20%2F%3E%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%81%AE%E5%89%8D%E3%81%ABSMR%E3%82%92%E6%B6%88%E5%8E%BB%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%3C%2FP%3E%3CP%3E%E4%BB%A5%E4%B8%8B%E3%81%AF%E3%82%B3%E3%83%BC%E3%83%89%E3%81%AE%E4%B8%80%E9%83%A8%E3%81%A7%E3%81%99%E3%80%82%3CBR%20%2F%3E%20%23APP_BL_START_ADDR%20(0x00401000)%20%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%BE%E3%81%99%3CBR%20%2F%3E%23APP_BL_SIZE%20(0x1000)%20%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%BE%E3%81%99%3C%2FP%3E%3CP%3E%23%E5%AE%9A%E7%BE%A9%20APP_BL_SIGNATURE_R_START_ADDR%20(0x0041ff00)%3CBR%20%2F%3E%20%23APP_BL_SIGNATURE_R_SIZE%20(0x20)%20%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%BE%E3%81%99%3CBR%20%2F%3E%23APP_BL_SIGNATURE_S_START_ADDR%20(0x0041ff80)%20%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%BE%E3%81%99%3CBR%20%2F%3E%23APP_BL_SIGNATURE_S_SIZE%20(0x20)%20%E3%82%92%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%BE%E3%81%99%3C%2FP%3E%3CP%3E%2F%2F%20ECC%E5%85%AC%E9%96%8B%E9%8D%B5%E3%81%AE%E3%82%AD%E3%83%BC%E3%83%8F%E3%83%B3%E3%83%89%E3%83%AB%3CBR%20%2F%3EhseKeyHandle_t%20verif_key_handle%20%3D%3CBR%20%2F%3E%20(hseKeyHandle_t)GET_KEY_HANDLE(HSE_KEY_CATALOG_ID_NVM%E3%80%810%E3%80%810)%3B%3C%2FP%3E%3CP%3E%2F%2F%20%E5%85%AC%E9%96%8B%E9%8D%B5%E3%82%92%E3%82%A4%E3%83%B3%E3%83%9D%E3%83%BC%E3%83%88%E3%81%99%E3%82%8B%E9%96%A2%E6%95%B0%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%97%E3%80%81HSE%E3%81%AF%E6%AD%A3%E5%B8%B8%E3%81%AA%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E3%82%92%E8%BF%94%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%3C%2FP%3E%3CP%3E%2F%2F%20%E7%BD%B2%E5%90%8D%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%A0%E3%81%A8%E7%BD%B2%E5%90%8D%E7%94%A8%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%3CBR%20%2F%3EhseAuthScheme_t%20%E8%AA%8D%E8%A8%BC%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%A0%3B%3CBR%20%2F%3E%20auth_scheme.sigScheme.signSch%20%3D%20HSE_SIGN_ECDSA%3B%3CBR%20%2F%3E%20auth_scheme.sigScheme.sch.ecdsa.hashAlgo%20%3D%20HSE_HASH_ALGO_SHA2_256%3B%3C%2FP%3E%3CP%3E%2F%2F%20%E5%BE%A9%E5%8F%B7%E5%8C%96%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%A0%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B%E3%80%82%E3%81%93%E3%81%AECASE%E3%81%AF%E3%80%81%3CBR%20%2F%3E%20%2F%2F%20%E6%9A%97%E5%8F%B7%E5%8C%96%2F%E5%BE%A9%E5%8F%B7%E5%8C%96%3CBR%20%2F%3EhseSmrDecrypt_t%20%E5%BE%A9%E5%8F%B7%E5%8C%96%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%A0%3B%3CBR%20%2F%3E%E5%BE%A9%E5%8F%B7%E5%8C%96%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%A0.decryptKeyHandle%3D%20HSE_SMR_DECRYPT_KEY_HANDLE_NOT_USED%3B%3C%2FP%3E%3CP%3EhseSmrConfig_t%20smr_config%20%3D%20HSE_SMR_CFG_FLAG_INSTALL_AUTH%3B%3C%2FP%3E%3CP%3E%2F%2F%20gs_bl_smr_entry%E3%81%AF%E9%9D%9E%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%E3%83%A1%E3%83%A2%E3%83%AA%E5%86%85%E3%81%AB%E9%85%8D%E7%BD%AE%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%3CBR%20%2F%3Egs_bl_smr_entry.pSmrsrc%3D(HOST_ADDR)APP_BL_START_ADDR%3B%3CBR%20%2F%3Egs_bl_smr_entry.smrSize%20%3D%20APP_BL_SIZE%3B%3CBR%20%2F%3E%20gs_bl_smr_entry.pSmrDest%20%3D%200%3B%3CBR%20%2F%3E%20gs_bl_smr_entry.configFlags%20%3D%20smr_config%3B%3CBR%20%2F%3E%20gs_bl_smr_entry.checkPeriod%20%3D%200%3B%3CBR%20%2F%3E%20gs_bl_smr_entry.authKeyHandle%3D%20verif_key_handle%3B%3CBR%20%2F%3E%20gs_bl_smr_entry.authScheme%20%3D%20auth_scheme%3B%3CBR%20%2F%3E%20gs_bl_smr_entry.pInstAuthTag%5B0%5D%3D%20(HOST_ADDR)(APP_BL_SIGNATURE_R_START_ADDR)%3B%3CBR%20%2F%3E%20gs_bl_smr_entry.pInstAuthTag%5B1%5D%3D%20(HOST_ADDR)(APP_BL_SIGNATURE_S_START_ADDR)%3B%3CBR%20%2F%3E%20gs_bl_smr_entry.smrDecrypt%20%3D%20%E5%BE%A9%E5%8F%B7%E5%8C%96%E3%82%B9%E3%82%AD%E3%83%BC%E3%83%A0%3B%3CBR%20%2F%3E%20gs_bl_smr_entry.%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%AA%E3%83%95%E3%82%BB%E3%83%83%E3%83%88%3D%20HSE_SMR_VERSION_NOT_USED%3B%3C%2FP%3E%3CP%3E%2F%2F%20SMR%20%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%20%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%80%81%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E8%A8%98%E8%BF%B0%E5%AD%90%E3%82%82%E9%9D%9E%E3%82%AD%E3%83%A3%E3%83%83%E3%82%B7%E3%83%A5%20%E3%83%A1%E3%83%A2%E3%83%AA%E5%86%85%E3%81%AB%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%3CBR%20%2F%3Ehse_srv_desc_ptr-%26gt%3BsrvId%20%3D%20HSE_SRV_ID_SMR_ENTRY_INSTALL%3B%3CBR%20%2F%3E%20smr_entry_install_ptr-%26gt%3BaccessMode%20%3D%20HSE_ACCESS_MODE_ONE_PASS%3B%3CBR%20%2F%3E%20smr_entry_install_ptr-%26gt%3BentryIndex%20%3D%200%3B%3CBR%20%2F%3E%20smr_entry_install_ptr-%26gt%3BpSmrEntry%20%3D%20(HOST_ADDR)%26amp%3Bgs_bl_smr_entry%3B%3C%2FP%3E%3CP%3Esmr_entry_install_ptr-%26gt%3BpSmrData%20%3D%20(HOST_ADDR)APP_BL_START_ADDR%3B%3CBR%20%2F%3E%20smr_entry_install_ptr-%26gt%3BsmrDataLength%20%3D%20APP_BL_SIZE%3B%3CBR%20%2F%3E%20smr_entry_install_ptr-%26gt%3BpAuthTag%5B0%5D%20%3D%20(HOST_ADDR)APP_BL_SIGNATURE_R_START_ADDR%3B%3CBR%20%2F%3E%20smr_entry_install_ptr-%26gt%3BpAuthTag%5B1%5D%20%3D%20(HOST_ADDR)APP_BL_SIGNATURE_S_START_ADDR%3B%3CBR%20%2F%3E%20smr_entry_install_ptr-%26gt%3BauthTagLength%5B0%5D%20%3D%20256%3B%3CBR%20%2F%3E%20smr_entry_install_ptr-%26gt%3BauthTagLength%5B1%5D%20%3D%20256%3B%3C%2FP%3E%3CP%3E%2F%2F%20%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E8%A8%98%E8%BF%B0%E5%AD%90%E3%82%92hse%E3%81%AB%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2147067%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20S32K344%20SMR%20Entry%20Install%20Service%20Fail%20with%20Invalid%20Param%2C%20Not%20Supported%2C%20and%20Not%20Allowed%20Error%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2147067%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E6%A0%B9%E6%9C%AC%E7%9A%84%E3%81%AA%E5%8E%9F%E5%9B%A0%E3%81%AF%E3%80%81MPU%20%E3%81%8C%E9%81%A9%E5%88%87%E3%81%AB%E7%84%A1%E5%8A%B9%E5%8C%96%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%81%AA%E3%81%84%E3%81%93%E3%81%A8%E3%81%A7%E3%81%82%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%82%8F%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82MPU%20%E3%81%8C%E9%81%A9%E5%88%87%E3%81%AB%E7%84%A1%E5%8A%B9%E3%81%AB%E3%81%95%E3%82%8C%E3%82%8B%E3%81%A8%E3%80%81%E3%81%93%E3%82%8C%E3%81%AF%E6%A9%9F%E8%83%BD%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3C%2FLINGO-BODY%3E