Path: blob/linux/scryptjane/scrypt-jane-mix_salsa.h
1201 views
#if !defined(SCRYPT_CHOOSE_COMPILETIME) || !defined(SCRYPT_SALSA_INCLUDED)12#undef SCRYPT_MIX3#define SCRYPT_MIX "Salsa20/8 Ref"45#undef SCRYPT_SALSA_INCLUDED6#define SCRYPT_SALSA_INCLUDED7#define SCRYPT_SALSA_BASIC89static void10salsa_core_basic(uint32_t state[16]) {11size_t rounds = 8;12uint32_t x0,x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,t;1314x0 = state[0];15x1 = state[1];16x2 = state[2];17x3 = state[3];18x4 = state[4];19x5 = state[5];20x6 = state[6];21x7 = state[7];22x8 = state[8];23x9 = state[9];24x10 = state[10];25x11 = state[11];26x12 = state[12];27x13 = state[13];28x14 = state[14];29x15 = state[15];3031#define quarter(a,b,c,d) \32t = a+d; t = ROTL32(t, 7); b ^= t; \33t = b+a; t = ROTL32(t, 9); c ^= t; \34t = c+b; t = ROTL32(t, 13); d ^= t; \35t = d+c; t = ROTL32(t, 18); a ^= t; \3637for (; rounds; rounds -= 2) {38quarter( x0, x4, x8,x12)39quarter( x5, x9,x13, x1)40quarter(x10,x14, x2, x6)41quarter(x15, x3, x7,x11)42quarter( x0, x1, x2, x3)43quarter( x5, x6, x7, x4)44quarter(x10,x11, x8, x9)45quarter(x15,x12,x13,x14)46}4748state[0] += x0;49state[1] += x1;50state[2] += x2;51state[3] += x3;52state[4] += x4;53state[5] += x5;54state[6] += x6;55state[7] += x7;56state[8] += x8;57state[9] += x9;58state[10] += x10;59state[11] += x11;60state[12] += x12;61state[13] += x13;62state[14] += x14;63state[15] += x15;6465#undef quarter66}6768#endif69707172