#ifndef STACKHASH_H
#define STACKHASH_H
#включают "uint256.h"
#включают "sph_blake.h"
#включают "sph_bmw.h"
#включают "sph_groestl.h"
#включают "sph_jh.h"
#включают "sph_keccak.h"
#включают "sph_skein.h"
#включают "sph_luffa.h"
#включают "sph_cubehash.h"
#включают "sph_shavite.h"
#включают "sph_simd.h"
#включают "sph_echo.h"
#включают "sph_hamsi.h"
#включают "sph_fugue.h"
#включают "sph_shabal.h"
#включают "sph_whirlpool.h"
#включают "sph_sha2.h"
#ifndef QT_NO_DEBUG
#включают <строка>
#endif
#ifdef GLOBALDEFINED
#define GLOBAL
#else
#define GLOBAL ехЬегп
#endif
GLOBAL sph_blake512_context z_blake;
GLOBAL sph_bmw512_context z_bmw;
GLOBAL sph_groestl512_context z_groestl;
GLOBAL sph_jh512_context z_jh;
GLOBAL sph_keccak512_context z_keccak;
GLOBAL sph_skein512_context z_skein;
GLOBAL sph_luffa512_context z_luffa;
GLOBAL sph_cubehash512_context z_cubehash;
GLOBAL sph_shavite512_context z_shavite;
GLOBAL sph_simd512_context z_simd;
GLOBAL sph_echo512_context z_echo;
GLOBAL sph_hamsi512_context z_hamsi;
GLOBAL sph_fugue512_context z_fugue;
GLOBAL sph_shabal512_context z_shabal;
GLOBAL sph_whirlpool_context z_whirlpool;
GLOBAL sph_sha512_context z_sha2;
#define fillz () делают {\
sph_blake512_init (&z_blake); \
sph_bmw512_init (&z_bmw); \
sph_groestl512_init (&z_groestl); \
sph_jh512_init (&z_jh); \
sph_keccak512_init (&z_keccak); \
sph_skein512_init (&z_skein); \
sph_luffa512_init (&z_luffa); \
sph_cubehash512_init (&z_cubehash); \
sph_shavite512_init (&z_shavite); \
sph_simd512_init (&z_simd); \
sph_echo512_init (&z_echo); \
sph_hamsi512_init (&z_hamsi); \
sph_fugue512_init (&z_fugue); \
sph_shabal512_init (&z_shabal); \
sph_whirlpool_init (&z_whirlpool); \
sph_sha512_init (&z_sha2); \
} В то время как (0)
#define ZBLAKE (тетср (&ctx_blake, &z_blake, SizeOf (z_blake)))
#define ZBMW (тетср (&ctx_bmw, &z_bmw, SizeOf (z_bmw)))
#define ZGROESTL (тетср (&ctx_groestl, &z_groestl, SizeOf (z_groestl)))
#define ZJH (тетср (&ctx_jh, &z_jh, SizeOf (z_jh)))
#define ZKECCAK (тетср (&ctx_keccak, &z_keccak, SizeOf (z_keccak)))
#define ZSKEIN (тетср (&ctx_skein, &z_skein, SizeOf (z_skein)))
#define ZHAMSI (тетср (&ctx_hamsi, &z_hamsi, SizeOf (z_hamsi)))
#define ZFUGUE (тетср (&ctx_fugue, &z_fugue, SizeOf (z_fugue)))
#define ZSHABAL (тетср (&ctx_shabal, &z_shabal, SizeOf (z_shabal)))
#define ZWHIRLPOOL (тетср (&ctx_whirlpool, &z_whirlpool, SizeOf (z_whirlpool)))
#define ZSHA2 (тетср (&ctx_sha2, &z_sha2, SizeOf (z_sha2)))
шаблон<имяТипа T1>
встроенный uint256 Hash9 (Const Т1 pbegin, Const Т1 ПЭНД)
{
sph_blake512_context ctx_blake;
sph_bmw512_context ctx_bmw;
sph_groestl512_context ctx_groestl;
sph_jh512_context ctx_jh;
sph_keccak512_context ctx_keccak;
sph_skein512_context ctx_skein;
sph_luffa512_context ctx_luffa;
sph_cubehash512_context ctx_cubehash;
sph_shavite512_context ctx_shavite;
sph_simd512_context ctx_simd;
sph_echo512_context ctx_echo;
sph_hamsi512_context ctx_hamsi;
sph_fugue512_context ctx_fugue;
sph_shabal512_context ctx_shabal;
sph_whirlpool_context ctx_whirlpool;
sph_sha512_context ctx_sha2;
статический символ без знака pblank [1];
#ifndef QT_NO_DEBUG
// станд :: строка strhash;
// strhash = "";
#endif
uint512 хэш [17];
sph_shabal512_init (&ctx_shabal);
sph_shabal512 (&? Ctx_shabal (pbegin == ПЭНД pblank: static_cast<сопзЬ пустота *>(&pbegin [0])), (ПЭНД - pbegin) * SizeOf (pbegin [0]));
sph_shabal512_close (&ctx_shabal, static_cast<недействительным *>(&хэш [0]));
sph_bmw512_init (&ctx_bmw);
sph_bmw512 (&ctx_bmw, static_cast<сопзЬ пустота *>(&хэш [0]), 64);
sph_bmw512_close (&ctx_bmw, static_cast<недействительным *>(&хэш [1]));
sph_groestl512_init (&ctx_groestl);
sph_groestl512 (&ctx_groestl, static_cast<сопзЬ пустота *>(&хэш [1]), 64);
sph_groestl512_close (&ctx_groestl, static_cast<недействительным *>(&хэш [2]));
если ((хэш [2] & маска)! = ноль)
{
sph_keccak512_init (&ctx_keccak);
sph_keccak512 (&ctx_keccak, static_cast<сопзЬ пустота *>(&хэш [2]), 64);
sph_keccak512_close (&ctx_keccak, static_cast<недействительным *>(&хэш [3]));
}
еще
{
sph_skein512_init (&ctx_skein);
sph_skein512 (&ctx_skein, static_cast<сопзЬ пустота *>(&хэш [2]), 64);
sph_skein512_close (&ctx_skein, static_cast<недействительным *>(&хэш [3]));
}
sph_shabal512_init (&ctx_shabal);
sph_shabal512 (&ctx_shabal, static_cast<сопзЬ пустота *>(&хэш [3]), 64);
sph_shabal512_close (&ctx_shabal, static_cast<недействительным *>(&хэш [4]));
если ((хэш [4] & маска)! = ноль)
{
sph_jh512_init (&ctx_jh);
sph_jh512 (&ctx_jh, static_cast<сопзЬ пустота *>(&хэш [4]), 64);
sph_jh512_close (&ctx_jh, static_cast<недействительным *>(&хэш [5]));
}
еще
{
sph_cubehash512_init (&ctx_cubehash);
sph_cubehash512 (&ctx_cubehash, static_cast<сопзЬ пустота *>(&хэш [4]), 64);
sph_cubehash512_close (&ctx_cubehash, static_cast<недействительным *>(&хэш [5]));
}
sph_shabal512_init (&ctx_shabal);
sph_shabal512 (&ctx_shabal, static_cast<сопзЬ пустота *>(&хэш [5]), 64);
sph_shabal512_close (&ctx_shabal, static_cast<недействительным *>(&хэш [6]));
если ((хэш [6] & маска)! = ноль)
{
sph_keccak512_init (&ctx_keccak);
sph_keccak512 (&ctx_keccak, static_cast<сопзЬ пустота *>(&хэш [6]), 64);
sph_keccak512_close (&ctx_keccak, static_cast<недействительным *>(&хэш [7]));
}
еще
{
sph_cubehash512_init (&ctx_cubehash);
sph_cubehash512 (&ctx_cubehash, static_cast<сопзЬ пустота *>(&хэш [6]), 64);
sph_cubehash512_close (&ctx_cubehash, static_cast<недействительным *>(&хэш [7]));
}
sph_shabal512_init (&ctx_shabal);
sph_shabal512 (&ctx_shabal, static_cast<сопзЬ пустота *>(&хэш [7]), 64);
sph_shabal512_close (&ctx_shabal, static_cast<недействительным *>(&хэш [8]));
если ((хэш [8] & маска)! = ноль)
{
sph_luffa512_init (&ctx_luffa);
sph_luffa512 (&ctx_luffa, static_cast<недействительным *>(&хэш [8]), 64);
sph_luffa512_close (&ctx_luffa, static_cast<недействительным *>(&хэш [9]));
}
еще
{
sph_simd512_init (&ctx_simd);
sph_simd512 (&ctx_simd, static_cast<сопзЬ пустота *>(&хэш [8]), 64);
sph_simd512_close (&ctx_simd, static_cast<недействительным *>(&хэш [9]));
}
sph_shabal512_init (&ctx_shabal);
sph_shabal512 (&ctx_shabal, static_cast<сопзЬ пустота *>(&хэш [9]), 64);
sph_shabal512_close (&ctx_shabal, static_cast<недействительным *>(&хэш [10]));
если ((хэш [10] & маска)! = ноль)
{
sph_echo512_init (&ctx_echo);
sph_echo512 (&ctx_echo, static_cast<сопзЬ пустота *>(&хэш [10]), 64);
sph_echo512_close (&ctx_echo, static_cast<недействительным *>(&хэш [11]));
}
еще
{
sph_hamsi512_init (&ctx_hamsi);
sph_hamsi512 (&ctx_hamsi, static_cast<сопзЬ пустота *>(&хэш [10]), 64);
sph_hamsi512_close (&ctx_hamsi, static_cast<недействительным *>(&хэш [11]));
}
если ((хэш [11] & маска)! = ноль)
{
sph_fugue512_init (&ctx_fugue);
sph_fugue512 (&ctx_fugue, static_cast<сопзЬ пустота *>(&хэш [11]), 64);
sph_fugue512_close (&ctx_fugue, static_cast<недействительным *>(&хэш [12]));
}
еще
{
sph_whirlpool_init (&ctx_whirlpool);
sph_whirlpool (&ctx_whirlpool, static_cast<сопзЬ пустота *>(&хэш [11]), 64);
sph_whirlpool_close (&ctx_whirlpool, static_cast<недействительным *>(&хэш [12]));
}
если ((хэш [12] & маска)! = ноль)
{
sph_sha512_init (&ctx_sha2);
sph_sha512 (&ctx_sha2, static_cast<сопзЬ пустота *>(&хэш [12]), 64);
sph_sha512_close (&ctx_sha2, static_cast<недействительным *>(&хэш [13]));
}
еще
{
sph_blake512_init (&ctx_blake);
sph_blake512 (&ctx_blake, static_cast<сопзЬ пустота *>(&хэш [11]), 64);
sph_blake512_close (&ctx_blake, static_cast<недействительным *>(&хэш [12]));
}
возвращать хэш [12] .trim256 ();
}
#endif // STACKHASH_H