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