gnu: Add python-gnupg.
[jackhill/guix/guix.git] / gnu / packages / gnupg.scm
CommitLineData
233e7676 1;;; GNU Guix --- Functional package management for GNU
9041d935 2;;; Copyright © 2012, 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org>
a02ee3d7 3;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr>
4380a7b4 4;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
751be9a0 5;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
5dabdb75 6;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
8d1939e4 7;;;
233e7676 8;;; This file is part of GNU Guix.
8d1939e4 9;;;
233e7676 10;;; GNU Guix is free software; you can redistribute it and/or modify it
8d1939e4
LC
11;;; under the terms of the GNU General Public License as published by
12;;; the Free Software Foundation; either version 3 of the License, or (at
13;;; your option) any later version.
14;;;
233e7676 15;;; GNU Guix is distributed in the hope that it will be useful, but
8d1939e4
LC
16;;; WITHOUT ANY WARRANTY; without even the implied warranty of
17;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18;;; GNU General Public License for more details.
19;;;
20;;; You should have received a copy of the GNU General Public License
233e7676 21;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
8d1939e4 22
1ffa7090 23(define-module (gnu packages gnupg)
07157e8a 24 #:use-module ((guix licenses) #:prefix license:)
01e11826
AE
25 #:use-module (gnu packages curl)
26 #:use-module (gnu packages openldap)
ea4d96c6 27 #:use-module (gnu packages perl)
1ffa7090 28 #:use-module (gnu packages pth)
ea4d96c6 29 #:use-module (gnu packages python)
1ffa7090 30 #:use-module (gnu packages readline)
07157e8a 31 #:use-module (gnu packages compression)
40d806af
LC
32 #:use-module (gnu packages gtk)
33 #:use-module (gnu packages glib)
34 #:use-module (gnu packages pkg-config)
35 #:use-module (gnu packages ncurses)
a7fd7b68 36 #:use-module (gnu packages tls)
8d1939e4 37 #:use-module (guix packages)
87f5d366 38 #:use-module (guix download)
14e2e44d
LC
39 #:use-module (guix build-system gnu)
40 #:use-module (guix build-system python))
8d1939e4
LC
41
42(define-public libgpg-error
43 (package
44 (name "libgpg-error")
c273728a 45 (version "1.19")
8d1939e4
LC
46 (source
47 (origin
87f5d366 48 (method url-fetch)
0db342a5 49 (uri (string-append "mirror://gnupg/libgpg-error/libgpg-error-"
8d1939e4
LC
50 version ".tar.bz2"))
51 (sha256
52 (base32
c273728a 53 "12wpqhjlsw4iaanifbqm2kich6c7x7lm8a7zhy6x5ifm6c9hw4jk"))))
8d1939e4
LC
54 (build-system gnu-build-system)
55 (home-page "http://gnupg.org")
35b9e423 56 (synopsis "Library of error values for GnuPG components")
8d1939e4
LC
57 (description
58 "Libgpg-error is a small library that defines common error values
59for all GnuPG components. Among these are GPG, GPGSM, GPGME,
60GPG-Agent, libgcrypt, Libksba, DirMngr, Pinentry, SmartCard
61Daemon and possibly more in the future.")
07157e8a 62 (license license:lgpl2.0+)))
8d1939e4
LC
63
64(define-public libgcrypt
65 (package
66 (name "libgcrypt")
751be9a0 67 (version "1.6.3")
84a3e3b7
LC
68 (source (origin
69 (method url-fetch)
70 (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
71 version ".tar.bz2"))
72 (sha256
73 (base32
751be9a0 74 "0pq2nwfqgggrsh8rk84659d80vfnlkbphwqjwahccd5fjdxr3d21"))))
8d1939e4
LC
75 (build-system gnu-build-system)
76 (propagated-inputs
e0932742 77 `(("libgpg-error-host" ,libgpg-error)))
e766f699
JD
78 (native-inputs
79 ;; Needed here for the 'gpg-error' program.
e0932742 80 `(("libgpg-error-native" ,libgpg-error)))
e766f699
JD
81 (arguments
82 ;; The '--with-gpg-error-prefix' argument is needed because otherwise
83 ;; 'configure' uses 'gpg-error-config' to determine the '-L' flag, and
84 ;; the 'gpg-error-config' it runs is the native one---i.e., the wrong one.
85 `(#:configure-flags
86 (list (string-append "--with-gpg-error-prefix="
e0932742 87 (assoc-ref %build-inputs "libgpg-error-host")))))
40fed2d8 88 (outputs '("out" "debug"))
8d1939e4 89 (home-page "http://gnupg.org/")
f50d2669 90 (synopsis "Cryptographic function library")
8d1939e4 91 (description
a22dc0c4
LC
92 "Libgcrypt is a general-purpose cryptographic library. It provides the
93standard cryptographic building blocks such as symmetric ciphers, hash
94algorithms, public key algorithms, large integer functions and random number
95generation.")
07157e8a 96 (license license:lgpl2.0+)))
8d1939e4 97
a53421fd
AE
98(define-public libgcrypt-1.5
99 (package (inherit libgcrypt)
460f97f8 100 (version "1.5.4")
a53421fd
AE
101 (source
102 (origin
103 (method url-fetch)
104 (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-"
105 version ".tar.bz2"))
106 (sha256
107 (base32
460f97f8 108 "0czvqxkzd5y872ipy6s010ifwdwv29sqbnqc4pf56sd486gqvy6m"))))))
a53421fd 109
8d1939e4
LC
110(define-public libassuan
111 (package
112 (name "libassuan")
5dabdb75 113 (version "2.2.1")
8d1939e4
LC
114 (source
115 (origin
87f5d366 116 (method url-fetch)
0db342a5 117 (uri (string-append "mirror://gnupg/libassuan/libassuan-"
8d1939e4
LC
118 version ".tar.bz2"))
119 (sha256
120 (base32
5dabdb75 121 "1pp2kl5gc2vja41g3wk03h1hgh7gxy6pj354fb5n4lrlg6xqb4ll"))))
8d1939e4
LC
122 (build-system gnu-build-system)
123 (propagated-inputs
124 `(("libgpg-error" ,libgpg-error) ("pth" ,pth)))
125 (home-page "http://gnupg.org")
126 (synopsis
35b9e423 127 "IPC library used by GnuPG and related software")
8d1939e4
LC
128 (description
129 "Libassuan is a small library implementing the so-called Assuan
130protocol. This protocol is used for IPC between most newer
131GnuPG components. Both, server and client side functions are
132provided.")
07157e8a 133 (license license:lgpl2.0+)))
8d1939e4
LC
134
135(define-public libksba
136 (package
137 (name "libksba")
19bda3f1 138 (version "1.3.3")
8d1939e4
LC
139 (source
140 (origin
87f5d366 141 (method url-fetch)
8d1939e4 142 (uri (string-append
0db342a5 143 "mirror://gnupg/libksba/libksba-"
8d1939e4
LC
144 version ".tar.bz2"))
145 (sha256
146 (base32
19bda3f1 147 "11kp3h9l3b8ikydkcdkwgx45r662zi30m26ra5llyhfh6kz5yzqc"))))
8d1939e4
LC
148 (build-system gnu-build-system)
149 (propagated-inputs
150 `(("libgpg-error" ,libgpg-error)))
e766f699
JD
151 (native-inputs
152 `(("libgpg-error" ,libgpg-error)))
153 (arguments
154 `(#:configure-flags
155 (list ,@(if (%current-target-system)
156 '("CC_FOR_BUILD=gcc")
157 '())
158 (string-append "--with-gpg-error-prefix="
159 (assoc-ref %build-inputs "libgpg-error")))))
8d1939e4 160 (home-page "http://www.gnupg.org")
35b9e423 161 (synopsis "CMS and X.509 access library")
8d1939e4
LC
162 (description
163 "KSBA (pronounced Kasbah) is a library to make X.509 certificates
164as well as the CMS easily accessible by other applications. Both
165specifications are building blocks of S/MIME and TLS.")
07157e8a 166 (license license:gpl3+)))
8d1939e4 167
c18ea90f
AE
168(define-public npth
169 (package
170 (name "npth")
b96485b9 171 (version "1.2")
c18ea90f
AE
172 (source
173 (origin
174 (method url-fetch)
175 (uri (string-append
176 "mirror://gnupg/npth/npth-"
177 version ".tar.bz2"))
178 (sha256
179 (base32
b96485b9 180 "12n0nvhw4fzwp0k7gjv3rc6pdml0qiinbbfiz4ilg6pl5kdxvnvd"))))
c18ea90f
AE
181 (build-system gnu-build-system)
182 (home-page "http://www.gnupg.org")
183 (synopsis "Non-preemptive thread library")
184 (description
185 "Npth is a library to provide the GNU Pth API and thus a non-preemptive
186threads implementation.
187
188In contrast to GNU Pth is is based on the system's standard threads
189implementation. This allows the use of libraries which are not
190compatible to GNU Pth.")
07157e8a 191 (license (list license:lgpl3+ license:gpl2+)))) ; dual license
c18ea90f 192
8d1939e4
LC
193(define-public gnupg
194 (package
195 (name "gnupg")
610075f7 196 (version "2.1.8")
58970d6a
LC
197 (source (origin
198 (method url-fetch)
199 (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
200 ".tar.bz2"))
201 (sha256
202 (base32
610075f7 203 "18w14xp0ynzzwpklyplkzbrncds1hly4k2gjx115swch8qgd1f53"))))
8d1939e4 204 (build-system gnu-build-system)
08fa45b1
MW
205 (native-inputs
206 `(("pkg-config" ,pkg-config)))
8d1939e4 207 (inputs
07157e8a 208 `(("bzip2" ,bzip2)
01e11826 209 ("curl" ,curl)
08fa45b1 210 ("gnutls" ,gnutls)
8d1939e4
LC
211 ("libassuan" ,libassuan)
212 ("libgcrypt" ,libgcrypt)
01e11826 213 ("libgpg-error" ,libgpg-error)
8d1939e4 214 ("libksba" ,libksba)
cd064df7 215 ("npth" ,npth)
01e11826 216 ("openldap" ,openldap)
07157e8a 217 ("zlib" ,zlib)
8d1939e4 218 ("readline" ,readline)))
30e9cbb4
AE
219 (arguments
220 `(#:phases
d4bf49b1
EB
221 (alist-cons-before
222 'configure 'patch-config-files
223 (lambda _
cd064df7
AE
224 (substitute* "tests/openpgp/defs.inc"
225 (("/bin/pwd") (which "pwd"))))
30e9cbb4 226 %standard-phases)))
8d1939e4 227 (home-page "http://gnupg.org/")
f50d2669 228 (synopsis "GNU Privacy Guard")
8d1939e4 229 (description
a22dc0c4
LC
230 "The GNU Privacy Guard is a complete implementation of the OpenPGP
231standard. It is used to encrypt and sign data and communication. It
232features powerful key management and the ability to access public key
79c311b8 233servers. It includes several libraries: libassuan (IPC between GnuPG
58970d6a
LC
234components), libgpg-error (centralized GnuPG error values), and
235libskba (working with X.509 certificates and CMS data).")
07157e8a 236 (license license:gpl3+)))
ea4d96c6 237
cd064df7
AE
238(define-public gnupg-2.0
239 (package (inherit gnupg)
de8a1818 240 (version "2.0.28")
cd064df7
AE
241 (source (origin
242 (method url-fetch)
243 (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
244 ".tar.bz2"))
245 (sha256
246 (base32
de8a1818 247 "0k2k399fnhfhhr4dvm8d6vs4ihq6gg06191lzfwikzaqmgj2w2ff"))))
08fa45b1 248 (native-inputs '())
cd064df7 249 (inputs
07157e8a 250 `(("bzip2" ,bzip2)
cd064df7
AE
251 ("curl" ,curl)
252 ("libassuan" ,libassuan)
253 ("libgcrypt" ,libgcrypt)
254 ("libgpg-error" ,libgpg-error)
255 ("libksba" ,libksba)
256 ("pth" ,pth)
257 ("openldap" ,openldap)
07157e8a 258 ("zlib" ,zlib)
cd064df7
AE
259 ("readline" ,readline)))
260 (arguments
261 `(#:phases
262 (alist-cons-before
263 'configure 'patch-config-files
264 (lambda _
265 (substitute* "tests/openpgp/Makefile.in"
266 (("/bin/sh") (which "bash"))))
267 %standard-phases)))))
268
5249045c
MW
269(define-public gnupg-1
270 (package (inherit gnupg)
9041d935 271 (version "1.4.19")
58970d6a
LC
272 (source (origin
273 (method url-fetch)
274 (uri (string-append "mirror://gnupg/gnupg/gnupg-" version
275 ".tar.bz2"))
276 (sha256
277 (base32
9041d935 278 "11pxx26sfilh0vswylh9mhiifw5yffw7nn733zknw3sb0jfk22bz"))))
08fa45b1 279 (native-inputs '())
5249045c 280 (inputs
07157e8a
LC
281 `(("zlib" ,zlib)
282 ("bzip2" ,bzip2)
5249045c
MW
283 ("curl" ,curl)
284 ("readline" ,readline)
285 ("libgpg-error" ,libgpg-error)))
286 (arguments
287 `(#:phases (alist-cons-after
288 'unpack 'patch-check-sh
289 (lambda _
290 (substitute* "checks/Makefile.in"
291 (("/bin/sh") (which "bash"))))
292 %standard-phases)))))
293
09d5c166
AE
294(define-public gpgme
295 (package
296 (name "gpgme")
a0e984c3 297 (version "1.5.5")
09d5c166
AE
298 (source
299 (origin
300 (method url-fetch)
301 (uri (string-append "mirror://gnupg/gpgme/gpgme-" version
302 ".tar.bz2"))
303 (sha256
304 (base32
a0e984c3 305 "01y28fkq52wwf4p470wscaxd2vgzl615irmafx3mj3380x8ksg8b"))))
09d5c166 306 (build-system gnu-build-system)
68640c3c
MW
307 (propagated-inputs
308 ;; Needs to be propagated because gpgme.h includes gpg-error.h.
309 `(("libgpg-error" ,libgpg-error)))
09d5c166 310 (inputs
ae3bded6 311 `(("gnupg" ,gnupg-2.0)
68640c3c 312 ("libassuan" ,libassuan)))
e6a83df1 313 (arguments '(#:make-flags '("GPG=gpg2")))
09d5c166 314 (home-page "http://www.gnupg.org/related_software/gpgme/")
35b9e423 315 (synopsis "Library providing simplified access to GnuPG functionality")
09d5c166
AE
316 (description
317 "GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
318easier for applications. It provides a High-Level Crypto API for encryption,
319decryption, signing, signature verification and key management. Currently
320it uses GnuPG as its backend but the API isn't restricted to this engine.
321
322Because the direct use of GnuPG from an application can be a complicated
323programming task, it is suggested that all software should try to use GPGME
324instead. This way bug fixes or improvements can be done at a central place
325and every application benefits from this.")
07157e8a 326 (license license:lgpl2.1+)))
09d5c166 327
22af9029
RW
328(define-public python-gnupg
329 (package
330 (name "python-gnupg")
331 (version "0.3.7")
332 (source
333 (origin
334 (method url-fetch)
335 (uri (string-append "https://pypi.python.org/packages/source/p/"
336 "python-gnupg/python-gnupg-" version ".tar.gz"))
337 (sha256
338 (base32
339 "1hg9gshk4b7raskj8mjadsjcv10axlx2z4xl4ag2f2bpi4f8chvq"))))
340 (build-system python-build-system)
341 (arguments
342 `(#:phases
343 (modify-phases %standard-phases
344 (replace 'check
345 (lambda* (#:key inputs #:allow-other-keys)
346 (substitute* "test_gnupg.py"
347 ;; Test keyrings are missing, so this test fails.
348 (("'test_scan_keys'") "True")
349 (("def test_scan_keys") "def disabled__scan_keys")
350 ;; Unsure why this test fails.
351 (("'test_search_keys'") "True")
352 (("def test_search_keys") "def disabled__search_keys"))
353 (setenv "GPGBINARY" "gpg")
354 (setenv "USERNAME" "guixbuilder")
355 ;; The doctests are extremely slow and sometimes time out,
356 ;; so we disable them.
357 (zero? (system* "python"
358 "test_gnupg.py" "--no-doctests")))))))
359 (native-inputs
360 `(("gnupg" ,gnupg-1)))
361 (home-page "http://packages.python.org/python-gnupg/index.html")
362 (synopsis "Wrapper for the GNU Privacy Guard")
363 (description
364 "This module allows easy access to GnuPG’s key management, encryption
365and signature functionality from Python programs.")
366 (license license:bsd-3)))
367
368(define-public python2-gnupg
369 (package-with-python2 python-gnupg))
370
ea4d96c6
AE
371(define-public pius
372 (package
373 (name "pius")
15e771b0 374 (version "2.1.1")
ea4d96c6
AE
375 (source (origin
376 (method url-fetch)
377 (uri (string-append "mirror://sourceforge/pgpius/pius/"
378 version "/pius-"
379 version ".tar.bz2"))
380 (sha256 (base32
15e771b0 381 "0ry3kc3x1qjmvb581ja2z2v32r1rl1g8rhfj7iqvs8nzq4ca512i"))))
14e2e44d
LC
382 (build-system python-build-system)
383 (inputs `(("perl" ,perl) ;for 'pius-party-worksheet'
31fbf4b6 384 ("gpg" ,gnupg-2.0))) ;2.1 fails to talk to gpg-agent 2.0
ea4d96c6
AE
385 (arguments
386 `(#:tests? #f
14e2e44d 387 #:python ,python-2 ;uses the Python 2 'print' syntax
ea4d96c6 388 #:phases
14e2e44d
LC
389 (modify-phases %standard-phases
390 (add-before
391 'build 'set-gpg-file-name
392 (lambda* (#:key inputs outputs #:allow-other-keys)
393 (let* ((gpg (string-append (assoc-ref inputs "gpg")
394 "/bin/gpg2")))
395 (substitute* "libpius/constants.py"
396 (("/usr/bin/gpg") gpg))))))))
9eed6f9b 397 (synopsis "Programs to simplify GnuPG key signing")
ea4d96c6
AE
398 (description
399 "Pius (PGP Individual UID Signer) helps attendees of PGP keysigning
35b9e423
EB
400parties. It is the main utility and makes it possible to quickly and easily
401sign each UID on a set of PGP keys. It is designed to take the pain out of
ea4d96c6
AE
402the sign-all-the-keys part of PGP Keysigning Party while adding security
403to the process.
404
405pius-keyring-mgr and pius-party-worksheet help organisers of
406PGP keysigning parties.")
07157e8a 407 (license license:gpl2)
ea4d96c6 408 (home-page "http://www.phildev.net/pius/index.shtml")))
96be765c
AE
409
410(define-public signing-party
411 (package
412 (name "signing-party")
413 (version "1.1.4")
414 (source (origin
415 (method url-fetch)
416 (uri (string-append "http://ftp.debian.org/debian/pool/main/s/signing-party/signing-party_"
417 version ".orig.tar.gz"))
418 (sha256 (base32
419 "188gp0prbh8qs29lq3pbf0qibfd6jq4fk7i0pfrybl8aahvm84rx"))))
420 (build-system gnu-build-system)
421 (inputs `(("perl" ,perl)))
422 (arguments
423 `(#:tests? #f
424 #:phases
d4bf49b1
EB
425 (alist-cons-after
426 'unpack 'remove-spurious-links
427 (lambda _ (delete-file "keyanalyze/pgpring/depcomp"))
96be765c
AE
428 (alist-replace
429 'configure
430 (lambda* (#:key outputs #:allow-other-keys)
431 (let ((out (assoc-ref outputs "out")))
432 (substitute* "keyanalyze/Makefile"
433 (("LDLIBS") (string-append "CC=" (which "gcc") "\nLDLIBS")))
434 (substitute* "keyanalyze/Makefile"
435 (("./configure") (string-append "./configure --prefix=" out)))
436 (substitute* "keyanalyze/pgpring/configure"
437 (("/bin/sh") (which "bash")))
438 (substitute* "gpgwrap/Makefile"
439 (("\\} clean") (string-append "} clean\ninstall:\n\tinstall -D bin/gpgwrap "
440 out "/bin/gpgwrap\n")))
441 (substitute* '("gpgsigs/Makefile" "keyanalyze/Makefile"
442 "keylookup/Makefile" "sig2dot/Makefile"
443 "springgraph/Makefile")
444 (("/usr") out))))
445 (alist-replace
446 'install
447 (lambda* (#:key outputs #:allow-other-keys #:rest args)
448 (let ((out (assoc-ref outputs "out"))
449 (install (assoc-ref %standard-phases 'install)))
450 (apply install args)
451 (for-each
452 (lambda (dir file)
453 (copy-file (string-append dir "/" file)
454 (string-append out "/bin/" file)))
455 '("caff" "caff" "caff" "gpgdir" "gpg-key2ps"
456 "gpglist" "gpg-mailkeys" "gpgparticipants")
457 '("caff" "pgp-clean" "pgp-fixkey" "gpgdir" "gpg-key2ps"
458 "gpglist" "gpg-mailkeys" "gpgparticipants"))
459 (for-each
460 (lambda (dir file)
461 (copy-file (string-append dir "/" file)
462 (string-append out "/share/man/man1/" file)))
463 '("caff" "caff" "caff" "gpgdir"
464 "gpg-key2ps" "gpglist" "gpg-mailkeys"
465 "gpgparticipants" "gpgsigs" "gpgwrap/doc"
466 "keyanalyze" "keyanalyze/pgpring" "keyanalyze")
467 '("caff.1" "pgp-clean.1" "pgp-fixkey.1" "gpgdir.1"
468 "gpg-key2ps.1" "gpglist.1" "gpg-mailkeys.1"
469 "gpgparticipants.1" "gpgsigs.1" "gpgwrap.1"
470 "process_keys.1" "pgpring.1" "keyanalyze.1"))))
471 %standard-phases)))))
35b9e423 472 (synopsis "Collection of scripts for simplifying gnupg key signing")
96be765c 473 (description
35b9e423 474 "Signing-party is a collection for all kinds of PGP/GnuPG related things,
96be765c
AE
475including tools for signing keys, keyring analysis, and party preparation.
476
477 * caff: CA - Fire and Forget signs and mails a key
c5143851 478
96be765c
AE
479 * pgp-clean: removes all non-self signatures from key
480
481 * pgp-fixkey: removes broken packets from keys
482
483 * gpg-mailkeys: simply mail out a signed key to its owner
484
485 * gpg-key2ps: generate PostScript file with fingerprint paper strips
486
487 * gpgdir: recursive directory encryption tool
488
489 * gpglist: show who signed which of your UIDs
490
491 * gpgsigs: annotates list of GnuPG keys with already done signatures
492
493 * gpgparticipants: create list of party participants for the organiser
494
495 * gpgwrap: a passphrase wrapper
496
497 * keyanalyze: minimum signing distance (MSD) analysis on keyrings
498
499 * keylookup: ncurses wrapper around gpg --search
500
501 * sig2dot: converts a list of GnuPG signatures to a .dot file
502
503 * springgraph: creates a graph from a .dot file")
504 ;; gpl2+ for almost all programs, except for keyanalyze: gpl2
505 ;; and caff and gpgsigs: bsd-3, see
506 ;; http://packages.debian.org/changelogs/pool/main/s/signing-party/current/copyright
07157e8a 507 (license license:gpl2)
96be765c 508 (home-page "http://pgp-tools.alioth.debian.org/")))
40d806af
LC
509
510(define-public pinentry
511 (package
512 (name "pinentry")
18ed97d6 513 (version "0.9.5")
40d806af
LC
514 (source (origin
515 (method url-fetch)
516 (uri (string-append "mirror://gnupg/pinentry/pinentry-"
517 version ".tar.bz2"))
518 (sha256
519 (base32
18ed97d6 520 "1338hj1h3sh34897120y30x12b64wyj3xjzzk5asm2hdzhxgsmva"))))
40d806af
LC
521 (build-system gnu-build-system)
522 (inputs
523 `(("ncurses" ,ncurses)
18ed97d6 524 ("libassuan" ,libassuan)
40d806af
LC
525 ("gtk+" ,gtk+-2)
526 ("glib" ,glib)))
527 (native-inputs
528 `(("pkg-config" ,pkg-config)))
529 (home-page "http://gnupg.org/aegypten2/")
530 (synopsis "GnuPG's interface to passphrase input")
531 (description
532 "Pinentry provides a console and a GTK+ GUI that allows users to
533enter a passphrase when `gpg' or `gpg2' is run and needs it.")
07157e8a 534 (license license:gpl2+)))
4380a7b4
EB
535
536(define-public paperkey
537 (package
538 (name "paperkey")
539 (version "1.3")
540 (source (origin
541 (method url-fetch)
542 (uri (string-append "http://www.jabberwocky.com/"
543 "software/paperkey/paperkey-"
544 version ".tar.gz"))
545 (sha256
546 (base32
547 "1yybj8bj68v4lxwpn596b6ismh2fyixw5vlqqg26byrn4d9dfmsv"))))
548 (build-system gnu-build-system)
549 (arguments
550 `(#:phases
d4bf49b1
EB
551 (alist-cons-before
552 'check 'patch-check-scripts
553 (lambda _
554 (substitute* '("checks/roundtrip.sh"
555 "checks/roundtrip-raw.sh")
556 (("/bin/echo") "echo")))
4380a7b4
EB
557 %standard-phases)))
558 (home-page "http://www.jabberwocky.com/software/paperkey/")
559 (synopsis "Backup OpenPGP keys to paper")
560 (description
561 "Paperkey extracts the secret bytes from an OpenPGP (GnuPG, PGP, etc) key
562for printing with paper and ink, which have amazingly long retention
563qualities. To reconstruct a secret key, you re-enter those
564bytes (whether by hand, OCR, QR code, or the like) and paperkey can use
565them to transform your existing public key into a secret key.")
07157e8a 566 (license license:gpl2+)))