diff --git a/src/cuda_wpapsk_fmt.c b/src/cuda_wpapsk_fmt.c index 5ea6e22..f97eaa9 100644 --- a/src/cuda_wpapsk_fmt.c +++ b/src/cuda_wpapsk_fmt.c @@ -76,7 +76,7 @@ struct fmt_main fmt_cuda_wpapsk = { SALT_SIZE, MIN_KEYS_PER_CRYPT, MAX_KEYS_PER_CRYPT, - FMT_CASE | FMT_8_BIT, + FMT_CASE | FMT_8_BIT | FMT_OMP, wpapsk_tests}, { init, diff --git a/src/opencl_wpapsk_fmt.c b/src/opencl_wpapsk_fmt.c index d9609a7..ff8b94c 100644 --- a/src/opencl_wpapsk_fmt.c +++ b/src/opencl_wpapsk_fmt.c @@ -221,7 +221,7 @@ struct fmt_main fmt_opencl_wpapsk = { SALT_SIZE, MIN_KEYS_PER_CRYPT, MAX_KEYS_PER_CRYPT, - FMT_CASE | FMT_8_BIT, + FMT_CASE | FMT_8_BIT | FMT_OMP, tests}, { init, diff --git a/src/wpapsk.h b/src/wpapsk.h index a9c53c7..5812e70 100644 --- a/src/wpapsk.h +++ b/src/wpapsk.h @@ -141,12 +141,12 @@ static int valid(char *ciphertext, struct fmt_main *pFmt) return 1; } -static uint32_t *prf_512(uint32_t * key, uint8_t * data) +static MAYBE_INLINE uint32_t *prf_512(uint32_t * key, uint8_t * data) { unsigned int i; - static char *text = "Pairwise key expansion"; - static unsigned char buff[100]; - static uint32_t ret[20]; + char *text = "Pairwise key expansion"; + unsigned char buff[100]; + uint32_t ret[20]; memcpy(buff, text, 22); memcpy(buff + 23, data, 76); @@ -215,16 +215,25 @@ static void wpapsk_postprocess(int keys) insert_mac(data); insert_nonce(data + 12); - for (i = 0; i < keys; i++) { - uint32_t *prf = prf_512(outbuffer[i].v, data); - if (hccap.keyver == 1) + if (hccap.keyver == 1) { +#ifdef _OPENMP +#pragma omp parallel for default(none) private(i) shared(keys, outbuffer, data, hccap, mic) +#endif + for (i = 0; i < keys; i++) { + uint32_t *prf = prf_512(outbuffer[i].v, data); HMAC(EVP_md5(), prf, 16, hccap.eapol, hccap.eapol_size, mic[i].keymic, NULL); - else + } + } else { +#ifdef _OPENMP +#pragma omp parallel for default(none) private(i) shared(keys, outbuffer, data, hccap, mic) +#endif + for (i = 0; i < keys; i++) { + uint32_t *prf = prf_512(outbuffer[i].v, data); HMAC(EVP_sha1(), prf, 16, hccap.eapol, hccap.eapol_size, mic[i].keymic, NULL); + } } - } static int binary_hash_0(void *binary)