<?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 MCF5235 MDHA SHA1 problem in ColdFire/68K Microcontrollers and Processors</title>
    <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF5235-MDHA-SHA1-problem/m-p/709498#M13306</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am using the MDHA of &amp;nbsp;MCF5235 to calculate the &amp;nbsp;SHA1.&lt;/P&gt;&lt;P&gt;The test&amp;nbsp;code is :&lt;/P&gt;&lt;P&gt;void sha1_test()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8 buf[]="abcdefghijklmnopqrstuvwxyz";&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint32 results[5]={0};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int i;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDCMR = MCF_MDHA_MDCMR_SWR;// software reset &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(0 != (MCF_MDHA_MDCMR &amp;amp; MCF_MDHA_MDCMR_SWR)) // self clearing&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDCR = 0u;//disable all interrupt&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDMR = 0&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| MCF_MDHA_MDMR_PDATA&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| MCF_MDHA_MDMR_INIT;//enable initialization &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(i=0;i&amp;lt;26;i=i+4)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDIN = *(uint32 *)buf[i]; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDIN = *(uint32 *)buf[i];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDDSR = 26;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDCMR = MCF_MDHA_MDCMR_GO;// command = GO&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;delay(10);//delay 10 us&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;results[0] = MCF_MDHA_MDA0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;results[1] = MCF_MDHA_MDB0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;results[2] = MCF_MDHA_MDC0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;results[3] = MCF_MDHA_MDD0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;results[4] = MCF_MDHA_MDE0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;The test result is : 0xC700DFB3, 0x14957954,0x9087EE75, 0xED04935D,0x30B541E9&lt;/P&gt;&lt;P&gt;It is different from the SHA1 tools from the web, for example&amp;nbsp;&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Fwww.cnfree.org%2Ftools%2Fhash.php" rel="nofollow" target="_blank"&gt;https://www.cnfree.org/tools/hash.php&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The test result is&amp;nbsp;0x32d10c7b,0x8cf96570,0xca04ce37,0xf2a19d84,0x240d3a89.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I had known both the results are correct. But why they are so different?&amp;nbsp;&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-337747"&gt;sha1_26.txt.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 21 Sep 2017 06:38:45 GMT</pubDate>
    <dc:creator>changliu1</dc:creator>
    <dc:date>2017-09-21T06:38:45Z</dc:date>
    <item>
      <title>MCF5235 MDHA SHA1 problem</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF5235-MDHA-SHA1-problem/m-p/709498#M13306</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am using the MDHA of &amp;nbsp;MCF5235 to calculate the &amp;nbsp;SHA1.&lt;/P&gt;&lt;P&gt;The test&amp;nbsp;code is :&lt;/P&gt;&lt;P&gt;void sha1_test()&lt;/P&gt;&lt;P&gt;{&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint8 buf[]="abcdefghijklmnopqrstuvwxyz";&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;uint32 results[5]={0};&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int i;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDCMR = MCF_MDHA_MDCMR_SWR;// software reset &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(0 != (MCF_MDHA_MDCMR &amp;amp; MCF_MDHA_MDCMR_SWR)) // self clearing&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDCR = 0u;//disable all interrupt&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDMR = 0&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| MCF_MDHA_MDMR_PDATA&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;| MCF_MDHA_MDMR_INIT;//enable initialization &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for(i=0;i&amp;lt;26;i=i+4)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDIN = *(uint32 *)buf[i]; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDIN = *(uint32 *)buf[i];&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDDSR = 26;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MCF_MDHA_MDCMR = MCF_MDHA_MDCMR_GO;// command = GO&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;delay(10);//delay 10 us&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;results[0] = MCF_MDHA_MDA0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;results[1] = MCF_MDHA_MDB0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;results[2] = MCF_MDHA_MDC0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;results[3] = MCF_MDHA_MDD0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;results[4] = MCF_MDHA_MDE0;&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;The test result is : 0xC700DFB3, 0x14957954,0x9087EE75, 0xED04935D,0x30B541E9&lt;/P&gt;&lt;P&gt;It is different from the SHA1 tools from the web, for example&amp;nbsp;&lt;A _jive_internal="true" href="https://community.nxp.com/external-link.jspa?url=https%3A%2F%2Fwww.cnfree.org%2Ftools%2Fhash.php" rel="nofollow" target="_blank"&gt;https://www.cnfree.org/tools/hash.php&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The test result is&amp;nbsp;0x32d10c7b,0x8cf96570,0xca04ce37,0xf2a19d84,0x240d3a89.&lt;/P&gt;&lt;P style="min-height: 8pt; padding: 0px;"&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I had known both the results are correct. But why they are so different?&amp;nbsp;&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-337747"&gt;sha1_26.txt.zip&lt;/A&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Sep 2017 06:38:45 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF5235-MDHA-SHA1-problem/m-p/709498#M13306</guid>
      <dc:creator>changliu1</dc:creator>
      <dc:date>2017-09-21T06:38:45Z</dc:date>
    </item>
    <item>
      <title>Re: MCF5235 MDHA SHA1 problem</title>
      <link>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF5235-MDHA-SHA1-problem/m-p/709499#M13307</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You should have searched this forum first for "MDHA". You're not the first one to have this problem.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;A href="https://community.nxp.com/thread/305865" rel="nofollow noopener noreferrer" target="_blank"&gt;MCF5271 SKHA and MDHA endian&lt;/A&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And the trick? My code looks like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE class="language-c line-numbers"&gt;&lt;CODE&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_MDHA_MDDSR &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;64&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="keyword token"&gt;for&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;i &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;0&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; i &lt;SPAN class="operator token"&gt;!=&lt;/SPAN&gt; &lt;SPAN class="number token"&gt;16&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;++&lt;/SPAN&gt;i&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;{&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="token function"&gt;LOAD32H&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;a&lt;SPAN class="punctuation token"&gt;,&lt;/SPAN&gt; buf &lt;SPAN class="operator token"&gt;+&lt;/SPAN&gt; &lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;&lt;SPAN class="number token"&gt;4&lt;/SPAN&gt; &lt;SPAN class="operator token"&gt;*&lt;/SPAN&gt; i&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="comment token"&gt;/* load data */&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; MCF_MDHA_MDIN &lt;SPAN class="operator token"&gt;=&lt;/SPAN&gt; &lt;SPAN class="token function"&gt;bswap32&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;(&lt;/SPAN&gt;a&lt;SPAN class="punctuation token"&gt;)&lt;/SPAN&gt;&lt;SPAN class="punctuation token"&gt;;&lt;/SPAN&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN class="punctuation token"&gt;}&lt;/SPAN&gt;
&lt;SPAN class="line-numbers-rows"&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;SPAN&gt;‍&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Note the byte swap! Yes, hidden in the manual is the following single mention of this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: courier new,courier,monospace;"&gt;28.2.8 MDHA Message Digest Registers 0 (MDx0)&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN style="font-family: courier new,courier,monospace;"&gt;Each word (4 bytes) in the MDx0 is assumed to be in &lt;SPAN style="color: #ff0000;"&gt;&lt;STRONG&gt;little endian byte order&lt;/STRONG&gt;&lt;/SPAN&gt; for all reads/writes.&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;/P&gt;&lt;P&gt;This hardware module was always little-endian. So you have to byte-swap all data and keys going into this thing, and then swap it all back on the way out. Fortunately the CPU has a byte-swap machine code instruction, which you have to then go and write code or inline-assembly to use. If you don't you may take as long to swap the bytes as the hardware takes to do the operation! In some CPUs in this line (the MCF53xx but not MCF52xx) have a bit in the register that says "swap them for me!". That also means you can use DMA to funnel data through this module.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;But not with your one.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Tom&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 21 Sep 2017 13:49:43 GMT</pubDate>
      <guid>https://community.nxp.com/t5/ColdFire-68K-Microcontrollers/MCF5235-MDHA-SHA1-problem/m-p/709499#M13307</guid>
      <dc:creator>TomE</dc:creator>
      <dc:date>2017-09-21T13:49:43Z</dc:date>
    </item>
  </channel>
</rss>

