Skip to content

Commit

Permalink
john: add OpenCL support
Browse files Browse the repository at this point in the history
  • Loading branch information
CyberShadow committed Jun 29, 2024
1 parent 650be51 commit eac5951
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 17 deletions.
54 changes: 37 additions & 17 deletions pkgs/tools/security/john/default.nix
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@
python3Packages,
perl,
perlPackages,
withOpenCL ? true,
opencl-headers,
ocl-icd,
substituteAll,
makeWrapper,
}:

Expand All @@ -28,6 +32,13 @@ stdenv.mkDerivation rec {
hash = "sha256-zvoN+8Sx6qpVg2JeRLOIH1ehfl3tFTv7r5wQZ44Qsbc=";
};

patches = lib.optionals withOpenCL [
(substituteAll {
src = ./opencl.patch;
ocl_icd = ocl-icd;
})
];

postPatch = ''
sed -ri -e '
s!^(#define\s+CFG_[A-Z]+_NAME\s+).*/!\1"'"$out"'/etc/john/!
Expand All @@ -39,28 +50,37 @@ stdenv.mkDerivation rec {
}' run/*.conf
'';

preConfigure = ''
cd src
# Makefile.in depends on AS and LD being set to CC, which is set by default in configure.ac.
# This ensures we override the environment variables set in cc-wrapper/setup-hook.sh
export AS=$CC
export LD=$CC
'';
preConfigure =
''
cd src
# Makefile.in depends on AS and LD being set to CC, which is set by default in configure.ac.
# This ensures we override the environment variables set in cc-wrapper/setup-hook.sh
export AS=$CC
export LD=$CC
''
+ lib.optionalString withOpenCL ''
python ./opencl_generate_dynamic_loader.py # Update opencl_dynamic_loader.c
'';
configureFlags = [
"--disable-native-tests"
"--with-systemwide"
];

buildInputs = [
openssl
nss
nspr
libkrb5
gmp
zlib
libpcap
re2
];
buildInputs =
[
openssl
nss
nspr
libkrb5
gmp
zlib
libpcap
re2
]
++ lib.optionals withOpenCL [
opencl-headers
ocl-icd
];
nativeBuildInputs = [
gcc
python3Packages.wrapPython
Expand Down
18 changes: 18 additions & 0 deletions pkgs/tools/security/john/opencl.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
diff --git a/src/opencl_generate_dynamic_loader.py b/src/opencl_generate_dynamic_loader.py
index 790705330..2acedbc56 100755
--- a/src/opencl_generate_dynamic_loader.py
+++ b/src/opencl_generate_dynamic_loader.py
@@ -134,12 +134,7 @@ static void load_opencl_dll(void)

/* Names to try to load */
const char * const opencl_names[] = {
- "libOpenCL.so", /* Linux/others, hack via "development" sub-package's symlink */
- "OpenCL", /* _WIN */
- "/System/Library/Frameworks/OpenCL.framework/OpenCL", /* __APPLE__ */
- "opencl.dll", /* __CYGWIN__ */
- "cygOpenCL-1.dll", /* __CYGWIN__ */
- "libOpenCL.so.1" /* Linux/others, no "development" sub-package installed */
+ "@ocl_icd@/lib/libOpenCL.so" /* NixOS */
};

for (i = 0; i < sizeof(opencl_names)/sizeof(opencl_names[0]); i++) {

0 comments on commit eac5951

Please sign in to comment.