2 * Author......: Jens Steube <jens.steube@gmail.com>
11 static u32
swap32 (const u32 v
)
13 return (as_uint (as_uchar4 (v
).s3210
));
16 static u64
swap64 (const u64 v
)
18 return (as_ulong (as_uchar8 (v
).s76543210
));
25 static u32
__byte_perm (const u32 a
, const u32 b
, const u32 s
)
29 asm ("prmt.b32 %0, %1, %2, %3;" : "=r"(r
) : "r"(a
), "r"(b
), "r"(s
));
36 static u32
amd_bytealign (const u32 a
, const u32 b
, const u32 c
)
40 asm ("shf.r.wrap.b32 %0, %1, %2, %3;" : "=r"(r
) : "r"(b
), "r"(a
), "r"((c
& 3) * 8));
47 static u32
amd_bytealign (const u32 a
, const u32 b
, const u32 c
)
49 return __byte_perm (b
, a
, (0x76543210 >> ((c
& 3) * 4)) & 0xffff);
54 static u32
lut3_2d (const u32 a
, const u32 b
, const u32 c
)
58 asm ("lop3.b32 %0, %1, %2, %3, 0x2d;" : "=r" (r
) : "r" (a
), "r" (b
), "r" (c
));
63 static u32
lut3_39 (const u32 a
, const u32 b
, const u32 c
)
67 asm ("lop3.b32 %0, %1, %2, %3, 0x39;" : "=r" (r
) : "r" (a
), "r" (b
), "r" (c
));
72 static u32
lut3_59 (const u32 a
, const u32 b
, const u32 c
)
76 asm ("lop3.b32 %0, %1, %2, %3, 0x59;" : "=r" (r
) : "r" (a
), "r" (b
), "r" (c
));
81 static u32
lut3_96 (const u32 a
, const u32 b
, const u32 c
)
85 asm ("lop3.b32 %0, %1, %2, %3, 0x96;" : "=r" (r
) : "r" (a
), "r" (b
), "r" (c
));
90 static u32
lut3_e4 (const u32 a
, const u32 b
, const u32 c
)
94 asm ("lop3.b32 %0, %1, %2, %3, 0xe4;" : "=r" (r
) : "r" (a
), "r" (b
), "r" (c
));
99 static u32
lut3_e8 (const u32 a
, const u32 b
, const u32 c
)
103 asm ("lop3.b32 %0, %1, %2, %3, 0xe8;" : "=r" (r
) : "r" (a
), "r" (b
), "r" (c
));
108 static u32
lut3_ca (const u32 a
, const u32 b
, const u32 c
)
112 asm ("lop3.b32 %0, %1, %2, %3, 0xca;" : "=r" (r
) : "r" (a
), "r" (b
), "r" (c
));
122 static u32 allx (const u32 r)
128 static u32
l32_from_64 (u64 a
)
130 const u32 r
= (uint
) (a
);
135 static u32
h32_from_64 (u64 a
)
139 const u32 r
= (uint
) (a
);
144 static u64
hl32_to_64 (const u32 a
, const u32 b
)
146 return as_ulong ((uint2
) (b
, a
));
151 static u32
rotr32 (const u32 a
, const u32 n
)
153 return rotate (a
, 32 - n
);
156 static u32
rotl32 (const u32 a
, const u32 n
)
158 return rotate (a
, n
);
161 static u64
rotr64 (const u64 a
, const u32 n
)
163 uint2 a2
= as_uint2 (a
);
167 t
.s0
= (n
>= 32) ? amd_bitalign (a2
.s0
, a2
.s1
, n
- 32)
168 : amd_bitalign (a2
.s1
, a2
.s0
, n
);
169 t
.s1
= (n
>= 32) ? amd_bitalign (a2
.s1
, a2
.s0
, n
- 32)
170 : amd_bitalign (a2
.s0
, a2
.s1
, n
);
175 static u64
rotl64 (const u64 a
, const u32 n
)
177 return rotr64 (a
, 64 - n
);
184 static u32
rotr32 (const u32 a
, const u32 n
)
186 return rotate (a
, 32 - n
);
189 static u32
rotl32 (const u32 a
, const u32 n
)
191 return rotate (a
, n
);
194 static u64
rotr64 (const u64 a
, const u64 n
)
196 return rotate (a
, 64 - n
);
199 static u64
rotl64 (const u64 a
, const u64 n
)
201 return rotate (a
, n
);
218 #elif defined _BCRYPT_
220 #elif defined _SHA256_
222 #elif defined _SHA384_
224 #elif defined _SHA512_
226 #elif defined _KECCAK_
228 #elif defined _RIPEMD160_
230 #elif defined _WHIRLPOOL_
234 #elif defined _GOST2012_256_
236 #elif defined _GOST2012_512_
242 #elif defined _MYSQL323_
244 #elif defined _LOTUS5_
246 #elif defined _LOTUS6_
248 #elif defined _SCRYPT_
250 #elif defined _LOTUS8_
252 #elif defined _OFFICE2007_
254 #elif defined _OFFICE2010_
256 #elif defined _OFFICE2013_
258 #elif defined _OLDOFFICE01_
260 #elif defined _OLDOFFICE34_
262 #elif defined _SIPHASH_
264 #elif defined _PBKDF2_MD5_
266 #elif defined _PBKDF2_SHA1_
268 #elif defined _PBKDF2_SHA256_
270 #elif defined _PBKDF2_SHA512_
272 #elif defined _PDF17L8_
274 #elif defined _CRC32_
276 #elif defined _SEVEN_ZIP_
278 #elif defined _ANDROIDFDE_
284 #elif defined _MD5_SHA1_
286 #elif defined _SHA1_MD5_
288 #elif defined _NETNTLMV2_
290 #elif defined _KRB5PA_
292 #elif defined _CLOUDKEY_
294 #elif defined _SCRYPT_
296 #elif defined _PSAFE2_
298 #elif defined _LOTUS8_
302 #elif defined _SHA256_SHA1_
304 #elif defined _MS_DRSR_
367 u32 cry_master_buf
[64];
369 u32 public_key_buf
[64];
410 u32 userdomain_buf
[64];
473 u32 encryptedVerifier
[4];
474 u32 encryptedVerifierHash
[5];
482 u32 encryptedVerifier
[4];
483 u32 encryptedVerifierHash
[8];
489 u32 encryptedVerifier
[4];
490 u32 encryptedVerifierHash
[8];
497 u32 encryptedVerifier
[4];
498 u32 encryptedVerifierHash
[4];
506 u32 encryptedVerifier
[4];
507 u32 encryptedVerifierHash
[5];
576 } bitcoin_wallet_tmp_t
;
682 } pbkdf2_sha256_tmp_t
;
692 } pbkdf2_sha512_tmp_t
;
904 u32 alignment_placeholder_1
;
905 u32 alignment_placeholder_2
;
906 u32 alignment_placeholder_3
;