gnu: hdf-java: Fix build.
[jackhill/guix/guix.git] / gnu / packages / password-utils.scm
index ec17c25..ad89cee 100644 (file)
@@ -1,6 +1,6 @@
 ;;; 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>
@@ -8,13 +8,20 @@
 ;;; 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.
 ;;;
@@ -36,6 +43,7 @@
   #: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
@@ -88,7 +106,7 @@ human.")
 (define-public keepassxc
   (package
     (name "keepassxc")
-    (version "2.2.4")
+    (version "2.3.4")
     (source
      (origin
        (method url-fetch)
@@ -97,14 +115,17 @@ human.")
                            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)
@@ -119,7 +140,7 @@ manage your passwords in a secure way.  You can put all your passwords in one
 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
@@ -153,6 +174,59 @@ algorithms AES or Twofish.")
     (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")
@@ -193,7 +267,7 @@ applications, there is xclip integration." )
 (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-"
@@ -201,7 +275,7 @@ applications, there is xclip integration." )
                                   ".tar.bz2"))
               (sha256
                (base32
-                "0ydbnqw6icdh07pnv2w6dhvq501bdfvrklv4xmyr8znca9d753if"))))
+                "1lq46mpxdsbl6qw4cj58hp9q7jckmyvbsi08p5zr77rjgqadxyyy"))))
     (build-system gnu-build-system)
     (inputs
      `(("ncurses" ,ncurses)
@@ -221,17 +295,15 @@ and vice versa.")
 (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")
@@ -274,7 +346,7 @@ random passwords that pass the checks.")
 (define-public assword
   (package
     (name "assword")
-    (version "0.10")
+    (version "0.11")
     (source (origin
               (method url-fetch)
               (uri (list
@@ -283,7 +355,7 @@ random passwords that pass the checks.")
                      "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
@@ -307,15 +379,14 @@ random passwords that pass the checks.")
                #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)))
@@ -337,7 +408,7 @@ any X11 window.")
 (define-public password-store
   (package
     (name "password-store")
-    (version "1.7.1")
+    (version "1.7.3")
     (source (origin
               (method url-fetch)
               (uri
@@ -345,7 +416,7 @@ any X11 window.")
                               name "-" version ".tar.xz"))
               (sha256
                (base32
-                "0scqkpll2q8jhzcgcsh9kqz0gwdpvynivqjmmbzax2irjfaiklpn"))))
+                "1x53k5dn3cdmvy8m4fqdld4hji5n676ksl0ql4armkmsds26av1b"))))
     (build-system gnu-build-system)
     (arguments
      '(#:phases
@@ -362,9 +433,9 @@ any X11 window.")
              #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)
@@ -401,7 +472,7 @@ any X11 window.")
        ("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
@@ -414,7 +485,7 @@ through the pass command.")
 (define-public argon2
   (package
     (name "argon2")
-    (version "20161029")
+    (version "20171227")
     (source
      (origin
        (method url-fetch)
@@ -424,58 +495,38 @@ through the pass command.")
        (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
@@ -604,3 +655,190 @@ password hash types most commonly found on various Unix systems, supported out
 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)))