gnu: emacs-sly: Update to 20200228.
[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>
e1a94fe0 3;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 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>
55541556 9;;; Copyright © 2016, 2019 Alex Griffin <a@ajgrf.com>
f339f277 10;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
60628f54 11;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
9081333b 12;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
a1714ff5 13;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
e57c7dd7 14;;; Copyright © 2017, 2019 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>
c06bf6a3 18;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
649eb8b5 19;;; Copyright © 2018 Konrad Hinsen <konrad.hinsen@fastmail.net>
d4e0ebd0 20;;; Copyright © 2018 Thomas Sigurdsen <tonton@riseup.net>
20b51b17 21;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
4715f92e 22;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
037d1851 23;;; Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
747aa6c4 24;;; Copyright © 2018, 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
872da48e 25;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk>
f59ea3a7 26;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
d823fd96 27;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
df931ac3 28;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
de63b20e
SS
29;;;
30;;; This file is part of GNU Guix.
31;;;
32;;; GNU Guix is free software; you can redistribute it and/or modify it
33;;; under the terms of the GNU General Public License as published by
34;;; the Free Software Foundation; either version 3 of the License, or (at
35;;; your option) any later version.
36;;;
37;;; GNU Guix is distributed in the hope that it will be useful, but
38;;; WITHOUT ANY WARRANTY; without even the implied warranty of
39;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
40;;; GNU General Public License for more details.
41;;;
42;;; You should have received a copy of the GNU General Public License
43;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
44
45(define-module (gnu packages password-utils)
46 #:use-module ((guix licenses) #:prefix license:)
e8647227 47 #:use-module (guix build-system cmake)
de63b20e 48 #:use-module (guix build-system gnu)
f59ea3a7 49 #:use-module (guix build-system trivial)
de63b20e 50 #:use-module (guix download)
7d4b3e1e 51 #:use-module (guix git-download)
e8647227 52 #:use-module (guix packages)
53dcbbec 53 #:use-module (gnu packages)
c285a400 54 #:use-module (gnu packages admin)
81635fb6 55 #:use-module (gnu packages aidc)
54b41d2d 56 #:use-module (gnu packages authentication)
c285a400 57 #:use-module (gnu packages base)
ac257f12 58 #:use-module (gnu packages check)
e8647227 59 #:use-module (gnu packages compression)
da1b30bd 60 #:use-module (gnu packages crypto)
d823fd96 61 #:use-module (gnu packages cryptsetup)
da1b30bd 62 #:use-module (gnu packages curl)
7d4b3e1e 63 #:use-module (gnu packages file)
a1714ff5 64 #:use-module (gnu packages freedesktop)
7d4b3e1e 65 #:use-module (gnu packages gettext)
f339f277 66 #:use-module (gnu packages glib)
e8647227 67 #:use-module (gnu packages gnupg)
0050876b 68 #:use-module (gnu packages gtk)
dd24e906 69 #:use-module (gnu packages guile)
eb28a777 70 #:use-module (gnu packages kerberos)
0751fddd 71 #:use-module (gnu packages libffi)
c285a400 72 #:use-module (gnu packages linux)
3d4f9d5c 73 #:use-module (gnu packages man)
eb28a777 74 #:use-module (gnu packages multiprecision)
7e9b07bd 75 #:use-module (gnu packages ncurses)
aff0cce9 76 #:use-module (gnu packages nss)
c10aa278 77 #:use-module (gnu packages opencl)
eb4ffe9b 78 #:use-module (gnu packages perl)
7e9b07bd 79 #:use-module (gnu packages pkg-config)
3d4f9d5c 80 #:use-module (gnu packages python)
20b51b17 81 #:use-module (gnu packages python-web)
44d10b1f 82 #:use-module (gnu packages python-xyz)
24adcbab 83 #:use-module (gnu packages readline)
e57c7dd7 84 #:use-module (gnu packages ruby)
24adcbab 85 #:use-module (gnu packages security-token)
177475cf 86 #:use-module (gnu packages suckless)
54b41d2d 87 #:use-module (gnu packages tcl)
7e9b07bd 88 #:use-module (gnu packages tls)
e8647227 89 #:use-module (gnu packages qt)
c285a400 90 #:use-module (gnu packages version-control)
7d4b3e1e 91 #:use-module (gnu packages wxwidgets)
dd24e906 92 #:use-module (gnu packages xdisorg)
3d4f9d5c 93 #:use-module (gnu packages xorg)
d4e0ebd0 94 #:use-module (gnu packages xml)
3d4f9d5c 95 #:use-module (guix build-system python))
de63b20e
SS
96
97(define-public pwgen
98 (package
99 (name "pwgen")
5a2c4b3b 100 (version "2.08")
de63b20e
SS
101 (source
102 (origin
103 (method url-fetch)
de67e922
LF
104 (uri (string-append "mirror://sourceforge/pwgen/pwgen/" version
105 "/pwgen-" version ".tar.gz"))
de63b20e 106 (sha256
5a2c4b3b 107 (base32 "0yy90pqrr2pszzhb5hxjishq9qc7dqd290amiibqx9fm1b9kvc6s"))))
de63b20e
SS
108 (build-system gnu-build-system)
109 (arguments
110 `(#:tests? #f)) ; no test suite
111 (home-page "http://pwgen.sourceforge.net/")
112 (synopsis "Password generator")
113 (description "Pwgen generates passwords which can be easily memorized by a
114human.")
115 (license license:gpl2)))
e8647227 116
99672f7b
EF
117(define-public keepassxc
118 (package
119 (name "keepassxc")
71ffa528 120 (version "2.5.3")
99672f7b
EF
121 (source
122 (origin
123 (method url-fetch)
e2d14ee9 124 (uri (string-append "https://github.com/keepassxreboot/keepassxc"
99672f7b
EF
125 "/releases/download/" version "/keepassxc-"
126 version "-src.tar.xz"))
127 (sha256
71ffa528 128 (base32 "1sx647mp1xikig50p9bb6vxv18ymdfj3wkxj6qfdr1zfcv7gn005"))))
99672f7b 129 (build-system cmake-build-system)
da1b30bd 130 (arguments
24adcbab 131 '(#:configure-flags '("-DWITH_XC_ALL=YES"
0f3794fb 132 "-DWITH_XC_UPDATECHECK=NO")))
99672f7b 133 (inputs
3374dcc7
EF
134 `(("argon2" ,argon2)
135 ("libgcrypt" ,libgcrypt)
0e5d66ab 136 ("libsodium" ,libsodium) ; XC_BROWSER
24adcbab 137 ("libyubikey" ,libyubikey) ; XC_YUBIKEY
99672f7b
EF
138 ("libxi" ,libxi)
139 ("libxtst" ,libxtst)
0f3794fb 140 ("qrencode" ,qrencode)
99672f7b 141 ("qtbase" ,qtbase)
0f3794fb 142 ("qtsvg" ,qtsvg)
99672f7b 143 ("qtx11extras" ,qtx11extras)
24adcbab
EF
144 ("quazip" ,quazip) ; XC_KEESHARE
145 ("readline" ,readline)
146 ("yubikey-personalization" ,yubikey-personalization) ; XC_YUBIKEY
99672f7b
EF
147 ("zlib" ,zlib)))
148 (native-inputs
149 `(("qttools" ,qttools)))
150 (home-page "https://www.keepassxc.org")
151 (synopsis "Password manager")
152 (description "KeePassXC is a password manager or safe which helps you to
153manage your passwords in a secure way. You can put all your passwords in one
154database, which is locked with one master key or a key-file which can be stored
155on an external storage device. The databases are encrypted using the
156algorithms AES or Twofish.")
24adcbab
EF
157 ;; While various parts of the software are licensed under different licenses,
158 ;; the combined work falls under the GPLv3.
99672f7b
EF
159 (license license:gpl3)))
160
e8647227
EF
161(define-public keepassx
162 (package
163 (name "keepassx")
a00fbe8a 164 (version "2.0.3")
e8647227
EF
165 (source
166 (origin
167 (method url-fetch)
e5be0e01
EF
168 (uri (string-append "https://www.keepassx.org/releases/" version
169 "/keepassx-" version ".tar.gz"))
e8647227 170 (sha256
2c5e4976 171 (base32
a00fbe8a 172 "1ia7cqx9ias38mnffsl7da7g1f66bcbjsi23k49sln0c6spb9zr3"))))
e8647227
EF
173 (build-system cmake-build-system)
174 (inputs
175 `(("libgcrypt" ,libgcrypt)
a00fbe8a 176 ("libxi" ,libxi)
e8647227
EF
177 ("libxtst" ,libxtst)
178 ("qt" ,qt-4)))
179 (native-inputs
180 `(("zlib" ,zlib)))
181 (home-page "https://www.keepassx.org")
182 (synopsis "Password manager")
183 (description "KeePassX is a password manager or safe which helps you to
184manage your passwords in a secure way. You can put all your passwords in one
185database, which is locked with one master key or a key-file which can be stored
186on an external storage device. The databases are encrypted using the
187algorithms AES or Twofish.")
188 ;; Non functional parts use various licences.
b7ac10e6
EF
189 (license license:gpl3)
190 (properties `((superseded . ,keepassxc)))))
dd24e906 191
7d4b3e1e
TG
192(define-public pwsafe
193 (package
194 (name "pwsafe")
747aa6c4
TG
195 (version "3.50.0")
196 (home-page "https://www.pwsafe.org/")
7d4b3e1e
TG
197 (source
198 (origin
199 (method git-fetch)
200 (uri (git-reference
201 (url "https://github.com/pwsafe/pwsafe.git")
202 (commit version)))
747aa6c4
TG
203 (sha256
204 (base32 "01kfssd2vr64yh4dqhch58x36n3aj3hpj5n560f41rsxym69c6qs"))
205 (file-name (git-file-name name version))))
7d4b3e1e 206 (build-system cmake-build-system)
50bfb70b
EF
207 (native-inputs
208 `(("gettext" ,gettext-minimal)
209 ("gtest" ,googletest)
210 ("perl" ,perl)
211 ("zip" ,zip)))
7d4b3e1e
TG
212 (inputs `(("curl" ,curl)
213 ("file" ,file)
7d4b3e1e
TG
214 ("libuuid" ,util-linux)
215 ("libxt" ,libxt)
216 ("libxtst" ,libxtst)
217 ("openssl" ,openssl)
218 ("qrencode" ,qrencode)
219 ("wxwidgets" ,wxwidgets)
220 ("xerces-c" ,xerces-c)))
221 (arguments '(#:configure-flags (list "-DNO_GTEST=YES")
222 #:phases (modify-phases %standard-phases
223 (add-after 'unpack 'add-gtest
224 (lambda* (#:key inputs #:allow-other-keys)
225 (chmod "CMakeLists.txt" #o644)
226 (let ((cmake-port (open-file "CMakeLists.txt"
227 "a")))
228 (display "find_package(GTest)
229add_subdirectory(src/test)\n" cmake-port)
230 (close cmake-port)
231 #t)))
232 (add-after 'add-gtest 'patch-executables
233 (lambda* (#:key inputs #:allow-other-keys)
234 (chmod "src/test/OSTest.cpp" #o644)
235 (substitute* "src/os/unix/media.cpp"
236 (("/usr/bin/file")
237 (string-append (assoc-ref inputs "file")
238 "/bin/file")))
239 #t)))))
240 (synopsis "Password safe with automatic input and key generation")
241 (description "pwsafe is a password manager originally designed by Bruce
242Schneier. It offers a simple UI to manage passwords for different services.
243There are other programs that support the file format on different
244platforms.")
245 (license license:artistic2.0)))
246
dd24e906
DT
247(define-public shroud
248 (package
249 (name "shroud")
7dff3225 250 (version "0.1.2")
dd24e906
DT
251 (source (origin
252 (method url-fetch)
a652eb93 253 (uri (string-append "https://files.dthompson.us/shroud/shroud-"
dd24e906
DT
254 version ".tar.gz"))
255 (sha256
256 (base32
7dff3225 257 "1l2shrhvcwfzkar9qiwb75nhcqmx25iz55lzmz0c187nbjhqzi9p"))))
dd24e906 258 (build-system gnu-build-system)
7dff3225
AS
259 (native-inputs
260 `(("pkg-config" ,pkg-config)))
df0e8a23 261 (arguments
7dff3225
AS
262 `(#:modules ((guix build gnu-build-system)
263 (guix build utils)
264 (ice-9 popen)
265 (ice-9 rdelim))
266 #:phases
df0e8a23
SB
267 (modify-phases %standard-phases
268 (add-after 'install 'wrap-shroud
7dff3225 269 (lambda* (#:key inputs outputs #:allow-other-keys)
df0e8a23 270 (let* ((out (assoc-ref outputs "out"))
7dff3225
AS
271 (guile (assoc-ref inputs "guile"))
272 (effective (read-line
273 (open-pipe* OPEN_READ
274 (string-append guile "/bin/guile")
275 "-c" "(display (effective-version))")))
276 (ccachedir (string-append out
277 "/lib/guile/" effective "/site-ccache"))
df0e8a23
SB
278 (prog (string-append out "/bin/shroud")))
279 (wrap-program prog
280 `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,ccachedir)))
281 #t))))))
dd24e906 282 (inputs
7dff3225 283 `(("guile" ,guile-2.2)
dd24e906
DT
284 ("gnupg" ,gnupg)
285 ("xclip" ,xclip)))
286 (synopsis "GnuPG-based secret manager")
287 (description "Shroud is a simple secret manager with a command line
288interface. The password database is stored as a Scheme s-expression and
289encrypted with a GnuPG key. Secrets consist of an arbitrary number of
290key/value pairs, making Shroud suitable for more than just password storage.
291For copying and pasting secrets into web browsers and other graphical
292applications, there is xclip integration." )
59d915ac 293 (home-page "https://dthompson.us/projects/shroud.html")
dd24e906 294 (license license:gpl3+)))
7e9b07bd
AP
295
296(define-public yapet
297 (package
298 (name "yapet")
988f53e1
TGR
299 (version "2.3")
300 (source
301 (origin
302 (method url-fetch)
303 (uri (string-append "https://yapet.guengel.ch/downloads/yapet-"
304 version ".tar.xz"))
305 (sha256
306 (base32 "1fl4s7v1psl52ndd6i7716i9f493aj8ipl6lgmraadnn5h26l3pm"))))
7e9b07bd
AP
307 (build-system gnu-build-system)
308 (inputs
988f53e1
TGR
309 `(("argon2" ,argon2)
310 ("ncurses" ,ncurses)
7e9b07bd
AP
311 ("openssl" ,openssl)))
312 (native-inputs
988f53e1
TGR
313 `(("cppunit" ,cppunit)
314 ("pkg-config" ,pkg-config)))
7e9b07bd
AP
315 (synopsis "Yet Another Password Encryption Tool")
316 (description "YAPET is a text based password manager using the Blowfish
317encryption algorithm. Because of its small footprint and very few library
318dependencies, it is suited for installing on desktop and server systems alike.
319The text based user interface allows you to run YAPET easily in a Secure Shell
320session. Two companion utilities enable users to convert CSV files to YAPET
321and vice versa.")
3fc0b54e 322 (home-page "https://yapet.guengel.ch/")
7e9b07bd 323 (license license:gpl3+)))
72029c8b
SB
324
325(define-public cracklib
326 (package
327 (name "cracklib")
9081333b
TGR
328 (version "2.9.7")
329 (source
330 (origin
331 (method url-fetch)
332 (uri (string-append "https://github.com/cracklib/cracklib/"
333 "releases/download/v" version "/"
334 "cracklib-" version ".tar.bz2"))
335 (sha256
336 (base32 "1rimpjsdnmw8f5b7k558cic41p2qy2n2yrlqp5vh7mp4162hk0py"))))
72029c8b 337 (build-system gnu-build-system)
27faad22
FP
338 (arguments
339 `(#:phases
340 (modify-phases %standard-phases
341 (add-after 'install 'install-dict
342 (lambda* (#:key make-flags #:allow-other-keys)
343 (begin
344 (chmod (string-append "util/cracklib-format") #o755)
345 (apply invoke "make" "dict" make-flags)
346 #t))))))
72029c8b
SB
347 (synopsis "Password checking library")
348 (home-page "https://github.com/cracklib/cracklib")
349 (description
350 "CrackLib is a library containing a C function which may be used in a
b1a686bb
TGR
351@command{passwd}-like program. The idea is simple: try to prevent users from
352choosing passwords that could easily be guessed (or \"cracked\") by filtering
353them out, at the source.")
72029c8b 354 (license license:lgpl2.1)))
c2fb2076
SB
355
356(define-public libpwquality
357 (package
358 (name "libpwquality")
6bd856d1 359 (version "1.4.2")
c2fb2076
SB
360 (source (origin
361 (method url-fetch)
362 (uri (list
2f6a158b
TGR
363 (string-append "https://github.com/libpwquality/libpwquality"
364 "/releases/download/libpwquality-" version
365 "/libpwquality-" version ".tar.bz2")
c2fb2076
SB
366 (string-append "https://launchpad.net/libpwquality/trunk/"
367 version "/+download/"
2f6a158b 368 "libpwquality-" version ".tar.bz2")))
c2fb2076
SB
369 (sha256
370 (base32
6bd856d1 371 "13hw532fmzc5xjpy75d74rlfdlxf2a8ibb4hyy9c0s92wsgf0qsj"))))
c2fb2076
SB
372 (build-system gnu-build-system)
373 (arguments
374 ;; XXX: have RUNPATH issue.
375 '(#:configure-flags '("--disable-python-bindings")))
376 (inputs
377 `(("cracklib" ,cracklib)))
378 (synopsis "Password quality checker")
c18594dd 379 (home-page "https://github.com/libpwquality/libpwquality")
c2fb2076
SB
380 (description
381 "Libpwquality is a library for password quality checking and generation of
382random passwords that pass the checks.")
383 (license license:gpl2+)))
3d4f9d5c
CAW
384
385(define-public assword
386 (package
387 (name "assword")
d504de26 388 (version "0.11")
3d4f9d5c
CAW
389 (source (origin
390 (method url-fetch)
391 (uri (list
392 (string-append
393 "http://http.debian.net/debian/pool/main/a/assword/"
394 "assword_" version ".orig.tar.gz")))
395 (sha256
396 (base32
d504de26 397 "03gkb6kvsghznbcw5l7nmrc6mn3ixkjd5jcs96ni4zs9l47jf7yp"))))
3d4f9d5c 398 (arguments
f339f277 399 `(;; irritatingly, tests do run but not there are two problems:
3d4f9d5c
CAW
400 ;; - "import gtk" fails for unknown reasons here despite it the
401 ;; program working (indeed, I've found I have to do a logout and log
402 ;; back in in after an install order for some mumbo jumbo environment
403 ;; variable mess to work with pygtk and assword... what's up with
404 ;; that?)
405 ;; - even when the tests fail, they don't return a nonzero status,
406 ;; so I'm not sure how to programmatically get that information
407 #:tests? #f
408 #:phases
409 (modify-phases %standard-phases
0050876b
SB
410 (add-after 'install 'wrap-assword
411 (lambda* (#:key outputs #:allow-other-keys)
412 (let ((prog (string-append
413 (assoc-ref outputs "out")
414 "/bin/assword"))
415 (gi-typelib-path (getenv "GI_TYPELIB_PATH")))
416 (wrap-program prog
417 `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))
418 #t)))
3d4f9d5c
CAW
419 (add-after 'install 'manpage
420 (lambda* (#:key outputs #:allow-other-keys)
3692cffe
RW
421 ;; Without this substitution, it fails with
422 ;; ImportError: No module named 'gpg'
423 (substitute* "Makefile"
424 (("PYTHONPATH=.") ""))
425 (invoke "make" "assword.1")
426 (install-file
427 "assword.1"
428 (string-append (assoc-ref outputs "out") "/share/man/man1")))))))
3d4f9d5c
CAW
429 (build-system python-build-system)
430 (native-inputs
f339f277 431 `(("txt2man" ,txt2man)))
3d4f9d5c 432 (inputs
0050876b
SB
433 `(("gtk+" ,gtk+)
434 ("python-xdo" ,python-xdo)
f339f277
LF
435 ("python-gpg" ,python-gpg)
436 ("python-pygobject" ,python-pygobject)))
3d4f9d5c
CAW
437 (propagated-inputs
438 `(("xclip" ,xclip)))
439 (home-page "https://finestructure.net/assword/")
440 (synopsis "Password manager")
441 (description "assword is a simple password manager using GPG-wrapped
442JSON files. It has a command line interface as well as a very simple
443graphical interface, which can even \"type\" your passwords into
444any X11 window.")
445 (license license:gpl3+)))
c285a400
JT
446
447(define-public password-store
448 (package
449 (name "password-store")
3e9aa5cf 450 (version "1.7.3")
c285a400
JT
451 (source (origin
452 (method url-fetch)
453 (uri
454 (string-append "https://git.zx2c4.com/password-store/snapshot/"
455 name "-" version ".tar.xz"))
456 (sha256
457 (base32
3e9aa5cf 458 "1x53k5dn3cdmvy8m4fqdld4hji5n676ksl0ql4armkmsds26av1b"))))
c285a400
JT
459 (build-system gnu-build-system)
460 (arguments
461 '(#:phases
462 (modify-phases %standard-phases
463 (delete 'configure)
619f98fa 464 (delete 'build)
55541556
AG
465 (add-before 'install 'patch-system-extension-dir
466 (lambda* (#:key outputs #:allow-other-keys)
467 (let* ((out (assoc-ref outputs "out"))
468 (extension-dir (string-append out "/lib/password-store/extensions")))
469 (substitute* "src/password-store.sh"
470 (("^SYSTEM_EXTENSION_DIR=.*$")
471 ;; lead with whitespace to prevent 'make install' from
472 ;; overwriting it again
473 (string-append " SYSTEM_EXTENSION_DIR=\""
474 "${PASSWORD_STORE_SYSTEM_EXTENSION_DIR:-"
475 extension-dir
476 "}\"\n"))))
477 #t))
177475cf
JL
478 (add-before 'install 'patch-passmenu-path
479 (lambda* (#:key inputs #:allow-other-keys)
480 (substitute* "contrib/dmenu/passmenu"
481 (("dmenu") (string-append (assoc-ref inputs "dmenu")
482 "/bin/dmenu"))
483 (("xdotool") (string-append (assoc-ref inputs "xdotool")
484 "/bin/xdotool")))
485 #t))
486 (add-after 'install 'install-passmenu
487 (lambda* (#:key outputs #:allow-other-keys)
e9ce6425
TGR
488 (let* ((out (assoc-ref outputs "out"))
489 (bin (string-append out "/bin")))
490 (install-file "contrib/dmenu/passmenu" bin)
177475cf 491 #t)))
61201e46
AG
492 (add-after 'install 'wrap-path
493 (lambda* (#:key inputs outputs #:allow-other-keys)
494 (let ((out (assoc-ref outputs "out"))
495 (path (map (lambda (pkg)
496 (string-append (assoc-ref inputs pkg) "/bin"))
81635fb6 497 '("coreutils" "getopt" "git" "gnupg" "qrencode"
61201e46
AG
498 "sed" "tree" "which" "xclip"))))
499 (wrap-program (string-append out "/bin/pass")
718c1278 500 `("PATH" ":" prefix (,(string-join path ":"))))
718c1278 501 #t))))
df931ac3
BW
502 #:make-flags (list "CC=gcc" (string-append "PREFIX=" %output)
503 "WITH_ALLCOMP=yes"
504 (string-append "BASHCOMPDIR="
505 %output "/etc/bash_completion.d"))
a77f0360
CB
506 ;; Parallel tests may cause a race condition leading to a
507 ;; timeout in some circumstances.
508 #:parallel-tests? #f
c285a400 509 #:test-target "test"))
55541556
AG
510 (native-search-paths
511 (list (search-path-specification
512 (variable "PASSWORD_STORE_SYSTEM_EXTENSION_DIR")
869a4c0f 513 (separator #f) ;single entry
55541556 514 (files '("lib/password-store/extensions")))))
61201e46 515 (inputs
177475cf
JL
516 `(("dmenu" ,dmenu)
517 ("getopt" ,util-linux)
61201e46
AG
518 ("git" ,git)
519 ("gnupg" ,gnupg)
81635fb6 520 ("qrencode" ,qrencode)
61201e46
AG
521 ("sed" ,sed)
522 ("tree" ,tree)
523 ("which" ,which)
177475cf
JL
524 ("xclip" ,xclip)
525 ("xdotool" ,xdotool)))
62ab60aa 526 (home-page "https://www.passwordstore.org/")
c285a400
JT
527 (synopsis "Encrypted password manager")
528 (description "Password-store is a password manager which uses GnuPG to
529store and retrieve passwords. The tool stores each password in its own
530GnuPG-encrypted file, allowing the program to be simple yet secure.
531Synchronization is possible using the integrated git support, which commits
532changes to your password database to a git repository that can be managed
533through the pass command.")
534 (license license:gpl2+)))
6d32dd8c 535
54b41d2d
AG
536(define-public pass-otp
537 (package
538 (name "pass-otp")
539 (version "1.2.0")
540 (source
541 (origin
542 (method url-fetch)
543 (uri
544 (string-append "https://github.com/tadfisher/pass-otp/releases/"
545 "download/v" version "/pass-otp-" version ".tar.gz"))
546 (sha256
547 (base32
548 "0rrs3iazq80dn0wbl20xkh270428jd8l99m5gd7hl93s4r4sc82p"))))
549 (build-system gnu-build-system)
550 (arguments
551 '(#:make-flags
552 (let* ((out (assoc-ref %outputs "out"))
553 (bashcomp (string-append out "/etc/bash_completion.d")))
554 (list (string-append "PREFIX=" %output)
555 (string-append "BASHCOMPDIR=" bashcomp)))
556 #:phases
557 (modify-phases %standard-phases
558 (delete 'configure)
559 (add-after 'build 'patch-oath-path
560 (lambda* (#:key inputs #:allow-other-keys)
561 (substitute* "otp.bash"
562 (("^OATH=.*$")
563 (string-append
564 "OATH="
565 (assoc-ref inputs "oath-toolkit")
566 "/bin/oathtool\n")))
567 #t)))
568 #:test-target "test"))
569 (inputs
570 `(("oath-toolkit" ,oath-toolkit)))
571 (native-inputs
572 `(("password-store" ,password-store)
573 ("expect" ,expect)
574 ("git" ,git)
575 ("gnupg" ,gnupg)
576 ("which" ,which)))
577 (home-page "https://github.com/tadfisher/pass-otp")
578 (synopsis "Pass extension for managing one-time-password (OTP) tokens")
579 (description
580 "Pass OTP is an extension for password-store that allows adding
581one-time-password (OTP) secrets, generating OTP codes, and displaying secret
582key URIs using the standard otpauth:// scheme.")
583 (license license:gpl3+)))
584
872da48e
JM
585(define-public qtpass
586 (package
587 (name "qtpass")
588 (version "1.2.3")
589 (source
590 (origin
591 (method git-fetch)
592 (uri (git-reference
593 (url "https://github.com/IJHack/QtPass.git")
594 (commit (string-append "v" version))))
595 (file-name (git-file-name name version))
596 (sha256
597 (base32
598 "1vfhfyccrxq9snyvayqfzm5rqik8ny2gysyv7nipc91kvhq3bhky"))))
599 (build-system gnu-build-system)
600 (arguments
601 `(#:phases
602 (modify-phases %standard-phases
603 (replace 'configure
604 (lambda* (#:key inputs outputs #:allow-other-keys)
605 (let ((out (assoc-ref outputs "out")))
606 ;; lupdate/lrelease need to find qmake.
607 (setenv "QMAKE" "qmake")
608 ;; qmake needs to find lrelease/lupdate.
609 (invoke "qmake"
610 "QMAKE_LRELEASE=lrelease"
611 "QMAKE_LUPDATE=lupdate"
612 (string-append "PREFIX=" out)))))
613 (add-after 'configure 'reset-resource-timestamps
614 ;; Reset timestamps on localization files for a reproducible build.
615 (lambda _
616 (with-directory-excursion "localization"
617 (for-each (lambda (file)
618 (let* ((base (basename file ".qm"))
619 (src (string-append base ".ts"))
620 (st (stat src)))
621 (set-file-time file st)))
622 (find-files "." ".*\\.qm")))
623 #t))
624 (add-after 'install 'install-auxilliary
625 ;; Install man-page, icon and .desktop file.
626 (lambda* (#:key inputs outputs #:allow-other-keys)
627 (let* ((out (assoc-ref outputs "out"))
628 (applications (string-append out "/share/applications"))
629 (icons (string-append out "/share/icons/hicolor/scalable/apps"))
630 (man (string-append out "/share/man/man1")))
631 (install-file "qtpass.desktop" applications)
632 (install-file "artwork/icon.svg" icons)
633 (rename-file (string-append icons "/icon.svg")
634 (string-append icons "/qtpass-icon.svg"))
635 (install-file "qtpass.1" man)
636 #t)))
637 (add-before 'check 'check-setup
638 ;; Make Qt render "offscreen", required for tests.
639 (lambda _
640 (setenv "QT_QPA_PLATFORM" "offscreen")
641 #t)))))
642 (native-inputs
643 `(("qttools" ,qttools)))
644 (inputs
645 `(("qtbase" ,qtbase)
646 ("qtsvg" ,qtsvg)))
647 (home-page "https://qtpass.org")
648 (synopsis "GUI for password manager password-store")
649 (description
650 "Qt-based graphical user interface for the password manager
651password-store also known as pass. Can use either pass or gpg to interact
652with password-store files. Features configurable password generation,
653templates, clipboard handling, and per folder settings for multi-recipient
654encryption.")
655 (license license:gpl3+)))
656
f59ea3a7
TLC
657(define-public rofi-pass
658 (package
659 (name "rofi-pass")
660 (version "2.0.2")
661 (source
662 (origin
663 (method url-fetch)
664 (uri
665 (string-append "https://raw.githubusercontent.com/carnager/rofi-pass/"
666 version "/rofi-pass"))
667 (sha256
668 (base32 "0msldkndqp40nx1s5s7ggcr97ir4nshpmnyzvj5hqw1l7m3gvw6j"))
669 (file-name name)))
670 (build-system trivial-build-system)
671 (arguments
672 `(#:modules ((guix build utils))
673 #:builder
674 (begin
675 (use-modules (guix build utils))
676 (let ((source (string-append (assoc-ref %build-inputs "source")))
677 (script "rofi-pass")
678 (out (assoc-ref %outputs "out")))
679 (copy-file source script)
680 (chmod script #o555)
681 (install-file script (string-append out "/bin"))))))
682 (propagated-inputs
683 `(("password-store" ,password-store)
684 ("rofi" ,rofi)
685 ("xdotool" ,xdotool)))
686 (home-page "https://github.com/carnager/rofi-pass")
687 (synopsis "Rofi frontend for password-store")
688 (description "Rofi-pass provides a way to manipulate information stored
689using password-store through rofi interface:
690@enumerate
691@item open URLs of entries with hotkey;
692@item type any field from entry;
693@item auto-typing of user and/or password fields;
694@item auto-typing username based on path;
695@item auto-typing of more than one field, using the autotype entry;
696@item bookmarks mode (open stored URLs in browser, default: Alt+x).
697@end enumerate")
698 (license license:gpl3)))
699
6d32dd8c
LG
700(define-public argon2
701 (package
702 (name "argon2")
fe109349 703 (version "20190702")
6d32dd8c
LG
704 (source
705 (origin
c600cf2a
EF
706 (method git-fetch)
707 (uri (git-reference
708 (url "https://github.com/P-H-C/phc-winner-argon2")
709 (commit version)))
710 (file-name (git-file-name name version))
6d32dd8c
LG
711 (sha256
712 (base32
fe109349 713 "01rwanr4wmr9vm6c712x411wig543q195z2icn388z892a93lc7p"))))
6d32dd8c
LG
714 (build-system gnu-build-system)
715 (arguments
716 `(#:test-target "test"
fe109349
EF
717 #:make-flags (list "CC=gcc"
718 (string-append "PREFIX=" (assoc-ref %outputs "out"))
719 "LIBRARY_REL=lib"
720 (string-append "ARGON2_VERSION=" ,version)
721 "OPTTEST=1") ; disable CPU optimization
6d32dd8c
LG
722 #:phases
723 (modify-phases %standard-phases
fe109349 724 (delete 'configure)))) ; No configure script.
6d32dd8c
LG
725 (home-page "https://www.argon2.com/")
726 (synopsis "Password hashing library")
727 (description "Argon2 provides a key derivation function that was declared
728winner of the 2015 Password Hashing Competition.")
c06bf6a3
MB
729 ;; Argon2 is dual licensed under CC0 and ASL 2.0. Some of the source
730 ;; files are CC0 only; see README.md and LICENSE for details.
731 (license (list license:cc0 license:asl2.0))))
153e58c5 732
a1714ff5
JL
733(define-public pass-git-helper
734 (package
735 (name "pass-git-helper")
b70f9ad1 736 (version "1.1.0")
a1714ff5
JL
737 (source
738 (origin
df58cc9c
EF
739 (method git-fetch)
740 (uri (git-reference
741 (url "https://github.com/languitar/pass-git-helper")
b70f9ad1 742 (commit (string-append "v" version))))
df58cc9c 743 (file-name (git-file-name name version))
a1714ff5
JL
744 (sha256
745 (base32
b70f9ad1 746 "18nvwlp0w4aqj268wly60rnjzqw2d8jl0hbs6bkwp3hpzzz5g6yd"))))
a1714ff5
JL
747 (build-system python-build-system)
748 (arguments
749 `(#:phases
750 (modify-phases %standard-phases
751 (add-before 'build 'patch-pass-path
752 (lambda* (#:key inputs #:allow-other-keys)
753 (let* ((password-store (assoc-ref inputs "password-store"))
754 (pass (string-append password-store "/bin/pass")))
54bcc27f
EF
755 (substitute* '("passgithelper.py"
756 "test_passgithelper.py")
a1714ff5 757 (("'pass'") (string-append "'" pass "'")))
b70f9ad1 758 #t)))
54bcc27f 759 (replace 'check
b70f9ad1
EF
760 (lambda _
761 (setenv "HOME" (getcwd))
54bcc27f 762 (invoke "pytest"))))))
a1714ff5
JL
763 (inputs
764 `(("python-pyxdg" ,python-pyxdg)
765 ("password-store" ,password-store)))
b70f9ad1
EF
766 (native-inputs
767 `(("python-pytest" ,python-pytest)
768 ("python-pytest-mock" ,python-pytest-mock)))
a1714ff5
JL
769 (home-page "https://github.com/languitar/pass-git-helper")
770 (synopsis "Git credential helper interfacing with pass")
771 (description "pass-git-helper is a git credential helper which allows to
772use pass, the standard unix password manager, as the credential backend for
773your git repositories. This is achieved by explicitly defining mappings
774between hosts and entries in the password store.")
775 (license license:lgpl3+)))
eb28a777
EB
776
777(define-public john-the-ripper-jumbo
e57c7dd7 778 (let ((official-version "1.9.0")
eb28a777
EB
779 (jumbo-version "1"))
780 (package
781 (name "john-the-ripper-jumbo")
782 (version (string-append official-version "-" jumbo-version))
783 (source
784 (origin
785 (method url-fetch)
786 (uri (string-append "http://www.openwall.com/john/j/john-"
787 official-version "-jumbo-" jumbo-version ".tar.xz"))
788 (sha256
789 (base32
e57c7dd7 790 "0fvz3v41hnaiv1ggpxanfykyfjq79cwp9qcqqn63vic357w27lgm"))))
eb28a777 791 (build-system gnu-build-system)
e57c7dd7
EB
792 (native-inputs
793 `(("perl" ,perl)))
eb28a777
EB
794 (inputs
795 `(("gmp" ,gmp)
eb28a777
EB
796 ("libpcap" ,libpcap)
797 ("nss" ,nss)
1a58e1d4 798 ("openssl" ,openssl-1.0)
e57c7dd7
EB
799 ("python" ,python-2) ; For "python" and "python2" shebangs
800 ("ruby" ,ruby) ; For genincstats.rb
eb28a777
EB
801 ("zlib" ,zlib)))
802 (arguments
803 `(#:configure-flags
e57c7dd7
EB
804 (list "--with-systemwide"
805 ;; Do not test for instruction set in configure, and do not
806 ;; pass '-march=native' to gcc:
eb28a777 807 "--disable-native-tests"
e57c7dd7
EB
808 "--disable-native-march"
809 ,(string-append
810 "--enable-simd="
811 (let ((system (or (%current-target-system)
812 (%current-system))))
813 (cond
814 ((or (string-prefix? "x86_64" system)
815 (string-prefix? "i686" system)) "sse2")
816 ((string-prefix? "aarch" system) "neon")
817 (else "no")))))
eb28a777
EB
818 #:phases
819 (modify-phases %standard-phases
820 (add-before 'configure 'chdir-src
e57c7dd7 821 (lambda _ (chdir "src") #t))
eb28a777
EB
822 (replace 'install
823 (lambda _
824 (let ((bindir (string-append %output "/bin"))
825 (docdir (string-append %output "/share/doc/john"))
826 (execdir (string-append %output "/libexec/john"))
e57c7dd7 827 (datadir (string-append %output "/share/john"))
eb28a777
EB
828 (install-file-to (lambda (dir)
829 (lambda (f) (install-file f dir))))
830 (symlink? (lambda (_ s) (eq? (stat:type s) 'symlink))))
831 (with-directory-excursion "../run"
e57c7dd7
EB
832 (for-each (install-file-to bindir)
833 (cons*
834 "john" "makechr" "cprepair" "SIPdump" "tgtsnarf"
835 "genmkvpwd" "mkvcalcproba" "calc_stat" "raw2dyna"
836 (find-files "." "(to|2)?john(-[^.]*)?$")))
837 (for-each (lambda (f) ; Install symlinked aliases
838 (let ((tgt (string-append bindir "/" (basename f))))
839 ;; The use of install-file above dereferences
840 ;; symlinks. We'd rather have the symlinks
841 ;; for clarity, so remove tgt before linking.
842 (when (file-exists? tgt) (delete-file tgt))
843 (symlink "john" tgt)))
844 (find-files "." symlink?))
eb28a777 845 (for-each (install-file-to execdir)
e57c7dd7
EB
846 (cons* "mailer" "benchmark-unify" "relbench"
847 (find-files "." ".*\\.js")))
848 (for-each (lambda (f)
849 (let* ((base (basename f))
850 (name (substring base 0 (string-index base #\.)))
851 (link (string-append bindir "/" name)))
852 (install-file f execdir)
853 (when (and (executable-file? f)
854 (not (file-exists? link)))
855 (symlink (string-append execdir "/" base) link))))
856 (find-files "." ".*\\.(pl|py|rb|lua)"))
857 (for-each (install-file-to datadir)
eb28a777
EB
858 (append (find-files "." "(stats|dictionary.*)")
859 (find-files "." "(.*\\.chr|.*\\.lst)")
860 (find-files "." ".*\\.conf")))
e57c7dd7 861 (copy-recursively "rules" (string-append datadir "/rules")))
eb28a777 862 (copy-recursively "../doc" docdir)
4090dcb2
EB
863 #t)))
864 (delete 'check) ; Tests need installed .conf files; move after install
865 (add-after 'install 'check
866 (lambda args
867 (setenv "HOME" "/tmp") ; Some tests need to write to ~/.john
868 (setenv "OMP_NUM_THREADS" (number->string (parallel-job-count)))
869 (apply (assoc-ref %standard-phases 'check) args))))))
eb28a777
EB
870 (home-page "http://www.openwall.com/john/")
871 (synopsis "Password cracker")
872 (description "John the Ripper is a fast password cracker. Its primary
873purpose is to detect weak Unix passwords. Besides several @code{crypt}
874password hash types most commonly found on various Unix systems, supported out
875of the box are Windows LM hashes, plus lots of other hashes and ciphers. This
876is the community-enhanced, \"jumbo\" version of John the Ripper.")
877 (license license:gpl2+))))
649eb8b5
KH
878
879(define-public sala
880 (package
881 (name "sala")
882 (version "1.3")
883 (source
884 (origin
885 (method url-fetch)
886 (uri (pypi-uri "sala" version))
887 (sha256
888 (base32
889 "13qgmc3i2a0cqp8jqrfl93lnphfagb32pgfikc1gza2a14asxzi8"))))
890 (build-system python-build-system)
891 (arguments
892 ;; Sala is supposed to work with Python 3.2 or higher,
893 ;; but it doesn't work with Python 3.6. Better stick
894 ;; to Python 2, which works fine.
895 `(#:python ,python-2))
896 (propagated-inputs
897 `(("gnupg" ,gnupg)
898 ("pwgen" ,pwgen)))
899 (home-page "http://www.digip.org/sala/")
900 (synopsis "Encrypted plaintext password store")
901 (description
902 "Store passwords and other bits of sensitive plain-text information
903to encrypted files on a directory hierarchy. The information is protected
904by GnuPG's symmetrical encryption.")
905 (license license:expat)))
d4e0ebd0
T
906
907(define-public fpm2
908 (package
909 (name "fpm2")
910 (version "0.79")
911 (source (origin
912 (method url-fetch)
913 (uri (string-append "https://als.regnet.cz/fpm2/download/fpm2-"
914 version ".tar.bz2"))
915 (sha256
916 (base32
917 "19sdy1lygfhkg5nxi2w9a4d9kwvw24nxp0ix0p0lz91qpvk9qpnm"))))
918 (build-system gnu-build-system)
919 (inputs `(("gtk2" ,gtk+-2)
920 ("gnupg" ,gnupg)
921 ("libxml2" ,libxml2)))
922 (native-inputs `(("pkg-config" ,pkg-config)
923 ("intltool" ,intltool)))
924 (arguments
925 `(#:phases
926 (modify-phases %standard-phases
927 (add-before 'configure 'pre-configure
928 ;; The file po/POTFILES.in ends up missing for some reason in
929 ;; both nix and guix builds. Adding the file with contents
930 ;; found during troubleshooting.
931 (lambda _
932 (call-with-output-file "po/POTFILES.in"
933 (lambda (port)
934 (format port "data/fpm2.desktop.in
935data/fpm2.desktop.in.in
936fpm2.glade
937src/callbacks.c
938src/fpm.c
939src/fpm_file.c
940src/interface.c
941src/support.c
942fpm2.glade
943")))
944 #t)))))
945 (synopsis "Manage, generate and store passwords encrypted")
946 (description "FPM2 is GTK2 port from Figaro's Password Manager
947originally developed by John Conneely, with some new enhancements.
948
949Upstream development seems to have stopped. It is therefore recommended
950to use a different password manager.")
951 (home-page "https://als.regnet.cz/fpm2/")
952 (license license:gpl2+)))
20b51b17
AI
953
954(define-public pass-rotate
955 (package
956 (name "pass-rotate")
957 (version "0.1")
958 (source
e1a94fe0
EF
959 (origin
960 (method git-fetch)
961 (uri (git-reference
659204ff 962 (url "https://github.com/ddevault/pass-rotate")
e1a94fe0
EF
963 (commit version)))
964 (file-name (git-file-name name version))
965 (sha256
966 (base32
967 "1m067vvdlc85csbpkp8aw4s3ags7q8s3jszrr32kmj9qhk5c254f"))))
20b51b17
AI
968 (build-system python-build-system)
969 (inputs
970 `(("python-beautifulsoup4" ,python-beautifulsoup4)
971 ("python-docopt" ,python-docopt)
972 ("python-html5lib" ,python-html5lib)
973 ("python-requests" ,python-requests)))
659204ff 974 (home-page "https://github.com/ddevault/pass-rotate")
20b51b17
AI
975 (synopsis "Rotate password on online services")
976 (description "pass-rotate is a command line utility and python library for
977rotating passwords on various web services. It makes it easier to rotate your
978passwords, one at a time or in bulk, when security events or routine upkeep of
979your online accounts makes it necessary.")
980 (license license:expat)))
c10aa278
PN
981
982(define-public hashcat
983 (package
984 (name "hashcat")
45ee3fde 985 (version "5.1.0")
c10aa278
PN
986 (source
987 (origin
988 (method url-fetch)
989 (uri (string-append "https://hashcat.net/files/hashcat-"
990 version ".tar.gz"))
991 (sha256
992 (base32
45ee3fde 993 "0f73y4cg8c7a6q7x34qvpfi4g3lw6j9bnn0a13g43aqyiskflfr8"))))
c10aa278
PN
994 (native-inputs
995 `(("opencl-headers" ,opencl-headers)))
996 (build-system gnu-build-system)
997 (arguments
998 '(#:tests? #f ;no tests
999 #:make-flags (list (string-append "PREFIX=" %output))
1000 #:phases
1001 (modify-phases %standard-phases
1002 (delete 'configure))))
1003 (home-page "https://hashcat.net/hashcat/")
1004 (synopsis "Advanced password recovery utility")
1005 (description "Hashcat is an password recovery utility, supporting five
1006unique modes of attack for over 200 highly-optimized hashing algorithms.
1007Hashcat currently supports CPUs, GPUs, and other hardware accelerators on
1008Linux, Windows, and macOS, and has facilities to help enable distributed
1009password cracking.")
1010 (license license:expat)))
eb4ffe9b
PN
1011
1012(define-public hashcat-utils
1013 (package
1014 (name "hashcat-utils")
2b9b4b1f 1015 (version "1.9")
eb4ffe9b
PN
1016 (source
1017 (origin
1018 (method url-fetch)
2b9b4b1f
TGR
1019 (uri (string-append "https://github.com/hashcat/hashcat-utils/releases/"
1020 "download/v" version "/"
1021 "hashcat-utils-" version ".7z"))
eb4ffe9b 1022 (sha256
2b9b4b1f 1023 (base32 "0kq555kb338691qd7zjmi8vhq4km3apnsl2w63zh0igwzcjx6lx1"))))
eb4ffe9b
PN
1024 (native-inputs
1025 `(("p7zip" ,p7zip)))
1026 (inputs
1027 `(("perl" ,perl)))
1028 (build-system gnu-build-system)
1029 (arguments
1030 `(#:tests? #f ;no tests
1031 #:make-flags (list "CC=gcc"
1032 ;; Upstream bug(?): "make all" seems to remove the
1033 ;; Perl scripts from the source.
1034 "native")
1035 #:phases
1036 (modify-phases %standard-phases
1037 (replace 'unpack
1038 (lambda* (#:key source #:allow-other-keys)
1039 (invoke "7z" "x" source)
1040 (chdir (string-append "hashcat-utils-" ,version "/src"))
1041 #t))
1042 (delete 'configure)
1043 (replace 'install
1044 (lambda* (#:key outputs #:allow-other-keys)
1045 (let ((out (string-append (assoc-ref outputs "out") "/bin")))
1046 (mkdir-p out)
2b9b4b1f
TGR
1047 (for-each
1048 (lambda (file)
1049 (copy-file file (string-append out "/"
1050 (basename file ".bin"))))
1051 (find-files "." "\\.bin$"))
1052 (for-each
1053 (lambda (file)
1054 (copy-file file (string-append out "/"
1055 (basename file ".pl"))))
1056 (find-files "../bin" "\\.pl$"))
eb4ffe9b
PN
1057 #t))))))
1058 (home-page "https://github.com/hashcat/hashcat-utils/")
1059 (synopsis "Small utilities that are useful in advanced password cracking")
1060 (description "Hashcat-utils are a set of small utilities that are useful
1061in advanced password cracking. They all are packed into multiple stand-alone
1062binaries. All of these utils are designed to execute only one specific
1063function. Since they all work with @code{STDIN} and @code{STDOUT} you can
1064group them into chains.")
1065 (license license:expat)))
d823fd96
GLV
1066
1067(define-public bruteforce-luks
1068 (package
1069 (name "bruteforce-luks")
1070 (version "1.4.0")
1071 (source
1072 (origin
1073 (method url-fetch)
1074 (uri (string-append "https://github.com/glv2/bruteforce-luks/releases/download/"
1075 version
1076 "/bruteforce-luks-"
1077 version
1078 ".tar.lz"))
1079 (sha256
1080 (base32 "0yawrlbbklhmvwr99wm7li3r0d5kxvpkwf33a12rji7z0ya5p340"))))
1081 (build-system gnu-build-system)
1082 (native-inputs
1083 `(("lzip" ,lzip)))
1084 (inputs
1085 `(("cryptsetup" ,cryptsetup)))
1086 (synopsis "LUKS encrypted volume cracker")
1087 (description
1088 "This is a cracker for LUKS encrypted volumes. It can be used either in
1089exhaustive mode to try every password given a charset or in dictionary mode to
1090try every password contained in a file.")
1091 (home-page "https://github.com/glv2/bruteforce-luks")
1092 (license license:gpl3+)))