Rewrite MT[X][256] constants to MTX[256] constants in whirlpool hash

pull/2310/head
Jens Steube 4 years ago
parent 193b4a38c7
commit 5f57ab35b6

@ -9,9 +9,8 @@
#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,
0x3636d836adee6c9b, 0xa6a6a2a6590451ff, 0xd2d26fd2debdb90c, 0xf5f5f3f5fb06f70e,
@ -76,8 +75,10 @@ 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,
0x9b3636d836adee6c, 0xffa6a6a2a6590451, 0x0cd2d26fd2debdb9, 0x0ef5f5f3f5fb06f7,
@ -142,8 +143,10 @@ 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,
0x6c9b3636d836adee, 0x51ffa6a6a2a65904, 0xb90cd2d26fd2debd, 0xf70ef5f5f3f5fb06,
@ -208,8 +211,10 @@ 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,
0xee6c9b3636d836ad, 0x0451ffa6a6a2a659, 0xbdb90cd2d26fd2de, 0x06f70ef5f5f3f5fb,
@ -274,8 +279,10 @@ 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,
0xadee6c9b3636d836, 0x590451ffa6a6a2a6, 0xdebdb90cd2d26fd2, 0xfb06f70ef5f5f3f5,
@ -340,8 +347,10 @@ 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,
0x36adee6c9b3636d8, 0xa6590451ffa6a6a2, 0xd2debdb90cd2d26f, 0xf5fb06f70ef5f5f3,
@ -406,8 +415,10 @@ 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,
0xd836adee6c9b3636, 0xa2a6590451ffa6a6, 0x6fd2debdb90cd2d2, 0xf3f5fb06f70ef5f5,
@ -472,8 +483,10 @@ 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,
0x36d836adee6c9b36, 0xa6a2a6590451ffa6, 0xd26fd2debdb90cd2, 0xf5f3f5fb06f70ef5,
@ -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…
Cancel
Save