#define NEW_SIMD_CODE
-#include "include/constants.h"
-#include "include/kernel_vendor.h"
+#include "inc_hash_constants.h"
+#include "inc_vendor.cl"
#define DGST_R0 0
#define DGST_R1 1
#define DGST_R2 2
#define DGST_R3 3
-#include "include/kernel_functions.c"
-#include "OpenCL/types_ocl.c"
-#include "OpenCL/common.c"
-#include "include/rp_kernel.h"
-#include "OpenCL/rp.c"
-#include "OpenCL/simd.c"
+#include "inc_hash_functions.cl"
+#include "inc_types.cl"
+#include "inc_common.cl"
+#include "inc_rp.h"
+#include "inc_rp.cl"
+#include "inc_simd.cl"
#define PERM_OP(a,b,tt,n,m) \
{ \
#define BOX1(i,S) (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])
#endif
-static void _des_crypt_encrypt (u32x iv[2], u32x data[2], u32x Kc[16], u32x Kd[16], __local u32 (*s_SPtrans)[64])
+void _des_crypt_encrypt (u32x iv[2], u32x data[2], u32x Kc[16], u32x Kd[16], __local u32 (*s_SPtrans)[64])
{
u32x r = data[0];
u32x l = data[1];
- #pragma unroll 16
+ #ifdef _unroll
+ #pragma unroll
+ #endif
for (u32 i = 0; i < 16; i += 2)
{
u32x u;
iv[1] = r;
}
-static void _des_crypt_keysetup (u32x c, u32x d, u32x Kc[16], u32x Kd[16], __local u32 (*s_skb)[64])
+void _des_crypt_keysetup (u32x c, u32x d, u32x Kc[16], u32x Kd[16], __local u32 (*s_skb)[64])
{
u32x tt;
c = c & 0x0fffffff;
- #pragma unroll 16
+ #ifdef _unroll
+ #pragma unroll
+ #endif
for (u32 i = 0; i < 16; i++)
{
if ((i < 2) || (i == 8) || (i == 15))
}
}
-static void transform_racf_key (const u32x w0, const u32x w1, u32x key[2])
+void transform_racf_key (const u32x w0, const u32x w1, u32x key[2])
{
key[0] = BOX1 (((w0 >> 0) & 0xff), ascii_to_ebcdic_pc) << 0
| BOX1 (((w0 >> 8) & 0xff), ascii_to_ebcdic_pc) << 8
*/
u32 pw_buf0[4];
+ u32 pw_buf1[4];
pw_buf0[0] = pws[gid].i[ 0];
pw_buf0[1] = pws[gid].i[ 1];
pw_buf0[2] = 0;
pw_buf0[3] = 0;
-
- u32 pw_buf1[4];
-
pw_buf1[0] = 0;
pw_buf1[1] = 0;
pw_buf1[2] = 0;
u32x w2[4] = { 0 };
u32x w3[4] = { 0 };
- u32x out_len = apply_rules_vect (pw_buf0, pw_buf1, pw_len, rules_buf, il_pos, w0, w1);
+ apply_rules_vect (pw_buf0, pw_buf1, pw_len, rules_buf, il_pos, w0, w1);
- out_len &= 7;
+ /**
+ * RACF
+ */
u32x key[2];
data[0] = salt_buf0[0];
data[1] = salt_buf0[1];
- volatile u32x iv[2];
+ u32x iv[2];
_des_crypt_encrypt (iv, data, Kc, Kd, s_SPtrans);
- u32x iv2 = 0;
- u32x iv3 = 0;
+ u32x z = 0;
- COMPARE_M_SIMD (iv[0], iv[1], iv2, iv3);
+ COMPARE_M_SIMD (iv[0], iv[1], z, z);
}
}
*/
u32 pw_buf0[4];
+ u32 pw_buf1[4];
pw_buf0[0] = pws[gid].i[ 0];
pw_buf0[1] = pws[gid].i[ 1];
pw_buf0[2] = 0;
pw_buf0[3] = 0;
-
- u32 pw_buf1[4];
-
pw_buf1[0] = 0;
pw_buf1[1] = 0;
pw_buf1[2] = 0;
{
digests_buf[digests_offset].digest_buf[DGST_R0],
digests_buf[digests_offset].digest_buf[DGST_R1],
- digests_buf[digests_offset].digest_buf[DGST_R2],
- digests_buf[digests_offset].digest_buf[DGST_R3]
+ 0,
+ 0
};
/**
u32x w2[4] = { 0 };
u32x w3[4] = { 0 };
- u32x out_len = apply_rules_vect (pw_buf0, pw_buf1, pw_len, rules_buf, il_pos, w0, w1);
+ apply_rules_vect (pw_buf0, pw_buf1, pw_len, rules_buf, il_pos, w0, w1);
- out_len &= 7;
+ /**
+ * RACF
+ */
u32x key[2];
data[0] = salt_buf0[0];
data[1] = salt_buf0[1];
- volatile u32x iv[2];
+ u32x iv[2];
_des_crypt_encrypt (iv, data, Kc, Kd, s_SPtrans);
- u32x iv2 = 0;
- u32x iv3 = 0;
+ u32x z = 0;
- COMPARE_S_SIMD (iv[0], iv[1], iv2, iv3);
+ COMPARE_S_SIMD (iv[0], iv[1], z, z);
}
}