int HKDF_SHA256_extract()

in src/hkdf.c [35:55]


int HKDF_SHA256_extract(char prk[SHA256_HASH_SIZE],
    const char *salt, unsigned int saltlen,
    const char *ikm,  unsigned int ikmlen)
{
    if (prk == NULL || ikm == NULL)
        return ERR_NULLPOINTER_HKDF;
    if (ikmlen == 0)
        return ERR_BADARGLEN_HKDF;
    if (salt == NULL && saltlen != 0)
        return ERR_BADARGLEN_HKDF;
    if (saltlen != 0 && saltlen < SHA256_HASH_SIZE)
        return ERR_BADARGLEN_HKDF;

    char zeros[SHA256_HASH_SIZE] = {0x00};

    // If salt isn't provided, the key is set to 0
    if (salt == NULL || saltlen == 0)
        return HMAC_SHA256_oneshot(prk, SHA256_HASH_SIZE, zeros, SHA256_HASH_SIZE, ikm, ikmlen);
    else
        return HMAC_SHA256_oneshot(prk, SHA256_HASH_SIZE, salt, saltlen, ikm, ikmlen);
}