You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

654 lines
25 KiB

gnu: Remove ".git" from "https://github/…/….git". Until now, 'lookup-origin' and thus 'lookup-origin-revision' in (guix swh) would sometimes return #f for these because the ".git" URLs are redirects to the non-".git" URLs. Consequently, 'guix lint -c archival' would keep saying "scheduled Software Heritage archival"; likewise, the fallback download code would fail. * gnu/packages/ada.scm, gnu/packages/admin.scm, gnu/packages/aidc.scm, gnu/packages/algebra.scm, gnu/packages/android.scm, gnu/packages/animation.scm, gnu/packages/arcan.scm, gnu/packages/assembly.scm, gnu/packages/audio.scm, gnu/packages/authentication.scm, gnu/packages/avr.scm, gnu/packages/axoloti.scm, gnu/packages/backup.scm, gnu/packages/bash.scm, gnu/packages/benchmark.scm, gnu/packages/bioconductor.scm, gnu/packages/bioinformatics.scm, gnu/packages/bittorrent.scm, gnu/packages/boost.scm, gnu/packages/build-tools.scm, gnu/packages/c.scm, gnu/packages/calendar.scm, gnu/packages/cdrom.scm, gnu/packages/check.scm, gnu/packages/chemistry.scm, gnu/packages/chez.scm, gnu/packages/clojure.scm, gnu/packages/code.scm, gnu/packages/compression.scm, gnu/packages/compton.scm, gnu/packages/coq.scm, gnu/packages/cpp.scm, gnu/packages/cran.scm, gnu/packages/crypto.scm, gnu/packages/curl.scm, gnu/packages/databases.scm, gnu/packages/datastructures.scm, gnu/packages/debug.scm, gnu/packages/disk.scm, gnu/packages/distributed.scm, gnu/packages/django.scm, gnu/packages/dlang.scm, gnu/packages/dns.scm, gnu/packages/docker.scm, gnu/packages/education.scm, gnu/packages/efi.scm, gnu/packages/elixir.scm, gnu/packages/emacs-xyz.scm, gnu/packages/embedded.scm, gnu/packages/emulators.scm, gnu/packages/engineering.scm, gnu/packages/erlang.scm, gnu/packages/fabric-management.scm, gnu/packages/file-systems.scm, gnu/packages/finance.scm, gnu/packages/firmware.scm, gnu/packages/flashing-tools.scm, gnu/packages/fonts.scm, gnu/packages/fontutils.scm, gnu/packages/fpga.scm, gnu/packages/game-development.scm, gnu/packages/games.scm, gnu/packages/genealogy.scm, gnu/packages/genimage.scm, gnu/packages/geo.scm, gnu/packages/gimp.scm, gnu/packages/gl.scm, gnu/packages/gnome-xyz.scm, gnu/packages/gnome.scm, gnu/packages/gnuzilla.scm, gnu/packages/golang.scm, gnu/packages/gpodder.scm, gnu/packages/graph.scm, gnu/packages/graphics.scm, gnu/packages/graphviz.scm, gnu/packages/groff.scm, gnu/packages/groovy.scm, gnu/packages/gtk.scm, gnu/packages/guile-xyz.scm, gnu/packages/guile.scm, gnu/packages/hardware.scm, gnu/packages/haskell-apps.scm, gnu/packages/haskell-xyz.scm, gnu/packages/hexedit.scm, gnu/packages/i2p.scm, gnu/packages/ibus.scm, gnu/packages/image-processing.scm, gnu/packages/image-viewers.scm, gnu/packages/image.scm, gnu/packages/ipfs.scm, gnu/packages/java-graphics.scm, gnu/packages/java-maths.scm, gnu/packages/java.scm, gnu/packages/javascript.scm, gnu/packages/jrnl.scm, gnu/packages/julia.scm, gnu/packages/jupyter.scm, gnu/packages/kodi.scm, gnu/packages/language.scm, gnu/packages/lego.scm, gnu/packages/less.scm, gnu/packages/libusb.scm, gnu/packages/linux.scm, gnu/packages/lirc.scm, gnu/packages/lisp-xyz.scm, gnu/packages/llvm.scm, gnu/packages/logging.scm, gnu/packages/lolcode.scm, gnu/packages/lua.scm, gnu/packages/lxde.scm, gnu/packages/lxqt.scm, gnu/packages/machine-learning.scm, gnu/packages/mail.scm, gnu/packages/markup.scm, gnu/packages/maths.scm, gnu/packages/maven.scm, gnu/packages/mes.scm, gnu/packages/messaging.scm, gnu/packages/monitoring.scm, gnu/packages/mpd.scm, gnu/packages/music.scm, gnu/packages/networking.scm, gnu/packages/node-xyz.scm, gnu/packages/ocaml.scm, gnu/packages/ocr.scm, gnu/packages/onc-rpc.scm, gnu/packages/opencl.scm, gnu/packages/opencog.scm, gnu/packages/pantheon.scm, gnu/packages/password-utils.scm, gnu/packages/patchutils.scm, gnu/packages/pdf.scm, gnu/packages/perl6.scm, gnu/packages/phabricator.scm, gnu/packages/popt.scm, gnu/packages/printers.scm, gnu/packages/prolog.scm, gnu/packages/protobuf.scm, gnu/packages/pulseaudio.scm, gnu/packages/python-crypto.scm, gnu/packages/python-web.scm, gnu/packages/python-xyz.scm, gnu/packages/qt.scm, gnu/packages/radio.scm, gnu/packages/rails.scm, gnu/packages/rdf.scm, gnu/packages/rednotebook.scm, gnu/packages/rpc.scm, gnu/packages/rsync.scm, gnu/packages/ruby.scm, gnu/packages/rust.scm, gnu/packages/scheme.scm, gnu/packages/screen.scm, gnu/packages/security-token.scm, gnu/packages/selinux.scm, gnu/packages/serialization.scm, gnu/packages/shells.scm, gnu/packages/shellutils.scm, gnu/packages/simh.scm, gnu/packages/sml.scm, gnu/packages/ssh.scm, gnu/packages/statistics.scm, gnu/packages/stenography.scm, gnu/packages/sync.scm, gnu/packages/syncthing.scm, gnu/packages/synergy.scm, gnu/packages/telephony.scm, gnu/packages/terminals.scm, gnu/packages/tex.scm, gnu/packages/texinfo.scm, gnu/packages/text-editors.scm, gnu/packages/textutils.scm, gnu/packages/time.scm, gnu/packages/tmux.scm, gnu/packages/tor.scm, gnu/packages/toys.scm, gnu/packages/version-control.scm, gnu/packages/video.scm, gnu/packages/vim.scm, gnu/packages/virtualization.scm, gnu/packages/vlang.scm, gnu/packages/vnc.scm, gnu/packages/vpn.scm, gnu/packages/web-browsers.scm, gnu/packages/web.scm, gnu/packages/wireservice.scm, gnu/packages/wm.scm, gnu/packages/wxwidgets.scm, gnu/packages/xdisorg.scm, gnu/packages/xml.scm, gnu/packages/xorg.scm, tests/lint.scm: Remove trailing ".git" from 'git-reference' URL.
1 year ago
gnu: Remove ".git" from "https://github/…/….git". Until now, 'lookup-origin' and thus 'lookup-origin-revision' in (guix swh) would sometimes return #f for these because the ".git" URLs are redirects to the non-".git" URLs. Consequently, 'guix lint -c archival' would keep saying "scheduled Software Heritage archival"; likewise, the fallback download code would fail. * gnu/packages/ada.scm, gnu/packages/admin.scm, gnu/packages/aidc.scm, gnu/packages/algebra.scm, gnu/packages/android.scm, gnu/packages/animation.scm, gnu/packages/arcan.scm, gnu/packages/assembly.scm, gnu/packages/audio.scm, gnu/packages/authentication.scm, gnu/packages/avr.scm, gnu/packages/axoloti.scm, gnu/packages/backup.scm, gnu/packages/bash.scm, gnu/packages/benchmark.scm, gnu/packages/bioconductor.scm, gnu/packages/bioinformatics.scm, gnu/packages/bittorrent.scm, gnu/packages/boost.scm, gnu/packages/build-tools.scm, gnu/packages/c.scm, gnu/packages/calendar.scm, gnu/packages/cdrom.scm, gnu/packages/check.scm, gnu/packages/chemistry.scm, gnu/packages/chez.scm, gnu/packages/clojure.scm, gnu/packages/code.scm, gnu/packages/compression.scm, gnu/packages/compton.scm, gnu/packages/coq.scm, gnu/packages/cpp.scm, gnu/packages/cran.scm, gnu/packages/crypto.scm, gnu/packages/curl.scm, gnu/packages/databases.scm, gnu/packages/datastructures.scm, gnu/packages/debug.scm, gnu/packages/disk.scm, gnu/packages/distributed.scm, gnu/packages/django.scm, gnu/packages/dlang.scm, gnu/packages/dns.scm, gnu/packages/docker.scm, gnu/packages/education.scm, gnu/packages/efi.scm, gnu/packages/elixir.scm, gnu/packages/emacs-xyz.scm, gnu/packages/embedded.scm, gnu/packages/emulators.scm, gnu/packages/engineering.scm, gnu/packages/erlang.scm, gnu/packages/fabric-management.scm, gnu/packages/file-systems.scm, gnu/packages/finance.scm, gnu/packages/firmware.scm, gnu/packages/flashing-tools.scm, gnu/packages/fonts.scm, gnu/packages/fontutils.scm, gnu/packages/fpga.scm, gnu/packages/game-development.scm, gnu/packages/games.scm, gnu/packages/genealogy.scm, gnu/packages/genimage.scm, gnu/packages/geo.scm, gnu/packages/gimp.scm, gnu/packages/gl.scm, gnu/packages/gnome-xyz.scm, gnu/packages/gnome.scm, gnu/packages/gnuzilla.scm, gnu/packages/golang.scm, gnu/packages/gpodder.scm, gnu/packages/graph.scm, gnu/packages/graphics.scm, gnu/packages/graphviz.scm, gnu/packages/groff.scm, gnu/packages/groovy.scm, gnu/packages/gtk.scm, gnu/packages/guile-xyz.scm, gnu/packages/guile.scm, gnu/packages/hardware.scm, gnu/packages/haskell-apps.scm, gnu/packages/haskell-xyz.scm, gnu/packages/hexedit.scm, gnu/packages/i2p.scm, gnu/packages/ibus.scm, gnu/packages/image-processing.scm, gnu/packages/image-viewers.scm, gnu/packages/image.scm, gnu/packages/ipfs.scm, gnu/packages/java-graphics.scm, gnu/packages/java-maths.scm, gnu/packages/java.scm, gnu/packages/javascript.scm, gnu/packages/jrnl.scm, gnu/packages/julia.scm, gnu/packages/jupyter.scm, gnu/packages/kodi.scm, gnu/packages/language.scm, gnu/packages/lego.scm, gnu/packages/less.scm, gnu/packages/libusb.scm, gnu/packages/linux.scm, gnu/packages/lirc.scm, gnu/packages/lisp-xyz.scm, gnu/packages/llvm.scm, gnu/packages/logging.scm, gnu/packages/lolcode.scm, gnu/packages/lua.scm, gnu/packages/lxde.scm, gnu/packages/lxqt.scm, gnu/packages/machine-learning.scm, gnu/packages/mail.scm, gnu/packages/markup.scm, gnu/packages/maths.scm, gnu/packages/maven.scm, gnu/packages/mes.scm, gnu/packages/messaging.scm, gnu/packages/monitoring.scm, gnu/packages/mpd.scm, gnu/packages/music.scm, gnu/packages/networking.scm, gnu/packages/node-xyz.scm, gnu/packages/ocaml.scm, gnu/packages/ocr.scm, gnu/packages/onc-rpc.scm, gnu/packages/opencl.scm, gnu/packages/opencog.scm, gnu/packages/pantheon.scm, gnu/packages/password-utils.scm, gnu/packages/patchutils.scm, gnu/packages/pdf.scm, gnu/packages/perl6.scm, gnu/packages/phabricator.scm, gnu/packages/popt.scm, gnu/packages/printers.scm, gnu/packages/prolog.scm, gnu/packages/protobuf.scm, gnu/packages/pulseaudio.scm, gnu/packages/python-crypto.scm, gnu/packages/python-web.scm, gnu/packages/python-xyz.scm, gnu/packages/qt.scm, gnu/packages/radio.scm, gnu/packages/rails.scm, gnu/packages/rdf.scm, gnu/packages/rednotebook.scm, gnu/packages/rpc.scm, gnu/packages/rsync.scm, gnu/packages/ruby.scm, gnu/packages/rust.scm, gnu/packages/scheme.scm, gnu/packages/screen.scm, gnu/packages/security-token.scm, gnu/packages/selinux.scm, gnu/packages/serialization.scm, gnu/packages/shells.scm, gnu/packages/shellutils.scm, gnu/packages/simh.scm, gnu/packages/sml.scm, gnu/packages/ssh.scm, gnu/packages/statistics.scm, gnu/packages/stenography.scm, gnu/packages/sync.scm, gnu/packages/syncthing.scm, gnu/packages/synergy.scm, gnu/packages/telephony.scm, gnu/packages/terminals.scm, gnu/packages/tex.scm, gnu/packages/texinfo.scm, gnu/packages/text-editors.scm, gnu/packages/textutils.scm, gnu/packages/time.scm, gnu/packages/tmux.scm, gnu/packages/tor.scm, gnu/packages/toys.scm, gnu/packages/version-control.scm, gnu/packages/video.scm, gnu/packages/vim.scm, gnu/packages/virtualization.scm, gnu/packages/vlang.scm, gnu/packages/vnc.scm, gnu/packages/vpn.scm, gnu/packages/web-browsers.scm, gnu/packages/web.scm, gnu/packages/wireservice.scm, gnu/packages/wm.scm, gnu/packages/wxwidgets.scm, gnu/packages/xdisorg.scm, gnu/packages/xml.scm, gnu/packages/xorg.scm, tests/lint.scm: Remove trailing ".git" from 'git-reference' URL.
1 year ago
  1. ;;; GNU Guix --- Functional package management for GNU
  2. ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
  3. ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
  4. ;;; Copyright © 2016 Mike Gerwitz <mtg@gnu.org>
  5. ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
  6. ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
  7. ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
  8. ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
  9. ;;; Copyright © 2018, 2019 Chris Marusich <cmmarusich@gmail.com>
  10. ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
  11. ;;;
  12. ;;; This file is part of GNU Guix.
  13. ;;;
  14. ;;; GNU Guix is free software; you can redistribute it and/or modify it
  15. ;;; under the terms of the GNU General Public License as published by
  16. ;;; the Free Software Foundation; either version 3 of the License, or (at
  17. ;;; your option) any later version.
  18. ;;;
  19. ;;; GNU Guix is distributed in the hope that it will be useful, but
  20. ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
  21. ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  22. ;;; GNU General Public License for more details.
  23. ;;;
  24. ;;; You should have received a copy of the GNU General Public License
  25. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
  26. (define-module (gnu packages security-token)
  27. #:use-module (gnu packages)
  28. #:use-module ((guix licenses) #:prefix license:)
  29. #:use-module (guix packages)
  30. #:use-module (guix download)
  31. #:use-module (guix gexp)
  32. #:use-module (guix git-download)
  33. #:use-module (guix build-system gnu)
  34. #:use-module (guix build-system glib-or-gtk)
  35. #:use-module (guix build-system python)
  36. #:use-module (gnu packages autotools)
  37. #:use-module (gnu packages base)
  38. #:use-module (gnu packages curl)
  39. #:use-module (gnu packages check)
  40. #:use-module (gnu packages docbook)
  41. #:use-module (gnu packages documentation)
  42. #:use-module (gnu packages dns)
  43. #:use-module (gnu packages gettext)
  44. #:use-module (gnu packages graphviz)
  45. #:use-module (gnu packages gtk)
  46. #:use-module (gnu packages libusb)
  47. #:use-module (gnu packages linux)
  48. #:use-module (gnu packages man)
  49. #:use-module (gnu packages networking)
  50. #:use-module (gnu packages cyrus-sasl)
  51. #:use-module (gnu packages popt)
  52. #:use-module (gnu packages readline)
  53. #:use-module (gnu packages tls)
  54. #:use-module (gnu packages tex)
  55. #:use-module (gnu packages perl)
  56. #:use-module (gnu packages pkg-config)
  57. #:use-module (gnu packages python)
  58. #:use-module (gnu packages python-crypto)
  59. #:use-module (gnu packages python-xyz)
  60. #:use-module (gnu packages swig)
  61. #:use-module (gnu packages web)
  62. #:use-module (gnu packages xml))
  63. (define-public ccid
  64. (package
  65. (name "ccid")
  66. (version "1.4.33")
  67. (source (origin
  68. (method url-fetch)
  69. (uri (string-append "https://ccid.apdu.fr/files/ccid-"
  70. version ".tar.bz2"))
  71. (sha256
  72. (base32
  73. "0974h2v9wq0j0ajw3c7yckaw8wqcppb2npfhfhmv9phijy9xlmjj"))))
  74. (build-system gnu-build-system)
  75. (arguments
  76. `(#:configure-flags (list (string-append "--enable-usbdropdir=" %output
  77. "/pcsc/drivers"))
  78. #:phases
  79. (modify-phases %standard-phases
  80. (add-after 'unpack 'patch-Makefile
  81. (lambda _
  82. (substitute* "src/Makefile.in"
  83. (("/bin/echo") (which "echo")))
  84. #t)))))
  85. (native-inputs
  86. `(("pcsc-lite" ,pcsc-lite) ; only required for headers
  87. ("perl" ,perl)
  88. ("pkg-config" ,pkg-config)))
  89. (inputs
  90. `(("libusb" ,libusb)))
  91. (home-page "https://ccid.apdu.fr/")
  92. (synopsis "PC/SC driver for USB smart card devices")
  93. (description
  94. "This package provides a PC/SC IFD handler implementation for devices
  95. compliant with the CCID and ICCD protocols. It supports a wide range of
  96. readers and is needed to communicate with such devices through the
  97. @command{pcscd} resource manager.")
  98. (license license:lgpl2.1+)))
  99. (define-public eid-mw
  100. (package
  101. (name "eid-mw")
  102. (version "4.4.27")
  103. (source
  104. (origin
  105. (method git-fetch)
  106. (uri (git-reference
  107. (url "https://github.com/Fedict/eid-mw")
  108. (commit (string-append "v" version))))
  109. (file-name (git-file-name name version))
  110. (sha256
  111. (base32 "17lw8iwp7h5cs3db80sysr84ffi333cf2vrhncs9l6hy6glfl2v1"))))
  112. (build-system glib-or-gtk-build-system)
  113. (native-inputs
  114. `(("autoconf" ,autoconf)
  115. ("automake" ,automake)
  116. ("gettext" ,gettext-minimal)
  117. ("libtool" ,libtool)
  118. ("pkg-config" ,pkg-config)
  119. ("perl" ,perl)))
  120. (inputs
  121. `(("curl" ,curl)
  122. ("openssl" ,openssl)
  123. ("gtk+" ,gtk+)
  124. ("pcsc-lite" ,pcsc-lite)
  125. ("p11-kit" ,p11-kit)
  126. ("libproxy" ,libproxy)
  127. ("libxml2" ,libxml2)
  128. ("cyrus-sasl" ,cyrus-sasl)))
  129. (arguments
  130. `(#:phases
  131. (modify-phases %standard-phases
  132. (add-after 'unpack 'bootstrap
  133. (lambda _
  134. ;; configure.ac relies on ‘git --describe’ to get the version.
  135. ;; Patch it to just return the real version number directly.
  136. (substitute* "scripts/build-aux/genver.sh"
  137. (("/bin/sh") (which "sh"))
  138. (("^(GITDESC=).*" _ match) (string-append match ,version "\n")))
  139. (invoke "sh" "./bootstrap.sh"))))))
  140. (synopsis "Belgian eID Middleware")
  141. (description "The Belgian eID Middleware is required to authenticate with
  142. online services using the Belgian electronic identity card.")
  143. (home-page "https://github.com/Fedict/eid-mw")
  144. (license license:lgpl3)))
  145. (define-public libyubikey
  146. (package
  147. (name "libyubikey")
  148. (version "1.13")
  149. (source (origin
  150. (method url-fetch)
  151. (uri (string-append
  152. "https://developers.yubico.com/yubico-c/Releases/"
  153. name "-" version ".tar.gz"))
  154. (sha256
  155. (base32
  156. "009l3k2zyn06dbrlja2d4p2vfnzjhlcqxi88v02mlrnb17mx1v84"))))
  157. (build-system gnu-build-system)
  158. (synopsis "Development kit for the YubiKey authentication device")
  159. (description
  160. "This package contains a C library and command-line tools that make up
  161. the low-level development kit for the Yubico YubiKey authentication device.")
  162. (home-page "https://developers.yubico.com/yubico-c/")
  163. (license license:bsd-2)))
  164. (define-public softhsm
  165. (package
  166. (name "softhsm")
  167. (version "2.6.1")
  168. (source (origin
  169. (method url-fetch)
  170. (uri (string-append
  171. "https://dist.opendnssec.org/source/"
  172. "softhsm-" version ".tar.gz"))
  173. (sha256
  174. (base32
  175. "1wkmyi6n3z2pak1cj5yk6v6bv9w0m24skycya48iikab0mrr8931"))))
  176. (build-system gnu-build-system)
  177. (arguments
  178. '(#:configure-flags '("--disable-gost"))) ; TODO Missing the OpenSSL
  179. ; engine for GOST
  180. (inputs
  181. `(("openssl" ,openssl)))
  182. (native-inputs
  183. `(("pkg-config" ,pkg-config)
  184. ("cppunit" ,cppunit)))
  185. (synopsis "Software implementation of a generic cryptographic device")
  186. (description
  187. "SoftHSM 2 is a software implementation of a generic cryptographic device
  188. with a PKCS #11 Cryptographic Token Interface.")
  189. (home-page "https://www.opendnssec.org/softhsm/")
  190. (license license:bsd-2)))
  191. (define-public pcsc-lite
  192. (package
  193. (name "pcsc-lite")
  194. (version "1.8.26")
  195. (source (origin
  196. (method url-fetch)
  197. (uri (string-append "https://pcsclite.apdu.fr/files/"
  198. "pcsc-lite-" version ".tar.bz2"))
  199. (sha256
  200. (base32
  201. "1ndvvz0fgqwz70pijymsxmx25mzryb0zav1i8jjc067ndryvxdry"))))
  202. (build-system gnu-build-system)
  203. (arguments
  204. `(#:configure-flags '("--enable-usbdropdir=/var/lib/pcsc/drivers"
  205. "--disable-libsystemd")))
  206. (native-inputs
  207. `(("perl" ,perl) ; for pod2man
  208. ("pkg-config" ,pkg-config)))
  209. (inputs
  210. `(("libudev" ,eudev)))
  211. (home-page "https://pcsclite.apdu.fr/")
  212. (synopsis "Middleware to access a smart card using PC/SC")
  213. (description
  214. "pcsc-lite provides an interface to communicate with smartcards and
  215. readers using the SCard API. pcsc-lite is used to connect to the PC/SC daemon
  216. from a client application and provide access to the desired reader.")
  217. (license (list license:bsd-3 ; pcsc-lite
  218. license:isc ; src/strlcat.c src/strlcpy.c
  219. license:gpl3+)))) ; src/spy/*
  220. (define-public ykclient
  221. (package
  222. (name "ykclient")
  223. (version "2.15")
  224. (source (origin
  225. (method url-fetch)
  226. (uri (string-append
  227. "https://developers.yubico.com/yubico-c-client/Releases/"
  228. name "-" version ".tar.gz"))
  229. (sha256
  230. (base32
  231. "05jhx9waj3pl120ddnwap1v3bjrnbfhvf3lxs2xmhpcmwzpwsqgl"))))
  232. (build-system gnu-build-system)
  233. ;; There's just one test, and it requires network access to access
  234. ;; yubico.com, so skip it.
  235. (arguments '(#:tests? #f))
  236. (native-inputs `(("pkg-config" ,pkg-config)
  237. ("help2man" ,help2man)))
  238. (inputs `(("curl" ,curl)))
  239. (synopsis "C library to validate one-time-password YubiKeys")
  240. (description
  241. "YubiKey C Client Library (libykclient) is a C library used to validate a
  242. one-time-password (OTP) YubiKey against Yubicos servers. See the Yubico
  243. website for more information about Yubico and the YubiKey.")
  244. (home-page "https://developers.yubico.com/yubico-c-client/")
  245. (license license:bsd-2)))
  246. (define-public opensc
  247. (package
  248. (name "opensc")
  249. (version "0.20.0")
  250. (source (origin
  251. (method url-fetch)
  252. (uri (string-append
  253. "https://github.com/OpenSC/OpenSC/releases/download/"
  254. version "/opensc-" version ".tar.gz"))
  255. (sha256
  256. (base32
  257. "0qs8pabkrpj1z52bkdsk59s2z6q5m0hfh9d5j1f68qs4lksb9x5v"))))
  258. (build-system gnu-build-system)
  259. (arguments
  260. `(#:phases
  261. (modify-phases %standard-phases
  262. ;; By setting an absolute path here, we arrange for OpenSC to
  263. ;; successfully dlopen libpcsclite.so.1 by default. The user can
  264. ;; still override this if they want to, by specifying a custom OpenSC
  265. ;; configuration file at runtime.
  266. (add-after 'unpack 'set-default-libpcsclite.so.1-path
  267. (lambda* (#:key inputs #:allow-other-keys)
  268. (let ((libpcsclite (string-append (assoc-ref inputs "pcsc-lite")
  269. "/lib/libpcsclite.so.1")))
  270. (substitute* "configure"
  271. (("DEFAULT_PCSC_PROVIDER=\"libpcsclite\\.so\\.1\"")
  272. (string-append
  273. "DEFAULT_PCSC_PROVIDER=\"" libpcsclite "\"")))
  274. #t))))))
  275. (inputs
  276. `(("readline" ,readline)
  277. ("openssl" ,openssl)
  278. ("pcsc-lite" ,pcsc-lite)
  279. ("ccid" ,ccid)))
  280. (native-inputs
  281. `(("libxslt" ,libxslt)
  282. ("docbook-xsl" ,docbook-xsl)
  283. ("pkg-config" ,pkg-config)))
  284. (home-page "https://github.com/OpenSC/OpenSC/wiki")
  285. (synopsis "Tools and libraries related to smart cards")
  286. (description
  287. "OpenSC is a set of software tools and libraries to work with smart
  288. cards, with the focus on smart cards with cryptographic capabilities. OpenSC
  289. facilitate the use of smart cards in security applications such as
  290. authentication, encryption and digital signatures. OpenSC implements the PKCS
  291. #15 standard and the PKCS #11 API.")
  292. (license license:lgpl2.1+)))
  293. (define-public yubico-piv-tool
  294. (package
  295. (name "yubico-piv-tool")
  296. (version "1.6.1")
  297. (source (origin
  298. (method url-fetch)
  299. (uri (string-append
  300. "https://developers.yubico.com/yubico-piv-tool/Releases/"
  301. name "-" version ".tar.gz"))
  302. (sha256
  303. (base32
  304. "10xgdc51xvszkxmsvqnbjs8ixxz7rfnfahh3wn8glllynmszbhwi"))))
  305. (build-system gnu-build-system)
  306. (inputs
  307. `(("gengetopt" ,gengetopt)
  308. ("perl" ,perl)
  309. ("pcsc-lite" ,pcsc-lite)
  310. ("openssl" ,openssl)))
  311. (native-inputs
  312. `(("doxygen" ,doxygen)
  313. ("graphviz" ,graphviz)
  314. ("help2man" ,help2man)
  315. ("check" ,check)
  316. ("texlive-bin" ,texlive-bin)
  317. ("pkg-config" ,pkg-config)))
  318. (home-page "https://developers.yubico.com/yubico-piv-tool/")
  319. (synopsis "Interact with the PIV application on a YubiKey")
  320. (description
  321. "The Yubico PIV tool is used for interacting with the Privilege and
  322. Identification Card (PIV) application on a YubiKey. With it you may generate
  323. keys on the device, import keys and certificates, create certificate requests,
  324. and other operations. It includes a library and a command-line tool.")
  325. ;; The file ykcs11/pkcs11.h also declares an additional, very short free
  326. ;; license for that one file. Please see it for details. The vast
  327. ;; majority of files are licensed under bsd-2.
  328. (license license:bsd-2)))
  329. (define-public yubikey-personalization
  330. (package
  331. (name "yubikey-personalization")
  332. (version "1.19.3")
  333. (source (origin
  334. (method url-fetch)
  335. (uri (string-append
  336. "https://developers.yubico.com/" name
  337. "/Releases/ykpers-" version ".tar.gz"))
  338. (sha256
  339. (base32
  340. "0jhvnavjrpwzmmjcw486df5s48j53njqgyz36yz3dskbaz3kwlfr"))))
  341. (build-system gnu-build-system)
  342. (arguments
  343. '(#:configure-flags (list (string-append "--with-udevrulesdir="
  344. (assoc-ref %outputs "out")
  345. "/lib/udev/rules.d"))))
  346. (inputs
  347. `(("json-c" ,json-c-0.13)
  348. ("libusb" ,libusb)
  349. ;; The library "libyubikey" is also known as "yubico-c".
  350. ("libyubikey" ,libyubikey)))
  351. (native-inputs
  352. `(("pkg-config" ,pkg-config)
  353. ("eudev" ,eudev)))
  354. (home-page "https://developers.yubico.com/yubikey-personalization/")
  355. (synopsis "Library and tools to personalize YubiKeys")
  356. (description
  357. "The YubiKey Personalization package contains a C library and command
  358. line tools for personalizing YubiKeys. You can use these to set an AES key,
  359. retrieve a YubiKey's serial number, and so forth.")
  360. (license license:bsd-2)))
  361. (define-public python-pyscard
  362. (package
  363. (name "python-pyscard")
  364. (version "1.9.9")
  365. (source (origin
  366. (method url-fetch)
  367. ;; The maintainer publishes releases on various sites, but
  368. ;; SourceForge is apparently the only one with a signed release.
  369. (uri (string-append
  370. "mirror://sourceforge/pyscard/pyscard/pyscard%20"
  371. version "/pyscard-" version ".tar.gz"))
  372. (sha256
  373. (base32
  374. "082cjkbxadaz2jb4rbhr0mkrirzlqyqhcf3r823qb0q1k50ybgg6"))))
  375. (build-system python-build-system)
  376. (arguments
  377. `(#:phases
  378. (modify-phases %standard-phases
  379. ;; Tell pyscard where to find the PCSC include directory.
  380. (add-after 'unpack 'patch-platform-include-dirs
  381. (lambda* (#:key inputs #:allow-other-keys)
  382. (let ((pcsc-include-dir (string-append
  383. (assoc-ref inputs "pcsc-lite")
  384. "/include/PCSC")))
  385. (substitute* "setup.py"
  386. (("platform_include_dirs = \\[.*?\\]")
  387. (string-append
  388. "platform_include_dirs = ['" pcsc-include-dir "']")))
  389. #t)))
  390. ;; pyscard wants to dlopen libpcsclite, so tell it where it is.
  391. (add-after 'unpack 'patch-dlopen
  392. (lambda* (#:key inputs #:allow-other-keys)
  393. (substitute* "smartcard/scard/winscarddll.c"
  394. (("lib = \"libpcsclite\\.so\\.1\";")
  395. (simple-format #f
  396. "lib = \"~a\";"
  397. (string-append (assoc-ref inputs "pcsc-lite")
  398. "/lib/libpcsclite.so.1"))))
  399. #t)))))
  400. (inputs
  401. `(("pcsc-lite" ,pcsc-lite)))
  402. (native-inputs
  403. `(("swig" ,swig)))
  404. (home-page "https://github.com/LudovicRousseau/pyscard")
  405. (synopsis "Smart card library for Python")
  406. (description
  407. "The pyscard smart card library is a framework for building smart card
  408. aware applications in Python. The smart card module is built on top of the
  409. PCSC API Python wrapper module.")
  410. (license license:lgpl2.1+)))
  411. (define-public python2-pyscard
  412. (package-with-python2 python-pyscard))
  413. (define-public libu2f-host
  414. (package
  415. (name "libu2f-host")
  416. (version "1.1.10")
  417. (source (origin
  418. (method url-fetch)
  419. (uri
  420. (string-append
  421. "https://developers.yubico.com"
  422. "/libu2f-host/Releases/libu2f-host-" version ".tar.xz"))
  423. (sha256
  424. (base32
  425. "0vrivl1dwql6nfi48z6dy56fwy2z13d7abgahgrs2mcmqng7hra2"))))
  426. (build-system gnu-build-system)
  427. (arguments
  428. `(#:configure-flags
  429. (list "--enable-gtk-doc"
  430. (string-append "--with-udevrulesdir="
  431. (assoc-ref %outputs "out")
  432. "/lib/udev/rules.d"))
  433. #:phases
  434. (modify-phases %standard-phases
  435. (add-after 'unpack 'patch-docbook-xml
  436. (lambda* (#:key inputs #:allow-other-keys)
  437. ;; Avoid a network connection attempt during the build.
  438. (substitute* "gtk-doc/u2f-host-docs.xml"
  439. (("http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd")
  440. (string-append (assoc-ref inputs "docbook-xml")
  441. "/xml/dtd/docbook/docbookx.dtd")))
  442. #t)))))
  443. (inputs
  444. `(("json-c" ,json-c-0.13)
  445. ("hidapi" ,hidapi)))
  446. (native-inputs
  447. `(("help2man" ,help2man)
  448. ("gengetopt" ,gengetopt)
  449. ("pkg-config" ,pkg-config)
  450. ("gtk-doc" ,gtk-doc)
  451. ("docbook-xml" ,docbook-xml-4.3)
  452. ("eudev" ,eudev)))
  453. (home-page "https://developers.yubico.com/libu2f-host/")
  454. ;; TRANSLATORS: The U2F protocol has a "server side" and a "host side".
  455. (synopsis "U2F host-side C library and tool")
  456. (description
  457. "Libu2f-host provides a C library and command-line tool that implements
  458. the host-side of the Universal 2nd Factor (U2F) protocol. There are APIs to
  459. talk to a U2F device and perform the U2F Register and U2F Authenticate
  460. operations.")
  461. ;; Most files are LGPLv2.1+, but some files are GPLv3+.
  462. (license (list license:lgpl2.1+ license:gpl3+))))
  463. (define-public libu2f-server
  464. (package
  465. (name "libu2f-server")
  466. (version "1.1.0")
  467. (source (origin
  468. (method git-fetch)
  469. (uri
  470. (git-reference
  471. (url "https://github.com/Yubico/libu2f-server")
  472. (commit (string-append "libu2f-server-" version))))
  473. (file-name (git-file-name name version))
  474. (sha256
  475. (base32
  476. "1nmsfq372zza5y6j13ydincjf324bwfcjg950vykh166xkp6wiic"))))
  477. (build-system gnu-build-system)
  478. (arguments
  479. `(#:configure-flags
  480. (list "--enable-gtk-doc"
  481. "--enable-tests")))
  482. (inputs
  483. `(("json-c" ,json-c-0.13)
  484. ("libressl" ,libressl)))
  485. (native-inputs
  486. `(("autoconf" ,autoconf)
  487. ("automake" ,automake)
  488. ("libtool" ,libtool)
  489. ("check" ,check)
  490. ("gengetopt" ,gengetopt)
  491. ("help2man" ,help2man)
  492. ("pkg-config" ,pkg-config)
  493. ("gtk-doc" ,gtk-doc)
  494. ("which" ,which)))
  495. (home-page "https://developers.yubico.com/libu2f-server/")
  496. ;; TRANSLATORS: The U2F protocol has a "server side" and a "host side".
  497. (synopsis "U2F server-side C library")
  498. (description
  499. "This is a C library that implements the server-side of the
  500. @dfn{Universal 2nd Factor} (U2F) protocol. More precisely, it provides an API
  501. for generating the JSON blobs required by U2F devices to perform the U2F
  502. Registration and U2F Authentication operations, and functionality for
  503. verifying the cryptographic operations.")
  504. (license license:bsd-2)))
  505. (define-public pam-u2f
  506. (package
  507. (name "pam-u2f")
  508. (version "1.0.8")
  509. (source (origin
  510. (method git-fetch)
  511. (uri
  512. (git-reference
  513. (url "https://github.com/Yubico/pam-u2f")
  514. (commit (string-append "pam_u2f-" version))))
  515. (file-name (git-file-name name version))
  516. (sha256
  517. (base32
  518. "04d9davyi33gqbvga1rvh9fijp6f16mx2xmnn4n61rnhcn2jac98"))))
  519. (build-system gnu-build-system)
  520. (arguments
  521. `(#:configure-flags
  522. (list (string-append "--with-pam-dir="
  523. (assoc-ref %outputs "out") "/lib/security"))))
  524. (inputs
  525. `(("libu2f-host" ,libu2f-host)
  526. ("libu2f-server" ,libu2f-server)
  527. ("linux-pam" ,linux-pam)))
  528. (native-inputs
  529. `(("autoconf" ,autoconf)
  530. ("automake" ,automake)
  531. ("libtool" ,libtool)
  532. ("asciidoc" ,asciidoc)
  533. ("pkg-config" ,pkg-config)))
  534. (home-page "https://developers.yubico.com/pam-u2f/")
  535. (synopsis "PAM module for U2F authentication")
  536. (description
  537. "This package provides a module implementing PAM over U2F, providing an
  538. easy way to integrate the YubiKey (or other U2F compliant authenticators) into
  539. your existing infrastructure.")
  540. (license license:bsd-2)))
  541. (define-public python-fido2
  542. (package
  543. (name "python-fido2")
  544. (version "0.5.0")
  545. (source (origin
  546. (method url-fetch)
  547. (uri
  548. (string-append
  549. "https://github.com/Yubico/python-fido2/releases/download/"
  550. version "/fido2-" version ".tar.gz"))
  551. (sha256
  552. (base32
  553. "1pl8d2pr6jzqj4y9qiaddhjgnl92kikjxy0bgzm2jshkzzic8mp3"))
  554. (snippet
  555. ;; Remove bundled dependency.
  556. #~(delete-file "fido2/public_suffix_list.dat"))))
  557. (build-system python-build-system)
  558. (arguments
  559. `(#:phases
  560. (modify-phases %standard-phases
  561. (add-after 'unpack 'install-public-suffix-list
  562. (lambda* (#:key inputs #:allow-other-keys)
  563. (copy-file
  564. (string-append (assoc-ref inputs "public-suffix-list")
  565. "/share/public-suffix-list-"
  566. ,(package-version public-suffix-list)
  567. "/public_suffix_list.dat")
  568. "fido2/public_suffix_list.dat")
  569. #t)))))
  570. (propagated-inputs
  571. `(("python-cryptography" ,python-cryptography)
  572. ("python-six" ,python-six)))
  573. (native-inputs
  574. `(("python-mock" ,python-mock)
  575. ("python-pyfakefs" ,python-pyfakefs)
  576. ("public-suffix-list" ,public-suffix-list)))
  577. (home-page "https://github.com/Yubico/python-fido2")
  578. (synopsis "Python library for communicating with FIDO devices over USB")
  579. (description
  580. "This Python library provides functionality for communicating with a Fast
  581. IDentity Online (FIDO) device over Universal Serial Bus (USB) as well as
  582. verifying attestation and assertion signatures. It aims to support the FIDO
  583. Universal 2nd Factor (U2F) and FIDO 2.0 protocols for communicating with a USB
  584. authenticator via the Client-to-Authenticator Protocol (CTAP 1 and 2). In
  585. addition to this low-level device access, classes defined in the
  586. @code{fido2.client} and @code{fido2.server} modules implement higher level
  587. operations which are useful when interfacing with an Authenticator, or when
  588. implementing a Relying Party.")
  589. ;; python-fido2 contains some derivative files originally from pyu2f
  590. ;; (https://github.com/google/pyu2f). These files are licensed under the
  591. ;; Apache License, version 2.0. The maintainers have customized these
  592. ;; files for internal use, so they are not really a bundled dependency.
  593. (license (list license:bsd-2 license:asl2.0))))
  594. (define-public python2-fido2
  595. (package-with-python2 python-fido2))
  596. (define-public python-yubikey-manager
  597. (package
  598. (name "python-yubikey-manager")
  599. (version "2.1.0")
  600. (source (origin
  601. (method url-fetch)
  602. (uri (string-append
  603. "https://developers.yubico.com/yubikey-manager/Releases"
  604. "/yubikey-manager-" version ".tar.gz"))
  605. (sha256
  606. (base32
  607. "11rsmcaj60k3y5m5gdhr2nbbz0w5dm3m04klyxz0fh5hnpcmr7fm"))))
  608. (build-system python-build-system)
  609. (propagated-inputs
  610. `(("python-six" ,python-six)
  611. ("python-pyscard" ,python-pyscard)
  612. ("python-pyusb" ,python-pyusb)
  613. ("python-click" ,python-click)
  614. ("python-cryptography" ,python-cryptography)
  615. ("python-pyopenssl" ,python-pyopenssl)
  616. ("python-fido2" ,python-fido2)))
  617. (inputs
  618. `(("yubikey-personalization" ,yubikey-personalization)
  619. ("pcsc-lite" ,pcsc-lite)
  620. ("libusb" ,libusb)))
  621. (native-inputs
  622. `(("swig" ,swig)
  623. ("python-mock" ,python-mock)))
  624. (home-page "https://developers.yubico.com/yubikey-manager/")
  625. (synopsis "Command line tool and library for configuring a YubiKey")
  626. (description
  627. "Python library and command line tool for configuring a YubiKey. Note
  628. that after installing this package, you might still need to add appropriate
  629. udev rules to your system configuration to be able to configure the YubiKey as
  630. an unprivileged user.")
  631. (license license:bsd-2)))
  632. (define-public python2-yubikey-manager
  633. (package-with-python2 python-yubikey-manager))