void PBKDF2()

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