void salsa20_hash(uint32_t* a){ uint8_t i; uint32_t b[16]; memcpy(b, a, 64); for(i=0; i<10; ++i){ doubleround(a); } for(i=0; i<16; ++i){ a[i] += b[i]; } }
// Salsa hash function. Get seq array static void salsa20(uint8_t seq[64]) { uint32_t x[16], z[16]; int i, j; for(i = 0; i < 16; i++) x[i] = z[i] = LITTLEENDIAN((seq + (i * 4))); for(i = 0; i < 10; i++) doubleround(z); j = 0; for(i = 0; i < 16; i++) { z[i] += x[i]; seq[j++] = (uint8_t)(z[i]); seq[j++] = (uint8_t)(z[i] >> 8); seq[j++] = (uint8_t)(z[i] >> 16); seq[j++] = (uint8_t)(z[i] >> 24); } }