<?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>S32K中的主题 Re: Additional supported KDF func w/ HSE</title>
    <link>https://community.nxp.com/t5/S32K/Additional-supported-KDF-func-w-HSE/m-p/2004532#M43761</link>
    <description>&lt;P&gt;Hi &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/232520"&gt;@Changhawn&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Follwing algorithms are supported by HSE:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukaszadrapa_0-1732978644341.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/313347i1C620ED4F91CE03F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lukaszadrapa_0-1732978644341.png" alt="lukaszadrapa_0-1732978644341.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;I can see in the source codes that only HSE_KDF_ALGO_TLS12PRF in HSE_Tls12Prf() is used in the NXP port.&lt;/P&gt;
&lt;P&gt;So, you can check that function to see how to prepare descriptor to call such service.&lt;/P&gt;
&lt;P&gt;Or "S32K344_DemoApp_SessionKeys" example in this package:&lt;BR /&gt;&lt;A href="https://www.nxp.com/webapp/Download?colCode=S32K3_HSE_DemoExamples" target="_blank"&gt;https://www.nxp.com/webapp/Download?colCode=S32K3_HSE_DemoExamples&lt;/A&gt;&lt;BR /&gt;... shows how to call HSE_SRV_ID_KEY_DERIVE.&lt;/P&gt;
&lt;P&gt;Regards,&lt;BR /&gt;Lukas&lt;/P&gt;</description>
    <pubDate>Sat, 30 Nov 2024 14:57:57 GMT</pubDate>
    <dc:creator>lukaszadrapa</dc:creator>
    <dc:date>2024-11-30T14:57:57Z</dc:date>
    <item>
      <title>Additional supported KDF func w/ HSE</title>
      <link>https://community.nxp.com/t5/S32K/Additional-supported-KDF-func-w-HSE/m-p/2003535#M43713</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hi&lt;/P&gt;&lt;P&gt;I need KDF function w/HSE , which follow specification of &lt;STRONG&gt;NIST Special Publication 800-56A&lt;/STRONG&gt;(The KDF shall be the &lt;STRONG&gt;“concatenation KDF”&lt;/STRONG&gt;)&lt;/P&gt;&lt;P&gt;1. Do you have any guide or related code about this?&lt;/P&gt;&lt;P&gt;2. Below code is KDF function w/o HSE(all the paramters is string),&amp;nbsp; If change as KDF func w/ HSE.&amp;nbsp; parameter &lt;STRONG&gt;"sharedSecret" is changed as Key handle&lt;/STRONG&gt;. In that case, could you guide and tell how to modify?&lt;/P&gt;&lt;P&gt;Thank u.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;DIV&gt;int concatKDF(uint8_t *key, unsigned int keyLen, &lt;STRONG&gt;const uint8_t *sharedSecret&lt;/STRONG&gt;, unsigned int sharedSecretLen,&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; const uint8_t *otherInfo, unsigned int otherInfoLen)&lt;/DIV&gt;&lt;DIV&gt;{&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; const mbedtls_md_info_t *md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA256);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; mbedtls_md_context_t md;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; uint8_t hash[32]; /* SHA256 Info Length is 32 */&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; uint32_t hashLen;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; uint32_t formatted;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; uint8_t counter[4];&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; uint32_t N;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; uint32_t offset;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; uint32_t amt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; uint32_t minlen;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; int rc = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; uint32_t i;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; const void *res;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; do&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mbedtls_md_init(&amp;amp;md);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rc = mbedtls_md_setup(&amp;amp;md, md_info, 1);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (rc != 0)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SYS_CONSOLE_PRINT("!!! mbedtls_md_init_ctx returned %d\r\n", rc);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rc = -1;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; hashLen = mbedtls_md_get_size(md_info);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (hashLen &amp;gt; 0u)&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; N = ((unsigned int)keyLen + hashLen - 1u) / hashLen;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; offset = 0;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; amt = keyLen;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; for (i = 1; i &amp;lt;= N; i++)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; formatted = htonl(i);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; counter[0] = (uint8_t)(formatted &amp;gt;&amp;gt; 0) &amp;amp; 0xffu;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; counter[1] = (uint8_t)(formatted &amp;gt;&amp;gt; &lt;LI-EMOJI id="lia_smiling-face-with-sunglasses" title=":smiling_face_with_sunglasses:"&gt;&lt;/LI-EMOJI&gt; &amp;amp; 0xffu;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; counter[2] = (uint8_t)(formatted &amp;gt;&amp;gt; 16) &amp;amp; 0xffu;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; counter[3] = (uint8_t)(formatted &amp;gt;&amp;gt; 24) &amp;amp; 0xffu;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rc = mbedtls_md_starts(&amp;amp;md);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rc = mbedtls_md_update(&amp;amp;md, counter, sizeof(counter));&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rc = mbedtls_md_update(&amp;amp;md, &lt;STRONG&gt;sharedSecret, sharedSecretLen);&lt;/STRONG&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rc = mbedtls_md_update(&amp;amp;md, otherInfo, otherInfoLen);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rc = mbedtls_md_finish(&amp;amp;md, hash);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; if (rc != 0)&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&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; ;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; minlen = (hashLen &amp;lt; amt) ? hashLen : amt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; res = memcpy(&amp;amp;key[offset], hash, (size_t)minlen);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; offset += hashLen;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; amt = (amt &amp;gt; hashLen) ? (amt - hashLen) : 0u;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; mbedtls_md_free(&amp;amp;md);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; else&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; {&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; SYS_CONSOLE_PRINT("!!! hash length(md_info size) is zero\r\n");&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; rc = -1;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; } while (false);&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp; &amp;nbsp; return rc;&lt;/DIV&gt;&lt;DIV&gt;}&lt;/DIV&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 28 Nov 2024 08:31:51 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/Additional-supported-KDF-func-w-HSE/m-p/2003535#M43713</guid>
      <dc:creator>Changhawn</dc:creator>
      <dc:date>2024-11-28T08:31:51Z</dc:date>
    </item>
    <item>
      <title>Re: Additional supported KDF func w/ HSE</title>
      <link>https://community.nxp.com/t5/S32K/Additional-supported-KDF-func-w-HSE/m-p/2004532#M43761</link>
      <description>&lt;P&gt;Hi &lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/232520"&gt;@Changhawn&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Follwing algorithms are supported by HSE:&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="lukaszadrapa_0-1732978644341.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/313347i1C620ED4F91CE03F/image-size/medium?v=v2&amp;amp;px=400" role="button" title="lukaszadrapa_0-1732978644341.png" alt="lukaszadrapa_0-1732978644341.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;I can see in the source codes that only HSE_KDF_ALGO_TLS12PRF in HSE_Tls12Prf() is used in the NXP port.&lt;/P&gt;
&lt;P&gt;So, you can check that function to see how to prepare descriptor to call such service.&lt;/P&gt;
&lt;P&gt;Or "S32K344_DemoApp_SessionKeys" example in this package:&lt;BR /&gt;&lt;A href="https://www.nxp.com/webapp/Download?colCode=S32K3_HSE_DemoExamples" target="_blank"&gt;https://www.nxp.com/webapp/Download?colCode=S32K3_HSE_DemoExamples&lt;/A&gt;&lt;BR /&gt;... shows how to call HSE_SRV_ID_KEY_DERIVE.&lt;/P&gt;
&lt;P&gt;Regards,&lt;BR /&gt;Lukas&lt;/P&gt;</description>
      <pubDate>Sat, 30 Nov 2024 14:57:57 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/Additional-supported-KDF-func-w-HSE/m-p/2004532#M43761</guid>
      <dc:creator>lukaszadrapa</dc:creator>
      <dc:date>2024-11-30T14:57:57Z</dc:date>
    </item>
    <item>
      <title>Re: Additional supported KDF func w/ HSE</title>
      <link>https://community.nxp.com/t5/S32K/Additional-supported-KDF-func-w-HSE/m-p/2004542#M43765</link>
      <description>&lt;P&gt;Dear&amp;nbsp;&lt;a href="https://community.nxp.com/t5/user/viewprofilepage/user-id/37795"&gt;@lukaszadrapa&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need to drive KEY by NIST KDF SP800&lt;STRONG&gt; 56A spec.&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Like below picture, I know that HSE is not support KDF &lt;STRONG&gt;SP800 56A&lt;/STRONG&gt;&amp;nbsp;.&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Changhawn_0-1733021213041.png" style="width: 400px;"&gt;&lt;img src="https://community.nxp.com/t5/image/serverpage/image-id/313349i588E274DC9B34AD8/image-size/medium?v=v2&amp;amp;px=400" role="button" title="Changhawn_0-1733021213041.png" alt="Changhawn_0-1733021213041.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;If it is possible to implement , please let me know.&lt;/P&gt;&lt;P&gt;Thank u.&lt;/P&gt;&lt;P&gt;Chang.&lt;/P&gt;</description>
      <pubDate>Sun, 01 Dec 2024 02:49:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/Additional-supported-KDF-func-w-HSE/m-p/2004542#M43765</guid>
      <dc:creator>Changhawn</dc:creator>
      <dc:date>2024-12-01T02:49:00Z</dc:date>
    </item>
    <item>
      <title>Re: Additional supported KDF func w/ HSE</title>
      <link>https://community.nxp.com/t5/S32K/Additional-supported-KDF-func-w-HSE/m-p/2007787#M43909</link>
      <description>&lt;P&gt;Dear NXP guys.&lt;/P&gt;&lt;P&gt;In KDF,&amp;nbsp; I know that NIST 800-56A is not supported currently in&amp;nbsp;NXP HSE.&lt;/P&gt;&lt;P&gt;So implemented it without HSE.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 05 Dec 2024 05:14:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/S32K/Additional-supported-KDF-func-w-HSE/m-p/2007787#M43909</guid>
      <dc:creator>Changhawn</dc:creator>
      <dc:date>2024-12-05T05:14:21Z</dc:date>
    </item>
  </channel>
</rss>

