gnu: Move sqlite to separate module.
[jackhill/guix/guix.git] / gnu / packages / networking.scm
index 4f2b3ad..df06302 100644 (file)
@@ -9,13 +9,13 @@
 ;;; Copyright © 2016, 2017, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
 ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
 ;;; Copyright © 2016, 2017 Nils Gillmann <ng0@n0.is>
-;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016 Benz Schenk <benz.schenk@uzh.ch>
 ;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl>
 ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
 ;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
-;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
-;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
+;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com>
 ;;; Copyright © 2017 Gábor Boskovits <boskovits@gmail.com>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
 ;;; Copyright © 2018 Adam Van Ymeren <adam@vany.ca>
@@ -25,6 +25,7 @@
 ;;; Copyright © 2018 Theodoros Foradis <theodoros@foradis.org>
 ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
 ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
+;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -65,7 +66,6 @@
   #:use-module (gnu packages compression)
   #:use-module (gnu packages crypto)
   #:use-module (gnu packages curl)
-  #:use-module (gnu packages databases)
   #:use-module (gnu packages dejagnu)
   #:use-module (gnu packages documentation)
   #:use-module (gnu packages flex)
   #:use-module (gnu packages multiprecision)
   #:use-module (gnu packages kerberos)
   #:use-module (gnu packages ncurses)
+  #:use-module (gnu packages nettle)
+  #:use-module (gnu packages password-utils)
   #:use-module (gnu packages pcre)
   #:use-module (gnu packages perl)
   #:use-module (gnu packages perl-check)
   #: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 qt)
   #:use-module (gnu packages readline)
+  #:use-module (gnu packages serialization)
+  #:use-module (gnu packages sqlite)
   #:use-module (gnu packages ssh)
   #:use-module (gnu packages textutils)
   #:use-module (gnu packages tls)
@@ -142,7 +148,8 @@ or, more generally, MAC addresses of the same category of hardware.")
           'check 'disable-checkconf-test
           (lambda _
             (substitute* "src/Makefile"
-              (("^TESTS = .*") "TESTS = \n")))))))
+              (("^TESTS = .*") "TESTS = \n"))
+            #t)))))
     (home-page "http://www.remlab.net/miredo/")
     (synopsis "Teredo IPv6 tunneling software")
     (description
@@ -214,7 +221,7 @@ libwrap.so: $(LIB_OBJ)\n
              (substitute* "scaffold.c"
                (("extern char .malloc.*;") ""))
              ;; This, believe it or not, is the recommended way to build!
-             (zero? (system* "make" "REAL_DAEMON_DIR=/etc" "linux"))))
+             (invoke "make" "REAL_DAEMON_DIR=/etc" "linux")))
          ;; There is no make install stage, so we have to do it ourselves.
          (replace 'install
            (lambda _
@@ -249,7 +256,8 @@ libwrap.so: $(LIB_OBJ)\n
                (for-each
                 (lambda (x)
                   (install-file x (string-append out "/bin/")))
-                bins)))))))
+                bins))
+             #t)))))
     (home-page "http://www.porcupine.org")
     (synopsis  "Monitor and filter incoming requests for network services")
     (description "With this package you can monitor and filter incoming requests for
@@ -371,8 +379,8 @@ files contain direct mappings of the abstractions provided by the ØMQ C API.")
                ;; librdkafka++.so lacks RUNPATH for librdkafka.so
                (setenv "LDFLAGS"
                        (string-append "-Wl,-rpath=" out "/lib"))
-               (zero? (system* "./configure"
-                               (string-append "--prefix=" out)))))))))
+               (invoke "./configure"
+                       (string-append "--prefix=" out))))))))
     (native-inputs
      `(("python" ,python-wrapper)))
     (propagated-inputs
@@ -455,7 +463,8 @@ Ethernet devices.")
                            (bin (string-append out "/bin")))
                       (mkdir-p bin)
                       (copy-file "ifstatus"
-                                 (string-append bin "/ifstatus"))))))))
+                                 (string-append bin "/ifstatus")))
+                    #t)))))
     (inputs `(("ncurses" ,ncurses)))
     (home-page "http://ifstatus.sourceforge.net/graphic/index.html")
     (synopsis "Text based network interface status monitor")
@@ -509,14 +518,16 @@ and min/max network usage.")
            (lambda* (#:key inputs #:allow-other-keys)
              (substitute* "src/tun.c"
                (("PATH=[^ ]* ")
-                (string-append (assoc-ref inputs "net-tools") "/bin/")))))
+                (string-append (assoc-ref inputs "net-tools") "/bin/")))
+             #t))
          (add-before 'check 'delete-failing-tests
            ;; Avoid https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=802105.
            (lambda _
              (substitute* "tests/common.c"
                (("tcase_add_test\\(tc, \
 test_parse_format_ipv(4(|_listen_all|_mapped_ipv6)|6)\\);")
-                "")))))
+                ""))
+             #t)))
        #:make-flags (list "CC=gcc"
                           (string-append "prefix=" (assoc-ref %outputs "out")))
        #:test-target "test"))
@@ -536,7 +547,7 @@ and up to 1 Mbit/s downstream.")
 (define-public whois
   (package
     (name "whois")
-    (version "5.3.2")
+    (version "5.4.0")
     (source
      (origin
        (method url-fetch)
@@ -544,7 +555,7 @@ and up to 1 Mbit/s downstream.")
                            name "_" version ".tar.xz"))
        (sha256
         (base32
-         "0m3352d5b0ragygbqjbaimghrbx4va2rixa34j5a1g3jj6l4nwbr"))))
+         "0y73b3z1akni620s1hlrijwdrk95ca1c8csjds48vpd6z86awx9p"))))
     (build-system gnu-build-system)
     (arguments
      `(#:tests? #f                      ; no test suite
@@ -579,7 +590,7 @@ of the same name.")
 (define-public wireshark
   (package
     (name "wireshark")
-    (version "2.6.2")
+    (version "2.6.5")
     (source
      (origin
        (method url-fetch)
@@ -587,7 +598,7 @@ of the same name.")
                            version ".tar.xz"))
        (sha256
         (base32
-         "153h6prxamv5a62f3pfadkry0y57696xrgxfy2gfy5xswdg8kcj9"))))
+         "12j3fw0j8qcr86c1vsz4bsb55j9inp0ll3wjjdvg1cj4hmwmn5ck"))))
     (build-system gnu-build-system)
     (inputs `(("c-ares" ,c-ares)
               ("glib" ,glib)
@@ -650,7 +661,7 @@ network frames.")
 (define-public fping
   (package
     (name "fping")
-    (version "4.0")
+    (version "4.1")
     (source
      (origin
        (method url-fetch)
@@ -658,9 +669,9 @@ network frames.")
                            version ".tar.gz"))
        (sha256
         (base32
-         "1kp81wchi79l8z8rrj602fpjrd8bi84y3i7fsaclzlwap5943sv7"))))
+         "0wxbvm480vij8dy4v1pi8f0c7010rx6bidg3qhsvkdf2ijhy4cr7"))))
     (build-system gnu-build-system)
-    (home-page "http://fping.org/")
+    (home-page "https://fping.org/")
     (synopsis "Send ICMP ECHO_REQUEST packets to network hosts")
     (description
      "fping is a ping like program which uses the Internet Control Message
@@ -672,6 +683,55 @@ send out a ping packet and move on to the next target in a round-robin
 fashion.")
     (license license:expat)))
 
+(define-public gandi.cli
+  (package
+    (name "gandi.cli")
+    (version "1.3")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (pypi-uri name version))
+       (sha256
+        (base32 "0vfzkw1avybjkf6fwqpf5m4kjz4c0qkkmj62f3jd0zx00vh5ly1d"))))
+    (build-system python-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'embed-store-file-names
+           (lambda _
+             (substitute* (list "gandi/cli/modules/cert.py"
+                                "gandi/cli/tests/commands/test_certificate.py")
+               (("openssl") (which "openssl")))
+             #t))
+         (add-after 'install 'install-documentation
+           ;; The included man page may be outdated but we install it anyway,
+           ;; since it's mentioned in 'gandi --help' and better than nothing.
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out  (assoc-ref outputs "out"))
+                    (man1 (string-append out "/share/man/man1")))
+               (mkdir-p man1)
+               (with-output-to-file (string-append man1 "/gandi.1")
+                 (lambda _
+                   (invoke "rst2man.py" "gandicli.man.rst")))
+               #t))))))
+    (native-inputs
+     `(("python-docutils" ,python-docutils)   ; for rst2man.py
+       ("python-pytest-cov" ,python-pytest-cov)
+       ("python-tox" ,python-tox)))
+    (inputs
+     `(("openssl" ,openssl)
+       ("python-click" ,python-click)
+       ("python-ipy" ,python-ipy)
+       ("python-pyyaml" ,python-pyyaml)
+       ("python-requests" ,python-requests)))
+    (home-page "https://cli.gandi.net")
+    (synopsis "Command-line interface to the Gandi.net Web API")
+    (description
+     "This package provides a command-line client (@command{gandi}) to buy,
+manage, and delete Internet resources from Gandi.net such as domain names,
+virtual machines, and certificates.")
+    (license license:gpl3+)))
+
 (define-public httping
   (package
     (name "httping")
@@ -728,7 +788,8 @@ application stack itself.")
                (("ENV_CURL_BIN.get\\('curl'\\)")
                 (string-append "ENV_CURL_BIN.get('"
                                (assoc-ref inputs "curl")
-                               "/bin/curl')"))))))))
+                               "/bin/curl')")))
+             #t)))))
     (home-page "https://github.com/reorx/httpstat")
     (synopsis "Visualize curl statistics")
     (description
@@ -761,52 +822,58 @@ live network and disk I/O bandwidth monitor.")
 (define-public aircrack-ng
   (package
     (name "aircrack-ng")
-    (version "1.2-rc4")
+    (version "1.3")
     (source
      (origin
        (method url-fetch)
-       (uri (string-append "http://download.aircrack-ng.org/aircrack-ng-"
+       (uri (string-append "https://download.aircrack-ng.org/aircrack-ng-"
                            version ".tar.gz"))
        (sha256
         (base32
-         "0dpzx9kddxpgzmgvdpl3rxn0jdaqhm5wxxndp1xd7d75mmmc2fnr"))))
+         "1jl30d0kibc82447fr3lgw75arik0l9729k94z76l7vl51y8mq4a"))))
     (build-system gnu-build-system)
     (native-inputs
-     `(("pkg-config" ,pkg-config)))
+     `(("autoconf" ,autoconf)
+       ("automake" ,automake)
+       ("libtool" ,libtool)
+       ("pkg-config" ,pkg-config)
+       ("which" ,which)))
     (inputs
      `(("libgcrypt" ,libgcrypt)
        ("libnl" ,libnl)
+       ("libpcap" ,libpcap)
        ("ethtool" ,ethtool)
        ("pcre" ,pcre)
        ("sqlite" ,sqlite)
        ("zlib" ,zlib)))
     (arguments
-     `(#:make-flags `("sqlite=true"
-                      "gcrypt=true"
-                      "libnl=true"
-                      "pcre=true"
-                      "experimental=true" ;build wesside-ng, etc.
-                      "AVX2FLAG=N" "AVX1FLAG=N"
-                      ,,@(match (%current-system)
-                           ((or "x86_64-linux" "i686-linux")
-                            `("SSEFLAG=Y"))
-                           (_
-                            `("NEWSSE=false")))
-                      ,(string-append "prefix=" %output))
+     `(#:configure-flags
+       (list "--with-experimental=yes"  ; build wesside-ng, etc.
+             "--with-gcrypt")           ; openssl's the default
        #:phases (modify-phases %standard-phases
-                  (delete 'configure)   ;no configure phase
+                  (add-before 'bootstrap 'patch-evalrev
+                    (lambda _
+                      ;; Called by ./autogen.sh below, before the default
+                      ;; ‘patch-shebangs’ phase has had a chance to run.
+                      (substitute* "evalrev"
+                        (("/bin/sh")
+                         (which "sh")))
+                      #t))
+                  (replace 'bootstrap
+                    (lambda _
+                      ;; Patch shebangs in generated files before running
+                      ;; ./configure.
+                      (setenv "NOCONFIGURE" "please")
+                      (invoke "bash" "./autogen.sh")))
                   (add-after 'build 'absolutize-tools
                     (lambda* (#:key inputs #:allow-other-keys)
                       (let ((ethtool (string-append (assoc-ref inputs "ethtool")
                                                     "/sbin/ethtool")))
                         (substitute* "scripts/airmon-ng"
-                          (("\\[ ! -x \"\\$\\(command -v ethtool 2>&1)\" \\]")
-                           (string-append "! " ethtool " --version "
-                                          ">/dev/null 2>&1"))
-                          (("\\$\\(ethtool")
-                           (string-append "$(" ethtool)))
+                          (("ethtool ")
+                           (string-append ethtool " ")))
                         #t))))))
-    (home-page "http://www.aircrack-ng.org")
+    (home-page "https://www.aircrack-ng.org")
     (synopsis "Assess WiFi network security")
     (description
      "Aircrack-ng is a complete suite of tools to assess WiFi network
@@ -845,7 +912,7 @@ private (reserved).")
 (define-public perl-net-dns
  (package
   (name "perl-net-dns")
-  (version "1.17")
+  (version "1.18")
   (source
     (origin
       (method url-fetch)
@@ -857,7 +924,7 @@ private (reserved).")
                        version ".tar.gz")))
       (sha256
         (base32
-          "1q62w9rf2w8kjzqagzr0rdn20ybl8gj3l6cdq4k8fw0sxa7zsycs"))))
+          "1lx902cbvlfl63bqfdrnyavmfwbjvrfdnwgdc1dgs1wpzja19kjj"))))
   (build-system perl-build-system)
   (inputs
     `(("perl-digest-hmac" ,perl-digest-hmac)))
@@ -870,7 +937,7 @@ private (reserved).")
 (define-public perl-socket6
  (package
   (name "perl-socket6")
-  (version "0.28")
+  (version "0.29")
   (source
     (origin
       (method url-fetch)
@@ -880,7 +947,7 @@ private (reserved).")
              ".tar.gz"))
       (sha256
         (base32
-          "11j5jzqbzmwlws9zals43ry2f1nw9qy6im7yhn9ck5rikywrmm5z"))))
+          "054izici8klfxs8hr5rljib28plijpsfymy99xbzdp047bx1b2a6"))))
   (build-system perl-build-system)
   (arguments
    `(#:phases
@@ -892,7 +959,7 @@ private (reserved).")
                             ,(string-append "PREFIX=" out)
                             "INSTALLDIRS=site")))
                (setenv "CONFIG_SHELL" (which "sh"))
-               (zero? (apply system* "perl" args))))))))
+               (apply invoke "perl" args)))))))
   (home-page "https://metacpan.org/release/Socket6")
   (synopsis
     "IPv6 related part of the C socket.h defines and structure manipulators for Perl")
@@ -952,7 +1019,7 @@ offline emulation of DNS.")
                             ,(string-append "PREFIX=" out)
                             "INSTALLDIRS=site")))
                (setenv "CONFIG_SHELL" (which "sh"))
-               (zero? (apply system* "perl" args))))))))
+               (apply invoke "perl" args)))))))
   (home-page
     "https://metacpan.org/release/NetAddr-IP")
   (synopsis
@@ -1088,7 +1155,7 @@ sockets in Perl.")
        (modify-phases %standard-phases
          (replace 'check
                   (lambda _
-                    (zero? (system* "ctest" "-E" "url-test")))))))
+                    (invoke "ctest" "-E" "url-test"))))))
     (synopsis "Library providing automatic proxy configuration management")
     (description "Libproxy handles the details of HTTP/HTTPS proxy
 configuration for applications across all scenarios.  Applications using
@@ -1359,13 +1426,13 @@ procedure calls (RPCs).")
        (modify-phases %standard-phases
          (replace 'install
            (lambda _
-             (zero? (system* "make"
-                             ;; Don't try to create directories under /var.
-                             "RUNDIR=/tmp"
-                             "PKIDIR=/tmp"
-                             "LOGDIR=/tmp"
-                             "DBDIR=/tmp"
-                             "install")))))))
+             (invoke "make"
+                     ;; Don't try to create directories under /var.
+                     "RUNDIR=/tmp"
+                     "PKIDIR=/tmp"
+                     "LOGDIR=/tmp"
+                     "DBDIR=/tmp"
+                     "install"))))))
     (native-inputs
      `(("perl" ,perl)
        ("pkg-config" ,pkg-config)
@@ -1649,15 +1716,17 @@ interface and a programmable text output for scripting.")
 (define-public libnet
   (package
     (name "libnet")
-    (version "1.1.6")
-    (source (origin
-              (method url-fetch)
-              (uri (string-append "https://github.com/sam-github/libnet/"
-                                  "archive/libnet-" version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
-              (sha256
-               (base32
-                "0l4gbzzvr199fzczzricjz7b825i7dlk6sgl5p5alnkcagmq0xys"))))
+    (version "1.2-rc3")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/sam-github/libnet")
+             (commit (string-append "libnet-" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32
+         "0cy8w4g5rv963v4p6iq3333kxgdddx2lywp70xf62553a25xhhs4"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
@@ -1666,8 +1735,8 @@ interface and a programmable text output for scripting.")
            (lambda _ (chdir "libnet") #t))
          (add-before 'build 'build-doc
            (lambda* (#:key make-flags #:allow-other-keys)
-             (zero? (apply system* "make" "-C" "doc" "doc"
-                           make-flags)))))))
+             (apply invoke "make" "-C" "doc" "doc"
+                    make-flags))))))
     (native-inputs
      `(("autoconf" ,autoconf)
        ("automake" ,automake)
@@ -1797,20 +1866,21 @@ file for more details.")
     (name "amule")
     (version "2.3.2")
     (source (origin
-              (method url-fetch)
-              (uri (string-append
-                    "https://github.com/amule-project/amule/archive/"
-                    version ".tar.gz"))
-              (file-name (string-append name "-" version ".tar.gz"))
+              (method git-fetch)
+              (uri (git-reference
+                     (url "https://github.com/amule-project/amule")
+                     (commit version)))
+              (file-name (git-file-name name version))
               (sha256
                (base32
-                "1wvcj0n9xz03xz5c2xwp6dwfp7sqjhhwbki3m0lwikskpn9lkzk2"))
+                "010wxm6g9f92x6fympj501zbnjka32rzbx0sk3a2y4zpih5d2nsn"))
               ;; Patch for adopting crypto++ >= 6.0.
               (patches (search-patches "amule-crypto-6.patch"))))
     (build-system gnu-build-system)
     (arguments
      `(#:phases
        (modify-phases %standard-phases
+         (delete 'bootstrap) ; bootstrap phase runs too early.
          (add-after 'patch-source-shebangs 'autogen
            (lambda _
              (invoke "sh" "autogen.sh")
@@ -2012,7 +2082,9 @@ Features:
        (list (string-append "LDFLAGS=-Wl,-rpath="
                             (assoc-ref %outputs "out")
                             "/lib")
-             "--with-logfile=/var/log/snmpd.log")
+             "--with-logfile=/var/log/snmpd.log"
+             (string-append "--with-openssl="
+                            (assoc-ref %build-inputs "openssl")))
        #:phases
        (modify-phases %standard-phases
          (add-after 'unpack 'patch-tests
@@ -2096,3 +2168,202 @@ SNMP v3 using both IPv4 and IPv6.")
 between various technologies.  Currently, bridging between UDP tunnels,
 Ethernet and TAP interfaces is supported.  Packet capture is also supported.")
     (license license:gpl3+)))
+
+(define-public hcxtools
+  (let* ((commit "2ecfc9a06c2028c47522ea566ccd82b2c1f94647"))
+    (package
+      (name "hcxtools")
+      (version (git-version "0.0.0" "1" commit))
+      (home-page "https://github.com/ZerBea/hcxtools")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "1hzwrpmxjxl674if0pp5iq06mdi24k7ni7bh1h20isp4s40201n3"))
+                (file-name (git-file-name name version))))
+      (build-system gnu-build-system)
+      (inputs
+       `(("curl" ,curl)
+         ("libpcap" ,libpcap)
+         ("openssl" ,openssl)
+         ("zlib" ,zlib)))
+      (arguments
+       `(#:make-flags (list "CC=gcc"
+                            (string-append "INSTALLDIR=" (assoc-ref %outputs "out") "/bin"))
+         #:tests? #f                    ;no tests
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure)
+           (add-after 'unpack 'set-environment
+             (lambda* (#:key inputs #:allow-other-keys)
+               (setenv "C_INCLUDE_PATH"
+                     (string-append (assoc-ref inputs "curl")
+                                    "/include:"
+                                    (assoc-ref inputs "libpcap")
+                                    "/include:"
+                                    (assoc-ref inputs "openssl")
+                                    "/include:"
+                                    (assoc-ref inputs "zlib")
+                                    "/include:"
+                                    (getenv "C_INCLUDE_PATH")))
+             #t)))))
+      (synopsis "Capture wlan traffic to hashcat and John the Ripper")
+      (description
+       "This package contains a small set of tools to capture and convert
+packets from wireless devices for use with hashcat or John the Ripper.")
+      (license license:expat))))
+
+(define-public hcxdumptool
+  (let* ((commit "f4799b5da82c5b030a6d99b02d1c1b9dc838ad36"))
+    (package
+      (name "hcxdumptool")
+      (version (git-version "0.0.0" "1" commit))
+      (home-page "https://github.com/ZerBea/hcxdumptool")
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url home-page)
+                      (commit commit)))
+                (sha256
+                 (base32
+                  "0qlsin0rws9sshn12faq4spmd0ffzssal36s71vhv6gkhhga7abl"))
+                (file-name (git-file-name name version))))
+      (build-system gnu-build-system)
+      (arguments
+       `(#:make-flags (list "CC=gcc"
+                            (string-append "INSTALLDIR=" (assoc-ref %outputs "out") "/bin"))
+         #:tests? #f                    ;no tests
+         #:phases
+         (modify-phases %standard-phases
+           (delete 'configure))))
+      (synopsis "Small tool to capture packets from wlan devices")
+      (description
+       "Small tool to capture packets from WLAN devices.  After capturing,
+upload the \"uncleaned\" cap to @url{https://wpa-sec.stanev.org/?submit} to
+see if the access point or the client is vulnerable to a dictionary attack.
+Convert the cap file to hccapx format and/or to WPA-PMKID-PBKDF2
+hashline (16800) with @command{hcxpcaptool} from the @code{hcxtools} package
+and check if the WLAN key or the master key was transmitted unencrypted.")
+      (license license:expat))))
+
+(define-public dante
+  (package
+    (name "dante")
+    (version "1.4.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://www.inet.no/dante/files/dante-"
+                           version ".tar.gz"))
+       (sha256
+        (base32
+         "19rqzj167q73ag20zxpvswhkk0bj56r5maf83v5016sw7vrcz5sc"))))
+    (build-system gnu-build-system)
+    (arguments
+     ;; XXX: The dynamic socks library doesn't work with 'libc.so' (GNU ld
+     ;; script).  When preloading is enabled, 'sockd' failed with:
+     ;;    … Failed to open library "libc.so": …: invalid ELF header
+     '(#:configure-flags '("--disable-preload")))
+    (home-page "https://www.inet.no/dante/")
+    (synopsis "SOCKS server and client")
+    (description "Dante is a SOCKS client and server implementation.  It can
+be installed on a machine with access to an external TCP/IP network and will
+allow all other machines, without direct access to that network, to be relayed
+through the machine the Dante server is running on.  The external network will
+never see any machines other than the one Dante is running on.")
+    (license (license:non-copyleft "file://LICENSE"))))
+
+(define-public restbed
+  (let ((commit "6eb385fa9051203f28bf96cc1844bbb5a9a6481f"))
+    (package
+      (name "restbed")
+      (version (git-version "4.6" "1" commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/Corvusoft/restbed/")
+               (commit commit)))
+         (file-name (string-append name "-" version ".tar.gz"))
+         (sha256
+          (base32 "0k60i5drklqqrb4khb25fzkgz9y0sncxf1sp6lh2bm1m0gh0661n"))))
+      (build-system cmake-build-system)
+      (inputs
+       `(("asio" ,asio)
+         ("catch" ,catch-framework)
+         ("openssl" ,openssl)))
+      (arguments
+       `(#:tests? #f
+         #:configure-flags
+         '("-DBUILD_TESTS=NO"
+           "-DBUILD_EXAMPLES=NO"
+           "-DBUILD_SSL=NO"
+           "-DBUILD_SHARED=NO")
+         #:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'apply-patches-and-fix-paths
+             (lambda* (#:key inputs #:allow-other-keys)
+               (let ((asio (assoc-ref inputs "asio"))
+                     (catch (assoc-ref inputs "catch"))
+                     (openssl (assoc-ref inputs "openssl")))
+                 (substitute* "cmake/Findasio.cmake"
+                   (("(find_path\\( asio_INCLUDE asio\\.hpp HINTS ).*$" all begin)
+                    (string-append begin " \"" asio "/include\" )")))
+                 (substitute* "cmake/Findcatch.cmake"
+                   (("(find_path\\( catch_INCLUDE catch\\.hpp HINTS ).*$" all begin)
+                    (string-append begin " \"" catch "/include\" )")))
+                 (substitute* "cmake/Findopenssl.cmake"
+                   (("(find_library\\( ssl_LIBRARY ssl ssleay32 HINTS ).*$" all begin)
+                    (string-append begin " \"" openssl "/lib\" )"))
+                   (("(find_library\\( crypto_LIBRARY crypto libeay32 HINTS ).*$" all begin)
+                    (string-append begin " \"" openssl "/lib\" )"))
+                   (("(find_path\\( ssl_INCLUDE openssl/ssl\\.h HINTS ).*$" all begin)
+                    (string-append begin " \"" openssl "/include\" )")))))))))
+      (synopsis "Asynchronous RESTful functionality to C++11 applications")
+      (description "Restbed is a comprehensive and consistent programming
+model for building applications that require seamless and secure
+communication over HTTP.")
+      (home-page "https://github.com/Corvusoft/restbed")
+      (license license:agpl3+))))
+
+(define-public opendht
+  (package
+    (name "opendht")
+    (version "1.8.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://github.com/savoirfairelinux/opendht.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "0vninb5mak27wigajslyvr05vq7wbrwqhbr4wzl2nmqcb20wmlq2"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("gnutls" ,gnutls)
+       ("nettle" ,nettle)
+       ("readline" ,readline)
+       ("jsoncpp" ,jsoncpp)
+       ("restbed" ,restbed)))
+    (propagated-inputs
+     `(("argon2" ,argon2)               ; TODO: Needed for the pkg-config .pc file to work?
+       ("msgpack" ,msgpack)))           ;included in several installed headers
+    (native-inputs
+     `(("autoconf" ,autoconf)
+       ("pkg-config" ,pkg-config)
+       ("automake" ,automake)
+       ("libtool" ,libtool)))
+    (arguments
+     `(#:configure-flags '("--disable-tools"
+                           "--disable-python"
+                           "--with-argon2")))
+    (home-page "https://github.com/savoirfairelinux/opendht/")
+    (synopsis "Distributed Hash Table (DHT) library")
+    (description "OpenDHT is a Distributed Hash Table (DHT) library.  It may
+be used to manage peer-to-peer network connections as needed for real time
+communication.")
+    (license license:gpl3+)))