in src/ecdh_support.c [213:242]
void PBKDF2(int sha,const octet *p,octet *s,int rep,int olen,octet *key)
{
int len;
int d=ROUNDUP(olen,sha);
char f[64];
char u[64];
octet F= {0,sizeof(f),f};
octet U= {0,sizeof(u),u};
OCT_empty(key);
for (int i=1; i<=d; i++)
{
len=s->len;
OCT_jint(s,i,4);
HMAC(sha,s,p,sha,&F);
s->len=len;
OCT_copy(&U,&F);
for (int j=2; j<=rep; j++)
{
HMAC(sha,&U,p,sha,&U);
OCT_xor(&F,&U);
}
OCT_joctet(key,&F);
}
OCT_chop(key,NULL,olen);
}