int crypto_hash(unsigned char *out,const unsigned char *in,unsigned long long inlen) { NESSIEstruct c; NESSIEinit(&c); while (inlen > 16777216) { NESSIEadd(in,8*16777216,&c); in += 16777216; inlen -= 16777216; } NESSIEadd(in,8*inlen,&c); NESSIEfinalize(&c,out); return 0; }
int sq_whirlpool(HSQUIRRELVM pVM) { if(sq_gettop(pVM) == 2) { struct NESSIEstruct w; u8 digest[DIGESTBYTES]; const char* data; char out[DIGESTBYTES*2+1] = {0}; int i; sq_getstring(pVM, 2, &data); NESSIEinit(&w); NESSIEadd((const unsigned char*)data, strlen(data)*8, &w); NESSIEfinalize(&w, digest); for(i=0; i < DIGESTBYTES; ++i) { sprintf(out, "%s%02X", out, digest[i]); } sq_pushstring(pVM, out, -1); return 1; } sq_pushnull(pVM); return 1; }
static void GetWhirlPoolHash(TDes8& aWhirlPoolHash, TDes8& aImei) { #ifdef WHIRLPOOL_SYMBIAN struct NESSIEstruct w; u8 digest[DIGESTBYTES]; NESSIEinit(&w); NESSIEadd(aImei.Ptr(), 8*aImei.Length(), &w); NESSIEfinalize(&w, digest); for(int i = 0; i < DIGESTBYTES; i++) aWhirlPoolHash.AppendNumFixedWidth(digest[i],EHex, 2); #endif }