mirror of
https://github.com/hashcat/hashcat.git
synced 2025-03-01 07:42:39 +00:00
Rewrite MT[X][256] constants to MTX[256] constants in whirlpool hash
This commit is contained in:
parent
193b4a38c7
commit
5f57ab35b6
@ -9,8 +9,7 @@
|
||||
#include "inc_common.h"
|
||||
#include "inc_hash_whirlpool.h"
|
||||
|
||||
CONSTANT_VK u64a MT[8][256] =
|
||||
{
|
||||
CONSTANT_VK u64a MT0[256] =
|
||||
{
|
||||
0x18186018c07830d8, 0x23238c2305af4626, 0xc6c63fc67ef991b8, 0xe8e887e8136fcdfb,
|
||||
0x878726874ca113cb, 0xb8b8dab8a9626d11, 0x0101040108050209, 0x4f4f214f426e9e0d,
|
||||
@ -76,7 +75,9 @@ CONSTANT_VK u64a MT[8][256] =
|
||||
0x7070dd70a7ade0d7, 0xb6b6e2b6d954716f, 0xd0d067d0ceb7bd1e, 0xeded93ed3b7ec7d6,
|
||||
0xcccc17cc2edb85e2, 0x424215422a578468, 0x98985a98b4c22d2c, 0xa4a4aaa4490e55ed,
|
||||
0x2828a0285d885075, 0x5c5c6d5cda31b886, 0xf8f8c7f8933fed6b, 0x8686228644a411c2,
|
||||
},
|
||||
};
|
||||
|
||||
CONSTANT_VK u64a MT1[256] =
|
||||
{
|
||||
0xd818186018c07830, 0x2623238c2305af46, 0xb8c6c63fc67ef991, 0xfbe8e887e8136fcd,
|
||||
0xcb878726874ca113, 0x11b8b8dab8a9626d, 0x0901010401080502, 0x0d4f4f214f426e9e,
|
||||
@ -142,7 +143,9 @@ CONSTANT_VK u64a MT[8][256] =
|
||||
0xd77070dd70a7ade0, 0x6fb6b6e2b6d95471, 0x1ed0d067d0ceb7bd, 0xd6eded93ed3b7ec7,
|
||||
0xe2cccc17cc2edb85, 0x68424215422a5784, 0x2c98985a98b4c22d, 0xeda4a4aaa4490e55,
|
||||
0x752828a0285d8850, 0x865c5c6d5cda31b8, 0x6bf8f8c7f8933fed, 0xc28686228644a411,
|
||||
},
|
||||
};
|
||||
|
||||
CONSTANT_VK u64a MT2[256] =
|
||||
{
|
||||
0x30d818186018c078, 0x462623238c2305af, 0x91b8c6c63fc67ef9, 0xcdfbe8e887e8136f,
|
||||
0x13cb878726874ca1, 0x6d11b8b8dab8a962, 0x0209010104010805, 0x9e0d4f4f214f426e,
|
||||
@ -208,7 +211,9 @@ CONSTANT_VK u64a MT[8][256] =
|
||||
0xe0d77070dd70a7ad, 0x716fb6b6e2b6d954, 0xbd1ed0d067d0ceb7, 0xc7d6eded93ed3b7e,
|
||||
0x85e2cccc17cc2edb, 0x8468424215422a57, 0x2d2c98985a98b4c2, 0x55eda4a4aaa4490e,
|
||||
0x50752828a0285d88, 0xb8865c5c6d5cda31, 0xed6bf8f8c7f8933f, 0x11c28686228644a4,
|
||||
},
|
||||
};
|
||||
|
||||
CONSTANT_VK u64a MT3[256] =
|
||||
{
|
||||
0x7830d818186018c0, 0xaf462623238c2305, 0xf991b8c6c63fc67e, 0x6fcdfbe8e887e813,
|
||||
0xa113cb878726874c, 0x626d11b8b8dab8a9, 0x0502090101040108, 0x6e9e0d4f4f214f42,
|
||||
@ -274,7 +279,9 @@ CONSTANT_VK u64a MT[8][256] =
|
||||
0xade0d77070dd70a7, 0x54716fb6b6e2b6d9, 0xb7bd1ed0d067d0ce, 0x7ec7d6eded93ed3b,
|
||||
0xdb85e2cccc17cc2e, 0x578468424215422a, 0xc22d2c98985a98b4, 0x0e55eda4a4aaa449,
|
||||
0x8850752828a0285d, 0x31b8865c5c6d5cda, 0x3fed6bf8f8c7f893, 0xa411c28686228644,
|
||||
},
|
||||
};
|
||||
|
||||
CONSTANT_VK u64a MT4[256] =
|
||||
{
|
||||
0xc07830d818186018, 0x05af462623238c23, 0x7ef991b8c6c63fc6, 0x136fcdfbe8e887e8,
|
||||
0x4ca113cb87872687, 0xa9626d11b8b8dab8, 0x0805020901010401, 0x426e9e0d4f4f214f,
|
||||
@ -340,7 +347,9 @@ CONSTANT_VK u64a MT[8][256] =
|
||||
0xa7ade0d77070dd70, 0xd954716fb6b6e2b6, 0xceb7bd1ed0d067d0, 0x3b7ec7d6eded93ed,
|
||||
0x2edb85e2cccc17cc, 0x2a57846842421542, 0xb4c22d2c98985a98, 0x490e55eda4a4aaa4,
|
||||
0x5d8850752828a028, 0xda31b8865c5c6d5c, 0x933fed6bf8f8c7f8, 0x44a411c286862286,
|
||||
},
|
||||
};
|
||||
|
||||
CONSTANT_VK u64a MT5[256] =
|
||||
{
|
||||
0x18c07830d8181860, 0x2305af462623238c, 0xc67ef991b8c6c63f, 0xe8136fcdfbe8e887,
|
||||
0x874ca113cb878726, 0xb8a9626d11b8b8da, 0x0108050209010104, 0x4f426e9e0d4f4f21,
|
||||
@ -406,7 +415,9 @@ CONSTANT_VK u64a MT[8][256] =
|
||||
0x70a7ade0d77070dd, 0xb6d954716fb6b6e2, 0xd0ceb7bd1ed0d067, 0xed3b7ec7d6eded93,
|
||||
0xcc2edb85e2cccc17, 0x422a578468424215, 0x98b4c22d2c98985a, 0xa4490e55eda4a4aa,
|
||||
0x285d8850752828a0, 0x5cda31b8865c5c6d, 0xf8933fed6bf8f8c7, 0x8644a411c2868622,
|
||||
},
|
||||
};
|
||||
|
||||
CONSTANT_VK u64a MT6[256] =
|
||||
{
|
||||
0x6018c07830d81818, 0x8c2305af46262323, 0x3fc67ef991b8c6c6, 0x87e8136fcdfbe8e8,
|
||||
0x26874ca113cb8787, 0xdab8a9626d11b8b8, 0x0401080502090101, 0x214f426e9e0d4f4f,
|
||||
@ -472,7 +483,9 @@ CONSTANT_VK u64a MT[8][256] =
|
||||
0xdd70a7ade0d77070, 0xe2b6d954716fb6b6, 0x67d0ceb7bd1ed0d0, 0x93ed3b7ec7d6eded,
|
||||
0x17cc2edb85e2cccc, 0x15422a5784684242, 0x5a98b4c22d2c9898, 0xaaa4490e55eda4a4,
|
||||
0xa0285d8850752828, 0x6d5cda31b8865c5c, 0xc7f8933fed6bf8f8, 0x228644a411c28686,
|
||||
},
|
||||
};
|
||||
|
||||
CONSTANT_VK u64a MT7[256] =
|
||||
{
|
||||
0x186018c07830d818, 0x238c2305af462623, 0xc63fc67ef991b8c6, 0xe887e8136fcdfbe8,
|
||||
0x8726874ca113cb87, 0xb8dab8a9626d11b8, 0x0104010805020901, 0x4f214f426e9e0d4f,
|
||||
@ -538,7 +551,6 @@ CONSTANT_VK u64a MT[8][256] =
|
||||
0x70dd70a7ade0d770, 0xb6e2b6d954716fb6, 0xd067d0ceb7bd1ed0, 0xed93ed3b7ec7d6ed,
|
||||
0xcc17cc2edb85e2cc, 0x4215422a57846842, 0x985a98b4c22d2c98, 0xa4aaa4490e55eda4,
|
||||
0x28a0285d88507528, 0x5c6d5cda31b8865c, 0xf8c7f8933fed6bf8, 0x86228644a411c286,
|
||||
},
|
||||
};
|
||||
|
||||
// important notes on this:
|
||||
@ -546,7 +558,7 @@ CONSTANT_VK u64a MT[8][256] =
|
||||
// input buf needs to be in algorithm native byte order (md5 = LE, sha256 = BE, etc)
|
||||
// input buf needs to be 64 byte aligned when using whirlpool_update()
|
||||
|
||||
#define F1(l,m,v0,v1,v2,v3,v4,v5,v6,v7) \
|
||||
#define F1(l,v0,v1,v2,v3,v4,v5,v6,v7) \
|
||||
{ \
|
||||
const u8 Lp0 = v8h_from_v64_S ((v0)); \
|
||||
const u8 Lp1 = v8g_from_v64_S ((v1)); \
|
||||
@ -557,14 +569,14 @@ CONSTANT_VK u64a MT[8][256] =
|
||||
const u8 Lp6 = v8b_from_v64_S ((v6)); \
|
||||
const u8 Lp7 = v8a_from_v64_S ((v7)); \
|
||||
\
|
||||
const u64 X0 = BOX64_S ((m), 0, Lp0); \
|
||||
const u64 X1 = BOX64_S ((m), 1, Lp1); \
|
||||
const u64 X2 = BOX64_S ((m), 2, Lp2); \
|
||||
const u64 X3 = BOX64_S ((m), 3, Lp3); \
|
||||
const u64 X4 = BOX64_S ((m), 4, Lp4); \
|
||||
const u64 X5 = BOX64_S ((m), 5, Lp5); \
|
||||
const u64 X6 = BOX64_S ((m), 6, Lp6); \
|
||||
const u64 X7 = BOX64_S ((m), 7, Lp7); \
|
||||
const u64 X0 = BOX64_S (s_MT0, Lp0); \
|
||||
const u64 X1 = BOX64_S (s_MT1, Lp1); \
|
||||
const u64 X2 = BOX64_S (s_MT2, Lp2); \
|
||||
const u64 X3 = BOX64_S (s_MT3, Lp3); \
|
||||
const u64 X4 = BOX64_S (s_MT4, Lp4); \
|
||||
const u64 X5 = BOX64_S (s_MT5, Lp5); \
|
||||
const u64 X6 = BOX64_S (s_MT6, Lp6); \
|
||||
const u64 X7 = BOX64_S (s_MT7, Lp7); \
|
||||
\
|
||||
(l) = X0 \
|
||||
^ X1 \
|
||||
@ -587,14 +599,14 @@ CONSTANT_VK u64a MT[8][256] =
|
||||
u64 L6; \
|
||||
u64 L7; \
|
||||
\
|
||||
F1 (L0, s_MT, K0, K7, K6, K5, K4, K3, K2, K1); \
|
||||
F1 (L1, s_MT, K1, K0, K7, K6, K5, K4, K3, K2); \
|
||||
F1 (L2, s_MT, K2, K1, K0, K7, K6, K5, K4, K3); \
|
||||
F1 (L3, s_MT, K3, K2, K1, K0, K7, K6, K5, K4); \
|
||||
F1 (L4, s_MT, K4, K3, K2, K1, K0, K7, K6, K5); \
|
||||
F1 (L5, s_MT, K5, K4, K3, K2, K1, K0, K7, K6); \
|
||||
F1 (L6, s_MT, K6, K5, K4, K3, K2, K1, K0, K7); \
|
||||
F1 (L7, s_MT, K7, K6, K5, K4, K3, K2, K1, K0); \
|
||||
F1 (L0, K0, K7, K6, K5, K4, K3, K2, K1); \
|
||||
F1 (L1, K1, K0, K7, K6, K5, K4, K3, K2); \
|
||||
F1 (L2, K2, K1, K0, K7, K6, K5, K4, K3); \
|
||||
F1 (L3, K3, K2, K1, K0, K7, K6, K5, K4); \
|
||||
F1 (L4, K4, K3, K2, K1, K0, K7, K6, K5); \
|
||||
F1 (L5, K5, K4, K3, K2, K1, K0, K7, K6); \
|
||||
F1 (L6, K6, K5, K4, K3, K2, K1, K0, K7); \
|
||||
F1 (L7, K7, K6, K5, K4, K3, K2, K1, K0); \
|
||||
\
|
||||
K0 = L0 ^ (rc); \
|
||||
K1 = L1; \
|
||||
@ -605,14 +617,14 @@ CONSTANT_VK u64a MT[8][256] =
|
||||
K6 = L6; \
|
||||
K7 = L7; \
|
||||
\
|
||||
F1 (L0, s_MT, S0, S7, S6, S5, S4, S3, S2, S1); \
|
||||
F1 (L1, s_MT, S1, S0, S7, S6, S5, S4, S3, S2); \
|
||||
F1 (L2, s_MT, S2, S1, S0, S7, S6, S5, S4, S3); \
|
||||
F1 (L3, s_MT, S3, S2, S1, S0, S7, S6, S5, S4); \
|
||||
F1 (L4, s_MT, S4, S3, S2, S1, S0, S7, S6, S5); \
|
||||
F1 (L5, s_MT, S5, S4, S3, S2, S1, S0, S7, S6); \
|
||||
F1 (L6, s_MT, S6, S5, S4, S3, S2, S1, S0, S7); \
|
||||
F1 (L7, s_MT, S7, S6, S5, S4, S3, S2, S1, S0); \
|
||||
F1 (L0, S0, S7, S6, S5, S4, S3, S2, S1); \
|
||||
F1 (L1, S1, S0, S7, S6, S5, S4, S3, S2); \
|
||||
F1 (L2, S2, S1, S0, S7, S6, S5, S4, S3); \
|
||||
F1 (L3, S3, S2, S1, S0, S7, S6, S5, S4); \
|
||||
F1 (L4, S4, S3, S2, S1, S0, S7, S6, S5); \
|
||||
F1 (L5, S5, S4, S3, S2, S1, S0, S7, S6); \
|
||||
F1 (L6, S6, S5, S4, S3, S2, S1, S0, S7); \
|
||||
F1 (L7, S7, S6, S5, S4, S3, S2, S1, S0); \
|
||||
\
|
||||
S0 = L0 ^ K0; \
|
||||
S1 = L1 ^ K1; \
|
||||
@ -624,7 +636,7 @@ CONSTANT_VK u64a MT[8][256] =
|
||||
S7 = L7 ^ K7; \
|
||||
}
|
||||
|
||||
DECLSPEC void whirlpool_transform (const u32 *w0, const u32 *w1, const u32 *w2, const u32 *w3, u32 *digest, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void whirlpool_transform (const u32 *w0, const u32 *w1, const u32 *w2, const u32 *w3, u32 *digest, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
u64 W0 = hl32_to_64_S (w0[0], w0[1]);
|
||||
u64 W1 = hl32_to_64_S (w0[2], w0[3]);
|
||||
@ -700,7 +712,7 @@ DECLSPEC void whirlpool_transform (const u32 *w0, const u32 *w1, const u32 *w2,
|
||||
digest[15] = l32_from_64_S (D7);
|
||||
}
|
||||
|
||||
DECLSPEC void whirlpool_init (whirlpool_ctx_t *ctx, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void whirlpool_init (whirlpool_ctx_t *ctx, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
ctx->h[ 0] = 0;
|
||||
ctx->h[ 1] = 0;
|
||||
@ -738,7 +750,14 @@ DECLSPEC void whirlpool_init (whirlpool_ctx_t *ctx, SHM_TYPE u64 (*s_MT)[256])
|
||||
|
||||
ctx->len = 0;
|
||||
|
||||
ctx->s_MT = s_MT;
|
||||
ctx->s_MT0 = s_MT0;
|
||||
ctx->s_MT1 = s_MT1;
|
||||
ctx->s_MT2 = s_MT2;
|
||||
ctx->s_MT3 = s_MT3;
|
||||
ctx->s_MT4 = s_MT4;
|
||||
ctx->s_MT5 = s_MT5;
|
||||
ctx->s_MT6 = s_MT6;
|
||||
ctx->s_MT7 = s_MT7;
|
||||
}
|
||||
|
||||
DECLSPEC void whirlpool_update_64 (whirlpool_ctx_t *ctx, u32 *w0, u32 *w1, u32 *w2, u32 *w3, const int len)
|
||||
@ -768,7 +787,7 @@ DECLSPEC void whirlpool_update_64 (whirlpool_ctx_t *ctx, u32 *w0, u32 *w1, u32 *
|
||||
|
||||
if (len == 64)
|
||||
{
|
||||
whirlpool_transform (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h, ctx->s_MT);
|
||||
whirlpool_transform (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h, ctx->s_MT0, ctx->s_MT1, ctx->s_MT2, ctx->s_MT3, ctx->s_MT4, ctx->s_MT5, ctx->s_MT6, ctx->s_MT7);
|
||||
|
||||
ctx->w0[0] = 0;
|
||||
ctx->w0[1] = 0;
|
||||
@ -837,7 +856,7 @@ DECLSPEC void whirlpool_update_64 (whirlpool_ctx_t *ctx, u32 *w0, u32 *w1, u32 *
|
||||
ctx->w3[2] |= w3[2];
|
||||
ctx->w3[3] |= w3[3];
|
||||
|
||||
whirlpool_transform (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h, ctx->s_MT);
|
||||
whirlpool_transform (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h, ctx->s_MT0, ctx->s_MT1, ctx->s_MT2, ctx->s_MT3, ctx->s_MT4, ctx->s_MT5, ctx->s_MT6, ctx->s_MT7);
|
||||
|
||||
ctx->w0[0] = c0[0];
|
||||
ctx->w0[1] = c0[1];
|
||||
@ -1379,7 +1398,7 @@ DECLSPEC void whirlpool_final (whirlpool_ctx_t *ctx)
|
||||
|
||||
if (pos >= 32)
|
||||
{
|
||||
whirlpool_transform (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h, ctx->s_MT);
|
||||
whirlpool_transform (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h, ctx->s_MT0, ctx->s_MT1, ctx->s_MT2, ctx->s_MT3, ctx->s_MT4, ctx->s_MT5, ctx->s_MT6, ctx->s_MT7);
|
||||
|
||||
ctx->w0[0] = 0;
|
||||
ctx->w0[1] = 0;
|
||||
@ -1402,12 +1421,12 @@ DECLSPEC void whirlpool_final (whirlpool_ctx_t *ctx)
|
||||
ctx->w3[2] = 0;
|
||||
ctx->w3[3] = ctx->len * 8;
|
||||
|
||||
whirlpool_transform (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h, ctx->s_MT);
|
||||
whirlpool_transform (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h, ctx->s_MT0, ctx->s_MT1, ctx->s_MT2, ctx->s_MT3, ctx->s_MT4, ctx->s_MT5, ctx->s_MT6, ctx->s_MT7);
|
||||
}
|
||||
|
||||
// whirlpool_hmac
|
||||
|
||||
DECLSPEC void whirlpool_hmac_init_64 (whirlpool_hmac_ctx_t *ctx, const u32 *w0, const u32 *w1, const u32 *w2, const u32 *w3, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void whirlpool_hmac_init_64 (whirlpool_hmac_ctx_t *ctx, const u32 *w0, const u32 *w1, const u32 *w2, const u32 *w3, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
u32 t0[4];
|
||||
u32 t1[4];
|
||||
@ -1433,7 +1452,7 @@ DECLSPEC void whirlpool_hmac_init_64 (whirlpool_hmac_ctx_t *ctx, const u32 *w0,
|
||||
t3[2] = w3[2] ^ 0x36363636;
|
||||
t3[3] = w3[3] ^ 0x36363636;
|
||||
|
||||
whirlpool_init (&ctx->ipad, s_MT);
|
||||
whirlpool_init (&ctx->ipad, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
whirlpool_update_64 (&ctx->ipad, t0, t1, t2, t3, 64);
|
||||
|
||||
@ -1456,12 +1475,12 @@ DECLSPEC void whirlpool_hmac_init_64 (whirlpool_hmac_ctx_t *ctx, const u32 *w0,
|
||||
t3[2] = w3[2] ^ 0x5c5c5c5c;
|
||||
t3[3] = w3[3] ^ 0x5c5c5c5c;
|
||||
|
||||
whirlpool_init (&ctx->opad, s_MT);
|
||||
whirlpool_init (&ctx->opad, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
whirlpool_update_64 (&ctx->opad, t0, t1, t2, t3, 64);
|
||||
}
|
||||
|
||||
DECLSPEC void whirlpool_hmac_init (whirlpool_hmac_ctx_t *ctx, const u32 *w, const int len, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void whirlpool_hmac_init (whirlpool_hmac_ctx_t *ctx, const u32 *w, const int len, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
u32 w0[4];
|
||||
u32 w1[4];
|
||||
@ -1472,7 +1491,7 @@ DECLSPEC void whirlpool_hmac_init (whirlpool_hmac_ctx_t *ctx, const u32 *w, cons
|
||||
{
|
||||
whirlpool_ctx_t tmp;
|
||||
|
||||
whirlpool_init (&tmp, s_MT);
|
||||
whirlpool_init (&tmp, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
whirlpool_update (&tmp, w, len);
|
||||
|
||||
@ -1515,10 +1534,10 @@ DECLSPEC void whirlpool_hmac_init (whirlpool_hmac_ctx_t *ctx, const u32 *w, cons
|
||||
w3[3] = w[15];
|
||||
}
|
||||
|
||||
whirlpool_hmac_init_64 (ctx, w0, w1, w2, w3, s_MT);
|
||||
whirlpool_hmac_init_64 (ctx, w0, w1, w2, w3, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
DECLSPEC void whirlpool_hmac_init_swap (whirlpool_hmac_ctx_t *ctx, const u32 *w, const int len, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void whirlpool_hmac_init_swap (whirlpool_hmac_ctx_t *ctx, const u32 *w, const int len, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
u32 w0[4];
|
||||
u32 w1[4];
|
||||
@ -1529,7 +1548,7 @@ DECLSPEC void whirlpool_hmac_init_swap (whirlpool_hmac_ctx_t *ctx, const u32 *w,
|
||||
{
|
||||
whirlpool_ctx_t tmp;
|
||||
|
||||
whirlpool_init (&tmp, s_MT);
|
||||
whirlpool_init (&tmp, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
whirlpool_update_swap (&tmp, w, len);
|
||||
|
||||
@ -1572,10 +1591,10 @@ DECLSPEC void whirlpool_hmac_init_swap (whirlpool_hmac_ctx_t *ctx, const u32 *w,
|
||||
w3[3] = hc_swap32_S (w[15]);
|
||||
}
|
||||
|
||||
whirlpool_hmac_init_64 (ctx, w0, w1, w2, w3, s_MT);
|
||||
whirlpool_hmac_init_64 (ctx, w0, w1, w2, w3, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
DECLSPEC void whirlpool_hmac_init_global (whirlpool_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void whirlpool_hmac_init_global (whirlpool_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
u32 w0[4];
|
||||
u32 w1[4];
|
||||
@ -1586,7 +1605,7 @@ DECLSPEC void whirlpool_hmac_init_global (whirlpool_hmac_ctx_t *ctx, GLOBAL_AS c
|
||||
{
|
||||
whirlpool_ctx_t tmp;
|
||||
|
||||
whirlpool_init (&tmp, s_MT);
|
||||
whirlpool_init (&tmp, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
whirlpool_update_global (&tmp, w, len);
|
||||
|
||||
@ -1629,10 +1648,10 @@ DECLSPEC void whirlpool_hmac_init_global (whirlpool_hmac_ctx_t *ctx, GLOBAL_AS c
|
||||
w3[3] = w[15];
|
||||
}
|
||||
|
||||
whirlpool_hmac_init_64 (ctx, w0, w1, w2, w3, s_MT);
|
||||
whirlpool_hmac_init_64 (ctx, w0, w1, w2, w3, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
DECLSPEC void whirlpool_hmac_init_global_swap (whirlpool_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void whirlpool_hmac_init_global_swap (whirlpool_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
u32 w0[4];
|
||||
u32 w1[4];
|
||||
@ -1643,7 +1662,7 @@ DECLSPEC void whirlpool_hmac_init_global_swap (whirlpool_hmac_ctx_t *ctx, GLOBAL
|
||||
{
|
||||
whirlpool_ctx_t tmp;
|
||||
|
||||
whirlpool_init (&tmp, s_MT);
|
||||
whirlpool_init (&tmp, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
whirlpool_update_global_swap (&tmp, w, len);
|
||||
|
||||
@ -1686,7 +1705,7 @@ DECLSPEC void whirlpool_hmac_init_global_swap (whirlpool_hmac_ctx_t *ctx, GLOBAL
|
||||
w3[3] = hc_swap32_S (w[15]);
|
||||
}
|
||||
|
||||
whirlpool_hmac_init_64 (ctx, w0, w1, w2, w3, s_MT);
|
||||
whirlpool_hmac_init_64 (ctx, w0, w1, w2, w3, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
DECLSPEC void whirlpool_hmac_update_64 (whirlpool_hmac_ctx_t *ctx, u32 *w0, u32 *w1, u32 *w2, u32 *w3, const int len)
|
||||
@ -1757,7 +1776,7 @@ DECLSPEC void whirlpool_hmac_final (whirlpool_hmac_ctx_t *ctx)
|
||||
|
||||
ctx->opad.len += 64;
|
||||
|
||||
whirlpool_transform (ctx->opad.w0, ctx->opad.w1, ctx->opad.w2, ctx->opad.w3, ctx->opad.h, ctx->opad.s_MT);
|
||||
whirlpool_transform (ctx->opad.w0, ctx->opad.w1, ctx->opad.w2, ctx->opad.w3, ctx->opad.h, ctx->opad.s_MT0, ctx->opad.s_MT1, ctx->opad.s_MT2, ctx->opad.s_MT3, ctx->opad.s_MT4, ctx->opad.s_MT5, ctx->opad.s_MT6, ctx->opad.s_MT7);
|
||||
|
||||
ctx->opad.w0[0] = 0;
|
||||
ctx->opad.w0[1] = 0;
|
||||
@ -1781,7 +1800,7 @@ DECLSPEC void whirlpool_hmac_final (whirlpool_hmac_ctx_t *ctx)
|
||||
|
||||
// while input buf can be a vector datatype, the length of the different elements can not
|
||||
|
||||
#define F1x(l,m,v0,v1,v2,v3,v4,v5,v6,v7) \
|
||||
#define F1x(l,v0,v1,v2,v3,v4,v5,v6,v7) \
|
||||
{ \
|
||||
const u8x Lp0 = v8h_from_v64 ((v0)); \
|
||||
const u8x Lp1 = v8g_from_v64 ((v1)); \
|
||||
@ -1792,14 +1811,14 @@ DECLSPEC void whirlpool_hmac_final (whirlpool_hmac_ctx_t *ctx)
|
||||
const u8x Lp6 = v8b_from_v64 ((v6)); \
|
||||
const u8x Lp7 = v8a_from_v64 ((v7)); \
|
||||
\
|
||||
const u64x X0 = BOX64 ((m), 0, Lp0); \
|
||||
const u64x X1 = BOX64 ((m), 1, Lp1); \
|
||||
const u64x X2 = BOX64 ((m), 2, Lp2); \
|
||||
const u64x X3 = BOX64 ((m), 3, Lp3); \
|
||||
const u64x X4 = BOX64 ((m), 4, Lp4); \
|
||||
const u64x X5 = BOX64 ((m), 5, Lp5); \
|
||||
const u64x X6 = BOX64 ((m), 6, Lp6); \
|
||||
const u64x X7 = BOX64 ((m), 7, Lp7); \
|
||||
const u64x X0 = BOX64 (s_MT0, Lp0); \
|
||||
const u64x X1 = BOX64 (s_MT1, Lp1); \
|
||||
const u64x X2 = BOX64 (s_MT2, Lp2); \
|
||||
const u64x X3 = BOX64 (s_MT3, Lp3); \
|
||||
const u64x X4 = BOX64 (s_MT4, Lp4); \
|
||||
const u64x X5 = BOX64 (s_MT5, Lp5); \
|
||||
const u64x X6 = BOX64 (s_MT6, Lp6); \
|
||||
const u64x X7 = BOX64 (s_MT7, Lp7); \
|
||||
\
|
||||
(l) = X0 \
|
||||
^ X1 \
|
||||
@ -1822,14 +1841,14 @@ DECLSPEC void whirlpool_hmac_final (whirlpool_hmac_ctx_t *ctx)
|
||||
u64x L6; \
|
||||
u64x L7; \
|
||||
\
|
||||
F1x (L0, s_MT, K0, K7, K6, K5, K4, K3, K2, K1); \
|
||||
F1x (L1, s_MT, K1, K0, K7, K6, K5, K4, K3, K2); \
|
||||
F1x (L2, s_MT, K2, K1, K0, K7, K6, K5, K4, K3); \
|
||||
F1x (L3, s_MT, K3, K2, K1, K0, K7, K6, K5, K4); \
|
||||
F1x (L4, s_MT, K4, K3, K2, K1, K0, K7, K6, K5); \
|
||||
F1x (L5, s_MT, K5, K4, K3, K2, K1, K0, K7, K6); \
|
||||
F1x (L6, s_MT, K6, K5, K4, K3, K2, K1, K0, K7); \
|
||||
F1x (L7, s_MT, K7, K6, K5, K4, K3, K2, K1, K0); \
|
||||
F1x (L0, K0, K7, K6, K5, K4, K3, K2, K1); \
|
||||
F1x (L1, K1, K0, K7, K6, K5, K4, K3, K2); \
|
||||
F1x (L2, K2, K1, K0, K7, K6, K5, K4, K3); \
|
||||
F1x (L3, K3, K2, K1, K0, K7, K6, K5, K4); \
|
||||
F1x (L4, K4, K3, K2, K1, K0, K7, K6, K5); \
|
||||
F1x (L5, K5, K4, K3, K2, K1, K0, K7, K6); \
|
||||
F1x (L6, K6, K5, K4, K3, K2, K1, K0, K7); \
|
||||
F1x (L7, K7, K6, K5, K4, K3, K2, K1, K0); \
|
||||
\
|
||||
K0 = L0 ^ (rc); \
|
||||
K1 = L1; \
|
||||
@ -1840,14 +1859,14 @@ DECLSPEC void whirlpool_hmac_final (whirlpool_hmac_ctx_t *ctx)
|
||||
K6 = L6; \
|
||||
K7 = L7; \
|
||||
\
|
||||
F1x (L0, s_MT, S0, S7, S6, S5, S4, S3, S2, S1); \
|
||||
F1x (L1, s_MT, S1, S0, S7, S6, S5, S4, S3, S2); \
|
||||
F1x (L2, s_MT, S2, S1, S0, S7, S6, S5, S4, S3); \
|
||||
F1x (L3, s_MT, S3, S2, S1, S0, S7, S6, S5, S4); \
|
||||
F1x (L4, s_MT, S4, S3, S2, S1, S0, S7, S6, S5); \
|
||||
F1x (L5, s_MT, S5, S4, S3, S2, S1, S0, S7, S6); \
|
||||
F1x (L6, s_MT, S6, S5, S4, S3, S2, S1, S0, S7); \
|
||||
F1x (L7, s_MT, S7, S6, S5, S4, S3, S2, S1, S0); \
|
||||
F1x (L0, S0, S7, S6, S5, S4, S3, S2, S1); \
|
||||
F1x (L1, S1, S0, S7, S6, S5, S4, S3, S2); \
|
||||
F1x (L2, S2, S1, S0, S7, S6, S5, S4, S3); \
|
||||
F1x (L3, S3, S2, S1, S0, S7, S6, S5, S4); \
|
||||
F1x (L4, S4, S3, S2, S1, S0, S7, S6, S5); \
|
||||
F1x (L5, S5, S4, S3, S2, S1, S0, S7, S6); \
|
||||
F1x (L6, S6, S5, S4, S3, S2, S1, S0, S7); \
|
||||
F1x (L7, S7, S6, S5, S4, S3, S2, S1, S0); \
|
||||
\
|
||||
S0 = L0 ^ K0; \
|
||||
S1 = L1 ^ K1; \
|
||||
@ -1859,7 +1878,7 @@ DECLSPEC void whirlpool_hmac_final (whirlpool_hmac_ctx_t *ctx)
|
||||
S7 = L7 ^ K7; \
|
||||
}
|
||||
|
||||
DECLSPEC void whirlpool_transform_vector (const u32x *w0, const u32x *w1, const u32x *w2, const u32x *w3, u32x *digest, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void whirlpool_transform_vector (const u32x *w0, const u32x *w1, const u32x *w2, const u32x *w3, u32x *digest, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
u64x W0 = hl32_to_64 (w0[0], w0[1]);
|
||||
u64x W1 = hl32_to_64 (w0[2], w0[3]);
|
||||
@ -1935,7 +1954,7 @@ DECLSPEC void whirlpool_transform_vector (const u32x *w0, const u32x *w1, const
|
||||
digest[15] = l32_from_64 (D7);
|
||||
}
|
||||
|
||||
DECLSPEC void whirlpool_init_vector (whirlpool_ctx_vector_t *ctx, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void whirlpool_init_vector (whirlpool_ctx_vector_t *ctx, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
ctx->h[ 0] = 0;
|
||||
ctx->h[ 1] = 0;
|
||||
@ -1973,7 +1992,14 @@ DECLSPEC void whirlpool_init_vector (whirlpool_ctx_vector_t *ctx, SHM_TYPE u64 (
|
||||
|
||||
ctx->len = 0;
|
||||
|
||||
ctx->s_MT = s_MT;
|
||||
ctx->s_MT0 = s_MT0;
|
||||
ctx->s_MT1 = s_MT1;
|
||||
ctx->s_MT2 = s_MT2;
|
||||
ctx->s_MT3 = s_MT3;
|
||||
ctx->s_MT4 = s_MT4;
|
||||
ctx->s_MT5 = s_MT5;
|
||||
ctx->s_MT6 = s_MT6;
|
||||
ctx->s_MT7 = s_MT7;
|
||||
}
|
||||
|
||||
DECLSPEC void whirlpool_init_vector_from_scalar (whirlpool_ctx_vector_t *ctx, whirlpool_ctx_t *ctx0)
|
||||
@ -2014,7 +2040,14 @@ DECLSPEC void whirlpool_init_vector_from_scalar (whirlpool_ctx_vector_t *ctx, wh
|
||||
|
||||
ctx->len = ctx0->len;
|
||||
|
||||
ctx->s_MT = ctx0->s_MT;
|
||||
ctx->s_MT0 = ctx0->s_MT0;
|
||||
ctx->s_MT1 = ctx0->s_MT1;
|
||||
ctx->s_MT2 = ctx0->s_MT2;
|
||||
ctx->s_MT3 = ctx0->s_MT3;
|
||||
ctx->s_MT4 = ctx0->s_MT4;
|
||||
ctx->s_MT5 = ctx0->s_MT5;
|
||||
ctx->s_MT6 = ctx0->s_MT6;
|
||||
ctx->s_MT7 = ctx0->s_MT7;
|
||||
}
|
||||
|
||||
DECLSPEC void whirlpool_update_vector_64 (whirlpool_ctx_vector_t *ctx, u32x *w0, u32x *w1, u32x *w2, u32x *w3, const int len)
|
||||
@ -2044,7 +2077,7 @@ DECLSPEC void whirlpool_update_vector_64 (whirlpool_ctx_vector_t *ctx, u32x *w0,
|
||||
|
||||
if (len == 64)
|
||||
{
|
||||
whirlpool_transform_vector (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h, ctx->s_MT);
|
||||
whirlpool_transform_vector (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h, ctx->s_MT0, ctx->s_MT1, ctx->s_MT2, ctx->s_MT3, ctx->s_MT4, ctx->s_MT5, ctx->s_MT6, ctx->s_MT7);
|
||||
|
||||
ctx->w0[0] = 0;
|
||||
ctx->w0[1] = 0;
|
||||
@ -2113,7 +2146,7 @@ DECLSPEC void whirlpool_update_vector_64 (whirlpool_ctx_vector_t *ctx, u32x *w0,
|
||||
ctx->w3[2] |= w3[2];
|
||||
ctx->w3[3] |= w3[3];
|
||||
|
||||
whirlpool_transform_vector (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h, ctx->s_MT);
|
||||
whirlpool_transform_vector (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h, ctx->s_MT0, ctx->s_MT1, ctx->s_MT2, ctx->s_MT3, ctx->s_MT4, ctx->s_MT5, ctx->s_MT6, ctx->s_MT7);
|
||||
|
||||
ctx->w0[0] = c0[0];
|
||||
ctx->w0[1] = c0[1];
|
||||
@ -2399,7 +2432,7 @@ DECLSPEC void whirlpool_final_vector (whirlpool_ctx_vector_t *ctx)
|
||||
|
||||
if (pos >= 32)
|
||||
{
|
||||
whirlpool_transform_vector (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h, ctx->s_MT);
|
||||
whirlpool_transform_vector (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h, ctx->s_MT0, ctx->s_MT1, ctx->s_MT2, ctx->s_MT3, ctx->s_MT4, ctx->s_MT5, ctx->s_MT6, ctx->s_MT7);
|
||||
|
||||
ctx->w0[0] = 0;
|
||||
ctx->w0[1] = 0;
|
||||
@ -2422,12 +2455,12 @@ DECLSPEC void whirlpool_final_vector (whirlpool_ctx_vector_t *ctx)
|
||||
ctx->w3[2] = 0;
|
||||
ctx->w3[3] = ctx->len * 8;
|
||||
|
||||
whirlpool_transform_vector (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h, ctx->s_MT);
|
||||
whirlpool_transform_vector (ctx->w0, ctx->w1, ctx->w2, ctx->w3, ctx->h, ctx->s_MT0, ctx->s_MT1, ctx->s_MT2, ctx->s_MT3, ctx->s_MT4, ctx->s_MT5, ctx->s_MT6, ctx->s_MT7);
|
||||
}
|
||||
|
||||
// HMAC + Vector
|
||||
|
||||
DECLSPEC void whirlpool_hmac_init_vector_64 (whirlpool_hmac_ctx_vector_t *ctx, const u32x *w0, const u32x *w1, const u32x *w2, const u32x *w3, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void whirlpool_hmac_init_vector_64 (whirlpool_hmac_ctx_vector_t *ctx, const u32x *w0, const u32x *w1, const u32x *w2, const u32x *w3, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
u32x t0[4];
|
||||
u32x t1[4];
|
||||
@ -2453,7 +2486,7 @@ DECLSPEC void whirlpool_hmac_init_vector_64 (whirlpool_hmac_ctx_vector_t *ctx, c
|
||||
t3[2] = w3[2] ^ 0x36363636;
|
||||
t3[3] = w3[3] ^ 0x36363636;
|
||||
|
||||
whirlpool_init_vector (&ctx->ipad, s_MT);
|
||||
whirlpool_init_vector (&ctx->ipad, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
whirlpool_update_vector_64 (&ctx->ipad, t0, t1, t2, t3, 64);
|
||||
|
||||
@ -2476,12 +2509,12 @@ DECLSPEC void whirlpool_hmac_init_vector_64 (whirlpool_hmac_ctx_vector_t *ctx, c
|
||||
t3[2] = w3[2] ^ 0x5c5c5c5c;
|
||||
t3[3] = w3[3] ^ 0x5c5c5c5c;
|
||||
|
||||
whirlpool_init_vector (&ctx->opad, s_MT);
|
||||
whirlpool_init_vector (&ctx->opad, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
whirlpool_update_vector_64 (&ctx->opad, t0, t1, t2, t3, 64);
|
||||
}
|
||||
|
||||
DECLSPEC void whirlpool_hmac_init_vector (whirlpool_hmac_ctx_vector_t *ctx, const u32x *w, const int len, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void whirlpool_hmac_init_vector (whirlpool_hmac_ctx_vector_t *ctx, const u32x *w, const int len, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
u32x w0[4];
|
||||
u32x w1[4];
|
||||
@ -2492,7 +2525,7 @@ DECLSPEC void whirlpool_hmac_init_vector (whirlpool_hmac_ctx_vector_t *ctx, cons
|
||||
{
|
||||
whirlpool_ctx_vector_t tmp;
|
||||
|
||||
whirlpool_init_vector (&tmp, s_MT);
|
||||
whirlpool_init_vector (&tmp, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
whirlpool_update_vector (&tmp, w, len);
|
||||
|
||||
@ -2535,7 +2568,7 @@ DECLSPEC void whirlpool_hmac_init_vector (whirlpool_hmac_ctx_vector_t *ctx, cons
|
||||
w3[3] = w[15];
|
||||
}
|
||||
|
||||
whirlpool_hmac_init_vector_64 (ctx, w0, w1, w2, w3, s_MT);
|
||||
whirlpool_hmac_init_vector_64 (ctx, w0, w1, w2, w3, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
DECLSPEC void whirlpool_hmac_update_vector_64 (whirlpool_hmac_ctx_vector_t *ctx, u32x *w0, u32x *w1, u32x *w2, u32x *w3, const int len)
|
||||
@ -2571,7 +2604,7 @@ DECLSPEC void whirlpool_hmac_final_vector (whirlpool_hmac_ctx_vector_t *ctx)
|
||||
|
||||
ctx->opad.len += 64;
|
||||
|
||||
whirlpool_transform_vector (ctx->opad.w0, ctx->opad.w1, ctx->opad.w2, ctx->opad.w3, ctx->opad.h, ctx->opad.s_MT);
|
||||
whirlpool_transform_vector (ctx->opad.w0, ctx->opad.w1, ctx->opad.w2, ctx->opad.w3, ctx->opad.h, ctx->opad.s_MT0, ctx->opad.s_MT1, ctx->opad.s_MT2, ctx->opad.s_MT3, ctx->opad.s_MT4, ctx->opad.s_MT5, ctx->opad.s_MT6, ctx->opad.s_MT7);
|
||||
|
||||
ctx->opad.w0[0] = 0;
|
||||
ctx->opad.w0[1] = 0;
|
||||
|
@ -6,27 +6,25 @@
|
||||
#ifndef _INC_HASH_WHIRLPOOL_H
|
||||
#define _INC_HASH_WHIRLPOOL_H
|
||||
|
||||
#define R 10
|
||||
|
||||
#if VECT_SIZE == 1
|
||||
#define BOX(S,n,i) (S)[(n)][(i)]
|
||||
#define BOX64(S,n,i) (S)[(n)][(i)]
|
||||
#define BOX(S,i) (S)[(i)]
|
||||
#define BOX64(S,i) (S)[(i)]
|
||||
#elif VECT_SIZE == 2
|
||||
#define BOX(S,n,i) make_u32x ((S)[(n)][(i).s0], (S)[(n)][(i).s1])
|
||||
#define BOX64(S,n,i) make_u64x ((S)[(n)][(i).s0], (S)[(n)][(i).s1])
|
||||
#define BOX(S,i) make_u32x ((S)[(i).s0], (S)[(i).s1])
|
||||
#define BOX64(S,i) make_u64x ((S)[(i).s0], (S)[(i).s1])
|
||||
#elif VECT_SIZE == 4
|
||||
#define BOX(S,n,i) make_u32x ((S)[(n)][(i).s0], (S)[(n)][(i).s1], (S)[(n)][(i).s2], (S)[(n)][(i).s3])
|
||||
#define BOX64(S,n,i) make_u64x ((S)[(n)][(i).s0], (S)[(n)][(i).s1], (S)[(n)][(i).s2], (S)[(n)][(i).s3])
|
||||
#define BOX(S,i) make_u32x ((S)[(i).s0], (S)[(i).s1], (S)[(i).s2], (S)[(i).s3])
|
||||
#define BOX64(S,i) make_u64x ((S)[(i).s0], (S)[(i).s1], (S)[(i).s2], (S)[(i).s3])
|
||||
#elif VECT_SIZE == 8
|
||||
#define BOX(S,n,i) make_u32x ((S)[(n)][(i).s0], (S)[(n)][(i).s1], (S)[(n)][(i).s2], (S)[(n)][(i).s3], (S)[(n)][(i).s4], (S)[(n)][(i).s5], (S)[(n)][(i).s6], (S)[(n)][(i).s7])
|
||||
#define BOX64(S,n,i) make_u64x ((S)[(n)][(i).s0], (S)[(n)][(i).s1], (S)[(n)][(i).s2], (S)[(n)][(i).s3], (S)[(n)][(i).s4], (S)[(n)][(i).s5], (S)[(n)][(i).s6], (S)[(n)][(i).s7])
|
||||
#define BOX(S,i) make_u32x ((S)[(i).s0], (S)[(i).s1], (S)[(i).s2], (S)[(i).s3], (S)[(i).s4], (S)[(i).s5], (S)[(i).s6], (S)[(i).s7])
|
||||
#define BOX64(S,i) make_u64x ((S)[(i).s0], (S)[(i).s1], (S)[(i).s2], (S)[(i).s3], (S)[(i).s4], (S)[(i).s5], (S)[(i).s6], (S)[(i).s7])
|
||||
#elif VECT_SIZE == 16
|
||||
#define BOX(S,n,i) make_u32x ((S)[(n)][(i).s0], (S)[(n)][(i).s1], (S)[(n)][(i).s2], (S)[(n)][(i).s3], (S)[(n)][(i).s4], (S)[(n)][(i).s5], (S)[(n)][(i).s6], (S)[(n)][(i).s7], (S)[(n)][(i).s8], (S)[(n)][(i).s9], (S)[(n)][(i).sa], (S)[(n)][(i).sb], (S)[(n)][(i).sc], (S)[(n)][(i).sd], (S)[(n)][(i).se], (S)[(n)][(i).sf])
|
||||
#define BOX64(S,n,i) make_u64x ((S)[(n)][(i).s0], (S)[(n)][(i).s1], (S)[(n)][(i).s2], (S)[(n)][(i).s3], (S)[(n)][(i).s4], (S)[(n)][(i).s5], (S)[(n)][(i).s6], (S)[(n)][(i).s7], (S)[(n)][(i).s8], (S)[(n)][(i).s9], (S)[(n)][(i).sa], (S)[(n)][(i).sb], (S)[(n)][(i).sc], (S)[(n)][(i).sd], (S)[(n)][(i).se], (S)[(n)][(i).sf])
|
||||
#define BOX(S,i) make_u32x ((S)[(i).s0], (S)[(i).s1], (S)[(i).s2], (S)[(i).s3], (S)[(i).s4], (S)[(i).s5], (S)[(i).s6], (S)[(i).s7], (S)[(i).s8], (S)[(i).s9], (S)[(i).sa], (S)[(i).sb], (S)[(i).sc], (S)[(i).sd], (S)[(i).se], (S)[(i).sf])
|
||||
#define BOX64(S,i) make_u64x ((S)[(i).s0], (S)[(i).s1], (S)[(i).s2], (S)[(i).s3], (S)[(i).s4], (S)[(i).s5], (S)[(i).s6], (S)[(i).s7], (S)[(i).s8], (S)[(i).s9], (S)[(i).sa], (S)[(i).sb], (S)[(i).sc], (S)[(i).sd], (S)[(i).se], (S)[(i).sf])
|
||||
#endif
|
||||
|
||||
#define BOX_S(S,n,i) (S)[(n)][(i)]
|
||||
#define BOX64_S(S,n,i) (S)[(n)][(i)]
|
||||
#define BOX_S(S,i) (S)[(i)]
|
||||
#define BOX64_S(S,i) (S)[(i)]
|
||||
|
||||
typedef struct whirlpool_ctx
|
||||
{
|
||||
@ -39,7 +37,14 @@ typedef struct whirlpool_ctx
|
||||
|
||||
int len;
|
||||
|
||||
SHM_TYPE u64 (*s_MT)[256];
|
||||
SHM_TYPE u64 *s_MT0;
|
||||
SHM_TYPE u64 *s_MT1;
|
||||
SHM_TYPE u64 *s_MT2;
|
||||
SHM_TYPE u64 *s_MT3;
|
||||
SHM_TYPE u64 *s_MT4;
|
||||
SHM_TYPE u64 *s_MT5;
|
||||
SHM_TYPE u64 *s_MT6;
|
||||
SHM_TYPE u64 *s_MT7;
|
||||
|
||||
} whirlpool_ctx_t;
|
||||
|
||||
@ -61,7 +66,14 @@ typedef struct whirlpool_ctx_vector
|
||||
|
||||
int len;
|
||||
|
||||
SHM_TYPE u64 (*s_MT)[256];
|
||||
SHM_TYPE u64 *s_MT0;
|
||||
SHM_TYPE u64 *s_MT1;
|
||||
SHM_TYPE u64 *s_MT2;
|
||||
SHM_TYPE u64 *s_MT3;
|
||||
SHM_TYPE u64 *s_MT4;
|
||||
SHM_TYPE u64 *s_MT5;
|
||||
SHM_TYPE u64 *s_MT6;
|
||||
SHM_TYPE u64 *s_MT7;
|
||||
|
||||
} whirlpool_ctx_vector_t;
|
||||
|
||||
@ -72,8 +84,8 @@ typedef struct whirlpool_hmac_ctx_vector
|
||||
|
||||
} whirlpool_hmac_ctx_vector_t;
|
||||
|
||||
DECLSPEC void whirlpool_transform (const u32 *w0, const u32 *w1, const u32 *w2, const u32 *w3, u32 *digest, SHM_TYPE u64 (*s_MT)[256]);
|
||||
DECLSPEC void whirlpool_init (whirlpool_ctx_t *ctx, SHM_TYPE u64 (*s_MT)[256]);
|
||||
DECLSPEC void whirlpool_transform (const u32 *w0, const u32 *w1, const u32 *w2, const u32 *w3, u32 *digest, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7);
|
||||
DECLSPEC void whirlpool_init (whirlpool_ctx_t *ctx, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7);
|
||||
DECLSPEC void whirlpool_update_64 (whirlpool_ctx_t *ctx, u32 *w0, u32 *w1, u32 *w2, u32 *w3, const int len);
|
||||
DECLSPEC void whirlpool_update (whirlpool_ctx_t *ctx, const u32 *w, const int len);
|
||||
DECLSPEC void whirlpool_update_swap (whirlpool_ctx_t *ctx, const u32 *w, const int len);
|
||||
@ -84,11 +96,11 @@ DECLSPEC void whirlpool_update_global_swap (whirlpool_ctx_t *ctx, GLOBAL_AS cons
|
||||
DECLSPEC void whirlpool_update_global_utf16le (whirlpool_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len);
|
||||
DECLSPEC void whirlpool_update_global_utf16le_swap (whirlpool_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len);
|
||||
DECLSPEC void whirlpool_final (whirlpool_ctx_t *ctx);
|
||||
DECLSPEC void whirlpool_hmac_init_64 (whirlpool_hmac_ctx_t *ctx, const u32 *w0, const u32 *w1, const u32 *w2, const u32 *w3, SHM_TYPE u64 (*s_MT)[256]);
|
||||
DECLSPEC void whirlpool_hmac_init (whirlpool_hmac_ctx_t *ctx, const u32 *w, const int len, SHM_TYPE u64 (*s_MT)[256]);
|
||||
DECLSPEC void whirlpool_hmac_init_swap (whirlpool_hmac_ctx_t *ctx, const u32 *w, const int len, SHM_TYPE u64 (*s_MT)[256]);
|
||||
DECLSPEC void whirlpool_hmac_init_global (whirlpool_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len, SHM_TYPE u64 (*s_MT)[256]);
|
||||
DECLSPEC void whirlpool_hmac_init_global_swap (whirlpool_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len, SHM_TYPE u64 (*s_MT)[256]);
|
||||
DECLSPEC void whirlpool_hmac_init_64 (whirlpool_hmac_ctx_t *ctx, const u32 *w0, const u32 *w1, const u32 *w2, const u32 *w3, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7);
|
||||
DECLSPEC void whirlpool_hmac_init (whirlpool_hmac_ctx_t *ctx, const u32 *w, const int len, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7);
|
||||
DECLSPEC void whirlpool_hmac_init_swap (whirlpool_hmac_ctx_t *ctx, const u32 *w, const int len, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7);
|
||||
DECLSPEC void whirlpool_hmac_init_global (whirlpool_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7);
|
||||
DECLSPEC void whirlpool_hmac_init_global_swap (whirlpool_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7);
|
||||
DECLSPEC void whirlpool_hmac_update_64 (whirlpool_hmac_ctx_t *ctx, u32 *w0, u32 *w1, u32 *w2, u32 *w3, const int len);
|
||||
DECLSPEC void whirlpool_hmac_update (whirlpool_hmac_ctx_t *ctx, const u32 *w, const int len);
|
||||
DECLSPEC void whirlpool_hmac_update_swap (whirlpool_hmac_ctx_t *ctx, const u32 *w, const int len);
|
||||
@ -99,8 +111,8 @@ DECLSPEC void whirlpool_hmac_update_global_swap (whirlpool_hmac_ctx_t *ctx, GLOB
|
||||
DECLSPEC void whirlpool_hmac_update_global_utf16le (whirlpool_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len);
|
||||
DECLSPEC void whirlpool_hmac_update_global_utf16le_swap (whirlpool_hmac_ctx_t *ctx, GLOBAL_AS const u32 *w, const int len);
|
||||
DECLSPEC void whirlpool_hmac_final (whirlpool_hmac_ctx_t *ctx);
|
||||
DECLSPEC void whirlpool_transform_vector (const u32x *w0, const u32x *w1, const u32x *w2, const u32x *w3, u32x *digest, SHM_TYPE u64 (*s_MT)[256]);
|
||||
DECLSPEC void whirlpool_init_vector (whirlpool_ctx_vector_t *ctx, SHM_TYPE u64 (*s_MT)[256]);
|
||||
DECLSPEC void whirlpool_transform_vector (const u32x *w0, const u32x *w1, const u32x *w2, const u32x *w3, u32x *digest, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7);
|
||||
DECLSPEC void whirlpool_init_vector (whirlpool_ctx_vector_t *ctx, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7);
|
||||
DECLSPEC void whirlpool_init_vector_from_scalar (whirlpool_ctx_vector_t *ctx, whirlpool_ctx_t *ctx0);
|
||||
DECLSPEC void whirlpool_update_vector_64 (whirlpool_ctx_vector_t *ctx, u32x *w0, u32x *w1, u32x *w2, u32x *w3, const int len);
|
||||
DECLSPEC void whirlpool_update_vector (whirlpool_ctx_vector_t *ctx, const u32x *w, const int len);
|
||||
@ -108,8 +120,8 @@ DECLSPEC void whirlpool_update_vector_swap (whirlpool_ctx_vector_t *ctx, const u
|
||||
DECLSPEC void whirlpool_update_vector_utf16le (whirlpool_ctx_vector_t *ctx, const u32x *w, const int len);
|
||||
DECLSPEC void whirlpool_update_vector_utf16le_swap (whirlpool_ctx_vector_t *ctx, const u32x *w, const int len);
|
||||
DECLSPEC void whirlpool_final_vector (whirlpool_ctx_vector_t *ctx);
|
||||
DECLSPEC void whirlpool_hmac_init_vector_64 (whirlpool_hmac_ctx_vector_t *ctx, const u32x *w0, const u32x *w1, const u32x *w2, const u32x *w3, SHM_TYPE u64 (*s_MT)[256]);
|
||||
DECLSPEC void whirlpool_hmac_init_vector (whirlpool_hmac_ctx_vector_t *ctx, const u32x *w, const int len, SHM_TYPE u64 (*s_MT)[256]);
|
||||
DECLSPEC void whirlpool_hmac_init_vector_64 (whirlpool_hmac_ctx_vector_t *ctx, const u32x *w0, const u32x *w1, const u32x *w2, const u32x *w3, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7);
|
||||
DECLSPEC void whirlpool_hmac_init_vector (whirlpool_hmac_ctx_vector_t *ctx, const u32x *w, const int len, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7);
|
||||
DECLSPEC void whirlpool_hmac_update_vector_64 (whirlpool_hmac_ctx_vector_t *ctx, u32x *w0, u32x *w1, u32x *w2, u32x *w3, const int len);
|
||||
DECLSPEC void whirlpool_hmac_update_vector (whirlpool_hmac_ctx_vector_t *ctx, const u32x *w, const int len);
|
||||
DECLSPEC void whirlpool_hmac_final_vector (whirlpool_hmac_ctx_vector_t *ctx);
|
||||
|
@ -16,9 +16,9 @@
|
||||
#include "inc_hash_whirlpool.cl"
|
||||
#endif
|
||||
|
||||
DECLSPEC void whirlpool_transform_transport_vector (const u32x *w, u32x *digest, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void whirlpool_transform_transport_vector (const u32x *w, u32x *digest, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
whirlpool_transform_vector (w + 0, w + 4, w + 8, w + 12, digest, s_MT);
|
||||
whirlpool_transform_vector (w + 0, w + 4, w + 8, w + 12, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
KERNEL_FQ void m06100_m04 (KERN_ATTR_RULES ())
|
||||
@ -37,25 +37,39 @@ KERNEL_FQ void m06100_m04 (KERN_ATTR_RULES ())
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -136,7 +150,7 @@ KERNEL_FQ void m06100_m04 (KERN_ATTR_RULES ())
|
||||
dgst[14] = 0;
|
||||
dgst[15] = 0;
|
||||
|
||||
whirlpool_transform_transport_vector (w, dgst, s_MT);
|
||||
whirlpool_transform_transport_vector (w, dgst, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
COMPARE_M_SIMD (dgst[0], dgst[1], dgst[2], dgst[3]);
|
||||
}
|
||||
@ -166,25 +180,39 @@ KERNEL_FQ void m06100_s04 (KERN_ATTR_RULES ())
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -277,7 +305,7 @@ KERNEL_FQ void m06100_s04 (KERN_ATTR_RULES ())
|
||||
dgst[14] = 0;
|
||||
dgst[15] = 0;
|
||||
|
||||
whirlpool_transform_transport_vector (w, dgst, s_MT);
|
||||
whirlpool_transform_transport_vector (w, dgst, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
COMPARE_S_SIMD (dgst[0], dgst[1], dgst[2], dgst[3]);
|
||||
}
|
||||
|
@ -32,25 +32,39 @@ KERNEL_FQ void m06100_mxx (KERN_ATTR_RULES ())
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -74,7 +88,7 @@ KERNEL_FQ void m06100_mxx (KERN_ATTR_RULES ())
|
||||
|
||||
whirlpool_ctx_t ctx;
|
||||
|
||||
whirlpool_init (&ctx, s_MT);
|
||||
whirlpool_init (&ctx, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
whirlpool_update_swap (&ctx, tmp.i, tmp.pw_len);
|
||||
|
||||
@ -105,25 +119,39 @@ KERNEL_FQ void m06100_sxx (KERN_ATTR_RULES ())
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -159,7 +187,7 @@ KERNEL_FQ void m06100_sxx (KERN_ATTR_RULES ())
|
||||
|
||||
whirlpool_ctx_t ctx;
|
||||
|
||||
whirlpool_init (&ctx, s_MT);
|
||||
whirlpool_init (&ctx, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
whirlpool_update_swap (&ctx, tmp.i, tmp.pw_len);
|
||||
|
||||
|
@ -14,9 +14,9 @@
|
||||
#include "inc_hash_whirlpool.cl"
|
||||
#endif
|
||||
|
||||
DECLSPEC void whirlpool_transform_transport_vector (const u32x *w, u32x *digest, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void whirlpool_transform_transport_vector (const u32x *w, u32x *digest, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
whirlpool_transform_vector (w + 0, w + 4, w + 8, w + 12, digest, s_MT);
|
||||
whirlpool_transform_vector (w + 0, w + 4, w + 8, w + 12, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
KERNEL_FQ void m06100_m04 (KERN_ATTR_BASIC ())
|
||||
@ -35,25 +35,39 @@ KERNEL_FQ void m06100_m04 (KERN_ATTR_BASIC ())
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -192,7 +206,7 @@ KERNEL_FQ void m06100_m04 (KERN_ATTR_BASIC ())
|
||||
dgst[14] = 0;
|
||||
dgst[15] = 0;
|
||||
|
||||
whirlpool_transform_transport_vector (w, dgst, s_MT);
|
||||
whirlpool_transform_transport_vector (w, dgst, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
COMPARE_M_SIMD (dgst[0], dgst[1], dgst[2], dgst[3]);
|
||||
}
|
||||
@ -222,25 +236,39 @@ KERNEL_FQ void m06100_s04 (KERN_ATTR_BASIC ())
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -391,7 +419,7 @@ KERNEL_FQ void m06100_s04 (KERN_ATTR_BASIC ())
|
||||
dgst[14] = 0;
|
||||
dgst[15] = 0;
|
||||
|
||||
whirlpool_transform_transport_vector (w, dgst, s_MT);
|
||||
whirlpool_transform_transport_vector (w, dgst, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
COMPARE_S_SIMD (dgst[0], dgst[1], dgst[2], dgst[3]);
|
||||
}
|
||||
|
@ -30,25 +30,39 @@ KERNEL_FQ void m06100_mxx (KERN_ATTR_BASIC ())
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -60,7 +74,7 @@ KERNEL_FQ void m06100_mxx (KERN_ATTR_BASIC ())
|
||||
|
||||
whirlpool_ctx_t ctx0;
|
||||
|
||||
whirlpool_init (&ctx0, s_MT);
|
||||
whirlpool_init (&ctx0, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
whirlpool_update_global_swap (&ctx0, pws[gid].i, pws[gid].pw_len);
|
||||
|
||||
@ -101,25 +115,39 @@ KERNEL_FQ void m06100_sxx (KERN_ATTR_BASIC ())
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -143,7 +171,7 @@ KERNEL_FQ void m06100_sxx (KERN_ATTR_BASIC ())
|
||||
|
||||
whirlpool_ctx_t ctx0;
|
||||
|
||||
whirlpool_init (&ctx0, s_MT);
|
||||
whirlpool_init (&ctx0, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
whirlpool_update_global_swap (&ctx0, pws[gid].i, pws[gid].pw_len);
|
||||
|
||||
|
@ -14,12 +14,12 @@
|
||||
#include "inc_hash_whirlpool.cl"
|
||||
#endif
|
||||
|
||||
DECLSPEC void whirlpool_transform_transport_vector (const u32x *w, u32x *digest, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void whirlpool_transform_transport_vector (const u32x *w, u32x *digest, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
whirlpool_transform_vector (w + 0, w + 4, w + 8, w + 12, digest, s_MT);
|
||||
whirlpool_transform_vector (w + 0, w + 4, w + 8, w + 12, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
DECLSPEC void m06100m (u32 *w0, u32 *w1, u32 *w2, u32 *w3, const u32 pw_len, KERN_ATTR_BASIC (), SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void m06100m (u32 *w0, u32 *w1, u32 *w2, u32 *w3, const u32 pw_len, KERN_ATTR_BASIC (), SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
/**
|
||||
* modifier
|
||||
@ -82,13 +82,13 @@ DECLSPEC void m06100m (u32 *w0, u32 *w1, u32 *w2, u32 *w3, const u32 pw_len, KER
|
||||
dgst[14] = 0;
|
||||
dgst[15] = 0;
|
||||
|
||||
whirlpool_transform_transport_vector (w, dgst, s_MT);
|
||||
whirlpool_transform_transport_vector (w, dgst, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
COMPARE_M_SIMD (dgst[0], dgst[1], dgst[2], dgst[3]);
|
||||
}
|
||||
}
|
||||
|
||||
DECLSPEC void m06100s (u32 *w0, u32 *w1, u32 *w2, u32 *w3, const u32 pw_len, KERN_ATTR_BASIC (), SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void m06100s (u32 *w0, u32 *w1, u32 *w2, u32 *w3, const u32 pw_len, KERN_ATTR_BASIC (), SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
/**
|
||||
* modifier
|
||||
@ -163,7 +163,7 @@ DECLSPEC void m06100s (u32 *w0, u32 *w1, u32 *w2, u32 *w3, const u32 pw_len, KER
|
||||
dgst[14] = 0;
|
||||
dgst[15] = 0;
|
||||
|
||||
whirlpool_transform_transport_vector (w, dgst, s_MT);
|
||||
whirlpool_transform_transport_vector (w, dgst, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
COMPARE_S_SIMD (dgst[0], dgst[1], dgst[2], dgst[3]);
|
||||
}
|
||||
@ -185,25 +185,39 @@ KERNEL_FQ void m06100_m04 (KERN_ATTR_BASIC ())
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -247,7 +261,7 @@ KERNEL_FQ void m06100_m04 (KERN_ATTR_BASIC ())
|
||||
* main
|
||||
*/
|
||||
|
||||
m06100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max, s_MT);
|
||||
m06100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
KERNEL_FQ void m06100_m08 (KERN_ATTR_BASIC ())
|
||||
@ -266,25 +280,39 @@ KERNEL_FQ void m06100_m08 (KERN_ATTR_BASIC ())
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -328,7 +356,7 @@ KERNEL_FQ void m06100_m08 (KERN_ATTR_BASIC ())
|
||||
* main
|
||||
*/
|
||||
|
||||
m06100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max, s_MT);
|
||||
m06100m (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
KERNEL_FQ void m06100_m16 (KERN_ATTR_BASIC ())
|
||||
@ -351,25 +379,39 @@ KERNEL_FQ void m06100_s04 (KERN_ATTR_BASIC ())
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -413,7 +455,7 @@ KERNEL_FQ void m06100_s04 (KERN_ATTR_BASIC ())
|
||||
* main
|
||||
*/
|
||||
|
||||
m06100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max, s_MT);
|
||||
m06100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
KERNEL_FQ void m06100_s08 (KERN_ATTR_BASIC ())
|
||||
@ -432,25 +474,39 @@ KERNEL_FQ void m06100_s08 (KERN_ATTR_BASIC ())
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -494,7 +550,7 @@ KERNEL_FQ void m06100_s08 (KERN_ATTR_BASIC ())
|
||||
* main
|
||||
*/
|
||||
|
||||
m06100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max, s_MT);
|
||||
m06100s (w0, w1, w2, w3, pw_len, pws, rules_buf, combs_buf, bfs_buf, tmps, hooks, bitmaps_buf_s1_a, bitmaps_buf_s1_b, bitmaps_buf_s1_c, bitmaps_buf_s1_d, bitmaps_buf_s2_a, bitmaps_buf_s2_b, bitmaps_buf_s2_c, bitmaps_buf_s2_d, plains_buf, digests_buf, hashes_shown, salt_bufs, esalt_bufs, d_return_buf, d_extra0_buf, d_extra1_buf, d_extra2_buf, d_extra3_buf, bitmap_mask, bitmap_shift1, bitmap_shift2, salt_pos, loop_pos, loop_cnt, il_cnt, digests_cnt, digests_offset, combs_mode, gid_max, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
KERNEL_FQ void m06100_s16 (KERN_ATTR_BASIC ())
|
||||
|
@ -30,25 +30,39 @@ KERNEL_FQ void m06100_mxx (KERN_ATTR_VECTOR ())
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -83,7 +97,7 @@ KERNEL_FQ void m06100_mxx (KERN_ATTR_VECTOR ())
|
||||
|
||||
whirlpool_ctx_vector_t ctx;
|
||||
|
||||
whirlpool_init_vector (&ctx, s_MT);
|
||||
whirlpool_init_vector (&ctx, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
whirlpool_update_vector (&ctx, w, pw_len);
|
||||
|
||||
@ -114,25 +128,39 @@ KERNEL_FQ void m06100_sxx (KERN_ATTR_VECTOR ())
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -179,7 +207,7 @@ KERNEL_FQ void m06100_sxx (KERN_ATTR_VECTOR ())
|
||||
|
||||
whirlpool_ctx_vector_t ctx;
|
||||
|
||||
whirlpool_init_vector (&ctx, s_MT);
|
||||
whirlpool_init_vector (&ctx, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
whirlpool_update_vector (&ctx, w, pw_len);
|
||||
|
||||
|
@ -45,7 +45,7 @@ typedef struct tc_tmp
|
||||
|
||||
} tc_tmp_t;
|
||||
|
||||
DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x *ipad, u32x *opad, u32x *digest, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x *ipad, u32x *opad, u32x *digest, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
digest[ 0] = ipad[ 0];
|
||||
digest[ 1] = ipad[ 1];
|
||||
@ -64,7 +64,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
digest[14] = ipad[14];
|
||||
digest[15] = ipad[15];
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = 0x80000000;
|
||||
w0[1] = 0;
|
||||
@ -83,7 +83,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
w3[2] = 0;
|
||||
w3[3] = (64 + 64) * 8;
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = digest[ 0];
|
||||
w0[1] = digest[ 1];
|
||||
@ -119,7 +119,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
digest[14] = opad[14];
|
||||
digest[15] = opad[15];
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = 0x80000000;
|
||||
w0[1] = 0;
|
||||
@ -138,7 +138,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
w3[2] = 0;
|
||||
w3[3] = (64 + 64) * 8;
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
KERNEL_FQ void m06231_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t))
|
||||
@ -168,25 +168,39 @@ KERNEL_FQ void m06231_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t))
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -258,7 +272,7 @@ KERNEL_FQ void m06231_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t))
|
||||
|
||||
whirlpool_hmac_ctx_t whirlpool_hmac_ctx;
|
||||
|
||||
whirlpool_hmac_init_64 (&whirlpool_hmac_ctx, w0, w1, w2, w3, s_MT);
|
||||
whirlpool_hmac_init_64 (&whirlpool_hmac_ctx, w0, w1, w2, w3, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
tmps[gid].ipad[ 0] = whirlpool_hmac_ctx.ipad.h[ 0];
|
||||
tmps[gid].ipad[ 1] = whirlpool_hmac_ctx.ipad.h[ 1];
|
||||
@ -369,25 +383,39 @@ KERNEL_FQ void m06231_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t))
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -493,7 +521,7 @@ KERNEL_FQ void m06231_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t))
|
||||
w3[2] = dgst[14];
|
||||
w3[3] = dgst[15];
|
||||
|
||||
hmac_whirlpool_run_V (w0, w1, w2, w3, ipad, opad, dgst, s_MT);
|
||||
hmac_whirlpool_run_V (w0, w1, w2, w3, ipad, opad, dgst, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
out[ 0] ^= dgst[ 0];
|
||||
out[ 1] ^= dgst[ 1];
|
||||
|
@ -45,7 +45,7 @@ typedef struct tc_tmp
|
||||
|
||||
} tc_tmp_t;
|
||||
|
||||
DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x *ipad, u32x *opad, u32x *digest, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x *ipad, u32x *opad, u32x *digest, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
digest[ 0] = ipad[ 0];
|
||||
digest[ 1] = ipad[ 1];
|
||||
@ -64,7 +64,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
digest[14] = ipad[14];
|
||||
digest[15] = ipad[15];
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = 0x80000000;
|
||||
w0[1] = 0;
|
||||
@ -83,7 +83,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
w3[2] = 0;
|
||||
w3[3] = (64 + 64) * 8;
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = digest[ 0];
|
||||
w0[1] = digest[ 1];
|
||||
@ -119,7 +119,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
digest[14] = opad[14];
|
||||
digest[15] = opad[15];
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = 0x80000000;
|
||||
w0[1] = 0;
|
||||
@ -138,7 +138,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
w3[2] = 0;
|
||||
w3[3] = (64 + 64) * 8;
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
KERNEL_FQ void m06232_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t))
|
||||
@ -168,25 +168,39 @@ KERNEL_FQ void m06232_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t))
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -258,7 +272,7 @@ KERNEL_FQ void m06232_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t))
|
||||
|
||||
whirlpool_hmac_ctx_t whirlpool_hmac_ctx;
|
||||
|
||||
whirlpool_hmac_init_64 (&whirlpool_hmac_ctx, w0, w1, w2, w3, s_MT);
|
||||
whirlpool_hmac_init_64 (&whirlpool_hmac_ctx, w0, w1, w2, w3, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
tmps[gid].ipad[ 0] = whirlpool_hmac_ctx.ipad.h[ 0];
|
||||
tmps[gid].ipad[ 1] = whirlpool_hmac_ctx.ipad.h[ 1];
|
||||
@ -369,25 +383,39 @@ KERNEL_FQ void m06232_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t))
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -493,7 +521,7 @@ KERNEL_FQ void m06232_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t))
|
||||
w3[2] = dgst[14];
|
||||
w3[3] = dgst[15];
|
||||
|
||||
hmac_whirlpool_run_V (w0, w1, w2, w3, ipad, opad, dgst, s_MT);
|
||||
hmac_whirlpool_run_V (w0, w1, w2, w3, ipad, opad, dgst, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
out[ 0] ^= dgst[ 0];
|
||||
out[ 1] ^= dgst[ 1];
|
||||
|
@ -45,7 +45,7 @@ typedef struct tc_tmp
|
||||
|
||||
} tc_tmp_t;
|
||||
|
||||
DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x *ipad, u32x *opad, u32x *digest, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x *ipad, u32x *opad, u32x *digest, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
digest[ 0] = ipad[ 0];
|
||||
digest[ 1] = ipad[ 1];
|
||||
@ -64,7 +64,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
digest[14] = ipad[14];
|
||||
digest[15] = ipad[15];
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = 0x80000000;
|
||||
w0[1] = 0;
|
||||
@ -83,7 +83,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
w3[2] = 0;
|
||||
w3[3] = (64 + 64) * 8;
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = digest[ 0];
|
||||
w0[1] = digest[ 1];
|
||||
@ -119,7 +119,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
digest[14] = opad[14];
|
||||
digest[15] = opad[15];
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = 0x80000000;
|
||||
w0[1] = 0;
|
||||
@ -138,7 +138,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
w3[2] = 0;
|
||||
w3[3] = (64 + 64) * 8;
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
KERNEL_FQ void m06233_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t))
|
||||
@ -168,25 +168,39 @@ KERNEL_FQ void m06233_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t))
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -258,7 +272,7 @@ KERNEL_FQ void m06233_init (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t))
|
||||
|
||||
whirlpool_hmac_ctx_t whirlpool_hmac_ctx;
|
||||
|
||||
whirlpool_hmac_init_64 (&whirlpool_hmac_ctx, w0, w1, w2, w3, s_MT);
|
||||
whirlpool_hmac_init_64 (&whirlpool_hmac_ctx, w0, w1, w2, w3, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
tmps[gid].ipad[ 0] = whirlpool_hmac_ctx.ipad.h[ 0];
|
||||
tmps[gid].ipad[ 1] = whirlpool_hmac_ctx.ipad.h[ 1];
|
||||
@ -369,25 +383,39 @@ KERNEL_FQ void m06233_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t))
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -493,7 +521,7 @@ KERNEL_FQ void m06233_loop (KERN_ATTR_TMPS_ESALT (tc_tmp_t, tc_t))
|
||||
w3[2] = dgst[14];
|
||||
w3[3] = dgst[15];
|
||||
|
||||
hmac_whirlpool_run_V (w0, w1, w2, w3, ipad, opad, dgst, s_MT);
|
||||
hmac_whirlpool_run_V (w0, w1, w2, w3, ipad, opad, dgst, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
out[ 0] ^= dgst[ 0];
|
||||
out[ 1] ^= dgst[ 1];
|
||||
|
@ -86,7 +86,7 @@ DECLSPEC int check_header_0512 (GLOBAL_AS const vc_t *esalt_bufs, GLOBAL_AS u32
|
||||
return -1;
|
||||
}
|
||||
|
||||
DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x *ipad, u32x *opad, u32x *digest, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x *ipad, u32x *opad, u32x *digest, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
digest[ 0] = ipad[ 0];
|
||||
digest[ 1] = ipad[ 1];
|
||||
@ -105,7 +105,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
digest[14] = ipad[14];
|
||||
digest[15] = ipad[15];
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = 0x80000000;
|
||||
w0[1] = 0;
|
||||
@ -124,7 +124,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
w3[2] = 0;
|
||||
w3[3] = (64 + 64) * 8;
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = digest[ 0];
|
||||
w0[1] = digest[ 1];
|
||||
@ -160,7 +160,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
digest[14] = opad[14];
|
||||
digest[15] = opad[15];
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = 0x80000000;
|
||||
w0[1] = 0;
|
||||
@ -179,7 +179,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
w3[2] = 0;
|
||||
w3[3] = (64 + 64) * 8;
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
KERNEL_FQ void m13731_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
@ -209,25 +209,39 @@ KERNEL_FQ void m13731_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -299,7 +313,7 @@ KERNEL_FQ void m13731_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
|
||||
whirlpool_hmac_ctx_t whirlpool_hmac_ctx;
|
||||
|
||||
whirlpool_hmac_init_64 (&whirlpool_hmac_ctx, w0, w1, w2, w3, s_MT);
|
||||
whirlpool_hmac_init_64 (&whirlpool_hmac_ctx, w0, w1, w2, w3, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
tmps[gid].ipad[ 0] = whirlpool_hmac_ctx.ipad.h[ 0];
|
||||
tmps[gid].ipad[ 1] = whirlpool_hmac_ctx.ipad.h[ 1];
|
||||
@ -461,25 +475,39 @@ KERNEL_FQ void m13731_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -616,7 +644,7 @@ KERNEL_FQ void m13731_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
w3[2] = dgst[14];
|
||||
w3[3] = dgst[15];
|
||||
|
||||
hmac_whirlpool_run_V (w0, w1, w2, w3, ipad, opad, dgst, s_MT);
|
||||
hmac_whirlpool_run_V (w0, w1, w2, w3, ipad, opad, dgst, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
out[ 0] ^= dgst[ 0];
|
||||
out[ 1] ^= dgst[ 1];
|
||||
@ -755,34 +783,6 @@ KERNEL_FQ void m13731_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Whirlpool shared
|
||||
*/
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
|
||||
#endif
|
||||
|
||||
if (gid >= gid_max) return;
|
||||
|
||||
if (tmps[gid].pim)
|
||||
|
@ -137,7 +137,7 @@ DECLSPEC int check_header_1024 (GLOBAL_AS const vc_t *esalt_bufs, GLOBAL_AS u32
|
||||
return -1;
|
||||
}
|
||||
|
||||
DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x *ipad, u32x *opad, u32x *digest, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x *ipad, u32x *opad, u32x *digest, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
digest[ 0] = ipad[ 0];
|
||||
digest[ 1] = ipad[ 1];
|
||||
@ -156,7 +156,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
digest[14] = ipad[14];
|
||||
digest[15] = ipad[15];
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = 0x80000000;
|
||||
w0[1] = 0;
|
||||
@ -175,7 +175,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
w3[2] = 0;
|
||||
w3[3] = (64 + 64) * 8;
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = digest[ 0];
|
||||
w0[1] = digest[ 1];
|
||||
@ -211,7 +211,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
digest[14] = opad[14];
|
||||
digest[15] = opad[15];
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = 0x80000000;
|
||||
w0[1] = 0;
|
||||
@ -230,7 +230,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
w3[2] = 0;
|
||||
w3[3] = (64 + 64) * 8;
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
KERNEL_FQ void m13732_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
@ -260,25 +260,39 @@ KERNEL_FQ void m13732_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -350,7 +364,7 @@ KERNEL_FQ void m13732_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
|
||||
whirlpool_hmac_ctx_t whirlpool_hmac_ctx;
|
||||
|
||||
whirlpool_hmac_init_64 (&whirlpool_hmac_ctx, w0, w1, w2, w3, s_MT);
|
||||
whirlpool_hmac_init_64 (&whirlpool_hmac_ctx, w0, w1, w2, w3, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
tmps[gid].ipad[ 0] = whirlpool_hmac_ctx.ipad.h[ 0];
|
||||
tmps[gid].ipad[ 1] = whirlpool_hmac_ctx.ipad.h[ 1];
|
||||
@ -512,25 +526,39 @@ KERNEL_FQ void m13732_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -667,7 +695,7 @@ KERNEL_FQ void m13732_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
w3[2] = dgst[14];
|
||||
w3[3] = dgst[15];
|
||||
|
||||
hmac_whirlpool_run_V (w0, w1, w2, w3, ipad, opad, dgst, s_MT);
|
||||
hmac_whirlpool_run_V (w0, w1, w2, w3, ipad, opad, dgst, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
out[ 0] ^= dgst[ 0];
|
||||
out[ 1] ^= dgst[ 1];
|
||||
@ -807,34 +835,6 @@ KERNEL_FQ void m13732_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Whirlpool shared
|
||||
*/
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
|
||||
#endif
|
||||
|
||||
if (gid >= gid_max) return;
|
||||
|
||||
if (tmps[gid].pim)
|
||||
|
@ -202,7 +202,7 @@ DECLSPEC int check_header_1536 (GLOBAL_AS const vc_t *esalt_bufs, GLOBAL_AS u32
|
||||
return -1;
|
||||
}
|
||||
|
||||
DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x *ipad, u32x *opad, u32x *digest, SHM_TYPE u64 (*s_MT)[256])
|
||||
DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x *ipad, u32x *opad, u32x *digest, SHM_TYPE u64 *s_MT0, SHM_TYPE u64 *s_MT1, SHM_TYPE u64 *s_MT2, SHM_TYPE u64 *s_MT3, SHM_TYPE u64 *s_MT4, SHM_TYPE u64 *s_MT5, SHM_TYPE u64 *s_MT6, SHM_TYPE u64 *s_MT7)
|
||||
{
|
||||
digest[ 0] = ipad[ 0];
|
||||
digest[ 1] = ipad[ 1];
|
||||
@ -221,7 +221,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
digest[14] = ipad[14];
|
||||
digest[15] = ipad[15];
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = 0x80000000;
|
||||
w0[1] = 0;
|
||||
@ -240,7 +240,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
w3[2] = 0;
|
||||
w3[3] = (64 + 64) * 8;
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = digest[ 0];
|
||||
w0[1] = digest[ 1];
|
||||
@ -276,7 +276,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
digest[14] = opad[14];
|
||||
digest[15] = opad[15];
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
w0[0] = 0x80000000;
|
||||
w0[1] = 0;
|
||||
@ -295,7 +295,7 @@ DECLSPEC void hmac_whirlpool_run_V (u32x *w0, u32x *w1, u32x *w2, u32x *w3, u32x
|
||||
w3[2] = 0;
|
||||
w3[3] = (64 + 64) * 8;
|
||||
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT);
|
||||
whirlpool_transform_vector (w0, w1, w2, w3, digest, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
}
|
||||
|
||||
KERNEL_FQ void m13733_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
@ -325,25 +325,39 @@ KERNEL_FQ void m13733_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -415,7 +429,7 @@ KERNEL_FQ void m13733_init (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
|
||||
whirlpool_hmac_ctx_t whirlpool_hmac_ctx;
|
||||
|
||||
whirlpool_hmac_init_64 (&whirlpool_hmac_ctx, w0, w1, w2, w3, s_MT);
|
||||
whirlpool_hmac_init_64 (&whirlpool_hmac_ctx, w0, w1, w2, w3, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
tmps[gid].ipad[ 0] = whirlpool_hmac_ctx.ipad.h[ 0];
|
||||
tmps[gid].ipad[ 1] = whirlpool_hmac_ctx.ipad.h[ 1];
|
||||
@ -577,25 +591,39 @@ KERNEL_FQ void m13733_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
LOCAL_VK u64 s_MT0[256];
|
||||
LOCAL_VK u64 s_MT1[256];
|
||||
LOCAL_VK u64 s_MT2[256];
|
||||
LOCAL_VK u64 s_MT3[256];
|
||||
LOCAL_VK u64 s_MT4[256];
|
||||
LOCAL_VK u64 s_MT5[256];
|
||||
LOCAL_VK u64 s_MT6[256];
|
||||
LOCAL_VK u64 s_MT7[256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
s_MT0[i] = MT0[i];
|
||||
s_MT1[i] = MT1[i];
|
||||
s_MT2[i] = MT2[i];
|
||||
s_MT3[i] = MT3[i];
|
||||
s_MT4[i] = MT4[i];
|
||||
s_MT5[i] = MT5[i];
|
||||
s_MT6[i] = MT6[i];
|
||||
s_MT7[i] = MT7[i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
CONSTANT_AS u64a *s_MT0 = MT0;
|
||||
CONSTANT_AS u64a *s_MT1 = MT1;
|
||||
CONSTANT_AS u64a *s_MT2 = MT2;
|
||||
CONSTANT_AS u64a *s_MT3 = MT3;
|
||||
CONSTANT_AS u64a *s_MT4 = MT4;
|
||||
CONSTANT_AS u64a *s_MT5 = MT5;
|
||||
CONSTANT_AS u64a *s_MT6 = MT6;
|
||||
CONSTANT_AS u64a *s_MT7 = MT7;
|
||||
|
||||
#endif
|
||||
|
||||
@ -732,7 +760,7 @@ KERNEL_FQ void m13733_loop (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
w3[2] = dgst[14];
|
||||
w3[3] = dgst[15];
|
||||
|
||||
hmac_whirlpool_run_V (w0, w1, w2, w3, ipad, opad, dgst, s_MT);
|
||||
hmac_whirlpool_run_V (w0, w1, w2, w3, ipad, opad, dgst, s_MT0, s_MT1, s_MT2, s_MT3, s_MT4, s_MT5, s_MT6, s_MT7);
|
||||
|
||||
out[ 0] ^= dgst[ 0];
|
||||
out[ 1] ^= dgst[ 1];
|
||||
@ -873,34 +901,6 @@ KERNEL_FQ void m13733_comp (KERN_ATTR_TMPS_ESALT (vc_tmp_t, vc_t))
|
||||
|
||||
#endif
|
||||
|
||||
/**
|
||||
* Whirlpool shared
|
||||
*/
|
||||
|
||||
#ifdef REAL_SHM
|
||||
|
||||
LOCAL_VK u64 s_MT[8][256];
|
||||
|
||||
for (u32 i = lid; i < 256; i += lsz)
|
||||
{
|
||||
s_MT[0][i] = MT[0][i];
|
||||
s_MT[1][i] = MT[1][i];
|
||||
s_MT[2][i] = MT[2][i];
|
||||
s_MT[3][i] = MT[3][i];
|
||||
s_MT[4][i] = MT[4][i];
|
||||
s_MT[5][i] = MT[5][i];
|
||||
s_MT[6][i] = MT[6][i];
|
||||
s_MT[7][i] = MT[7][i];
|
||||
}
|
||||
|
||||
SYNC_THREADS ();
|
||||
|
||||
#else
|
||||
|
||||
CONSTANT_AS u64a (*s_MT)[256] = MT;
|
||||
|
||||
#endif
|
||||
|
||||
if (gid >= gid_max) return;
|
||||
|
||||
if (tmps[gid].pim)
|
||||
|
Loading…
Reference in New Issue
Block a user