;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Steve Sprang <scs@stevesprang.com>
-;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015 Aljosha Papsch <misc@rpapsch.de>
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
;;; Copyright © 2016 Jessica Tallon <tsyesika@tsyesika.se>
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
-;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2017 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
+;;; Copyright © 2018 Konrad Hinsen <konrad.hinsen@fastmail.net>
+;;; Copyright © 2018 Thomas Sigurdsen <tonton@riseup.net>
+;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
+;;; Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
+;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
;;;
;;; This file is part of GNU Guix.
;;;
#:use-module (guix build-system cmake)
#:use-module (guix build-system gnu)
#:use-module (guix download)
+ #:use-module (guix git-download)
#:use-module (guix packages)
#:use-module (gnu packages)
#:use-module (gnu packages admin)
#:use-module (gnu packages base)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
+ #:use-module (gnu packages crypto)
+ #:use-module (gnu packages curl)
+ #:use-module (gnu packages file)
#:use-module (gnu packages freedesktop)
+ #:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages gnuzilla)
#:use-module (gnu packages man)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages ncurses)
+ #:use-module (gnu packages opencl)
+ #:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
+ #:use-module (gnu packages python-web)
+ #:use-module (gnu packages python-xyz)
#:use-module (gnu packages suckless)
#:use-module (gnu packages tls)
#:use-module (gnu packages qt)
#:use-module (gnu packages version-control)
+ #:use-module (gnu packages wxwidgets)
#:use-module (gnu packages xdisorg)
#:use-module (gnu packages xorg)
+ #:use-module (gnu packages xml)
#:use-module (guix build-system python))
(define-public pwgen
(define-public keepassxc
(package
(name "keepassxc")
- (version "2.2.4")
+ (version "2.3.4")
(source
(origin
(method url-fetch)
version "-src.tar.xz"))
(sha256
(base32
- "1pfkq1m5vb90kx67vyw70s1hc4ivjsvq2535vm6wdwwsncna6bz5"))))
+ "02kq0a7a7hpw824n03apma00yq1c6dds224g15mrnnqqjn4af90c"))))
(build-system cmake-build-system)
(arguments
- `(#:configure-flags
- (list (string-append "-DCMAKE_INSTALL_LIBDIR="
- (assoc-ref %outputs "out") "/lib"))))
+ '(#:configure-flags '("-DWITH_XC_NETWORKING=YES"
+ "-DWITH_XC_BROWSER=YES"
+ "-DWITH_XC_SSHAGENT=YES")))
(inputs
- `(("libgcrypt" ,libgcrypt)
+ `(("argon2" ,argon2)
+ ("curl" ,curl) ; XC_NETWORKING
+ ("libgcrypt" ,libgcrypt)
+ ("libsodium" ,libsodium) ; XC_BROWSER
("libxi" ,libxi)
("libxtst" ,libxtst)
("qtbase" ,qtbase)
database, which is locked with one master key or a key-file which can be stored
on an external storage device. The databases are encrypted using the
algorithms AES or Twofish.")
- ;; Non functional parts use various licences.
+ ;; Non-functional parts use various licences.
(license license:gpl3)))
(define-public keepassx
(license license:gpl3)
(properties `((superseded . ,keepassxc)))))
+(define-public pwsafe
+ (package
+ (name "pwsafe")
+ (version "3.48.0")
+ (home-page "https://www.pwsafe.org/" )
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/pwsafe/pwsafe.git")
+ (commit version)))
+ (sha256 (base32 "0hxv23yh76liggxbjn4m132z15sklra8ms341xgzl4n5vjx30ihi"))
+ (file-name (string-append name "-" version "-checkout"))))
+ (build-system cmake-build-system)
+ (native-inputs `(("gettext" ,gettext-minimal)
+ ("perl" ,perl)
+ ("zip" ,zip)))
+ (inputs `(("curl" ,curl)
+ ("file" ,file)
+ ("gtest" ,googletest)
+ ("libuuid" ,util-linux)
+ ("libxt" ,libxt)
+ ("libxtst" ,libxtst)
+ ("openssl" ,openssl)
+ ("qrencode" ,qrencode)
+ ("wxwidgets" ,wxwidgets)
+ ("xerces-c" ,xerces-c)))
+ (arguments '(#:configure-flags (list "-DNO_GTEST=YES")
+ #:phases (modify-phases %standard-phases
+ (add-after 'unpack 'add-gtest
+ (lambda* (#:key inputs #:allow-other-keys)
+ (chmod "CMakeLists.txt" #o644)
+ (let ((cmake-port (open-file "CMakeLists.txt"
+ "a")))
+ (display "find_package(GTest)
+add_subdirectory(src/test)\n" cmake-port)
+ (close cmake-port)
+ #t)))
+ (add-after 'add-gtest 'patch-executables
+ (lambda* (#:key inputs #:allow-other-keys)
+ (chmod "src/test/OSTest.cpp" #o644)
+ (substitute* "src/os/unix/media.cpp"
+ (("/usr/bin/file")
+ (string-append (assoc-ref inputs "file")
+ "/bin/file")))
+ #t)))))
+ (synopsis "Password safe with automatic input and key generation")
+ (description "pwsafe is a password manager originally designed by Bruce
+Schneier. It offers a simple UI to manage passwords for different services.
+There are other programs that support the file format on different
+platforms.")
+ (license license:artistic2.0)))
+
(define-public shroud
(package
(name "shroud")
(define-public yapet
(package
(name "yapet")
- (version "1.0")
+ (version "1.1")
(source (origin
(method url-fetch)
(uri (string-append "http://www.guengel.ch/myapps/yapet/downloads/yapet-"
".tar.bz2"))
(sha256
(base32
- "0ydbnqw6icdh07pnv2w6dhvq501bdfvrklv4xmyr8znca9d753if"))))
+ "1lq46mpxdsbl6qw4cj58hp9q7jckmyvbsi08p5zr77rjgqadxyyy"))))
(build-system gnu-build-system)
(inputs
`(("ncurses" ,ncurses)
(define-public cracklib
(package
(name "cracklib")
- (version "2.9.6")
- (source (origin
- (method url-fetch)
- (uri (string-append "https://github.com/cracklib/cracklib/"
- "releases/download/" name "-" version "/"
- name "-" version ".tar.gz"))
- (patches (search-patches "cracklib-CVE-2016-6318.patch"
- "cracklib-fix-buffer-overflow.patch"))
- (sha256
- (base32
- "0hrkb0prf7n92w6rxgq0ilzkk6rkhpys2cfqkrbzswp27na7dkqp"))))
+ (version "2.9.7")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/cracklib/cracklib/"
+ "releases/download/v" version "/"
+ "cracklib-" version ".tar.bz2"))
+ (sha256
+ (base32 "1rimpjsdnmw8f5b7k558cic41p2qy2n2yrlqp5vh7mp4162hk0py"))))
(build-system gnu-build-system)
(synopsis "Password checking library")
(home-page "https://github.com/cracklib/cracklib")
(define-public assword
(package
(name "assword")
- (version "0.10")
+ (version "0.11")
(source (origin
(method url-fetch)
(uri (list
"assword_" version ".orig.tar.gz")))
(sha256
(base32
- "0l6170y6my1gprqkazvzabgjkrkr9v2q7z48vjflna4r323yqira"))))
+ "03gkb6kvsghznbcw5l7nmrc6mn3ixkjd5jcs96ni4zs9l47jf7yp"))))
(arguments
`(;; irritatingly, tests do run but not there are two problems:
;; - "import gtk" fails for unknown reasons here despite it the
#t)))
(add-after 'install 'manpage
(lambda* (#:key outputs #:allow-other-keys)
- (and
- ;; Without this substitution, it fails with
- ;; ImportError: No module named 'gpg'
- (substitute* "Makefile"
- (("PYTHONPATH=.") ""))
- (zero? (system* "make" "assword.1"))
- (install-file
- "assword.1"
- (string-append (assoc-ref outputs "out") "/share/man/man1"))))))))
+ ;; Without this substitution, it fails with
+ ;; ImportError: No module named 'gpg'
+ (substitute* "Makefile"
+ (("PYTHONPATH=.") ""))
+ (invoke "make" "assword.1")
+ (install-file
+ "assword.1"
+ (string-append (assoc-ref outputs "out") "/share/man/man1")))))))
(build-system python-build-system)
(native-inputs
`(("txt2man" ,txt2man)))
(define-public password-store
(package
(name "password-store")
- (version "1.7.1")
+ (version "1.7.3")
(source (origin
(method url-fetch)
(uri
name "-" version ".tar.xz"))
(sha256
(base32
- "0scqkpll2q8jhzcgcsh9kqz0gwdpvynivqjmmbzax2irjfaiklpn"))))
+ "1x53k5dn3cdmvy8m4fqdld4hji5n676ksl0ql4armkmsds26av1b"))))
(build-system gnu-build-system)
(arguments
'(#:phases
#t))
(add-after 'install 'install-passmenu
(lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out")))
- (copy-file "contrib/dmenu/passmenu"
- (string-append out "/bin/passmenu"))
+ (let* ((out (assoc-ref outputs "out"))
+ (bin (string-append out "/bin")))
+ (install-file "contrib/dmenu/passmenu" bin)
#t)))
(add-after 'install 'wrap-path
(lambda* (#:key inputs outputs #:allow-other-keys)
("which" ,which)
("xclip" ,xclip)
("xdotool" ,xdotool)))
- (home-page "http://www.passwordstore.org/")
+ (home-page "https://www.passwordstore.org/")
(synopsis "Encrypted password manager")
(description "Password-store is a password manager which uses GnuPG to
store and retrieve passwords. The tool stores each password in its own
(define-public argon2
(package
(name "argon2")
- (version "20161029")
+ (version "20171227")
(source
(origin
(method url-fetch)
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
- "1rymikbysasdadm325jx69i0q19d9srqkny69jwmhswlidr4j07y"))))
+ "1n6w5y3va7lrcym7cxr0nikapldqm80wxjdns584bvplq5r03spa"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"
- #:make-flags '("CC=gcc")
+ #:make-flags '("CC=gcc"
+ "OPTTEST=1") ;disable CPU optimization
#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'patch-Makefile
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "Makefile"
+ (("PREFIX = /usr") (string-append "PREFIX = " out)))
+ (substitute* "libargon2.pc"
+ (("prefix=/usr") (string-append "prefix=" out))
+ (("@HOST_MULTIARCH@") "")
+ (("@UPSTREAM_VER@") ,version))
+ #t)))
(delete 'configure)
- (replace 'install
- (lambda _
- (let ((out (assoc-ref %outputs "out")))
- (install-file "argon2" (string-append out "/bin"))
- (install-file "libargon2.a" (string-append out "/lib"))
- (install-file "libargon2.so" (string-append out "/lib"))
- (copy-recursively "include"
- (string-append out "/include"))))))))
+ (add-after 'install 'install-argon2.pc
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (install-file "libargon2.pc"
+ (string-append out "/lib/pkgconfig"))
+ #t))))))
(home-page "https://www.argon2.com/")
(synopsis "Password hashing library")
(description "Argon2 provides a key derivation function that was declared
winner of the 2015 Password Hashing Competition.")
- (license license:cc0)))
-
-(define-public python-bcrypt
- (package
- (name "python-bcrypt")
- (version "3.1.0")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "bcrypt" version))
- (sha256
- (base32
- "1giy0dvd8gvq6flxh44np1v2nqwsji5qsnrz038mgwzgp7c20j75"))))
- (build-system python-build-system)
- (native-inputs
- `(("python-pycparser" ,python-pycparser)
- ("python-pytest" ,python-pytest)))
- (propagated-inputs
- `(("python-cffi" ,python-cffi)
- ("python-six" ,python-six)))
- (home-page "https://github.com/pyca/bcrypt/")
- (synopsis
- "Modern password hashing library")
- (description
- "Bcrypt is a Python module which provides a password hashing method based
-on the Blowfish password hashing algorithm, as described in
-@url{http://static.usenix.org/events/usenix99/provos.html,\"A Future-Adaptable
-Password Scheme\"} by Niels Provos and David Mazieres.")
- (license license:asl2.0)))
-
-(define-public python2-bcrypt
- (package-with-python2 python-bcrypt))
+ ;; Argon2 is dual licensed under CC0 and ASL 2.0. Some of the source
+ ;; files are CC0 only; see README.md and LICENSE for details.
+ (license (list license:cc0 license:asl2.0))))
(define-public pass-git-helper
(package
of the box are Windows LM hashes, plus lots of other hashes and ciphers. This
is the community-enhanced, \"jumbo\" version of John the Ripper.")
(license license:gpl2+))))
+
+(define-public sala
+ (package
+ (name "sala")
+ (version "1.3")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "sala" version))
+ (sha256
+ (base32
+ "13qgmc3i2a0cqp8jqrfl93lnphfagb32pgfikc1gza2a14asxzi8"))))
+ (build-system python-build-system)
+ (arguments
+ ;; Sala is supposed to work with Python 3.2 or higher,
+ ;; but it doesn't work with Python 3.6. Better stick
+ ;; to Python 2, which works fine.
+ `(#:python ,python-2))
+ (propagated-inputs
+ `(("gnupg" ,gnupg)
+ ("pwgen" ,pwgen)))
+ (home-page "http://www.digip.org/sala/")
+ (synopsis "Encrypted plaintext password store")
+ (description
+ "Store passwords and other bits of sensitive plain-text information
+to encrypted files on a directory hierarchy. The information is protected
+by GnuPG's symmetrical encryption.")
+ (license license:expat)))
+
+(define-public fpm2
+ (package
+ (name "fpm2")
+ (version "0.79")
+ (source (origin
+ (method url-fetch)
+ (uri (string-append "https://als.regnet.cz/fpm2/download/fpm2-"
+ version ".tar.bz2"))
+ (sha256
+ (base32
+ "19sdy1lygfhkg5nxi2w9a4d9kwvw24nxp0ix0p0lz91qpvk9qpnm"))))
+ (build-system gnu-build-system)
+ (inputs `(("gtk2" ,gtk+-2)
+ ("gnupg" ,gnupg)
+ ("libxml2" ,libxml2)))
+ (native-inputs `(("pkg-config" ,pkg-config)
+ ("intltool" ,intltool)))
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-before 'configure 'pre-configure
+ ;; The file po/POTFILES.in ends up missing for some reason in
+ ;; both nix and guix builds. Adding the file with contents
+ ;; found during troubleshooting.
+ (lambda _
+ (call-with-output-file "po/POTFILES.in"
+ (lambda (port)
+ (format port "data/fpm2.desktop.in
+data/fpm2.desktop.in.in
+fpm2.glade
+src/callbacks.c
+src/fpm.c
+src/fpm_file.c
+src/interface.c
+src/support.c
+fpm2.glade
+")))
+ #t)))))
+ (synopsis "Manage, generate and store passwords encrypted")
+ (description "FPM2 is GTK2 port from Figaro's Password Manager
+originally developed by John Conneely, with some new enhancements.
+
+Upstream development seems to have stopped. It is therefore recommended
+to use a different password manager.")
+ (home-page "https://als.regnet.cz/fpm2/")
+ (license license:gpl2+)))
+
+(define-public pass-rotate
+ (package
+ (name "pass-rotate")
+ (version "0.1")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/SirCmpwn/pass-rotate/archive/"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "1svm5nj8bczv2dg8lh2zqqhbsrljqsw9680r03qwgl9vlci90210"))
+ (file-name (string-append name "-" version ".tar.gz"))))
+ (build-system python-build-system)
+ (inputs
+ `(("python-beautifulsoup4" ,python-beautifulsoup4)
+ ("python-docopt" ,python-docopt)
+ ("python-html5lib" ,python-html5lib)
+ ("python-requests" ,python-requests)))
+ (home-page "https://github.com/SirCmpwn/pass-rotate")
+ (synopsis "Rotate password on online services")
+ (description "pass-rotate is a command line utility and python library for
+rotating passwords on various web services. It makes it easier to rotate your
+passwords, one at a time or in bulk, when security events or routine upkeep of
+your online accounts makes it necessary.")
+ (license license:expat)))
+
+(define-public hashcat
+ (package
+ (name "hashcat")
+ (version "5.1.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://hashcat.net/files/hashcat-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "0f73y4cg8c7a6q7x34qvpfi4g3lw6j9bnn0a13g43aqyiskflfr8"))))
+ (native-inputs
+ `(("opencl-headers" ,opencl-headers)))
+ (build-system gnu-build-system)
+ (arguments
+ '(#:tests? #f ;no tests
+ #:make-flags (list (string-append "PREFIX=" %output))
+ #:phases
+ (modify-phases %standard-phases
+ (delete 'configure))))
+ (home-page "https://hashcat.net/hashcat/")
+ (synopsis "Advanced password recovery utility")
+ (description "Hashcat is an password recovery utility, supporting five
+unique modes of attack for over 200 highly-optimized hashing algorithms.
+Hashcat currently supports CPUs, GPUs, and other hardware accelerators on
+Linux, Windows, and macOS, and has facilities to help enable distributed
+password cracking.")
+ (license license:expat)))
+
+(define-public hashcat-utils
+ (package
+ (name "hashcat-utils")
+ (version "1.9")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "https://github.com/hashcat/hashcat-utils/releases/"
+ "download/v" version "/"
+ "hashcat-utils-" version ".7z"))
+ (sha256
+ (base32 "0kq555kb338691qd7zjmi8vhq4km3apnsl2w63zh0igwzcjx6lx1"))))
+ (native-inputs
+ `(("p7zip" ,p7zip)))
+ (inputs
+ `(("perl" ,perl)))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:tests? #f ;no tests
+ #:make-flags (list "CC=gcc"
+ ;; Upstream bug(?): "make all" seems to remove the
+ ;; Perl scripts from the source.
+ "native")
+ #:phases
+ (modify-phases %standard-phases
+ (replace 'unpack
+ (lambda* (#:key source #:allow-other-keys)
+ (invoke "7z" "x" source)
+ (chdir (string-append "hashcat-utils-" ,version "/src"))
+ #t))
+ (delete 'configure)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (string-append (assoc-ref outputs "out") "/bin")))
+ (mkdir-p out)
+ (for-each
+ (lambda (file)
+ (copy-file file (string-append out "/"
+ (basename file ".bin"))))
+ (find-files "." "\\.bin$"))
+ (for-each
+ (lambda (file)
+ (copy-file file (string-append out "/"
+ (basename file ".pl"))))
+ (find-files "../bin" "\\.pl$"))
+ #t))))))
+ (home-page "https://github.com/hashcat/hashcat-utils/")
+ (synopsis "Small utilities that are useful in advanced password cracking")
+ (description "Hashcat-utils are a set of small utilities that are useful
+in advanced password cracking. They all are packed into multiple stand-alone
+binaries. All of these utils are designed to execute only one specific
+function. Since they all work with @code{STDIN} and @code{STDOUT} you can
+group them into chains.")
+ (license license:expat)))