<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: HAB i.MX28 Invalid Certificate in i.MX Processors</title>
    <link>https://community.nxp.com/t5/i-MX-Processors/HAB-i-MX28-Invalid-Certificate/m-p/475514#M75418</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Per,&lt;/P&gt;&lt;P&gt;Where can I download the CST 2.0.0 ?&lt;/P&gt;&lt;P&gt;In freescale's webisite now it is cst-2.3.2.&lt;/P&gt;&lt;P&gt;I want to sign my eboot for i.MX28.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 28 Jul 2016 05:43:07 GMT</pubDate>
    <dc:creator>collinshi</dc:creator>
    <dc:date>2016-07-28T05:43:07Z</dc:date>
    <item>
      <title>HAB i.MX28 Invalid Certificate</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/HAB-i-MX28-Invalid-Certificate/m-p/475510#M75414</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am having a problem with a Freescale imx28 to get HAB (High Assurance Boot) working with U-Boot.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What I have done is that I have started with a mainline U-Boot (v2016.01) and I have added/modified a few hab-related items. The main reason for choosing a late U-Boot is that Marek Vasut has added support to generate the IVT by building U-Boot using "make u-boot-signed.sb"&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;* board/freescale/mx28evk/sign/u-boot-spl.csf&lt;/P&gt;&lt;P&gt;* board/freescale/mx28evk/sign/u-boot.csf&lt;/P&gt;&lt;P&gt;* board/freescale/mx28evk/hab.h&lt;/P&gt;&lt;P&gt;* board/freescale/mx28evk/hab_types.h&lt;/P&gt;&lt;P&gt;* board/freescale/mx28evk/mx28evk.c&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have attached all these files to the post as a reference. hab.h and hab_types.h have been stolen from &lt;A _jive_internal="true" data-containerid="2004" data-containertype="14" data-objectid="306378" data-objecttype="1" href="https://community.nxp.com/thread/306378"&gt;https://community.freescale.com/thread/306378&lt;/A&gt; where &lt;A _jive_internal="true" data-containerid="-1" data-containertype="-1" data-objectid="211602" data-objecttype="3" href="https://community.nxp.com/people/christopherpreschern"&gt;Christopher Preschern&lt;/A&gt; has done a really good job describing his problems and solutions.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I used CST 2.3.1 to generate a pki tree. I read today that all CST versions after 2.0.0 are broken on the i.MX28.&lt;/P&gt;&lt;P&gt;&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=http%3A%2F%2Flists.denx.de%2Fpipermail%2Fu-boot%2F2015-November%2F234717.html" rel="nofollow" target="_blank"&gt;http://lists.denx.de/pipermail/u-boot/2015-November/234717.html&lt;/A&gt;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have posted to the support to get access to BLN_CST_MAIN_02.00.00 and will hopefully soon get that CST version to try. At the time of writing I have not verified if that is the cause of my problems.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have tried to generate both 1024 bit keys and 2048 bit keys with the same result.&lt;/P&gt;&lt;P&gt;I generated the srk_table.bin and srk_fuses.bin using srktool in the CST.&lt;/P&gt;&lt;P&gt;$ srktool -h 4 -t srk_table.bin -e srk_fuses.bin -d sha256 -c crts/SRK1_sha256_2048_65537_v3_ca_crt.pem -f 1&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The following files have been copied from the cst tool to the u-boot root directory.&lt;/P&gt;&lt;P&gt;* CSF1_1_sha256_2048_65537_v3_usr_crt.pem&lt;/P&gt;&lt;P&gt;* IMG1_1_sha256_2048_65537_v3_usr_crt.pem&lt;/P&gt;&lt;P&gt;* srk_table.bin&lt;/P&gt;&lt;P&gt;* srk_fuses.bin&lt;/P&gt;&lt;P&gt;* key_pass.txt&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Once all this was in placed I built and ran it using&lt;/P&gt;&lt;P&gt;$ make mrproper&lt;/P&gt;&lt;P&gt;$ make mx28evk_nand_config&lt;/P&gt;&lt;P&gt;$ make u-boot-signed.sb&lt;/P&gt;&lt;P&gt;$ sudo mxsldr u-boot-signed.sb&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I get the following result:&lt;/P&gt;&lt;P&gt;--------- HAB Event 1 -----------------&lt;/P&gt;&lt;P&gt;event data:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xdb 0x00 0x14 0x40 0x33 0x21 0xc0 0x00&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xbe 0x00 0x0c 0x00 0x03 0x17 0x00 0x00&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00 0x00 0x00 0x50&lt;/P&gt;&lt;P&gt;(HAB_INV_CERTIFICATE 0x21)&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;--------- HAB Event 2 -----------------&lt;/P&gt;&lt;P&gt;event data:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xdb 0x00 0x14 0x40 0x33 0x0c 0xa0 0x00&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00 0x00 0x00 0x00 0x00 0x00 0x80 0x00&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00 0x00 0x00 0x20&lt;/P&gt;&lt;P&gt;(HAB_INV_ASSERTION 0x0C)&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;--------- HAB Event 3 -----------------&lt;/P&gt;&lt;P&gt;event data:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xdb 0x00 0x14 0x40 0x33 0x0c 0xa0 0x00&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00 0x00 0x00 0x00 0x00 0x00 0x10 0x00&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00 0x00 0x00 0x04&lt;/P&gt;&lt;P&gt;(HAB_INV_ASSERTION 0x0C)&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;--------- HAB Event 4 -----------------&lt;/P&gt;&lt;P&gt;event data:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xdb 0x00 0x14 0x40 0x33 0x21 0xc0 0x00&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xbe 0x00 0x0c 0x00 0x03 0x17 0x00 0x00&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00 0x00 0x00 0x50&lt;/P&gt;&lt;P&gt;(HAB_INV_CERTIFICATE 0x21)&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;--------- HAB Event 5 -----------------&lt;/P&gt;&lt;P&gt;event data:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xdb 0x00 0x14 0x40 0x33 0x0c 0xa0 0x00&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00 0x00 0x00 0x00 0x40 0x00 0x10 0x00&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00 0x00 0x00 0x20&lt;/P&gt;&lt;P&gt;(HAB_INV_ASSERTION 0x0C)&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;--------- HAB Event 6 -----------------&lt;/P&gt;&lt;P&gt;event data:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0xdb 0x00 0x14 0x40 0x33 0x0c 0xa0 0x00&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00 0x00 0x00 0x00 0x40 0x00 0x20 0x00&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; 0x00 0x00 0x00 0x04&lt;/P&gt;&lt;P&gt;(HAB_INV_ASSERTION 0x0C)&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;We get two invalid certificates. These are probably from u-boot-spl and u-boot. I am guessing the asserts are the execution of the unverified code.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here are my questions:&lt;/P&gt;&lt;P&gt;1. Invalid Certificate, does this mean that it does not conform to the x509 standard or does this mean that it is indeed a certificate but does not match the SRK_HASH written in the fuses (Bank 4 Word 0..7)&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2. When writing the fuses for the SRK_HASH I am unsure what goes where.&lt;/P&gt;&lt;P&gt;I have a fuse file that looks like this:&lt;/P&gt;&lt;P&gt;$ od -t x1 srk_fuses.bin&lt;/P&gt;&lt;P&gt;0000000 b4 d9 54 14 bc 39 da 51 4e 1d 42 d8 be 57 88 22&lt;/P&gt;&lt;P&gt;0000020 1d ca 3b f3 28 1f 3f 04 3f 0c 4b 34 8a a4 2b 57&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What should then be written to Bank 4 Word 0:&lt;/P&gt;&lt;P&gt;Should it be &lt;STRONG&gt;b4d95414&lt;/STRONG&gt; or should it be &lt;STRONG&gt;1454d9b4&lt;/STRONG&gt;?&lt;/P&gt;&lt;P&gt;I have seen guides online that indicate the latter saying that it should be written in the same order as if you read the file in 4 byte words:&lt;/P&gt;&lt;P&gt;$ od -t x4 srk_fuses.bin&lt;/P&gt;&lt;P&gt;0000000 &lt;STRONG&gt;1454d9b4&lt;/STRONG&gt; 51da39bc d8421d4e 228857be&lt;/P&gt;&lt;P&gt;0000020 f33bca1d 043f1f28 344b0c3f 572ba48a&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If I use otp_burner.py (which only works on 32 bit systems) and order it to print the result I get the following which also strengthens this theory.&lt;/P&gt;&lt;P&gt;$ python otp_burner.py -i bit_settings.txt -o bit_settings.sb --srk srk_fuses.bin -a -p&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Bank 0&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bank 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bank 2&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bank 3&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Bank 4&lt;/P&gt;&lt;P&gt;0: 0x00000000&amp;nbsp;&amp;nbsp; 0: 0x00000000&amp;nbsp;&amp;nbsp; 0: 0x00000000&amp;nbsp;&amp;nbsp; 0: 0x00000000&amp;nbsp;&amp;nbsp; 0: &lt;STRONG&gt;0x1454d9b4&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;1: 0x00000000&amp;nbsp;&amp;nbsp; 1: 0x00000000&amp;nbsp;&amp;nbsp; 1: 0x00000000&amp;nbsp;&amp;nbsp; 1: 0x00000000&amp;nbsp;&amp;nbsp; 1: 0x51da39bc&lt;/P&gt;&lt;P&gt;2: 0x00000000&amp;nbsp;&amp;nbsp; 2: 0x00000000&amp;nbsp;&amp;nbsp; 2: 0x00000000&amp;nbsp;&amp;nbsp; 2: 0x00000000&amp;nbsp;&amp;nbsp; 2: 0xd8421d4e&lt;/P&gt;&lt;P&gt;3: 0x00000000&amp;nbsp;&amp;nbsp; 3: 0x00000000&amp;nbsp;&amp;nbsp; 3: 0x00000000&amp;nbsp;&amp;nbsp; 3: 0x00000000&amp;nbsp;&amp;nbsp; 3: 0x228857be&lt;/P&gt;&lt;P&gt;4: 0x00000000&amp;nbsp;&amp;nbsp; 4: 0x00000000&amp;nbsp;&amp;nbsp; 4: 0x00000000&amp;nbsp;&amp;nbsp; 4: 0x00000000&amp;nbsp;&amp;nbsp; 4: 0xf33bca1d&lt;/P&gt;&lt;P&gt;5: 0x00000000&amp;nbsp;&amp;nbsp; 5: 0x00000000&amp;nbsp;&amp;nbsp; 5: 0x00000000&amp;nbsp;&amp;nbsp; 5: 0x00000000&amp;nbsp;&amp;nbsp; 5: 0x043f1f28&lt;/P&gt;&lt;P&gt;6: 0x00000000&amp;nbsp;&amp;nbsp; 6: 0x00000000&amp;nbsp;&amp;nbsp; 6: 0x00000000&amp;nbsp;&amp;nbsp; 6: 0x00000000&amp;nbsp;&amp;nbsp; 6: 0x344b0c3f&lt;/P&gt;&lt;P&gt;7: 0x00000000&amp;nbsp;&amp;nbsp; 7: 0x00000000&amp;nbsp;&amp;nbsp; 7: 0x00000000&amp;nbsp;&amp;nbsp; 7: 0x00000000&amp;nbsp;&amp;nbsp; 7: 0x572ba48a&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So once more it indicates that the latter option is the correct one.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However the documentation seems to indicate the other alternative:&lt;/P&gt;&lt;P&gt;HABCST_UG.pdf page 30:&lt;/P&gt;&lt;P&gt;&lt;EM&gt;The SRK1_2_3_4_fuse.bin file from the example in the previous section has the following contents:&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;93ea61d0bd30ffb62aba0b9d5e144d082dd7faeb39223d9e3f9a22a06429895a&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;This hash value must be burned to the SoC efuses in the following order:&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;SRK_HASH[255:248] = 0x93&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;SRK_HASH[247:240] = 0xea&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;SRK_HASH[239:232] = 0x61&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;...&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;SRK_HASH[15:8] = 0x89&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;SRK_HASH[7:0] = 0x5a&lt;/EM&gt;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;i.MX28 Reference page 957:&lt;/P&gt;&lt;P&gt;&lt;EM&gt;HW_OCOTP_SRK0: 0x8002C220:31:0 Super Root Key hash value bits 255-254 &lt;/EM&gt;(Typo in document, should be 224 not 254)&lt;/P&gt;&lt;P&gt;&lt;EM&gt;HW_OCOTP_SRK1: 0x8002C230:31:0 Super Root Key hash value bits 223-192&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;HW_OCOTP_SRK2: 0x8002C240:31:0 Super Root Key hash value bits 191-160&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;HW_OCOTP_SRK3: 0x8002C250:31:0 Super Root Key hash value bits 159-128&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;HW_OCOTP_SRK4: 0x8002C260:31:0 Super Root Key hash value bits 127-96&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;HW_OCOTP_SRK5: 0x8002C270:31:0 Super Root Key hash value bits 95-64&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;HW_OCOTP_SRK6: 0x8002C280:31:0 Super Root Key hash value bits 63-32&lt;/EM&gt;&lt;/P&gt;&lt;P&gt;&lt;EM&gt;HW_OCOTP_SRK7: 0x8002C290:31:0 Super Root Key hash value bits 31-0&lt;/EM&gt;&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I interpret this as HW_OCOTP_SRK0 should have the value 0x93ea61d0 but as said, that goes against the guides I have found.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like if anyone could confirm this one way or another to limit the amount of devices I have to write the wrong values to. &lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And yes, I am fully aware that any device signed with these keys is not secure since I am handing out every single bit that has been generated. These keys are debug and development keys only.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Many thanks in advance,&lt;/P&gt;&lt;P&gt;Per Smitt&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-335853"&gt;burned_certs.tar.gz&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-335853"&gt;srk_table.bin.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-335853"&gt;srk_fuses.bin.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-335853"&gt;mx28evk.c.patch.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-335853"&gt;u-boot.csf.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-335853"&gt;hab_types.h.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-335853"&gt;hab.h.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-335853"&gt;u-boot-spl.csf.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Original Attachment has been moved to: &lt;A _jive_internal="true" href="https://community.nxp.com/docs/DOC-335853"&gt;mx28evk.c.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 14 Mar 2016 15:17:56 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/HAB-i-MX28-Invalid-Certificate/m-p/475510#M75414</guid>
      <dc:creator>persmitt</dc:creator>
      <dc:date>2016-03-14T15:17:56Z</dc:date>
    </item>
    <item>
      <title>Re: HAB i.MX28 Invalid Certificate</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/HAB-i-MX28-Invalid-Certificate/m-p/475511#M75415</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; It may be recommended just to follow section 6 (Manage the electrical fuses)&lt;BR /&gt;of app note AN4555 (Secure Boot with i.MX28 HAB Version 4).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Have a great day,&lt;BR /&gt;Yuri&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;-----------------------------------------------------------------------------------------------------------------------&lt;BR /&gt;Note: If this post answers your question, please click the Correct Answer button. Thank you!&lt;BR /&gt;-----------------------------------------------------------------------------------------------------------------------&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 Mar 2016 07:03:25 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/HAB-i-MX28-Invalid-Certificate/m-p/475511#M75415</guid>
      <dc:creator>Yuri</dc:creator>
      <dc:date>2016-03-15T07:03:25Z</dc:date>
    </item>
    <item>
      <title>Re: HAB i.MX28 Invalid Certificate</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/HAB-i-MX28-Invalid-Certificate/m-p/475512#M75416</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Trust me I would have loved to use the tools described there as a baseline to know how it is supposed to look. Unfortunately that's where the problems start.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;otp_burner.py - Does not work on 64 bit systems. I installed a 32bit ubuntu server in virtual box and ran it there. It is with that tool I have a good indication how the fuses should be set. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BitInit.exe - This tool crashes under Windows 7 64 bit and Windows XP 32 bit. Since it keeps crashing I cannot use it for reference.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;BitBurner.exe - This tool requires you to write the fuses manually. Pretty much like MFG tool you need to know the value the fuses should have to use this tool. &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It is because these tools couldn't give me a 100% certain answer that I asked about the fuses. I am 95% certain how it is supposed to be but since writing the fuses is final I wanted to have some external verification. I am right now preparing a 32 bit tool chain since the CST 2.0.0 that you gave me only works under 32bit Linux. Many thanks for the tool, and I will report my success or failure as soon as I have tried it.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I wonder though, are customers and developers who use these tools expected to have less than 4GB of RAM and use 32 bit systems?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 Mar 2016 10:31:47 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/HAB-i-MX28-Invalid-Certificate/m-p/475512#M75416</guid>
      <dc:creator>persmitt</dc:creator>
      <dc:date>2016-03-15T10:31:47Z</dc:date>
    </item>
    <item>
      <title>Re: HAB i.MX28 Invalid Certificate</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/HAB-i-MX28-Invalid-Certificate/m-p/475513#M75417</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have now managed to test the CST 2.0.0 and HAB works. Anything after 2.0.0 is broken for the i.MX28 which is really a shame. It should be written in the release notes and manual a large warning that it doesn't work with the i.MX28 so engineers don't have to waste days on debugging and searching for the reason why things aren't working.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So to sum up my problems so others can benefit from my experience:&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Problem 1: Use CST 2.0.0&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Anything later breaks HAB for i.MX28.The software package name is BLN_CST_MAIN_02.00.00.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Problem 2: CST 2.0.0 only works on 32 bit systems&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;To get CST 2.0.0 to work I installed ubuntu32. I used vagrant to quickly setup an ubuntu server with VirtualBox. VagrantFile with configuration is attached.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Problem 3: CST 2.0.0 takes 20 minutes to execute without an entropy generator&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;To solve the CST entropy problem I had to install rngtools.&lt;STRONG&gt; &lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;$ sudo apt-get install rng-tools&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Problem 4: make u-boot-signed.sb failed due to lacking keys&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;This was my bad. In the above post I had only copied CSF1 and IMG1 certificates to the U-Boot root directory. The private keys are also needed.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Problem 5: How to write the fuses&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;otp_burner.py is broken on 64 bit systems. BitInit.exe can apparently work on some Windows XP systems, but I didn't manage to get it to work in either Windows 7 64 bit or Windows XP 32 bit.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Instead of these faulty tools use the Linux command od.&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #606060; font-family: 'courier new', courier;"&gt;$ od -t x4&amp;nbsp; ../crts/SRK_1_2_3_4_fuse.bin&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #606060; font-family: 'courier new', courier;"&gt;0000000 d7dd02f7 596a91bd b7fb2ec3 09525b17&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #606060; font-family: 'courier new', courier;"&gt;0000020 6fe30579 0bb67f9e 7e53c7e4 44f06a93&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;These values can then be written with the MfgTool:&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;&amp;lt;CMD state="Updater" type="push" body="$ echo 0xd7dd02f7 &amp;gt; /sys/fsl_otp/HW_OCOTP_SRK0"&amp;gt;Burn Word 0 of SRK hash field in OTP &amp;lt;/CMD&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Or with the fuse command in U-Boot:&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: 'courier new', courier;"&gt;fuse prog 4 0 d7dd02f7 596a91bd b7fb2ec3 09525b17 6fe30579 0bb67f9e 7e53c7e4 44f06a93&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;Add #define CONFIG_CMD_FUSE to mx28evk.h in U-Boot to compile in fuse support.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Or write them manually with BitBurner.exe from the Freescale OTP package. The one OTP tool that actually worked like a charm.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Problem 6: Shared Drive&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;I made the mistake to build U-Boot on a shared drive in Virtual Box. Big mistake. It was significantly slower and the last step fails saying that mkimage cannot map u-boot-signed.sb. Simply avoid working on a shared drive and you are good.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Conclusion:&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;These steps combined with my post above should get HAB to work on the iMX28. At least it is working like a charm for me. I even put HAB to closed and verified that unsigned software would not execute.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;One final note is that to build U-Boot on the 32 bit ubuntu server you obviously need to get a 32 bit tool chain. You also need to install libssl-dev and some other packages to get&amp;nbsp; U-Boot to build. But if you have gotten this far compiling U-Boot is the least of your concerns.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 15 Mar 2016 15:30:46 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/HAB-i-MX28-Invalid-Certificate/m-p/475513#M75417</guid>
      <dc:creator>persmitt</dc:creator>
      <dc:date>2016-03-15T15:30:46Z</dc:date>
    </item>
    <item>
      <title>Re: HAB i.MX28 Invalid Certificate</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/HAB-i-MX28-Invalid-Certificate/m-p/475514#M75418</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Per,&lt;/P&gt;&lt;P&gt;Where can I download the CST 2.0.0 ?&lt;/P&gt;&lt;P&gt;In freescale's webisite now it is cst-2.3.2.&lt;/P&gt;&lt;P&gt;I want to sign my eboot for i.MX28.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Jul 2016 05:43:07 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/HAB-i-MX28-Invalid-Certificate/m-p/475514#M75418</guid>
      <dc:creator>collinshi</dc:creator>
      <dc:date>2016-07-28T05:43:07Z</dc:date>
    </item>
    <item>
      <title>Re: HAB i.MX28 Invalid Certificate</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/HAB-i-MX28-Invalid-Certificate/m-p/475515#M75419</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;Hello,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;I send You email with CST 2 link.&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;Hope it helps.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;Regards,&lt;/P&gt;&lt;P style="font-family: arial, helvetica, 'helvetica neue', verdana, sans-serif; color: #51626f;"&gt;Yuri.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 28 Jul 2016 07:35:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/HAB-i-MX28-Invalid-Certificate/m-p/475515#M75419</guid>
      <dc:creator>Yuri</dc:creator>
      <dc:date>2016-07-28T07:35:03Z</dc:date>
    </item>
    <item>
      <title>Re: HAB i.MX28 Invalid Certificate</title>
      <link>https://community.nxp.com/t5/i-MX-Processors/HAB-i-MX28-Invalid-Certificate/m-p/2141415#M239614</link>
      <description>&lt;P&gt;Does the current version of cst (4.0.1) work with imx28? If not, can use send me download link to cst2.0.0?&lt;BR /&gt;-Jari&lt;/P&gt;</description>
      <pubDate>Mon, 28 Jul 2025 05:15:41 GMT</pubDate>
      <guid>https://community.nxp.com/t5/i-MX-Processors/HAB-i-MX28-Invalid-Certificate/m-p/2141415#M239614</guid>
      <dc:creator>kokkonenfi</dc:creator>
      <dc:date>2025-07-28T05:15:41Z</dc:date>
    </item>
  </channel>
</rss>

