inline void gamma(const uint8_t garlic, const uint8_t *salt, const uint8_t saltlen, uint8_t *r) { const uint64_t q = UINT64_C(1) << ((3*garlic+3)/4); uint64_t i, j, j2; uint8_t *tmp = malloc(H_LEN); uint8_t *tmp2 = malloc(H_LEN); __Hash1(salt, saltlen, tmp); //tmp <- H(S) __Hash1(tmp, H_LEN, tmp2); //tmp2 <- H(H(S)) initXSState(tmp, tmp2); __ResetState(); for(i = 0; i < q; i++){ j = xorshift1024star() >> (64 - garlic); j2 = xorshift1024star() >> (64 - garlic); //v_j1= H'(v_j1||v_j2) __HashFast(i, r + j * H_LEN, r + j2 * H_LEN, r + j * H_LEN); } free(tmp); free(tmp2); }
int main() { int k; uint64_t s[16]; initxorshift64star(0x1234567887654321); printf("Seed:\n"); for (k = 0; k < 16; ++k) { s[k] = xorshift64star(); printf("%2d %llu\n", k, s[k]); } initxorshift1024star(s); printf("Outputs:\n"); for (k = 0; k < 32; ++k) { printf("%2d %llu\n", k, xorshift1024star()); } return 0; }