gnu: gdb: Upgrade to 7.7.
[jackhill/guix/guix.git] / gnu / packages / gnupg.scm
CommitLineData
233e7676 1;;; GNU Guix --- Functional package management for GNU
40d806af 2;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
ea4d96c6 3;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
8d1939e4 4;;;
233e7676 5;;; This file is part of GNU Guix.
8d1939e4 6;;;
233e7676 7;;; GNU Guix is free software; you can redistribute it and/or modify it
8d1939e4
LC
8;;; under the terms of the GNU General Public License as published by
9;;; the Free Software Foundation; either version 3 of the License, or (at
10;;; your option) any later version.
11;;;
233e7676 12;;; GNU Guix is distributed in the hope that it will be useful, but
8d1939e4
LC
13;;; WITHOUT ANY WARRANTY; without even the implied warranty of
14;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15;;; GNU General Public License for more details.
16;;;
17;;; You should have received a copy of the GNU General Public License
233e7676 18;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
8d1939e4 19
1ffa7090 20(define-module (gnu packages gnupg)
4a44e743 21 #:use-module (guix licenses)
01e11826
AE
22 #:use-module (gnu packages curl)
23 #:use-module (gnu packages openldap)
ea4d96c6 24 #:use-module (gnu packages perl)
1ffa7090 25 #:use-module (gnu packages pth)
ea4d96c6 26 #:use-module (gnu packages python)
1ffa7090
LC
27 #:use-module (gnu packages readline)
28 #:use-module ((gnu packages compression)
4a44e743 29 #:renamer (symbol-prefix-proc 'guix:))
40d806af
LC
30 #:use-module (gnu packages gtk)
31 #:use-module (gnu packages glib)
32 #:use-module (gnu packages pkg-config)
33 #:use-module (gnu packages ncurses)
8d1939e4 34 #:use-module (guix packages)
87f5d366 35 #:use-module (guix download)
8d1939e4
LC
36 #:use-module (guix build-system gnu))
37
38(define-public libgpg-error
39 (package
40 (name "libgpg-error")
e0bb2e6b 41 (version "1.12")
8d1939e4
LC
42 (source
43 (origin
87f5d366 44 (method url-fetch)
0db342a5 45 (uri (string-append "mirror://gnupg/libgpg-error/libgpg-error-"
8d1939e4
LC
46 version ".tar.bz2"))
47 (sha256
48 (base32
e0bb2e6b 49 "0pz58vr12qihq2f0bypjxsb6cf6ajq5258fmfm8s6lvwm3b9xz6a"))))
8d1939e4 50 (build-system gnu-build-system)
e766f699
JD
51 (arguments
52 (if (%current-target-system)
53 '(#:configure-flags '("CC_FOR_BUILD=gcc"))
54 '()))
8d1939e4
LC
55 (home-page "http://gnupg.org")
56 (synopsis
57 "Libgpg-error, a small library that defines common error values for all GnuPG components")
58 (description
59 "Libgpg-error is a small library that defines common error values
60for all GnuPG components. Among these are GPG, GPGSM, GPGME,
61GPG-Agent, libgcrypt, Libksba, DirMngr, Pinentry, SmartCard
62Daemon and possibly more in the future.")
4a44e743 63 (license lgpl2.0+)))
8d1939e4
LC
64
65(define-public libgcrypt
66 (package
67 (name "libgcrypt")
610b5cd8 68 (version "1.6.1")
84a3e3b7
LC
69 (source (origin
70 (method url-fetch)
71 (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
72 version ".tar.bz2"))
73 (sha256
74 (base32
610b5cd8 75 "0w10vhpj1r5nq7qm6jp21p1v1vhf37701cw8yilygzzqd7mfzhx1"))))
8d1939e4
LC
76 (build-system gnu-build-system)
77 (propagated-inputs
78 `(("libgpg-error" ,libgpg-error)))
e766f699
JD
79 (native-inputs
80 ;; Needed here for the 'gpg-error' program.
81 `(("libgpg-error" ,libgpg-error)))
82 (arguments
83 ;; The '--with-gpg-error-prefix' argument is needed because otherwise
84 ;; 'configure' uses 'gpg-error-config' to determine the '-L' flag, and
85 ;; the 'gpg-error-config' it runs is the native one---i.e., the wrong one.
86 `(#:configure-flags
87 (list (string-append "--with-gpg-error-prefix="
88 (assoc-ref %build-inputs "libgpg-error")))))
40fed2d8 89 (outputs '("out" "debug"))
8d1939e4 90 (home-page "http://gnupg.org/")
f50d2669 91 (synopsis "Cryptographic function library")
8d1939e4 92 (description
a22dc0c4
LC
93 "Libgcrypt is a general-purpose cryptographic library. It provides the
94standard cryptographic building blocks such as symmetric ciphers, hash
95algorithms, public key algorithms, large integer functions and random number
96generation.")
4a44e743 97 (license lgpl2.0+)))
8d1939e4 98
a53421fd
AE
99(define-public libgcrypt-1.5
100 (package (inherit libgcrypt)
101 (version "1.5.3")
102 (source
103 (origin
104 (method url-fetch)
105 (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
106 version ".tar.bz2"))
107 (sha256
108 (base32
109 "1lar8y3lh61zl5flljpz540d78g99h4d5idfwrfw8lm3gm737xdw"))))))
110
8d1939e4
LC
111(define-public libassuan
112 (package
113 (name "libassuan")
e0bb2e6b 114 (version "2.1.1")
8d1939e4
LC
115 (source
116 (origin
87f5d366 117 (method url-fetch)
0db342a5 118 (uri (string-append "mirror://gnupg/libassuan/libassuan-"
8d1939e4
LC
119 version ".tar.bz2"))
120 (sha256
121 (base32
e0bb2e6b 122 "1783nb0b6nr9yjhb5wfh8ykc5w89f4anppz1kz9913mqg5vxdqi3"))))
8d1939e4
LC
123 (build-system gnu-build-system)
124 (propagated-inputs
125 `(("libgpg-error" ,libgpg-error) ("pth" ,pth)))
126 (home-page "http://gnupg.org")
127 (synopsis
128 "Libassuan, the IPC library used by GnuPG and related software")
129 (description
130 "Libassuan is a small library implementing the so-called Assuan
131protocol. This protocol is used for IPC between most newer
132GnuPG components. Both, server and client side functions are
133provided.")
4a44e743 134 (license lgpl2.0+)))
8d1939e4
LC
135
136(define-public libksba
137 (package
138 (name "libksba")
98fbd7ce 139 (version "1.3.0")
8d1939e4
LC
140 (source
141 (origin
87f5d366 142 (method url-fetch)
8d1939e4 143 (uri (string-append
0db342a5 144 "mirror://gnupg/libksba/libksba-"
8d1939e4
LC
145 version ".tar.bz2"))
146 (sha256
147 (base32
98fbd7ce 148 "0w8rfb6yhcwkwzvjafrashcygy4hd9xwwmvlnkfd1m2h0paywqas"))))
8d1939e4
LC
149 (build-system gnu-build-system)
150 (propagated-inputs
151 `(("libgpg-error" ,libgpg-error)))
e766f699
JD
152 (native-inputs
153 `(("libgpg-error" ,libgpg-error)))
154 (arguments
155 `(#:configure-flags
156 (list ,@(if (%current-target-system)
157 '("CC_FOR_BUILD=gcc")
158 '())
159 (string-append "--with-gpg-error-prefix="
160 (assoc-ref %build-inputs "libgpg-error")))))
8d1939e4
LC
161 (home-page "http://www.gnupg.org")
162 (synopsis
163 "Libksba is a CMS and X.509 access library under development")
164 (description
165 "KSBA (pronounced Kasbah) is a library to make X.509 certificates
166as well as the CMS easily accessible by other applications. Both
167specifications are building blocks of S/MIME and TLS.")
4a44e743 168 (license gpl3+)))
8d1939e4
LC
169
170(define-public gnupg
171 (package
172 (name "gnupg")
de73a878 173 (version "2.0.22")
8d1939e4
LC
174 (source
175 (origin
87f5d366 176 (method url-fetch)
0db342a5
LC
177 (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
178 ".tar.bz2"))
8d1939e4
LC
179 (sha256
180 (base32
de73a878 181 "0lg210acj2rxq291q4cwamg9gx6gh2prb1xa93y5jhw5b6r0lza3"))))
8d1939e4
LC
182 (build-system gnu-build-system)
183 (inputs
f1be8061 184 `(("bzip2" ,guix:bzip2)
01e11826 185 ("curl" ,curl)
8d1939e4
LC
186 ("libassuan" ,libassuan)
187 ("libgcrypt" ,libgcrypt)
01e11826 188 ("libgpg-error" ,libgpg-error)
8d1939e4
LC
189 ("libksba" ,libksba)
190 ("pth" ,pth)
01e11826 191 ("openldap" ,openldap)
4a44e743 192 ("zlib" ,guix:zlib)
8d1939e4 193 ("readline" ,readline)))
30e9cbb4
AE
194 (arguments
195 `(#:phases
196 (alist-replace
197 'configure
198 (lambda* (#:key #:allow-other-keys #:rest args)
199 (let ((configure (assoc-ref %standard-phases 'configure)))
200 (substitute* "tests/openpgp/Makefile.in"
201 (("/bin/sh") (which "bash")))
202 (apply configure args)))
203 %standard-phases)))
8d1939e4 204 (home-page "http://gnupg.org/")
f50d2669 205 (synopsis "GNU Privacy Guard")
8d1939e4 206 (description
a22dc0c4
LC
207 "The GNU Privacy Guard is a complete implementation of the OpenPGP
208standard. It is used to encrypt and sign data and communication. It
209features powerful key management and the ability to access public key
79c311b8
LC
210servers. It includes several libraries: libassuan (IPC between GnuPG
211components), libgpg-error (centralized GnuPG error values), and libskba
212(working with X.509 certificates and CMS data).")
4a44e743 213 (license gpl3+)))
ea4d96c6 214
09d5c166
AE
215(define-public gpgme
216 (package
217 (name "gpgme")
218 (version "1.4.3")
219 (source
220 (origin
221 (method url-fetch)
222 (uri (string-append "mirror://gnupg/gpgme/gpgme-" version
223 ".tar.bz2"))
224 (sha256
225 (base32
226 "15h429h6pd67iiv580bjmwbkadpxsdppw0xrqpcm4dvm24jc271d"))))
227 (build-system gnu-build-system)
228 (inputs
229 `(("gnupg" ,gnupg)
230 ("libassuan" ,libassuan)
231 ("libgpg-error" ,libgpg-error)))
232 (home-page "http://www.gnupg.org/related_software/gpgme/")
233 (synopsis "library providing simplified access to GnuPG functionality")
234 (description
235 "GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
236easier for applications. It provides a High-Level Crypto API for encryption,
237decryption, signing, signature verification and key management. Currently
238it uses GnuPG as its backend but the API isn't restricted to this engine.
239
240Because the direct use of GnuPG from an application can be a complicated
241programming task, it is suggested that all software should try to use GPGME
242instead. This way bug fixes or improvements can be done at a central place
243and every application benefits from this.")
244 (license lgpl2.1+)))
245
ea4d96c6
AE
246(define-public pius
247 (package
248 (name "pius")
249 (version "2.0.9")
250 (source (origin
251 (method url-fetch)
252 (uri (string-append "mirror://sourceforge/pgpius/pius/"
253 version "/pius-"
254 version ".tar.bz2"))
255 (sha256 (base32
256 "1g1jly3wl4ks6h8ydkygyl2c4i7v3z91rg42005m6vm70y1d8b3d"))))
257 (build-system gnu-build-system)
258 (inputs `(("perl" ,perl)
ee3e314b 259 ("python" ,python-wrapper)
9eed6f9b 260 ("gpg" ,gnupg)))
ea4d96c6
AE
261 (arguments
262 `(#:tests? #f
263 #:phases
264 (alist-replace
265 'configure
266 (lambda* (#:key #:allow-other-keys) #t)
267 (alist-replace
268 'build
269 (lambda* (#:key #:allow-other-keys) #t)
270 (alist-replace
271 'install
9eed6f9b
LC
272 (lambda* (#:key inputs outputs #:allow-other-keys)
273 (let* ((out (assoc-ref outputs "out"))
274 (gpg (string-append (assoc-ref inputs "gpg")
275 "/bin/gpg2")))
ea4d96c6
AE
276 (mkdir out)
277 (mkdir (string-append out "/bin"))
9eed6f9b
LC
278 (for-each (lambda (file)
279 (substitute* file
280 (("/usr/bin/gpg") gpg))
281 (copy-file file (string-append out "/bin/" file)))
282 '("pius" "pius-keyring-mgr" "pius-party-worksheet"))))
ea4d96c6 283 %standard-phases)))))
9eed6f9b 284 (synopsis "Programs to simplify GnuPG key signing")
ea4d96c6
AE
285 (description
286 "Pius (PGP Individual UID Signer) helps attendees of PGP keysigning
287parties. It is the main utility and makes it possible to quickly and easily
288sign each UID on a set of PGP keys. It is designed to take the pain out of
289the sign-all-the-keys part of PGP Keysigning Party while adding security
290to the process.
291
292pius-keyring-mgr and pius-party-worksheet help organisers of
293PGP keysigning parties.")
294 (license gpl2)
295 (home-page "http://www.phildev.net/pius/index.shtml")))
96be765c
AE
296
297(define-public signing-party
298 (package
299 (name "signing-party")
300 (version "1.1.4")
301 (source (origin
302 (method url-fetch)
303 (uri (string-append "http://ftp.debian.org/debian/pool/main/s/signing-party/signing-party_"
304 version ".orig.tar.gz"))
305 (sha256 (base32
306 "188gp0prbh8qs29lq3pbf0qibfd6jq4fk7i0pfrybl8aahvm84rx"))))
307 (build-system gnu-build-system)
308 (inputs `(("perl" ,perl)))
309 (arguments
310 `(#:tests? #f
311 #:phases
312 (alist-replace
313 'unpack
314 (lambda* (#:key #:allow-other-keys #:rest args)
315 (let ((unpack (assoc-ref %standard-phases 'unpack)))
316 (apply unpack args)
317 ;; remove spurious symlink
318 (delete-file "keyanalyze/pgpring/depcomp")))
319 (alist-replace
320 'configure
321 (lambda* (#:key outputs #:allow-other-keys)
322 (let ((out (assoc-ref outputs "out")))
323 (substitute* "keyanalyze/Makefile"
324 (("LDLIBS") (string-append "CC=" (which "gcc") "\nLDLIBS")))
325 (substitute* "keyanalyze/Makefile"
326 (("./configure") (string-append "./configure --prefix=" out)))
327 (substitute* "keyanalyze/pgpring/configure"
328 (("/bin/sh") (which "bash")))
329 (substitute* "gpgwrap/Makefile"
330 (("\\} clean") (string-append "} clean\ninstall:\n\tinstall -D bin/gpgwrap "
331 out "/bin/gpgwrap\n")))
332 (substitute* '("gpgsigs/Makefile" "keyanalyze/Makefile"
333 "keylookup/Makefile" "sig2dot/Makefile"
334 "springgraph/Makefile")
335 (("/usr") out))))
336 (alist-replace
337 'install
338 (lambda* (#:key outputs #:allow-other-keys #:rest args)
339 (let ((out (assoc-ref outputs "out"))
340 (install (assoc-ref %standard-phases 'install)))
341 (apply install args)
342 (for-each
343 (lambda (dir file)
344 (copy-file (string-append dir "/" file)
345 (string-append out "/bin/" file)))
346 '("caff" "caff" "caff" "gpgdir" "gpg-key2ps"
347 "gpglist" "gpg-mailkeys" "gpgparticipants")
348 '("caff" "pgp-clean" "pgp-fixkey" "gpgdir" "gpg-key2ps"
349 "gpglist" "gpg-mailkeys" "gpgparticipants"))
350 (for-each
351 (lambda (dir file)
352 (copy-file (string-append dir "/" file)
353 (string-append out "/share/man/man1/" file)))
354 '("caff" "caff" "caff" "gpgdir"
355 "gpg-key2ps" "gpglist" "gpg-mailkeys"
356 "gpgparticipants" "gpgsigs" "gpgwrap/doc"
357 "keyanalyze" "keyanalyze/pgpring" "keyanalyze")
358 '("caff.1" "pgp-clean.1" "pgp-fixkey.1" "gpgdir.1"
359 "gpg-key2ps.1" "gpglist.1" "gpg-mailkeys.1"
360 "gpgparticipants.1" "gpgsigs.1" "gpgwrap.1"
361 "process_keys.1" "pgpring.1" "keyanalyze.1"))))
362 %standard-phases)))))
363 (synopsis "collection of scripts for simplifying gnupg key signing")
364 (description
365 "signing-party is a collection for all kinds of PGP/GnuPG related things,
366including tools for signing keys, keyring analysis, and party preparation.
367
368 * caff: CA - Fire and Forget signs and mails a key
369
370 * pgp-clean: removes all non-self signatures from key
371
372 * pgp-fixkey: removes broken packets from keys
373
374 * gpg-mailkeys: simply mail out a signed key to its owner
375
376 * gpg-key2ps: generate PostScript file with fingerprint paper strips
377
378 * gpgdir: recursive directory encryption tool
379
380 * gpglist: show who signed which of your UIDs
381
382 * gpgsigs: annotates list of GnuPG keys with already done signatures
383
384 * gpgparticipants: create list of party participants for the organiser
385
386 * gpgwrap: a passphrase wrapper
387
388 * keyanalyze: minimum signing distance (MSD) analysis on keyrings
389
390 * keylookup: ncurses wrapper around gpg --search
391
392 * sig2dot: converts a list of GnuPG signatures to a .dot file
393
394 * springgraph: creates a graph from a .dot file")
395 ;; gpl2+ for almost all programs, except for keyanalyze: gpl2
396 ;; and caff and gpgsigs: bsd-3, see
397 ;; http://packages.debian.org/changelogs/pool/main/s/signing-party/current/copyright
398 (license gpl2)
399 (home-page "http://pgp-tools.alioth.debian.org/")))
40d806af
LC
400
401(define-public pinentry
402 (package
403 (name "pinentry")
404 (version "0.8.3")
405 (source (origin
406 (method url-fetch)
407 (uri (string-append "mirror://gnupg/pinentry/pinentry-"
408 version ".tar.bz2"))
409 (sha256
410 (base32
411 "1bd047crf7xb8g61mval8v6qww98rddlsw2dz6j8h8qbnl4hp2sn"))))
412 (build-system gnu-build-system)
413 (inputs
414 `(("ncurses" ,ncurses)
415 ("gtk+" ,gtk+-2)
416 ("glib" ,glib)))
417 (native-inputs
418 `(("pkg-config" ,pkg-config)))
419 (home-page "http://gnupg.org/aegypten2/")
420 (synopsis "GnuPG's interface to passphrase input")
421 (description
422 "Pinentry provides a console and a GTK+ GUI that allows users to
423enter a passphrase when `gpg' or `gpg2' is run and needs it.")
424 (license gpl2+)))