From 09b8a30da23d5666ac8758327e6c5a3dd2bf1187 Mon Sep 17 00:00:00 2001 From: Jens Steube Date: Sat, 22 Feb 2020 09:11:04 +0100 Subject: [PATCH] Small optimizations in -m 15300 and -m 15900 --- OpenCL/m15300-pure.cl | 67 ++++++++++++++++--------------------------- OpenCL/m15900-pure.cl | 63 ++++++++++++++++------------------------ 2 files changed, 48 insertions(+), 82 deletions(-) diff --git a/OpenCL/m15300-pure.cl b/OpenCL/m15300-pure.cl index 1defd3d30..57e920a11 100644 --- a/OpenCL/m15300-pure.cl +++ b/OpenCL/m15300-pure.cl @@ -511,25 +511,6 @@ KERNEL_FQ void m15300_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) if (wx_off == 24) break; } - u32 hmacSalt[4]; - u32 expectedHmac[4]; - u32 lastKey[16]; - - hmacSalt[0] = hc_swap32_S (decrypted[0]); - hmacSalt[1] = hc_swap32_S (decrypted[1]); - hmacSalt[2] = hc_swap32_S (decrypted[2]); - hmacSalt[3] = hc_swap32_S (decrypted[3]); - - expectedHmac[0] = hc_swap32_S (decrypted[4 + 0]); - expectedHmac[1] = hc_swap32_S (decrypted[4 + 1]); - expectedHmac[2] = hc_swap32_S (decrypted[4 + 2]); - expectedHmac[3] = hc_swap32_S (decrypted[4 + 3]); - - for (int i = 0; i < 16; i++) - { - lastKey[i] = decrypted[i + 26 - 16]; - } - w0[0] = tmps[gid].userKey[0]; w0[1] = tmps[gid].userKey[1]; w0[2] = tmps[gid].userKey[2]; @@ -551,10 +532,10 @@ KERNEL_FQ void m15300_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) sha1_hmac_init_64 (&ctx, w0, w1, w2, w3); - w0[0] = hmacSalt[0]; - w0[1] = hmacSalt[1]; - w0[2] = hmacSalt[2]; - w0[3] = hmacSalt[3]; + w0[0] = hc_swap32_S (decrypted[0]); + w0[1] = hc_swap32_S (decrypted[1]); + w0[2] = hc_swap32_S (decrypted[2]); + w0[3] = hc_swap32_S (decrypted[3]); w1[0] = 0; w1[1] = 0; w1[2] = 0; @@ -591,22 +572,22 @@ KERNEL_FQ void m15300_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) sha1_hmac_init_64 (&ctx, w0, w1, w2, w3); - w0[0] = hc_swap32_S (lastKey[ 0]); - w0[1] = hc_swap32_S (lastKey[ 1]); - w0[2] = hc_swap32_S (lastKey[ 2]); - w0[3] = hc_swap32_S (lastKey[ 3]); - w1[0] = hc_swap32_S (lastKey[ 4]); - w1[1] = hc_swap32_S (lastKey[ 5]); - w1[2] = hc_swap32_S (lastKey[ 6]); - w1[3] = hc_swap32_S (lastKey[ 7]); - w2[0] = hc_swap32_S (lastKey[ 8]); - w2[1] = hc_swap32_S (lastKey[ 9]); - w2[2] = hc_swap32_S (lastKey[10]); - w2[3] = hc_swap32_S (lastKey[11]); - w3[0] = hc_swap32_S (lastKey[12]); - w3[1] = hc_swap32_S (lastKey[13]); - w3[2] = hc_swap32_S (lastKey[14]); - w3[3] = hc_swap32_S (lastKey[15]); + w0[0] = hc_swap32_S (decrypted[10]); + w0[1] = hc_swap32_S (decrypted[11]); + w0[2] = hc_swap32_S (decrypted[12]); + w0[3] = hc_swap32_S (decrypted[13]); + w1[0] = hc_swap32_S (decrypted[14]); + w1[1] = hc_swap32_S (decrypted[15]); + w1[2] = hc_swap32_S (decrypted[16]); + w1[3] = hc_swap32_S (decrypted[17]); + w2[0] = hc_swap32_S (decrypted[18]); + w2[1] = hc_swap32_S (decrypted[19]); + w2[2] = hc_swap32_S (decrypted[20]); + w2[3] = hc_swap32_S (decrypted[21]); + w3[0] = hc_swap32_S (decrypted[22]); + w3[1] = hc_swap32_S (decrypted[23]); + w3[2] = hc_swap32_S (decrypted[24]); + w3[3] = hc_swap32_S (decrypted[25]); sha1_hmac_update_64 (&ctx, w0, w1, w2, w3, 64); @@ -614,10 +595,10 @@ KERNEL_FQ void m15300_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v1_t, dpapimk_t)) #define il_pos 0 - if ((expectedHmac[0] == ctx.opad.h[0]) - && (expectedHmac[1] == ctx.opad.h[1]) - && (expectedHmac[2] == ctx.opad.h[2]) - && (expectedHmac[3] == ctx.opad.h[3])) + if ((decrypted[4] == hc_swap32_S (ctx.opad.h[0])) + && (decrypted[5] == hc_swap32_S (ctx.opad.h[1])) + && (decrypted[6] == hc_swap32_S (ctx.opad.h[2])) + && (decrypted[7] == hc_swap32_S (ctx.opad.h[3]))) { if (atomic_inc (&hashes_shown[digests_offset]) == 0) { diff --git a/OpenCL/m15900-pure.cl b/OpenCL/m15900-pure.cl index 2c2dd5adb..4ab4f7bd4 100644 --- a/OpenCL/m15900-pure.cl +++ b/OpenCL/m15900-pure.cl @@ -637,21 +637,6 @@ KERNEL_FQ void m15900_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) if (contents_off == 32) break; } - u32 hmacSalt[4]; - u32 expectedHmac[16]; - u32 lastKey[16]; - - hmacSalt[0] = decrypted[0]; - hmacSalt[1] = decrypted[1]; - hmacSalt[2] = decrypted[2]; - hmacSalt[3] = decrypted[3]; - - for(int i = 0; i < 16; i++) - { - expectedHmac[i] = decrypted[i + 4]; - lastKey[i] = decrypted[i + 36 - 16]; - } - w0[0] = tmps[gid].userKey[0]; w0[1] = tmps[gid].userKey[1]; w0[2] = tmps[gid].userKey[2]; @@ -689,10 +674,10 @@ KERNEL_FQ void m15900_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) sha512_hmac_init_128 (&ctx, w0, w1, w2, w3, w4, w5, w6, w7); - w0[0] = hmacSalt[0]; - w0[1] = hmacSalt[1]; - w0[2] = hmacSalt[2]; - w0[3] = hmacSalt[3]; + w0[0] = decrypted[0]; + w0[1] = decrypted[1]; + w0[2] = decrypted[2]; + w0[3] = decrypted[3]; w1[0] = 0; w1[1] = 0; w1[2] = 0; @@ -761,22 +746,22 @@ KERNEL_FQ void m15900_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) sha512_hmac_init_128 (&ctx, w0, w1, w2, w3, w4, w5, w6, w7); - w0[0] = lastKey[ 0]; - w0[1] = lastKey[ 1]; - w0[2] = lastKey[ 2]; - w0[3] = lastKey[ 3]; - w1[0] = lastKey[ 4]; - w1[1] = lastKey[ 5]; - w1[2] = lastKey[ 6]; - w1[3] = lastKey[ 7]; - w2[0] = lastKey[ 8]; - w2[1] = lastKey[ 9]; - w2[2] = lastKey[10]; - w2[3] = lastKey[11]; - w3[0] = lastKey[12]; - w3[1] = lastKey[13]; - w3[2] = lastKey[14]; - w3[3] = lastKey[15]; + w0[0] = decrypted[20]; + w0[1] = decrypted[21]; + w0[2] = decrypted[22]; + w0[3] = decrypted[23]; + w1[0] = decrypted[24]; + w1[1] = decrypted[25]; + w1[2] = decrypted[26]; + w1[3] = decrypted[27]; + w2[0] = decrypted[28]; + w2[1] = decrypted[29]; + w2[2] = decrypted[30]; + w2[3] = decrypted[31]; + w3[0] = decrypted[32]; + w3[1] = decrypted[33]; + w3[2] = decrypted[34]; + w3[3] = decrypted[35]; w4[0] = 0; w4[1] = 0; w4[2] = 0; @@ -800,10 +785,10 @@ KERNEL_FQ void m15900_comp (KERN_ATTR_TMPS_ESALT (dpapimk_tmp_v2_t, dpapimk_t)) #define il_pos 0 - if ((expectedHmac[0] == h32_from_64_S (ctx.opad.h[0])) - && (expectedHmac[1] == l32_from_64_S (ctx.opad.h[0])) - && (expectedHmac[2] == h32_from_64_S (ctx.opad.h[1])) - && (expectedHmac[3] == l32_from_64_S (ctx.opad.h[1]))) + if ((decrypted[4] == h32_from_64_S (ctx.opad.h[0])) + && (decrypted[5] == l32_from_64_S (ctx.opad.h[0])) + && (decrypted[6] == h32_from_64_S (ctx.opad.h[1])) + && (decrypted[7] == l32_from_64_S (ctx.opad.h[1]))) { if (atomic_inc (&hashes_shown[digests_offset]) == 0) {