[S32K3] Image verificaiton fail in Secure boot

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

[S32K3] Image verificaiton fail in Secure boot

Jump to solution
1,474 Views
Changhawn
Contributor III

Hi. 

Now I have developed Secure boot with HSE. In bootloader sequence, application image should be verified. 

S32K344_Basic_SecureBoot Project is refered in S32K3_HSE_DemoExamples.

The verifying function (HSE_VerifyBootImage) is returning failure (HSE_SRV_RSP_VERIFY_FAILED). 

Could you recommand my mistake and comment and fail reason?

My project loader and code is attached like below.

Thank you.

 

log output)

Flash Erase Ok
Flash Program ok(7d2040, len:128)
[SEC BOOT] Image Verify failed.(0x55a5a164)

 

Code)

#define ADKP_LENGTH (uint8_t)16U
 
#define TAG_LENGTH 28
#define APP_HEADER_LENGTH 0x40U
 
/* RAM address for GMAC */
uint8_t temp_addr_of_app_image[32] = {0xFF};
 
const uint8_t* pAppBL = APP_ADDR; //Application Start 0x500000 in ld
uint32_t AppBL_codeLength = (APP_SIZE - 0x2000); //APP_SIZE 0x2d4000 in ld --> 0x2d2000
 
/* ADKP Key/Password required variables */
volatile uint8_t programmed_appdebugkey[ADKP_LENGTH] = {0U}; //Store the reading of the ADKP
volatile uint8_t applicationDebugKeyPassword[16U] =
{
0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18,
  0x19, 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, 0x21
};
hseSrvResponse_t HSE_ProgramAdkp(void)
{
    hseSrvResponse_t srvResponse;
 
    /* WARNING: This operation is irreversible */
    /* Program the ADK/P (Application debug key/password) */
    srvResponse = SetAttr(HSE_APP_DEBUG_KEY_ATTR_ID,
        sizeof(hseAttrApplDebugKey_t), (void *)&applicationDebugKeyPassword);
    return srvResponse;
}
 
/* Reads ADKP hash */
hseSrvResponse_t HSE_ReadAdkp( uint8_t *pDebugKey )
{
    hseSrvResponse_t srvResponse;
    srvResponse = GetAttr
            (
                    HSE_APP_DEBUG_KEY_ATTR_ID,
                    sizeof(hseAttrApplDebugKey_t),
                    (void *)pDebugKey
            );
    return srvResponse;
}
 
bool secure_boot_fw_verify(void)
{
  hseSrvResponse_t srvResponse;
  uint32_t temp_addr_of_app_image[32] = {0xFF};
 
  memset((void *)&programmed_appdebugkey,0U,ADKP_LENGTH);
 
srvResponse = HSE_ReadAdkp((uint8_t *)&programmed_appdebugkey);
 
  /*
   * First time when ADKP is not programmed,
   * read adkp will always result in not allowed
   * If ADKP is not programmed then do so
   */
  if( (HSE_SRV_RSP_NOT_ALLOWED == srvResponse))
  {
    SYS_TRACE("[SEC BOOT] ADKP is not programmed\r\n");
    srvResponse = HSE_ProgramAdkp();
    if (HSE_SRV_RSP_OK != srvResponse)
    {
      SYS_TRACE("[SEC BOOT] Program ADKP is failed.(0x%x)\r\n", srvResponse);
      return false;
    }
  }
 
  /* Generate Tag of size 32 over the provided APPBL */
  srvResponse = HSE_SignBootImage(pAppBL, TAG_LENGTH, temp_addr_of_app_image);
  if (HSE_SRV_RSP_OK != srvResponse)
  {
    SYS_TRACE("[SEC BOOT] Sign Image failed.(0x%x)\r\n", srvResponse);
    return false;
  }
 
  GVP_FlashErase(pAppBL + APP_HEADER_LENGTH + AppBL_codeLength, sizeof(temp_addr_of_app_image));
 
  GVP_FlashProgram(pAppBL + APP_HEADER_LENGTH + AppBL_codeLength, temp_addr_of_app_image, sizeof(temp_addr_of_app_image));
 
 
  /* Verify that the generated TAG is valid for the APPBL */
  srvResponse = HSE_VerifyBootImage(pAppBL);
  if (HSE_SRV_RSP_OK != srvResponse)
  {
    SYS_TRACE("[SEC BOOT] Image Verify failed.(0x%x)\r\n", srvResponse);
    return false;
  }
  else
  {
    SYS_TRACE("[SEC BOOT] Image Verify ok\r\n");
    return true;
  }
 
}
 
/* bootloader main */
main()
{
....
secure_boot_fw_verify();
....
}
 
 
MEMORY 
{
    int_pflash               : ORIGIN = 0x00400000, LENGTH = 0x00040000       /* 256K*/
    HSE_BINARY              : ORIGIN = 0x00440200, LENGTH = 0x00024000 /* Leave block 0 for HSE FW binary */
    int_flash               : ORIGIN = 0x00500000, LENGTH = 0x002D4000 /* Use only blocks 1,2,3 for install project */
...
 
 
#define IVT_BOOT_CFG_WORD_BOOT_SEQ  (1 << 3)
 
.section ".boot_header","ax"
  .long SBAF_BOOT_MARKER /* IVT marker */
  .long (CM7_0_ENABLE << CM7_0_ENABLE_SHIFT) | (CM7_1_ENABLE << CM7_1_ENABLE_SHIFT) | IVT_BOOT_CFG_WORD_BOOT_SEQ /* Boot configuration word */
0 Kudos
Reply
1 Solution
1,441 Views
lukaszadrapa
NXP TechSupport
NXP TechSupport

Hi @Changhawn 

Do you follow this?

lukaszadrapa_0-1734104170173.png

It's a screenshot from Secure boot application note.

You can check how it is implemented in S32K344_SecureBootBlinky project in HSE DemoExamples.

Regards,

Lukas

View solution in original post

0 Kudos
Reply
2 Replies
1,442 Views
lukaszadrapa
NXP TechSupport
NXP TechSupport

Hi @Changhawn 

Do you follow this?

lukaszadrapa_0-1734104170173.png

It's a screenshot from Secure boot application note.

You can check how it is implemented in S32K344_SecureBootBlinky project in HSE DemoExamples.

Regards,

Lukas

0 Kudos
Reply
1,415 Views
Changhawn
Contributor III
Hi Lukaszadrapa
Thank you for your support.
0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2011439%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%5BS32K3%5D%20Image%20verificaiton%20fail%20in%20Secure%20boot%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2011439%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi.%26nbsp%3B%3C%2FP%3E%3CP%3ENow%20I%20have%20developed%20Secure%20boot%20with%20HSE.%20In%20bootloader%20sequence%2C%20application%20image%20should%20be%20verified.%26nbsp%3B%3C%2FP%3E%3CP%3ES32K344_Basic_SecureBoot%20Project%20is%20refered%20in%20S32K3_HSE_DemoExamples.%3C%2FP%3E%3CP%3EThe%20verifying%20function%20(HSE_VerifyBootImage)%20is%20returning%20failure%20(HSE_SRV_RSP_VERIFY_FAILED).%26nbsp%3B%3C%2FP%3E%3CP%3ECould%20you%20recommand%20my%20mistake%20and%20comment%20and%20fail%20reason%3F%3C%2FP%3E%3CP%3EMy%20project%20loader%20and%20code%20is%20attached%20like%20below.%3CBR%20%2F%3E%3CBR%20%2F%3EThank%20you.%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSTRONG%3Elog%20output)%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3EFlash%20Erase%20Ok%3CBR%20%2F%3EFlash%20Program%20ok(7d2040%2C%20len%3A128)%3CBR%20%2F%3E%5BSEC%20BOOT%5D%20Image%20Verify%20failed.(0x55a5a164)%3C%2FP%3E%3CBR%20%2F%3E%3CP%3E%3CSTRONG%3ECode)%3C%2FSTRONG%3E%3C%2FP%3E%3CDIV%3E%23define%20ADKP_LENGTH%20(uint8_t)16U%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%23define%20TAG_LENGTH%2028%3C%2FDIV%3E%3CDIV%3E%23define%20APP_HEADER_LENGTH%200x40U%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%2F*%20RAM%20address%20for%20GMAC%20*%2F%3C%2FDIV%3E%3CDIV%3Euint8_t%20temp_addr_of_app_image%5B32%5D%20%3D%20%7B0xFF%7D%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3Econst%20uint8_t*%20pAppBL%20%3D%20APP_ADDR%3B%20%2F%2FApplication%20Start%200x500000%20in%20ld%3C%2FDIV%3E%3CDIV%3Euint32_t%20AppBL_codeLength%20%3D%20(APP_SIZE%20-%200x2000)%3B%20%2F%2FAPP_SIZE%200x2d4000%20in%20ld%20--%26gt%3B%200x2d2000%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%2F*%20ADKP%20Key%2FPassword%20required%20variables%20*%2F%3C%2FDIV%3E%3CDIV%3Evolatile%20uint8_t%20programmed_appdebugkey%5BADKP_LENGTH%5D%20%3D%20%7B0U%7D%3B%20%2F%2FStore%20the%20reading%20of%20the%20ADKP%3C%2FDIV%3E%3CDIV%3Evolatile%20uint8_t%20applicationDebugKeyPassword%5B16U%5D%20%3D%3C%2FDIV%3E%3CDIV%3E%7B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E0x11%2C%200x12%2C%200x13%2C%200x14%2C%200x15%2C%200x16%2C%200x17%2C%200x18%2C%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%200x19%2C%200x1A%2C%200x1B%2C%200x1C%2C%200x1D%2C%200x1E%2C%200x1F%2C%200x21%3C%2FDIV%3E%3CDIV%3E%7D%3B%3C%2FDIV%3E%3CDIV%3EhseSrvResponse_t%20HSE_ProgramAdkp(void)%3C%2FDIV%3E%3CDIV%3E%7B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20hseSrvResponse_t%20srvResponse%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20WARNING%3A%20This%20operation%20is%20irreversible%20*%2F%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%2F*%20Program%20the%20ADK%2FP%20(Application%20debug%20key%2Fpassword)%20*%2F%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20srvResponse%20%3D%20SetAttr(HSE_APP_DEBUG_KEY_ATTR_ID%2C%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20sizeof(hseAttrApplDebugKey_t)%2C%20(void%20*)%26amp%3BapplicationDebugKeyPassword)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20return%20srvResponse%3B%3C%2FDIV%3E%3CDIV%3E%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%2F*%20Reads%20ADKP%20hash%20*%2F%3C%2FDIV%3E%3CDIV%3EhseSrvResponse_t%20HSE_ReadAdkp(%20uint8_t%20*pDebugKey%20)%3C%2FDIV%3E%3CDIV%3E%7B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20hseSrvResponse_t%20srvResponse%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20srvResponse%20%3D%20GetAttr%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20(%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20HSE_APP_DEBUG_KEY_ATTR_ID%2C%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20sizeof(hseAttrApplDebugKey_t)%2C%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20(void%20*)pDebugKey%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20return%20srvResponse%3B%3C%2FDIV%3E%3CDIV%3E%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3Ebool%20secure_boot_fw_verify(void)%3C%2FDIV%3E%3CDIV%3E%7B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20hseSrvResponse_t%20srvResponse%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20uint32_t%20temp_addr_of_app_image%5B32%5D%20%3D%20%7B0xFF%7D%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20memset((void%20*)%26amp%3Bprogrammed_appdebugkey%2C0U%2CADKP_LENGTH)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3EsrvResponse%20%3D%20HSE_ReadAdkp((uint8_t%20*)%26amp%3Bprogrammed_appdebugkey)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%2F*%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B*%20First%20time%20when%20ADKP%20is%20not%20programmed%2C%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B*%20read%20adkp%20will%20always%20result%20in%20not%20allowed%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B*%20If%20ADKP%20is%20not%20programmed%20then%20do%20so%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B*%2F%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20if(%20(HSE_SRV_RSP_NOT_ALLOWED%20%3D%3D%20srvResponse))%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%7B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20SYS_TRACE(%22%5BSEC%20BOOT%5D%20ADKP%20is%20not%20programmed%5Cr%5Cn%22)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20srvResponse%20%3D%20HSE_ProgramAdkp()%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20if%20(HSE_SRV_RSP_OK%20!%3D%20srvResponse)%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20SYS_TRACE(%22%5BSEC%20BOOT%5D%20Program%20ADKP%20is%20failed.(0x%25x)%5Cr%5Cn%22%2C%20srvResponse)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20return%20false%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%2F*%20Generate%20Tag%20of%20size%2032%20over%20the%20provided%20APPBL%20*%2F%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20srvResponse%20%3D%20HSE_SignBootImage(pAppBL%2C%20TAG_LENGTH%2C%20temp_addr_of_app_image)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20if%20(HSE_SRV_RSP_OK%20!%3D%20srvResponse)%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%7B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20SYS_TRACE(%22%5BSEC%20BOOT%5D%20Sign%20Image%20failed.(0x%25x)%5Cr%5Cn%22%2C%20srvResponse)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20return%20false%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20GVP_FlashErase(pAppBL%20%2B%20APP_HEADER_LENGTH%20%2B%20AppBL_codeLength%2C%20sizeof(temp_addr_of_app_image))%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20GVP_FlashProgram(pAppBL%20%2B%20APP_HEADER_LENGTH%20%2B%20AppBL_codeLength%2C%20temp_addr_of_app_image%2C%20sizeof(temp_addr_of_app_image))%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%2F*%20Verify%20that%20the%20generated%20TAG%20is%20valid%20for%20the%20APPBL%20*%2F%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20srvResponse%20%3D%20HSE_VerifyBootImage(pAppBL)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20if%20(HSE_SRV_RSP_OK%20!%3D%20srvResponse)%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%7B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20SYS_TRACE(%22%5BSEC%20BOOT%5D%20Image%20Verify%20failed.(0x%25x)%5Cr%5Cn%22%2C%20srvResponse)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20return%20false%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20else%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%7B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20SYS_TRACE(%22%5BSEC%20BOOT%5D%20Image%20Verify%20ok%5Cr%5Cn%22)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20return%20true%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%2F*%20bootloader%20main%20*%2F%3C%2FDIV%3E%3CDIV%3Emain()%3C%2FDIV%3E%3CDIV%3E%7B%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E....%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3Esecure_boot_fw_verify()%3B%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E....%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%3CDIV%3EMEMORY%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%7B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20int_pflash%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%3A%20ORIGIN%20%3D%200x00400000%2C%20LENGTH%20%3D%200x00040000%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%2F*%20256K*%2F%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20HSE_BINARY%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%3A%20ORIGIN%20%3D%200x00440200%2C%20LENGTH%20%3D%200x00024000%20%2F*%20Leave%20block%200%20for%20HSE%20FW%20binary%20*%2F%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20int_flash%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%3A%20ORIGIN%20%3D%200x00500000%2C%20LENGTH%20%3D%200x002D4000%20%2F*%20Use%20only%20blocks%201%2C2%2C3%20for%20install%20project%20*%2F%3C%2FDIV%3E%3CDIV%3E%3CSPAN%3E...%3C%2FSPAN%3E%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%23define%20IVT_BOOT_CFG_WORD_BOOT_SEQ%26nbsp%3B%20(1%20%26lt%3B%26lt%3B%203)%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E.section%20%22.boot_header%22%2C%22ax%22%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20.long%20SBAF_BOOT_MARKER%20%2F*%20IVT%20marker%20*%2F%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20.long%20(CM7_0_ENABLE%20%26lt%3B%26lt%3B%20CM7_0_ENABLE_SHIFT)%20%7C%20(CM7_1_ENABLE%20%26lt%3B%26lt%3B%20CM7_1_ENABLE_SHIFT)%20%7C%20IVT_BOOT_CFG_WORD_BOOT_SEQ%20%2F*%20Boot%20configuration%20word%20*%2F%3C%2FDIV%3E%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2014110%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20%5BS32K3%5D%20Image%20verificaiton%20fail%20in%20Secure%20boot%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2014110%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EHi%20Lukaszadrapa%3CBR%20%2F%3EThank%20you%20for%20your%20support.%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2013715%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20%5BS32K3%5D%20Image%20verificaiton%20fail%20in%20Secure%20boot%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2013715%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%20%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F232520%22%20target%3D%22_blank%22%3E%40Changhawn%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EDo%20you%20follow%20this%3F%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22lukaszadrapa_0-1734104170173.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22lukaszadrapa_0-1734104170173.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F315842i05AD800C1CA5E294%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22lukaszadrapa_0-1734104170173.png%22%20alt%3D%22lukaszadrapa_0-1734104170173.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3EIt's%20a%20screenshot%20from%20Secure%20boot%20application%20note.%3C%2FP%3E%0A%3CP%3EYou%20can%20check%20how%20it%20is%20implemented%20in%20S32K344_SecureBootBlinky%20project%20in%20HSE%20DemoExamples.%3C%2FP%3E%0A%3CP%3ERegards%2C%3C%2FP%3E%0A%3CP%3ELukas%3C%2FP%3E%3C%2FLINGO-BODY%3E