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);
}