void SHA3_squeeze()

in src/hash.c [491:523]


void SHA3_squeeze(sha3 *sh,char *buff,int len)
{
    int done;
    int m=0;
    unsign64 el;
    /* extract by columns */
    done=0;
    for (;;)
    {
        for (int j=0; j<5; j++)
        {
            for (int i=0; i<5; i++)
            {
                el=sh->S[i][j];
                for (int k=0; k<8; k++)
                {
                    buff[m++]=(el&0xff);
                    if (m>=len || m%sh->rate==0)
                    {
                        done=1;
                        break;
                    }
                    el>>=8;
                }
                if (done) break;
            }
            if (done) break;
        }
        if (m>=len) break;
        done=0;
        SHA3_transform(sh);
    }
}