Example #1
0
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);
}
Example #2
0
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;
}