diff --git a/gnu/local.mk b/gnu/local.mk index 98373aa2fe..dee36f8b44 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -68,6 +68,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/attr.scm \ %D%/packages/audio.scm \ %D%/packages/augeas.scm \ + %D%/packages/authentication.scm \ %D%/packages/autogen.scm \ %D%/packages/autotools.scm \ %D%/packages/avahi.scm \ diff --git a/gnu/packages/authentication.scm b/gnu/packages/authentication.scm new file mode 100644 index 0000000000..a58eac9890 --- /dev/null +++ b/gnu/packages/authentication.scm @@ -0,0 +1,77 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2018 Tobias Geerinckx-Rice +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see . + +(define-module (gnu packages authentication) + #:use-module (gnu packages linux) + #:use-module (gnu packages pkg-config) + #:use-module (guix build-system gnu) + #:use-module (guix download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages)) + +(define-public oath-toolkit + ;; If gcc@7 breaks this package before its next release, try patching it: + ;; . + (package + (name "oath-toolkit") + (version "2.6.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://download.savannah.nongnu.org/releases/" + name "/" name "-" version ".tar.gz")) + (sha256 + (base32 "182ah8vfbg0yhv6mh1b6ap944d0na6x7lpfkwkmzb6jl9gx4cd5h")))) + (build-system gnu-build-system) + (arguments + ;; TODO ‘--enable-pskc’ causes xmlsec-related test suite failures. + `(#:configure-flags + (list "--enable-pam") + #:phases + (modify-phases %standard-phases + (add-after 'install 'delete-static-libraries + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib"))) + (for-each delete-file (find-files lib "\\.a$")) + #t)))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("linux-pam" ,linux-pam))) ; for --enable-pam + (home-page "https://www.nongnu.org/oath-toolkit/") + (synopsis "One-time password (OTP) components") + ;; TODO Add the following items after they've been enabled. + ;; @item @command{pskctool}, a command-line tool for manipulating secret key + ;; files in the Portable Symmetric Key Container (@dfn{PSKC}) format + ;; described in RFC6030. + ;; @item @code{libpskc}, a shared and static C library for PSKC handling. + (description + "The @dfn{OATH} (Open AuTHentication) Toolkit provides various components +for building one-time password (@dfn{OTP}) authentication systems: + +@itemize +@item @command{oathtool}, a command-line tool for generating & validating OTPs. +@item @code{liboath}, a C library for OATH handling. +@item @code{pam_oath}, a PAM module for pluggable login authentication. +@end itemize + +Supported technologies include the event-based @dfn{HOTP} algorithm (RFC4226) +and the time-based @dfn{TOTP} algorithm (RFC6238).") + (license (list license:lgpl2.1+ ; the libraries (liboath/ & libpskc/) + license:gpl3+)))) ; the tools (everything else)