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