gnu: Add John the Ripper.
[jackhill/guix/guix.git] / gnu / packages / password-utils.scm
CommitLineData
de63b20e
SS
1;;; GNU Guix --- Functional package management for GNU
2;;; Copyright © 2015 Steve Sprang <scs@stevesprang.com>
99672f7b 3;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
7e9b07bd 4;;; Copyright © 2015 Aljosha Papsch <misc@rpapsch.de>
3d4f9d5c 5;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
c285a400
JT
6;;; Copyright © 2016 Jessica Tallon <tsyesika@tsyesika.se>
7;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
6d32dd8c 8;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
61201e46 9;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
f339f277 10;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
2c715a92 11;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
b1a686bb 12;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
a1714ff5 13;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
eb28a777 14;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
de63b20e
SS
15;;;
16;;; This file is part of GNU Guix.
17;;;
18;;; GNU Guix is free software; you can redistribute it and/or modify it
19;;; under the terms of the GNU General Public License as published by
20;;; the Free Software Foundation; either version 3 of the License, or (at
21;;; your option) any later version.
22;;;
23;;; GNU Guix is distributed in the hope that it will be useful, but
24;;; WITHOUT ANY WARRANTY; without even the implied warranty of
25;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26;;; GNU General Public License for more details.
27;;;
28;;; You should have received a copy of the GNU General Public License
29;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
30
31(define-module (gnu packages password-utils)
32 #:use-module ((guix licenses) #:prefix license:)
e8647227 33 #:use-module (guix build-system cmake)
de63b20e
SS
34 #:use-module (guix build-system gnu)
35 #:use-module (guix download)
e8647227 36 #:use-module (guix packages)
53dcbbec 37 #:use-module (gnu packages)
c285a400 38 #:use-module (gnu packages admin)
81635fb6 39 #:use-module (gnu packages aidc)
c285a400 40 #:use-module (gnu packages base)
e8647227 41 #:use-module (gnu packages compression)
a1714ff5 42 #:use-module (gnu packages freedesktop)
f339f277 43 #:use-module (gnu packages glib)
e8647227 44 #:use-module (gnu packages gnupg)
eb28a777 45 #:use-module (gnu packages gnuzilla)
0050876b 46 #:use-module (gnu packages gtk)
dd24e906 47 #:use-module (gnu packages guile)
eb28a777 48 #:use-module (gnu packages kerberos)
c285a400 49 #:use-module (gnu packages linux)
3d4f9d5c 50 #:use-module (gnu packages man)
eb28a777 51 #:use-module (gnu packages multiprecision)
7e9b07bd
AP
52 #:use-module (gnu packages ncurses)
53 #:use-module (gnu packages pkg-config)
3d4f9d5c 54 #:use-module (gnu packages python)
7e9b07bd 55 #:use-module (gnu packages tls)
e8647227 56 #:use-module (gnu packages qt)
c285a400 57 #:use-module (gnu packages version-control)
dd24e906 58 #:use-module (gnu packages xdisorg)
3d4f9d5c
CAW
59 #:use-module (gnu packages xorg)
60 #:use-module (guix build-system python))
de63b20e
SS
61
62(define-public pwgen
63 (package
64 (name "pwgen")
65 (version "2.07")
66 (source
67 (origin
68 (method url-fetch)
de67e922
LF
69 (uri (string-append "mirror://sourceforge/pwgen/pwgen/" version
70 "/pwgen-" version ".tar.gz"))
de63b20e
SS
71 (sha256
72 (base32 "0mhmw700kkh238fzivcwnwi94bj9f3h36yfh3k3j2v19b0zmjx7b"))))
73 (build-system gnu-build-system)
74 (arguments
75 `(#:tests? #f)) ; no test suite
76 (home-page "http://pwgen.sourceforge.net/")
77 (synopsis "Password generator")
78 (description "Pwgen generates passwords which can be easily memorized by a
79human.")
80 (license license:gpl2)))
e8647227 81
99672f7b
EF
82(define-public keepassxc
83 (package
84 (name "keepassxc")
85 (version "2.2.0")
86 (source
87 (origin
88 (method url-fetch)
89 (uri (string-append "https://github.com/keepassxreboot/" name
90 "/releases/download/" version "/keepassxc-"
91 version "-src.tar.xz"))
92 (sha256
93 (base32
94 "0nby6aq6w8g7c9slzahf7i34sbj8majf8rhmqqww87v6kaypxi3i"))))
95 (build-system cmake-build-system)
96 (inputs
97 `(("libgcrypt" ,libgcrypt)
98 ("libxi" ,libxi)
99 ("libxtst" ,libxtst)
100 ("qtbase" ,qtbase)
101 ("qtx11extras" ,qtx11extras)
102 ("zlib" ,zlib)))
103 (native-inputs
104 `(("qttools" ,qttools)))
105 (home-page "https://www.keepassxc.org")
106 (synopsis "Password manager")
107 (description "KeePassXC is a password manager or safe which helps you to
108manage your passwords in a secure way. You can put all your passwords in one
109database, which is locked with one master key or a key-file which can be stored
110on an external storage device. The databases are encrypted using the
111algorithms AES or Twofish.")
112 ;; Non functional parts use various licences.
113 (license license:gpl3)))
114
e8647227
EF
115(define-public keepassx
116 (package
117 (name "keepassx")
a00fbe8a 118 (version "2.0.3")
e8647227
EF
119 (source
120 (origin
121 (method url-fetch)
e5be0e01
EF
122 (uri (string-append "https://www.keepassx.org/releases/" version
123 "/keepassx-" version ".tar.gz"))
e8647227 124 (sha256
2c5e4976 125 (base32
a00fbe8a 126 "1ia7cqx9ias38mnffsl7da7g1f66bcbjsi23k49sln0c6spb9zr3"))))
e8647227
EF
127 (build-system cmake-build-system)
128 (inputs
129 `(("libgcrypt" ,libgcrypt)
a00fbe8a 130 ("libxi" ,libxi)
e8647227
EF
131 ("libxtst" ,libxtst)
132 ("qt" ,qt-4)))
133 (native-inputs
134 `(("zlib" ,zlib)))
135 (home-page "https://www.keepassx.org")
136 (synopsis "Password manager")
137 (description "KeePassX is a password manager or safe which helps you to
138manage your passwords in a secure way. You can put all your passwords in one
139database, which is locked with one master key or a key-file which can be stored
140on an external storage device. The databases are encrypted using the
141algorithms AES or Twofish.")
142 ;; Non functional parts use various licences.
b7ac10e6
EF
143 (license license:gpl3)
144 (properties `((superseded . ,keepassxc)))))
dd24e906
DT
145
146(define-public shroud
147 (package
148 (name "shroud")
b4aa6d3d 149 (version "0.1.1")
dd24e906
DT
150 (source (origin
151 (method url-fetch)
a652eb93 152 (uri (string-append "https://files.dthompson.us/shroud/shroud-"
dd24e906
DT
153 version ".tar.gz"))
154 (sha256
155 (base32
b4aa6d3d 156 "1y43yhgy2zbrk5bqj3qyx9rkcz2bma9sinlrg7dip3jqms9gq4lr"))))
dd24e906 157 (build-system gnu-build-system)
df0e8a23
SB
158 (arguments
159 '(#:phases
160 (modify-phases %standard-phases
161 (add-after 'install 'wrap-shroud
162 (lambda* (#:key outputs #:allow-other-keys)
163 (let* ((out (assoc-ref outputs "out"))
164 (ccachedir (string-append out "/lib/guile/2.0/ccache"))
165 (prog (string-append out "/bin/shroud")))
166 (wrap-program prog
167 `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,ccachedir)))
168 #t))))))
dd24e906
DT
169 (inputs
170 `(("guile" ,guile-2.0)
171 ("gnupg" ,gnupg)
172 ("xclip" ,xclip)))
173 (synopsis "GnuPG-based secret manager")
174 (description "Shroud is a simple secret manager with a command line
175interface. The password database is stored as a Scheme s-expression and
176encrypted with a GnuPG key. Secrets consist of an arbitrary number of
177key/value pairs, making Shroud suitable for more than just password storage.
178For copying and pasting secrets into web browsers and other graphical
179applications, there is xclip integration." )
59d915ac 180 (home-page "https://dthompson.us/projects/shroud.html")
dd24e906 181 (license license:gpl3+)))
7e9b07bd
AP
182
183(define-public yapet
184 (package
185 (name "yapet")
186 (version "1.0")
187 (source (origin
188 (method url-fetch)
189 (uri (string-append "http://www.guengel.ch/myapps/yapet/downloads/yapet-"
190 version
191 ".tar.bz2"))
192 (sha256
193 (base32
194 "0ydbnqw6icdh07pnv2w6dhvq501bdfvrklv4xmyr8znca9d753if"))))
195 (build-system gnu-build-system)
196 (inputs
197 `(("ncurses" ,ncurses)
198 ("openssl" ,openssl)))
199 (native-inputs
200 `(("pkg-config" ,pkg-config)))
201 (synopsis "Yet Another Password Encryption Tool")
202 (description "YAPET is a text based password manager using the Blowfish
203encryption algorithm. Because of its small footprint and very few library
204dependencies, it is suited for installing on desktop and server systems alike.
205The text based user interface allows you to run YAPET easily in a Secure Shell
206session. Two companion utilities enable users to convert CSV files to YAPET
207and vice versa.")
208 (home-page "http://www.guengel.ch/myapps/yapet/")
209 (license license:gpl3+)))
72029c8b
SB
210
211(define-public cracklib
212 (package
213 (name "cracklib")
214 (version "2.9.6")
215 (source (origin
216 (method url-fetch)
217 (uri (string-append "https://github.com/cracklib/cracklib/"
218 "releases/download/" name "-" version "/"
219 name "-" version ".tar.gz"))
b0a56764
LF
220 (patches (search-patches "cracklib-CVE-2016-6318.patch"
221 "cracklib-fix-buffer-overflow.patch"))
72029c8b
SB
222 (sha256
223 (base32
224 "0hrkb0prf7n92w6rxgq0ilzkk6rkhpys2cfqkrbzswp27na7dkqp"))))
225 (build-system gnu-build-system)
226 (synopsis "Password checking library")
227 (home-page "https://github.com/cracklib/cracklib")
228 (description
229 "CrackLib is a library containing a C function which may be used in a
b1a686bb
TGR
230@command{passwd}-like program. The idea is simple: try to prevent users from
231choosing passwords that could easily be guessed (or \"cracked\") by filtering
232them out, at the source.")
72029c8b 233 (license license:lgpl2.1)))
c2fb2076
SB
234
235(define-public libpwquality
236 (package
237 (name "libpwquality")
4a577fef 238 (version "1.4.0")
c2fb2076
SB
239 (source (origin
240 (method url-fetch)
241 (uri (list
c18594dd
EJ
242 (string-append "https://github.com/" name "/" name
243 "/releases/download/" name "-" version
244 "/" name "-" version ".tar.bz2")
c2fb2076
SB
245 (string-append "https://launchpad.net/libpwquality/trunk/"
246 version "/+download/"
247 name "-" version ".tar.bz2")))
248 (sha256
249 (base32
4a577fef 250 "0syyz8r54l8mqmbb0mw19qz4z2cx8gdgidicb8k2s5zjdh2gzrhx"))))
c2fb2076
SB
251 (build-system gnu-build-system)
252 (arguments
253 ;; XXX: have RUNPATH issue.
254 '(#:configure-flags '("--disable-python-bindings")))
255 (inputs
256 `(("cracklib" ,cracklib)))
257 (synopsis "Password quality checker")
c18594dd 258 (home-page "https://github.com/libpwquality/libpwquality")
c2fb2076
SB
259 (description
260 "Libpwquality is a library for password quality checking and generation of
261random passwords that pass the checks.")
262 (license license:gpl2+)))
3d4f9d5c
CAW
263
264(define-public assword
265 (package
266 (name "assword")
f339f277 267 (version "0.10")
3d4f9d5c
CAW
268 (source (origin
269 (method url-fetch)
270 (uri (list
271 (string-append
272 "http://http.debian.net/debian/pool/main/a/assword/"
273 "assword_" version ".orig.tar.gz")))
274 (sha256
275 (base32
f339f277 276 "0l6170y6my1gprqkazvzabgjkrkr9v2q7z48vjflna4r323yqira"))))
3d4f9d5c 277 (arguments
f339f277 278 `(;; irritatingly, tests do run but not there are two problems:
3d4f9d5c
CAW
279 ;; - "import gtk" fails for unknown reasons here despite it the
280 ;; program working (indeed, I've found I have to do a logout and log
281 ;; back in in after an install order for some mumbo jumbo environment
282 ;; variable mess to work with pygtk and assword... what's up with
283 ;; that?)
284 ;; - even when the tests fail, they don't return a nonzero status,
285 ;; so I'm not sure how to programmatically get that information
286 #:tests? #f
287 #:phases
288 (modify-phases %standard-phases
0050876b
SB
289 (add-after 'install 'wrap-assword
290 (lambda* (#:key outputs #:allow-other-keys)
291 (let ((prog (string-append
292 (assoc-ref outputs "out")
293 "/bin/assword"))
294 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
295 (wrap-program prog
296 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))
297 #t)))
3d4f9d5c
CAW
298 (add-after 'install 'manpage
299 (lambda* (#:key outputs #:allow-other-keys)
300 (and
f339f277
LF
301 ;; Without this substitution, it fails with
302 ;; ImportError: No module named 'gpg'
303 (substitute* "Makefile"
304 (("PYTHONPATH=.") ""))
3d4f9d5c
CAW
305 (zero? (system* "make" "assword.1"))
306 (install-file
307 "assword.1"
308 (string-append (assoc-ref outputs "out") "/share/man/man1"))))))))
309 (build-system python-build-system)
310 (native-inputs
f339f277 311 `(("txt2man" ,txt2man)))
3d4f9d5c 312 (inputs
0050876b
SB
313 `(("gtk+" ,gtk+)
314 ("python-xdo" ,python-xdo)
f339f277
LF
315 ("python-gpg" ,python-gpg)
316 ("python-pygobject" ,python-pygobject)))
3d4f9d5c
CAW
317 (propagated-inputs
318 `(("xclip" ,xclip)))
319 (home-page "https://finestructure.net/assword/")
320 (synopsis "Password manager")
321 (description "assword is a simple password manager using GPG-wrapped
322JSON files. It has a command line interface as well as a very simple
323graphical interface, which can even \"type\" your passwords into
324any X11 window.")
325 (license license:gpl3+)))
c285a400
JT
326
327(define-public password-store
328 (package
329 (name "password-store")
4264db22 330 (version "1.7.1")
c285a400
JT
331 (source (origin
332 (method url-fetch)
333 (uri
334 (string-append "https://git.zx2c4.com/password-store/snapshot/"
335 name "-" version ".tar.xz"))
336 (sha256
337 (base32
4264db22 338 "0scqkpll2q8jhzcgcsh9kqz0gwdpvynivqjmmbzax2irjfaiklpn"))))
c285a400
JT
339 (build-system gnu-build-system)
340 (arguments
341 '(#:phases
342 (modify-phases %standard-phases
343 (delete 'configure)
619f98fa 344 (delete 'build)
61201e46
AG
345 (add-after 'install 'wrap-path
346 (lambda* (#:key inputs outputs #:allow-other-keys)
347 (let ((out (assoc-ref outputs "out"))
348 (path (map (lambda (pkg)
349 (string-append (assoc-ref inputs pkg) "/bin"))
81635fb6 350 '("coreutils" "getopt" "git" "gnupg" "qrencode"
61201e46
AG
351 "sed" "tree" "which" "xclip"))))
352 (wrap-program (string-append out "/bin/pass")
718c1278
MB
353 `("PATH" ":" prefix (,(string-join path ":"))))
354 #t)))
355 (add-after 'wrap-path 'install-shell-completions
356 (lambda* (#:key outputs #:allow-other-keys)
357 (let* ((out (assoc-ref outputs "out"))
358 (bashcomp (string-append out "/etc/bash_completion.d")))
359 ;; TODO: install fish and zsh completions.
360 (mkdir-p bashcomp)
361 (copy-file "src/completion/pass.bash-completion"
362 (string-append bashcomp "/pass"))
363 #t))))
c285a400 364 #:make-flags (list "CC=gcc" (string-append "PREFIX=" %output))
a77f0360
CB
365 ;; Parallel tests may cause a race condition leading to a
366 ;; timeout in some circumstances.
367 #:parallel-tests? #f
c285a400 368 #:test-target "test"))
61201e46
AG
369 (inputs
370 `(("getopt" ,util-linux)
371 ("git" ,git)
372 ("gnupg" ,gnupg)
81635fb6 373 ("qrencode" ,qrencode)
61201e46
AG
374 ("sed" ,sed)
375 ("tree" ,tree)
376 ("which" ,which)
377 ("xclip" ,xclip)))
c285a400
JT
378 (home-page "http://www.passwordstore.org/")
379 (synopsis "Encrypted password manager")
380 (description "Password-store is a password manager which uses GnuPG to
381store and retrieve passwords. The tool stores each password in its own
382GnuPG-encrypted file, allowing the program to be simple yet secure.
383Synchronization is possible using the integrated git support, which commits
384changes to your password database to a git repository that can be managed
385through the pass command.")
386 (license license:gpl2+)))
6d32dd8c
LG
387
388(define-public argon2
389 (package
390 (name "argon2")
1feeb2e0 391 (version "20161029")
6d32dd8c
LG
392 (source
393 (origin
394 (method url-fetch)
395 (uri
1feeb2e0
TGR
396 (string-append "https://github.com/P-H-C/phc-winner-argon2/archive/"
397 version ".tar.gz"))
6d32dd8c
LG
398 (file-name (string-append name "-" version ".tar.gz"))
399 (sha256
400 (base32
1feeb2e0 401 "1rymikbysasdadm325jx69i0q19d9srqkny69jwmhswlidr4j07y"))))
6d32dd8c
LG
402 (build-system gnu-build-system)
403 (arguments
404 `(#:test-target "test"
405 #:make-flags '("CC=gcc")
406 #:phases
407 (modify-phases %standard-phases
408 (delete 'configure)
409 (replace 'install
410 (lambda _
411 (let ((out (assoc-ref %outputs "out")))
412 (install-file "argon2" (string-append out "/bin"))
413 (install-file "libargon2.a" (string-append out "/lib"))
414 (install-file "libargon2.so" (string-append out "/lib"))
415 (copy-recursively "include"
416 (string-append out "/include"))))))))
417 (home-page "https://www.argon2.com/")
418 (synopsis "Password hashing library")
419 (description "Argon2 provides a key derivation function that was declared
420winner of the 2015 Password Hashing Competition.")
421 (license license:cc0)))
153e58c5
EF
422
423(define-public python-bcrypt
424 (package
425 (name "python-bcrypt")
426 (version "3.1.0")
427 (source
428 (origin
429 (method url-fetch)
430 (uri (pypi-uri "bcrypt" version))
431 (sha256
432 (base32
433 "1giy0dvd8gvq6flxh44np1v2nqwsji5qsnrz038mgwzgp7c20j75"))))
434 (build-system python-build-system)
435 (native-inputs
436 `(("python-pycparser" ,python-pycparser)
437 ("python-pytest" ,python-pytest)))
f22efa01 438 (propagated-inputs
153e58c5
EF
439 `(("python-cffi" ,python-cffi)
440 ("python-six" ,python-six)))
441 (home-page "https://github.com/pyca/bcrypt/")
442 (synopsis
443 "Modern password hashing library")
444 (description
445 "Bcrypt is a Python module which provides a password hashing method based
446on the Blowfish password hashing algorithm, as described in
447@url{http://static.usenix.org/events/usenix99/provos.html,\"A Future-Adaptable
448Password Scheme\"} by Niels Provos and David Mazieres.")
449 (license license:asl2.0)))
450
451(define-public python2-bcrypt
5c31f4aa 452 (package-with-python2 python-bcrypt))
a1714ff5
JL
453
454(define-public pass-git-helper
455 (package
456 (name "pass-git-helper")
457 (version "0.3.1")
458 (source
459 (origin
460 (method url-fetch)
461 (uri (string-append "https://github.com/languitar/pass-git-helper/archive/release-"
462 version ".tar.gz"))
463 (sha256
464 (base32
465 "0lz5ncy44pz7z1j2nnyildx8sq33zi3xvg5nkwg25n11nasqh2xn"))))
466 (build-system python-build-system)
467 (arguments
468 `(#:phases
469 (modify-phases %standard-phases
470 (add-before 'build 'patch-pass-path
471 (lambda* (#:key inputs #:allow-other-keys)
472 (let* ((password-store (assoc-ref inputs "password-store"))
473 (pass (string-append password-store "/bin/pass")))
474 (substitute* "pass-git-helper"
475 (("'pass'") (string-append "'" pass "'")))
476 #t))))))
477 (inputs
478 `(("python-pyxdg" ,python-pyxdg)
479 ("password-store" ,password-store)))
480 (home-page "https://github.com/languitar/pass-git-helper")
481 (synopsis "Git credential helper interfacing with pass")
482 (description "pass-git-helper is a git credential helper which allows to
483use pass, the standard unix password manager, as the credential backend for
484your git repositories. This is achieved by explicitly defining mappings
485between hosts and entries in the password store.")
486 (license license:lgpl3+)))
eb28a777
EB
487
488(define-public john-the-ripper-jumbo
489 (let ((official-version "1.8.0")
490 (jumbo-version "1"))
491 (package
492 (name "john-the-ripper-jumbo")
493 (version (string-append official-version "-" jumbo-version))
494 (source
495 (origin
496 (method url-fetch)
497 (uri (string-append "http://www.openwall.com/john/j/john-"
498 official-version "-jumbo-" jumbo-version ".tar.xz"))
499 (sha256
500 (base32
501 "08q92sfdvkz47rx6qjn7qv57cmlpy7i7rgddapq5384mb413vjds"))
502 (patches
503 (list (origin
504 (method url-fetch)
505 (uri (string-append "https://github.com/magnumripper/"
506 "JohnTheRipper/commit/"
507 "e2e868db3e153b3f959e119a51703d4afb99c624.patch"))
508 (file-name "john-the-ripper-jumbo-gcc5-inline.patch")
509 (sha256
510 (base32
511 "1shvcf1y2097115mxhzdkm64dr106a8zr6pqjqyh171q5ng5vfra")))
512 (origin
513 (method url-fetch)
514 (uri (string-append "https://github.com/magnumripper/"
515 "JohnTheRipper/commit/"
516 "480e95b0e449863be3e1a5b0bc634a67df28b618.patch"))
517 (file-name "john-the-ripper-jumbo-non-x86.patch")
518 (sha256
519 (base32
520 "1ffd9dvhk0sb6ss8dv5yalh01lz30i7rilqilf2xv68gax2hyjqx")))))))
521 (build-system gnu-build-system)
522 (inputs
523 `(("gmp" ,gmp)
524 ("krb5" ,mit-krb5)
525 ("libpcap" ,libpcap)
526 ("nss" ,nss)
527 ("openssl" ,openssl)
528 ("zlib" ,zlib)))
529 (arguments
530 `(#:configure-flags
531 (list (string-append
532 "CFLAGS=-O2 -g "
533 "-DJOHN_SYSTEMWIDE=1 "
534 "-DJOHN_SYSTEMWIDE_EXEC='\"" %output "/libexec/john\"' "
535 "-DJOHN_SYSTEMWIDE_HOME='\"" %output "/share/john\"'")
536 ;; For now, do not test for instruction set in configure, and
537 ;; do not pass '-march=native' to gcc:
538 "--disable-native-tests"
539 "--disable-native-macro")
540 #:tests? #f ;tests try to create '.john' in the build user's $HOME
541 #:phases
542 (modify-phases %standard-phases
543 (add-before 'configure 'chdir-src
544 (lambda _ (chdir "src")))
545 (replace 'install
546 (lambda _
547 (let ((bindir (string-append %output "/bin"))
548 (docdir (string-append %output "/share/doc/john"))
549 (execdir (string-append %output "/libexec/john"))
550 (homedir (string-append %output "/share/john"))
551 (install-file-to (lambda (dir)
552 (lambda (f) (install-file f dir))))
553 (symlink? (lambda (_ s) (eq? (stat:type s) 'symlink))))
554 (with-directory-excursion "../run"
555 (for-each (install-file-to execdir)
556 (cons* "mailer" "benchmark-unify"
557 (find-files "." ".*\\.(py|rb|pl)")))
558 (for-each (install-file-to homedir)
559 (append (find-files "." "(stats|dictionary.*)")
560 (find-files "." "(.*\\.chr|.*\\.lst)")
561 (find-files "." ".*\\.conf")))
562 (for-each (install-file-to bindir)
563 '("tgtsnarf" "genmkvpwd" "mkvcalcproba"
564 "raw2dyna" "luks2john" "vncpcap2john"
565 "uaf2john" "calc_stat" "wpapcap2john"
566 "cprepair" "relbench" "SIPdump" "john"))
567 (for-each (lambda (f) ;install symlinked aliases
568 (symlink "john"
569 (string-append bindir "/" (basename f))))
570 (find-files "." symlink?)))
571 (copy-recursively "../doc" docdir)
572 #t))))))
573 (home-page "http://www.openwall.com/john/")
574 (synopsis "Password cracker")
575 (description "John the Ripper is a fast password cracker. Its primary
576purpose is to detect weak Unix passwords. Besides several @code{crypt}
577password hash types most commonly found on various Unix systems, supported out
578of the box are Windows LM hashes, plus lots of other hashes and ciphers. This
579is the community-enhanced, \"jumbo\" version of John the Ripper.")
580 (license license:gpl2+))))