Additional supported KDF func w/ HSE

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

Additional supported KDF func w/ HSE

Jump to solution
2,169 Views
Changhawn
Contributor IV

 

Hi

I need KDF function w/HSE , which follow specification of NIST Special Publication 800-56A(The KDF shall be the “concatenation KDF”)

1. Do you have any guide or related code about this?

2. Below code is KDF function w/o HSE(all the paramters is string),  If change as KDF func w/ HSE.  parameter "sharedSecret" is changed as Key handle. In that case, could you guide and tell how to modify?

Thank u.

 

int concatKDF(uint8_t *key, unsigned int keyLen, const uint8_t *sharedSecret, unsigned int sharedSecretLen,
              const uint8_t *otherInfo, unsigned int otherInfoLen)
{
    const mbedtls_md_info_t *md_info = mbedtls_md_info_from_type(MBEDTLS_MD_SHA256);
    mbedtls_md_context_t md;
    uint8_t hash[32]; /* SHA256 Info Length is 32 */
    uint32_t hashLen;
    uint32_t formatted;
    uint8_t counter[4];
    uint32_t N;
    uint32_t offset;
    uint32_t amt;
    uint32_t minlen;
    int rc = 0;
    uint32_t i;
    const void *res;
 
    do
    {
        mbedtls_md_init(&md);
        rc = mbedtls_md_setup(&md, md_info, 1);
        if (rc != 0)
        {
            SYS_CONSOLE_PRINT("!!! mbedtls_md_init_ctx returned %d\r\n", rc);
            rc = -1;
        }
        else
        {
 
            hashLen = mbedtls_md_get_size(md_info);
            if (hashLen > 0u) 
            {
 
                N = ((unsigned int)keyLen + hashLen - 1u) / hashLen;
 
                offset = 0;
                amt = keyLen;
                for (i = 1; i <= N; i++)
                {
                    formatted = htonl(i);
                    counter[0] = (uint8_t)(formatted >> 0) & 0xffu;
                    counter[1] = (uint8_t)(formatted >> & 0xffu;
                    counter[2] = (uint8_t)(formatted >> 16) & 0xffu;
                    counter[3] = (uint8_t)(formatted >> 24) & 0xffu;
 
                    rc = mbedtls_md_starts(&md);
                    rc = mbedtls_md_update(&md, counter, sizeof(counter));
                    rc = mbedtls_md_update(&md, sharedSecret, sharedSecretLen);
                    rc = mbedtls_md_update(&md, otherInfo, otherInfoLen);
                    rc = mbedtls_md_finish(&md, hash);
                    if (rc != 0)
                    {
                        ;
                    }
 
                    minlen = (hashLen < amt) ? hashLen : amt;
 
                    res = memcpy(&key[offset], hash, (size_t)minlen);
 
                    offset += hashLen;
 
                    amt = (amt > hashLen) ? (amt - hashLen) : 0u;
                }
                mbedtls_md_free(&md);
            }
            else
            {
                SYS_CONSOLE_PRINT("!!! hash length(md_info size) is zero\r\n");
                rc = -1;
            }
        }
    } while (false);
 
    return rc;
}

 

0 Kudos
Reply
1 Solution
2,061 Views
Changhawn
Contributor IV

Dear NXP guys.

In KDF,  I know that NIST 800-56A is not supported currently in NXP HSE.

So implemented it without HSE.

 

View solution in original post

0 Kudos
Reply
3 Replies
2,138 Views
lukaszadrapa
NXP TechSupport
NXP TechSupport

Hi @Changhawn 

Follwing algorithms are supported by HSE:

lukaszadrapa_0-1732978644341.png


I can see in the source codes that only HSE_KDF_ALGO_TLS12PRF in HSE_Tls12Prf() is used in the NXP port.

So, you can check that function to see how to prepare descriptor to call such service.

Or "S32K344_DemoApp_SessionKeys" example in this package:
https://www.nxp.com/webapp/Download?colCode=S32K3_HSE_DemoExamples
... shows how to call HSE_SRV_ID_KEY_DERIVE.

Regards,
Lukas

0 Kudos
Reply
2,109 Views
Changhawn
Contributor IV

Dear @lukaszadrapa 

I need to drive KEY by NIST KDF SP800 56A spec.

Like below picture, I know that HSE is not support KDF SP800 56A .

Changhawn_0-1733021213041.png

If it is possible to implement , please let me know.

Thank u.

Chang.

Tags (1)
0 Kudos
Reply
2,062 Views
Changhawn
Contributor IV

Dear NXP guys.

In KDF,  I know that NIST 800-56A is not supported currently in NXP HSE.

So implemented it without HSE.

 

0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2003535%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EAdditional%20supported%20KDF%20func%20w%2F%20HSE%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2003535%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CBR%20%2F%3E%3CP%3EHi%3C%2FP%3E%3CP%3EI%20need%20KDF%20function%20w%2FHSE%20%2C%20which%20follow%20specification%20of%20%3CSTRONG%3ENIST%20Special%20Publication%20800-56A%3C%2FSTRONG%3E(The%20KDF%20shall%20be%20the%20%3CSTRONG%3E%E2%80%9Cconcatenation%20KDF%E2%80%9D%3C%2FSTRONG%3E)%3C%2FP%3E%3CP%3E1.%20Do%20you%20have%20any%20guide%20or%20related%20code%20about%20this%3F%3C%2FP%3E%3CP%3E2.%20Below%20code%20is%20KDF%20function%20w%2Fo%20HSE(all%20the%20paramters%20is%20string)%2C%26nbsp%3B%20If%20change%20as%20KDF%20func%20w%2F%20HSE.%26nbsp%3B%20parameter%20%3CSTRONG%3E%22sharedSecret%22%20is%20changed%20as%20Key%20handle%3C%2FSTRONG%3E.%20In%20that%20case%2C%20could%20you%20guide%20and%20tell%20how%20to%20modify%3F%3C%2FP%3E%3CP%3EThank%20u.%3C%2FP%3E%3CBR%20%2F%3E%3CDIV%3Eint%20concatKDF(uint8_t%20*key%2C%20unsigned%20int%20keyLen%2C%20%3CSTRONG%3Econst%20uint8_t%20*sharedSecret%3C%2FSTRONG%3E%2C%20unsigned%20int%20sharedSecretLen%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%20const%20uint8_t%20*otherInfo%2C%20unsigned%20int%20otherInfoLen)%3C%2FDIV%3E%3CDIV%3E%7B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20const%20mbedtls_md_info_t%20*md_info%20%3D%20mbedtls_md_info_from_type(MBEDTLS_MD_SHA256)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20mbedtls_md_context_t%20md%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20uint8_t%20hash%5B32%5D%3B%20%2F*%20SHA256%20Info%20Length%20is%2032%20*%2F%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20uint32_t%20hashLen%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20uint32_t%20formatted%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20uint8_t%20counter%5B4%5D%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20uint32_t%20N%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20uint32_t%20offset%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20uint32_t%20amt%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20uint32_t%20minlen%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20int%20rc%20%3D%200%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20uint32_t%20i%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20const%20void%20*res%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20do%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%20%26nbsp%3B%20mbedtls_md_init(%26amp%3Bmd)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20rc%20%3D%20mbedtls_md_setup(%26amp%3Bmd%2C%20md_info%2C%201)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20if%20(rc%20!%3D%200)%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20SYS_CONSOLE_PRINT(%22!!!%20mbedtls_md_init_ctx%20returned%20%25d%5Cr%5Cn%22%2C%20rc)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20rc%20%3D%20-1%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20else%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20hashLen%20%3D%20mbedtls_md_get_size(md_info)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20if%20(hashLen%20%26gt%3B%200u)%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%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%20N%20%3D%20((unsigned%20int)keyLen%20%2B%20hashLen%20-%201u)%20%2F%20hashLen%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%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%20offset%20%3D%200%3B%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%20amt%20%3D%20keyLen%3B%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%20for%20(i%20%3D%201%3B%20i%20%26lt%3B%3D%20N%3B%20i%2B%2B)%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%7B%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%20formatted%20%3D%20htonl(i)%3B%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%20counter%5B0%5D%20%3D%20(uint8_t)(formatted%20%26gt%3B%26gt%3B%200)%20%26amp%3B%200xffu%3B%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%20counter%5B1%5D%20%3D%20(uint8_t)(formatted%20%26gt%3B%26gt%3B%20%3CLI-EMOJI%20id%3D%22lia_smiling-face-with-sunglasses%22%20title%3D%22%3Asmiling_face_with_sunglasses%3A%22%3E%3C%2FLI-EMOJI%3E%20%26amp%3B%200xffu%3B%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%20counter%5B2%5D%20%3D%20(uint8_t)(formatted%20%26gt%3B%26gt%3B%2016)%20%26amp%3B%200xffu%3B%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%20counter%5B3%5D%20%3D%20(uint8_t)(formatted%20%26gt%3B%26gt%3B%2024)%20%26amp%3B%200xffu%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%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%20rc%20%3D%20mbedtls_md_starts(%26amp%3Bmd)%3B%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%20rc%20%3D%20mbedtls_md_update(%26amp%3Bmd%2C%20counter%2C%20sizeof(counter))%3B%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%20rc%20%3D%20mbedtls_md_update(%26amp%3Bmd%2C%20%3CSTRONG%3EsharedSecret%2C%20sharedSecretLen)%3B%3C%2FSTRONG%3E%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%20rc%20%3D%20mbedtls_md_update(%26amp%3Bmd%2C%20otherInfo%2C%20otherInfoLen)%3B%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%20rc%20%3D%20mbedtls_md_finish(%26amp%3Bmd%2C%20hash)%3B%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%20if%20(rc%20!%3D%200)%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%7B%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%26nbsp%3B%20%26nbsp%3B%20%3B%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%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%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%20minlen%20%3D%20(hashLen%20%26lt%3B%20amt)%20%3F%20hashLen%20%3A%20amt%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%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%20res%20%3D%20memcpy(%26amp%3Bkey%5Boffset%5D%2C%20hash%2C%20(size_t)minlen)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%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%20offset%20%2B%3D%20hashLen%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%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%20amt%20%3D%20(amt%20%26gt%3B%20hashLen)%20%3F%20(amt%20-%20hashLen)%20%3A%200u%3B%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%7D%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%20mbedtls_md_free(%26amp%3Bmd)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20else%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7B%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%20SYS_CONSOLE_PRINT(%22!!!%20hash%20length(md_info%20size)%20is%20zero%5Cr%5Cn%22)%3B%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%20rc%20%3D%20-1%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%26nbsp%3B%20%7D%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20%7D%20while%20(false)%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%3CDIV%3E%26nbsp%3B%20%26nbsp%3B%20return%20rc%3B%3C%2FDIV%3E%3CDIV%3E%7D%3C%2FDIV%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2007787%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20Additional%20supported%20KDF%20func%20w%2F%20HSE%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2007787%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EDear%20NXP%20guys.%3C%2FP%3E%3CP%3EIn%20KDF%2C%26nbsp%3B%20I%20know%20that%20NIST%20800-56A%20is%20not%20supported%20currently%20in%26nbsp%3BNXP%20HSE.%3C%2FP%3E%3CP%3ESo%20implemented%20it%20without%20HSE.%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2004542%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20Additional%20supported%20KDF%20func%20w%2F%20HSE%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2004542%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EDear%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F37795%22%20target%3D%22_blank%22%3E%40lukaszadrapa%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI%20need%20to%20drive%20KEY%20by%20NIST%20KDF%20SP800%3CSTRONG%3E%2056A%20spec.%3C%2FSTRONG%3E%3C%2FP%3E%3CP%3ELike%20below%20picture%2C%20I%20know%20that%20HSE%20is%20not%20support%20KDF%20%3CSTRONG%3ESP800%2056A%3C%2FSTRONG%3E%26nbsp%3B.%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22Changhawn_0-1733021213041.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22Changhawn_0-1733021213041.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F313349i588E274DC9B34AD8%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22Changhawn_0-1733021213041.png%22%20alt%3D%22Changhawn_0-1733021213041.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3EIf%20it%20is%20possible%20to%20implement%20%2C%20please%20let%20me%20know.%3C%2FP%3E%3CP%3EThank%20u.%3C%2FP%3E%3CP%3EChang.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2004532%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20Additional%20supported%20KDF%20func%20w%2F%20HSE%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2004532%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%3EFollwing%20algorithms%20are%20supported%20by%20HSE%3A%3C%2FP%3E%0A%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%20lia-image-align-inline%22%20image-alt%3D%22lukaszadrapa_0-1732978644341.png%22%20style%3D%22width%3A%20400px%3B%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22lukaszadrapa_0-1732978644341.png%22%20style%3D%22width%3A%20272px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F313347i1C620ED4F91CE03F%2Fimage-size%2Fmedium%3Fv%3Dv2%26amp%3Bpx%3D400%22%20role%3D%22button%22%20title%3D%22lukaszadrapa_0-1732978644341.png%22%20alt%3D%22lukaszadrapa_0-1732978644341.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%0A%3CP%3E%3CBR%20%2F%3EI%20can%20see%20in%20the%20source%20codes%20that%20only%20HSE_KDF_ALGO_TLS12PRF%20in%20HSE_Tls12Prf()%20is%20used%20in%20the%20NXP%20port.%3C%2FP%3E%0A%3CP%3ESo%2C%20you%20can%20check%20that%20function%20to%20see%20how%20to%20prepare%20descriptor%20to%20call%20such%20service.%3C%2FP%3E%0A%3CP%3EOr%20%22S32K344_DemoApp_SessionKeys%22%20example%20in%20this%20package%3A%3CBR%20%2F%3E%3CA%20href%3D%22https%3A%2F%2Fwww.nxp.com%2Fwebapp%2FDownload%3FcolCode%3DS32K3_HSE_DemoExamples%22%20target%3D%22_blank%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%3Ehttps%3A%2F%2Fwww.nxp.com%2Fwebapp%2FDownload%3FcolCode%3DS32K3_HSE_DemoExamples%3C%2FA%3E%3CBR%20%2F%3E...%20shows%20how%20to%20call%20HSE_SRV_ID_KEY_DERIVE.%3C%2FP%3E%0A%3CP%3ERegards%2C%3CBR%20%2F%3ELukas%3C%2FP%3E%3C%2FLINGO-BODY%3E