void lyra2_hash(void *state, const void *input) { sph_blake256_context ctx_blake; sph_keccak256_context ctx_keccak; sph_skein256_context ctx_skein; sph_groestl256_context ctx_groestl; uint32_t hashA[8], hashB[8]; sph_blake256_init(&ctx_blake); sph_blake256(&ctx_blake, input, 80); sph_blake256_close(&ctx_blake, hashA); sph_keccak256_init(&ctx_keccak); sph_keccak256(&ctx_keccak, hashA, 32); sph_keccak256_close(&ctx_keccak, hashB); LYRA2(hashA, 32, hashB, 32, hashB, 32, 1, 8, 8); sph_skein256_init(&ctx_skein); sph_skein256(&ctx_skein, hashA, 32); sph_skein256_close(&ctx_skein, hashB); sph_groestl256_init(&ctx_groestl); sph_groestl256(&ctx_groestl, hashB, 32); sph_groestl256_close(&ctx_groestl, hashA); memcpy(state, hashA, 32); }
void lyra2re_hash(const char* input, char* output) { sph_blake256_context ctx_blake; sph_groestl256_context ctx_groestl; sph_keccak256_context ctx_keccak; sph_skein256_context ctx_skein; uint32_t hashA[8], hashB[8]; sph_blake256_init(&ctx_blake); sph_blake256 (&ctx_blake, input, 80); sph_blake256_close (&ctx_blake, hashA); sph_keccak256_init(&ctx_keccak); sph_keccak256 (&ctx_keccak,hashA, 32); sph_keccak256_close(&ctx_keccak, hashB); LYRA2((void*)hashA, 32, (const void*)hashB, 32, (const void*)hashB, 32, 1, 8, 8); sph_skein256_init(&ctx_skein); sph_skein256 (&ctx_skein, hashA, 32); sph_skein256_close(&ctx_skein, hashB); sph_groestl256_init(&ctx_groestl); sph_groestl256 (&ctx_groestl, hashB, 32); sph_groestl256_close(&ctx_groestl, hashA); memcpy(output, hashA, 32); }
void lyra2re_hash(void *state, const void *input) { lyra2re_ctx_holder ctx; memcpy(&ctx, &lyra2re_ctx, sizeof(lyra2re_ctx)); // uint32_t _ALIGN(128) hashA[8], hashB[8]; uint32_t _ALIGN(128) hash[32]; #define hashA hash #define hashB hash+16 sph_blake256(&ctx.blake, input, 80); sph_blake256_close(&ctx.blake, hashA); sph_keccak256(&ctx.keccak, hashA, 32); sph_keccak256_close(&ctx.keccak, hashB); LYRA2(hashA, 32, hashB, 32, hashB, 32, 1, 8, 8); sph_skein256(&ctx.skein, hashA, 32); sph_skein256_close(&ctx.skein, hashB); #ifdef NO_AES_NI sph_groestl256( &ctx.groestl, hashB, 32 ); sph_groestl256_close( &ctx.groestl, hashA ); #else update_groestl256( &ctx.groestl, hashB, 256 ); final_groestl256( &ctx.groestl, hashA ); #endif memcpy(state, hashA, 32); }
static int crypt_256(int *pcount, struct db_salt *salt) { int count = *pcount; int index = 0; #ifdef _OPENMP #pragma omp parallel for for (index = 0; index < count; index++) #endif { sph_skein256_context ctx; sph_skein256_init(&ctx); sph_skein256(&ctx, saved_key[index], strlen(saved_key[index])); sph_skein256_close(&ctx, (unsigned char*)crypt_out[index]); } return count; }
inline void lyra2rev2hash(void *state, const void *input) { sph_blake256_context ctx_blake; sph_bmw256_context ctx_bmw; sph_keccak256_context ctx_keccak; sph_skein256_context ctx_skein; sph_cubehash256_context ctx_cube; uint32_t hashA[8], hashB[8]; sph_blake256_init(&ctx_blake); sph_blake256 (&ctx_blake, input, 80); sph_blake256_close (&ctx_blake, hashA); sph_keccak256_init(&ctx_keccak); sph_keccak256 (&ctx_keccak,hashA, 32); sph_keccak256_close(&ctx_keccak, hashB); sph_cubehash256_init(&ctx_cube); sph_cubehash256(&ctx_cube, hashB, 32); sph_cubehash256_close(&ctx_cube, hashA); LYRA2(hashB, 32, hashA, 32, hashA, 32, 1, 4, 4); sph_skein256_init(&ctx_skein); sph_skein256 (&ctx_skein, hashB, 32); sph_skein256_close(&ctx_skein, hashA); sph_cubehash256_init(&ctx_cube); sph_cubehash256(&ctx_cube, hashA, 32); sph_cubehash256_close(&ctx_cube, hashB); sph_bmw256_init(&ctx_bmw); sph_bmw256 (&ctx_bmw, hashB, 32); sph_bmw256_close(&ctx_bmw, hashA); //printf("cpu hash %08x %08x %08x %08x\n",hashA[0],hashA[1],hashA[2],hashA[3]); memcpy(state, hashA, 32); }
void lyra2re2_hash(const char* input, char* output) { sph_blake256_context ctx_blake; sph_cubehash256_context ctx_cubehash; sph_keccak256_context ctx_keccak; sph_skein256_context ctx_skein; sph_bmw256_context ctx_bmw; uint32_t hashA[8], hashB[8]; sph_blake256_init(&ctx_blake); sph_blake256(&ctx_blake, input, 80); sph_blake256_close (&ctx_blake, hashA); sph_keccak256_init(&ctx_keccak); sph_keccak256(&ctx_keccak, hashA, 32); sph_keccak256_close(&ctx_keccak, hashB); sph_cubehash256_init(&ctx_cubehash); sph_cubehash256(&ctx_cubehash, hashB, 32); sph_cubehash256_close(&ctx_cubehash, hashA); LYRA2(hashB, 32, hashA, 32, hashA, 32, 1, 4, 4); sph_skein256_init(&ctx_skein); sph_skein256(&ctx_skein, hashB, 32); sph_skein256_close(&ctx_skein, hashA); sph_cubehash256_init(&ctx_cubehash); sph_cubehash256(&ctx_cubehash, hashA, 32); sph_cubehash256_close(&ctx_cubehash, hashB); sph_bmw256_init(&ctx_bmw); sph_bmw256(&ctx_bmw, hashB, 32); sph_bmw256_close(&ctx_bmw, hashA); memcpy(output, hashA, 32); }
inline void lyra2rehash(void *state, const void *input) { sph_blake256_context ctx_blake; sph_groestl256_context ctx_groestl; sph_keccak256_context ctx_keccak; sph_skein256_context ctx_skein; uint32_t hashA[8], hashB[8]; sph_blake256_init(&ctx_blake); sph_blake256 (&ctx_blake, input, 80); sph_blake256_close (&ctx_blake, hashA); sph_keccak256_init(&ctx_keccak); sph_keccak256 (&ctx_keccak,hashA, 32); sph_keccak256_close(&ctx_keccak, hashB); LYRA2(hashA, 32, hashB, 32, hashB, 32, 1, 8, 8); sph_skein256_init(&ctx_skein); sph_skein256 (&ctx_skein, hashA, 32); sph_skein256_close(&ctx_skein, hashB); sph_groestl256_init(&ctx_groestl); sph_groestl256 (&ctx_groestl, hashB, 32); sph_groestl256_close(&ctx_groestl, hashA); //printf("cpu hash %08x %08x %08x %08x\n",hashA[0],hashA[1],hashA[2],hashA[3]); memcpy(state, hashA, 32); }