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