X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/6969c4de445a390eaa05de22bc5a537a76a76169..4286a6b0858025262cae281bf62c7e88b4671697:/gnu/packages/gnupg.scm diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index da0c33565a..366a163864 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -1,19 +1,19 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès ;;; Copyright © 2013, 2015, 2018 Andreas Enge -;;; Copyright © 2014 Eric Bavier +;;; Copyright © 2014, 2018 Eric Bavier ;;; Copyright © 2014, 2015, 2016 Mark H Weaver ;;; Copyright © 2015 Paul van der Walt -;;; Copyright © 2015, 2016, 2017, 2018 Efraim Flashner -;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus +;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner +;;; Copyright © 2015, 2016, 2017, 2019 Ricardo Wurmus ;;; Copyright © 2016 Christopher Allan Webber -;;; Copyright © 2016, 2017 Nils Gillmann +;;; Copyright © 2016, 2017 ng0 ;;; Copyright © 2016 Christopher Baines ;;; Copyright © 2016 Mike Gerwitz ;;; Copyright © 2016 Troy Sankey ;;; Copyright © 2017 Leo Famulari ;;; Copyright © 2017 Petter -;;; Copyright © 2018 Tobias Geerinckx-Rice +;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2018 Marius Bakke ;;; ;;; This file is part of GNU Guix. @@ -40,22 +40,27 @@ #:use-module (gnu packages curl) #:use-module (gnu packages crypto) #:use-module (gnu packages emacs) + #:use-module (gnu packages enlightenment) + #:use-module (gnu packages gettext) + #:use-module (gnu packages guile) #:use-module (gnu packages openldap) #:use-module (gnu packages perl) #:use-module (gnu packages perl-check) #:use-module (gnu packages pth) #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages readline) #:use-module (gnu packages compression) - #:use-module (gnu packages databases) #:use-module (gnu packages gtk) #:use-module (gnu packages glib) #:use-module (gnu packages gnome) #:use-module (gnu packages pkg-config) #:use-module (gnu packages ncurses) #:use-module (gnu packages security-token) + #:use-module (gnu packages sqlite) #:use-module (gnu packages swig) + #:use-module (gnu packages texinfo) #:use-module (gnu packages tls) #:use-module (gnu packages tor) #:use-module (gnu packages web) @@ -65,12 +70,13 @@ #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (guix build-system perl) - #:use-module (guix build-system python)) + #:use-module (guix build-system python) + #:use-module (srfi srfi-1)) (define-public libgpg-error (package (name "libgpg-error") - (version "1.28") + (version "1.32") (source (origin (method url-fetch) @@ -78,8 +84,7 @@ version ".tar.bz2")) (sha256 (base32 - "0jfsfnh9bxlxiwxws60yah4ybjw2hshmvqp31pri4m4h8ivrbnry")) - (patches (search-patches "libgpg-error-aarch64-logging-fix.patch")))) + "1jj08ns4sh1hmafqp1giskvdicdz18la516va26jycy27kkwaif3")))) (build-system gnu-build-system) (home-page "https://gnupg.org") (synopsis "Library of error values for GnuPG components") @@ -92,32 +97,19 @@ Daemon and possibly more in the future.") (properties '((ftp-server . "ftp.gnupg.org") (ftp-directory . "/gcrypt/libgpg-error"))))) -;; Some packages (e.g. GPGME) require a newer libgpg-error to deal with -;; error codes from recent GnuPG. Remove this in the next rebuild cycle. -(define-public libgpg-error-1.31 - (package - (inherit libgpg-error) - (version "1.31") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnupg/libgpg-error/libgpg-error-" - version ".tar.bz2")) - (sha256 - (base32 - "1vx4nw6rxh2biy3h8n96fyr86q29h8gjl6837437i51jr4isil20")))))) - (define-public libgcrypt (package - (replacement libgcrypt/fixed) (name "libgcrypt") - (version "1.8.2") + (version "1.8.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-" version ".tar.bz2")) (sha256 (base32 - "01sca9m8hm6b5v8hmqsfdjhyz013869p1f0fxw9ln52qfnp4q1n8")))) + "0z5gs1khzyknyfjr19k8gk4q148s6q987ya85cpn0iv70fz91v36")) + (patches + (search-patches "libgcrypt-make-yat2m-reproducible.patch")))) (build-system gnu-build-system) (propagated-inputs `(("libgpg-error-host" ,libgpg-error))) @@ -143,23 +135,10 @@ generation.") (properties '((ftp-server . "ftp.gnupg.org") (ftp-directory . "/gcrypt/libgcrypt"))))) -(define libgcrypt/fixed - (package - (inherit libgcrypt) - (name "libgcrypt") - (version "1.8.3") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-" - version ".tar.bz2")) - (sha256 - (base32 - "0z5gs1khzyknyfjr19k8gk4q148s6q987ya85cpn0iv70fz91v36")))))) - (define-public libassuan (package (name "libassuan") - (version "2.5.1") + (version "2.5.3") (source (origin (method url-fetch) @@ -167,7 +146,7 @@ generation.") version ".tar.bz2")) (sha256 (base32 - "0jb4nb4nrjr949gd3lw8lh4v5d6qigxaq6xwy24w5apjnhvnrya7")))) + "00p7cpvzf0q3qwcgg51r9d0vbab4qga2xi8wpk2fgd36710b1g4i")))) (build-system gnu-build-system) (propagated-inputs `(("libgpg-error" ,libgpg-error) @@ -245,14 +224,14 @@ compatible to GNU Pth.") (define-public gnupg (package (name "gnupg") - (version "2.2.8") + (version "2.2.16") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/gnupg/gnupg-" version ".tar.bz2")) (sha256 (base32 - "1k8dnnfs9888yp713l7kg2jg110lw47s4krx0njna6fjrsw4qyvp")))) + "1jqlzp9b3kpfp1dkjqskm67jjrhvf9nh3lzf45321p7m9d2qvgkc")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -390,21 +369,19 @@ libskba (working with X.509 certificates and CMS data).") (define-public gpgme (package (name "gpgme") - (version "1.11.1") + (version "1.13.1") (source (origin (method url-fetch) - (uri (string-append "mirror://gnupg/gpgme/gpgme-" version - ".tar.bz2")) + (uri (string-append "mirror://gnupg/gpgme/gpgme-" version ".tar.bz2")) (sha256 - (base32 - "0vxx5xaag3rhp4g2arp5qm77gvz4kj0m3hnpvhkdvqyjfhbi26rd")))) + (base32 "0imyjfryvvjdbai454p70zcr95m94j9xnzywrlilqdw2fqi0pqy4")))) (build-system gnu-build-system) (native-inputs `(("gnupg" ,gnupg))) (propagated-inputs ;; Needs to be propagated because gpgme.h includes gpg-error.h. - `(("libgpg-error" ,libgpg-error-1.31))) + `(("libgpg-error" ,libgpg-error))) (inputs `(("libassuan" ,libassuan))) (home-page "https://www.gnupg.org/related_software/gpgme/") @@ -451,19 +428,65 @@ QGpgME was originally developed as part of libkleo and incorporated into gpgpme starting with version 1.7.") (license license:gpl2+))) ;; Note: this differs from gpgme +(define-public guile-gcrypt + (package + (name "guile-gcrypt") + (version "0.1.0") + (home-page "https://notabug.org/cwebber/guile-gcrypt") + (source (origin + (method git-fetch) + (uri (git-reference + (url (string-append home-page ".git")) + (commit (string-append "v" version)))) + (sha256 + (base32 + "1lhgh3105yi0ggrjsjibv4wp1ipz8s17pa820hk2wln3rc04wpvf")) + (file-name (string-append name "-" version "-checkout")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("autoconf" ,autoconf) + ("automake" ,automake) + ("texinfo" ,texinfo))) + (inputs + `(("guile" ,guile-2.2) + ("libgcrypt" ,libgcrypt))) + (synopsis "Cryptography library for Guile using Libgcrypt") + (description + "Guile-Gcrypt provides a Guile 2.x interface to a subset of the +GNU Libgcrypt crytographic library. It provides modules for cryptographic +hash functions, message authentication codes (MAC), public-key cryptography, +strong randomness, and more. It is implemented using the foreign function +interface (FFI) of Guile.") + (license license:gpl3+))) + +(define-public guile2.0-gcrypt + (package (inherit guile-gcrypt) + (name "guile2.0-gcrypt") + (inputs + `(("guile" ,guile-2.0) + ,@(alist-delete "guile" (package-inputs guile-gcrypt)))))) + (define-public python-gpg (package (name "python-gpg") - (version "1.8.0") + (version "1.10.0") (source (origin (method url-fetch) (uri (pypi-uri "gpg" version)) (sha256 (base32 - "1x74i6q713c0bckls7rdm8kgsmllf9qvy9x62jghszlhgjkyh9nd")))) + "1ji3ynhp36m1ccx7bmaq75dhij9frpn19v9mpi4aajn8csl194il")))) (build-system python-build-system) (arguments - '(#:tests? #f)) ; No test suite. + '(#:phases + (modify-phases %standard-phases + (add-before 'build 'set-environment + (lambda _ + (substitute* "setup.py" + (("cc") (which "gcc"))) + #t))) + #:tests? #f)) ; No test suite. (inputs `(("gpgme" ,gpgme))) (native-inputs @@ -498,11 +521,9 @@ distributed separately.") `(#:phases (modify-phases %standard-phases (add-before 'build 'make-build - (lambda _ - (zero? (system* "make" "build")))) + (lambda _ (invoke "make" "build"))) (replace 'check - (lambda _ - (zero? (system* "make" "check"))))))) + (lambda _ (invoke "make" "check")))))) (build-system python-build-system) (native-inputs `(("gnupg" ,gnupg-1))) @@ -585,7 +606,7 @@ and signature functionality from Python programs.") (native-inputs `(("which" ,which) ("perl-module-install" ,perl-module-install))) - (home-page "http://search.cpan.org/dist/GnuPG-Interface/") + (home-page "https://metacpan.org/release/GnuPG-Interface") (synopsis "Perl interface to GnuPG") (description "@code{GnuPG::Interface} and its associated modules are designed to provide an object-oriented method for interacting with GnuPG, @@ -596,7 +617,7 @@ signing, decryption, verification, and key-listing parsing.") (define-public pius (package (name "pius") - (version "2.2.6") + (version "2.2.7") (source (origin (method url-fetch) (uri (string-append @@ -604,15 +625,14 @@ signing, decryption, verification, and key-listing parsing.") version "/pius-" version ".tar.bz2")) (sha256 (base32 - "1893hzpx3zv724drqv48csrn0cm98xw4ymb1zmhs2jvjj1778zfj")) - (patches (search-patches "pius.patch")))) + "1nsl7czicv95j0gfz4s82ys3g3h2mwr6cq3ilid8bpz3iy7z4ipy")))) (build-system python-build-system) - (inputs `(("perl" ,perl) ;for 'pius-party-worksheet' + (inputs `(("perl" ,perl) ; for 'pius-party-worksheet' ("gpg" ,gnupg) ("python-six" ,python2-six))) (arguments `(#:tests? #f - #:python ,python-2 ;uses the Python 2 'print' syntax + #:python ,python-2 ; uses the Python 2 'print' syntax #:phases (modify-phases %standard-phases (add-before @@ -637,87 +657,86 @@ PGP keysigning parties.") (home-page "https://www.phildev.net/pius/index.shtml"))) (define-public signing-party - ;; Upstream moved from alioth.debian.org to salsa.debian.org but the - ;; automatic svn import did not preserve tags apparently, so there's no real - ;; version number. - (let ((commit "d6f2296325605ee96ddf9f5b156e5e3f667a6df3") - (revision "0")) - (package - (name "signing-party") - (version (git-version "2.6" revision commit)) - (home-page "https://salsa.debian.org/stappers/pgp-tools") - (source (origin - (method git-fetch) - (uri (git-reference - (url home-page) - (commit commit))) - (sha256 - (base32 - "00f7zasbwcbjzd92br2j10pyjxv0aw1qb4540qfz2dxzxgmdscrz")))) - (build-system gnu-build-system) - (native-inputs - `(("autoconf" ,autoconf-wrapper) - ("automake" ,automake))) - (inputs `(("perl" ,perl) - ("perl-text-template" ,perl-text-template) - ("perl-mime-tools" ,perl-mime-tools) - ("perl-gnupg-interface" ,perl-gnupg-interface) - ("perl-net-idn-encode" ,perl-net-idn-encode) - ("libmd" ,libmd))) - (arguments - `(#:tests? #f - #:phases - (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* "keyanalyze/Makefile" - (("LDLIBS") (string-append "CC=" (which "gcc") "\nLDLIBS"))) - (substitute* "keyanalyze/Makefile" - (("\\./configure") (string-append "./configure --prefix=" out))) - (substitute* "gpgwrap/Makefile" - (("\\} clean") - (string-append "} clean\ninstall:\n\tinstall -D bin/gpgwrap " - out "/bin/gpgwrap\n"))) - (substitute* '("gpgsigs/Makefile" "keyanalyze/Makefile" - "keylookup/Makefile" "sig2dot/Makefile" - "springgraph/Makefile") - (("/usr") out)) - (setenv "CONFIG_SHELL" (which "sh"))))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys #:rest args) - (let ((out (assoc-ref outputs "out")) - (install (assoc-ref %standard-phases 'install))) - (apply install args) - (for-each - (lambda (dir file) - (copy-file (string-append dir "/" file) - (string-append out "/bin/" file))) - '("caff" "caff" "caff" "gpgdir" "gpg-key2ps" - "gpglist" "gpg-mailkeys" "gpgparticipants") - '("caff" "pgp-clean" "pgp-fixkey" "gpgdir" "gpg-key2ps" - "gpglist" "gpg-mailkeys" "gpgparticipants")) - (for-each - (lambda (dir file) - (copy-file (string-append dir "/" file) - (string-append out "/share/man/man1/" file))) - '("caff" "caff" "caff" "gpgdir" - "gpg-key2ps" "gpglist" "gpg-mailkeys" - "gpgparticipants" "gpgsigs" "gpgwrap/doc" - "keyanalyze" "keyanalyze/pgpring" "keyanalyze") - '("caff.1" "pgp-clean.1" "pgp-fixkey.1" "gpgdir.1" - "gpg-key2ps.1" "gpglist.1" "gpg-mailkeys.1" - "gpgparticipants.1" "gpgsigs.1" "gpgwrap.1" - "process_keys.1" "pgpring.1" "keyanalyze.1"))))) - (add-after 'install 'wrap-programs - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out"))) - (wrap-program - (string-append out "/bin/caff") - `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB")))))))))) - (synopsis "Collection of scripts for simplifying gnupg key signing") - (description - "Signing-party is a collection for all kinds of PGP/GnuPG related things, + (package + (name "signing-party") + (version "2.7") + (home-page "https://salsa.debian.org/debian/signing-party") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "release-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1gx9017wag4bgc0h7kca9n3jwwdm7z77yv3viayhg62flbwkvbgb")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf-wrapper) + ("automake" ,automake))) + (inputs `(("perl" ,perl) + ("perl-text-template" ,perl-text-template) + ("perl-mime-tools" ,perl-mime-tools) + ("perl-gnupg-interface" ,perl-gnupg-interface) + ("perl-net-idn-encode" ,perl-net-idn-encode) + ("libmd" ,libmd))) + (arguments + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "keyanalyze/Makefile" + (("LDLIBS") (string-append "CC=" (which "gcc") "\nLDLIBS"))) + (substitute* "keyanalyze/Makefile" + (("\\./configure") (string-append "./configure --prefix=" out))) + (substitute* "gpgwrap/Makefile" + (("\\} clean") + (string-append "} clean\ninstall:\n\tinstall -D bin/gpgwrap " + out "/bin/gpgwrap\n"))) + (substitute* '("gpgsigs/Makefile" "keyanalyze/Makefile" + "keylookup/Makefile" "sig2dot/Makefile" + "springgraph/Makefile") + (("/usr") out)) + (setenv "CONFIG_SHELL" (which "sh"))) + #t)) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys #:rest args) + (let ((out (assoc-ref outputs "out")) + (install (assoc-ref %standard-phases 'install))) + (apply install args) + (for-each + (lambda (dir file) + (copy-file (string-append dir "/" file) + (string-append out "/bin/" file))) + '("caff" "caff" "caff" "gpgdir" "gpg-key2ps" + "gpglist" "gpg-mailkeys" "gpgparticipants") + '("caff" "pgp-clean" "pgp-fixkey" "gpgdir" "gpg-key2ps" + "gpglist" "gpg-mailkeys" "gpgparticipants")) + (for-each + (lambda (dir file) + (copy-file (string-append dir "/" file) + (string-append out "/share/man/man1/" file))) + '("caff" "caff" "caff" "gpgdir" + "gpg-key2ps" "gpglist" "gpg-mailkeys" + "gpgparticipants" "gpgsigs" "gpgwrap/doc" + "keyanalyze" "keyanalyze/pgpring" "keyanalyze") + '("caff.1" "pgp-clean.1" "pgp-fixkey.1" "gpgdir.1" + "gpg-key2ps.1" "gpglist.1" "gpg-mailkeys.1" + "gpgparticipants.1" "gpgsigs.1" "gpgwrap.1" + "process_keys.1" "pgpring.1" "keyanalyze.1"))) + #t)) + (add-after 'install 'wrap-programs + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out"))) + (wrap-program + (string-append out "/bin/caff") + `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB"))))) + #t))))) + (synopsis "Collection of scripts for simplifying gnupg key signing") + (description + "Signing-party is a collection for all kinds of PGP/GnuPG related things, including tools for signing keys, keyring analysis, and party preparation. @enumerate @item caff: CA - Fire and Forget signs and mails a key @@ -735,10 +754,10 @@ including tools for signing keys, keyring analysis, and party preparation. @item sig2dot: converts a list of GnuPG signatures to a .dot file @item springgraph: creates a graph from a .dot file @end enumerate") - ;; gpl2+ for almost all programs, except for keyanalyze: gpl2 - ;; and caff and gpgsigs: bsd-3, see - ;; http://packages.debian.org/changelogs/pool/main/s/signing-party/current/copyright - (license license:gpl2)))) + ;; gpl2+ for almost all programs, except for keyanalyze: gpl2 + ;; and caff and gpgsigs: bsd-3, see + ;; http://packages.debian.org/changelogs/pool/main/s/signing-party/current/copyright + (license license:gpl2))) (define-public pinentry-tty (package @@ -821,6 +840,34 @@ software."))) "Pinentry provides a console and a Qt GUI that allows users to enter a passphrase when @code{gpg} is run and needs it."))) +(define-public pinentry-efl + (package + (inherit pinentry-tty) + (name "pinentry-efl") + (source + (origin + (inherit (package-source pinentry-tty)) + (patches (search-patches "pinentry-efl.patch")))) + (arguments + '(#:configure-flags '("--enable-pinentry-efl") + #:phases + (modify-phases %standard-phases + (replace 'bootstrap + (lambda _ + (invoke "sh" "autogen.sh")))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("gettext" ,gettext-minimal) + ,@(package-native-inputs pinentry-tty))) + (inputs + `(("efl" ,efl) + ,@(package-inputs pinentry-tty))) + (description + "Pinentry provides a console and a graphical interface for the +@dfn{Enlightenment Foundation Libraries} (EFL) that allows users to enter a +passphrase when @code{gpg} is run and needs it."))) + (define-public pinentry (package (inherit pinentry-gtk2) (name "pinentry"))) @@ -891,8 +938,8 @@ files, to verify signatures, and to manage the private and public keys.") (version "0.10.3") (source (origin (method url-fetch) - (uri (string-append "https://gaffer.ptitcanardnoir.org/" - "intrigeri/files/parcimonie/App-Parcimonie-" + (uri (string-append "https://gaffer.boum.org/intrigeri/files/" + "parcimonie/App-Parcimonie-" version ".tar.gz")) (sha256 (base32 @@ -962,7 +1009,7 @@ files, to verify signatures, and to manage the private and public keys.") `("PERL5LIB" ":" prefix (,(string-append perllib ":" (getenv "PERL5LIB"))))) #t)))))) - (home-page "https://gaffer.ptitcanardnoir.org/intrigeri/code/parcimonie/") + (home-page "https://gaffer.boum.org/intrigeri/code/parcimonie/") (synopsis "Incrementally refreshes a GnuPG keyring") (description "Parcimonie incrementaly refreshes a GnuPG keyring in a way that makes it hard to correlate the keyring content to an individual, and