* lisp/epa.el (epa-read-file-name): New function.
[bpt/emacs.git] / doc / misc / epa.texi
CommitLineData
c154c0be
MO
1\input texinfo @c -*- mode: texinfo -*-
2@c %**start of header
3@setfilename ../../info/epa
4@settitle EasyPG Assistant User's Manual
5@c %**end of header
6
7@set VERSION 1.0.0
8
9@copying
5dc584b5 10This file describes EasyPG Assistant @value{VERSION}.
c154c0be 11
ab422c4d 12Copyright @copyright{} 2007--2013 Free Software Foundation, Inc.
c154c0be
MO
13
14@quotation
15Permission is granted to copy, distribute and/or modify this document
6a2c4aec 16under the terms of the GNU Free Documentation License, Version 1.3 or
c154c0be 17any later version published by the Free Software Foundation; with no
cd5c05d2
GM
18Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
19and with the Back-Cover Texts as in (a) below. A copy of the license
0b1af106 20is included in the section entitled ``GNU Free Documentation License''.
cd5c05d2
GM
21
22(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
6bf430d1 23modify this GNU manual.''
c154c0be
MO
24@end quotation
25@end copying
26
0c973505 27@dircategory Emacs misc features
c154c0be 28@direntry
62e034c2 29* EasyPG Assistant: (epa). An Emacs user interface to GNU Privacy Guard.
c154c0be
MO
30@end direntry
31
c154c0be
MO
32@titlepage
33@title EasyPG Assistant
34
35@author by Daiki Ueno
36@page
37
38@vskip 0pt plus 1filll
39@insertcopying
40@end titlepage
c154c0be 41
5dc584b5 42@contents
c154c0be
MO
43
44@node Top
45@top EasyPG Assistant user's manual
46
47EasyPG Assistant is an Emacs user interface to GNU Privacy Guard
48(GnuPG, @pxref{Top, , Top, gnupg, Using the GNU Privacy Guard}).
49
50EasyPG Assistant is a part of the package called EasyPG, an all-in-one
51GnuPG interface for Emacs. EasyPG also contains the library interface
52called EasyPG Library.
53
5dc584b5
KB
54@ifnottex
55@insertcopying
56@end ifnottex
c154c0be
MO
57
58@menu
1df7defd
PE
59* Overview::
60* Quick start::
61* Commands::
62* Caching Passphrases::
63* Bug Reports::
0b1af106 64* GNU Free Documentation License:: The license for this documentation.
c154c0be
MO
65@end menu
66
67@node Overview
68@chapter Overview
69
70EasyPG Assistant provides the following features.
71
72@itemize @bullet
34a3c587 73@item Key management.
c154c0be
MO
74@item Cryptographic operations on regions.
75@item Cryptographic operations on files.
76@item Dired integration.
77@item Mail-mode integration.
78@item Automatic encryption/decryption of *.gpg files.
79@end itemize
80
81@node Quick start
82@chapter Quick start
83
5a8d03e9 84EasyPG Assistant commands are prefixed by @samp{epa-}. For example,
c154c0be
MO
85
86@itemize @bullet
87@item To browse your keyring, type @kbd{M-x epa-list-keys}
88
89@item To create a cleartext signature of the region, type @kbd{M-x epa-sign-region}
5a8d03e9
MO
90
91@item To encrypt a file, type @kbd{M-x epa-encrypt-file}
c154c0be
MO
92@end itemize
93
5a8d03e9
MO
94EasyPG Assistant provides several cryptographic features which can be
95integrated into other Emacs functionalities. For example, automatic
96encryption/decryption of @samp{*.gpg} files.
97
c154c0be
MO
98@node Commands
99@chapter Commands
100
101This chapter introduces various commands for typical use cases.
102
103@menu
1df7defd
PE
104* Key management::
105* Cryptographic operations on regions::
106* Cryptographic operations on files::
107* Dired integration::
108* Mail-mode integration::
109* Encrypting/decrypting *.gpg files::
c154c0be
MO
110@end menu
111
112@node Key management
113@section Key management
114Probably the first step of using EasyPG Assistant is to browse your
115keyring. @kbd{M-x epa-list-keys} is corresponding to @samp{gpg
116--list-keys} from the command line.
117
118@deffn Command epa-list-keys name mode
119Show all keys matched with @var{name} from the public keyring.
120@end deffn
121
122@noindent
123The output looks as follows.
124
125@example
126 u A5B6B2D4B15813FE Daiki Ueno <ueno@@unixuser.org>
127@end example
128
129@noindent
130A character on the leftmost column indicates the trust level of the
131key. If it is @samp{u}, the key is marked as ultimately trusted. The
132second column is the key ID, and the rest is the user ID.
133
134You can move over entries by @key{TAB}. If you type @key{RET} or
135click button1 on an entry, you will see more detailed information
136about the key you selected.
137
138@example
139 u Daiki Ueno <ueno@@unixuser.org>
140 u A5B6B2D4B15813FE 1024bits DSA
b1fbbb32
GM
141 Created: 2001-10-09
142 Expires: 2007-09-04
143 Capabilities: sign certify
144 Fingerprint: 8003 7CD0 0F1A 9400 03CA 50AA A5B6 B2D4 B158 13FE
c154c0be 145 u 4447461B2A9BEA2D 2048bits ELGAMAL_E
b1fbbb32
GM
146 Created: 2001-10-09
147 Expires: 2007-09-04
148 Capabilities: encrypt
149 Fingerprint: 9003 D76B 73B7 4A8A E588 10AF 4447 461B 2A9B EA2D
c154c0be
MO
150@end example
151
152@noindent
153To browse your private keyring, use @kbd{M-x epa-list-secret-keys}.
154
155@deffn Command epa-list-secret-keys name
156Show all keys matched with @var{name} from the private keyring.
157@end deffn
158
159@noindent
160In @samp{*Keys*} buffer, several commands are available. The common
161use case is to export some keys to a file. To do that, type @kbd{m}
162to select keys, type @kbd{o}, and then supply the filename.
163
164Below are other commands related to key management. Some of them take
165a file as input/output, and others take the current region.
166
167@deffn Command epa-insert-keys keys
168Insert selected @var{keys} after the point. It will let you select
169keys before insertion. By default, it will encode keys in the OpenPGP
170armor format.
171@end deffn
172
173@deffn Command epa-import-keys file
174Import keys from @var{file} to your keyring.
175@end deffn
176
177@deffn Command epa-import-keys-region start end
178Import keys from the current region between @var{start} and @var{end}
179to your keyring.
180@end deffn
181
182@deffn Command epa-import-armor-in-region start end
183Import keys in the OpenPGP armor format in the current region between
184@var{start} and @var{end}. The difference from
185@code{epa-import-keys-region} is that
186@code{epa-import-armor-in-region} searches armors in the region and
187applies @code{epa-import-keys-region} to each of them.
188@end deffn
189
190@deffn Command epa-delete-keys allow-secret
191Delete selected keys. If @var{allow-secret} is non-@code{nil}, it
192also delete the secret keys.
193@end deffn
194
195@node Cryptographic operations on regions
196@section Cryptographic operations on regions
197
198@deffn Command epa-decrypt-region start end
199Decrypt the current region between @var{start} and @var{end}. It
200replaces the region with the decrypted text.
201@end deffn
202
203@deffn Command epa-decrypt-armor-in-region start end
204Decrypt OpenPGP armors in the current region between @var{start} and
205@var{end}. The difference from @code{epa-decrypt-region} is that
206@code{epa-decrypt-armor-in-region} searches armors in the region
207and applies @code{epa-decrypt-region} to each of them. That is, this
208command does not alter the original text around armors.
209@end deffn
210
211@deffn Command epa-verify-region start end
212Verify the current region between @var{start} and @var{end}. It sends
213the verification result to the minibuffer or a popup window. It
214replaces the region with the signed text.
215@end deffn
216
217@deffn Command epa-verify-cleartext-in-region
218Verify OpenPGP cleartext blocks in the current region between
219@var{start} and @var{end}. The difference from
220@code{epa-verify-region} is that @code{epa-verify-cleartext-in-region}
221searches OpenPGP cleartext blocks in the region and applies
222@code{epa-verify-region} to each of them. That is, this command does
223not alter the original text around OpenPGP cleartext blocks.
224@end deffn
225
226@deffn Command epa-sign-region start end signers type
227Sign the current region between @var{start} and @var{end}. By
228default, it creates a cleartext signature. If a prefix argument is
229given, it will let you select signing keys, and then a signature
230type.
231@end deffn
232
233@deffn Command epa-encrypt-region start end recipients sign signers
234Encrypt the current region between @var{start} and @var{end}. It will
235let you select recipients. If a prefix argument is given, it will
236also ask you whether or not to sign the text before encryption and if
237you answered yes, it will let you select the signing keys.
238@end deffn
239
240@node Cryptographic operations on files
241@section Cryptographic operations on files
242
ff4871b9
GM
243@deffn Command epa-decrypt-file file &optional output
244Decrypt @var{file}. If you do not specify the name @var{output} to
245use for the decrypted file, this function prompts for the value to use.
c154c0be
MO
246@end deffn
247
248@deffn Command epa-verify-file file
249Verify @var{file}.
250@end deffn
251
252@deffn Command epa-sign-file file signers type
253Sign @var{file}. If a prefix argument is given, it will let you
254select signing keys, and then a signature type.
255@end deffn
256
257@deffn Command epa-encrypt-file file recipients
258Encrypt @var{file}. It will let you select recipients.
259@end deffn
260
261@node Dired integration
262@section Dired integration
263
264EasyPG Assistant extends Dired Mode for GNU Emacs to allow users to
265easily do cryptographic operations on files. For example,
266
267@example
268M-x dired
269(mark some files)
270: e (or M-x epa-dired-do-encrypt)
271(select recipients by 'm' and click [OK])
272@end example
273
274@noindent
275The following keys are assigned.
276
277@table @kbd
278@item : d
279@kindex @kbd{: d}
280@findex epa-dired-do-decrypt
281Decrypt marked files.
282
283@item : v
284@kindex @kbd{: v}
285@findex epa-dired-do-verify
286Verify marked files.
287
288@item : s
289@kindex @kbd{: s}
290@findex epa-dired-do-sign
291Sign marked files.
292
293@item : e
294@kindex @kbd{: e}
295@findex epa-dired-do-encrypt
296Encrypt marked files.
297
298@end table
299
300@node Mail-mode integration
301@section Mail-mode integration
302
3b7ab45f 303EasyPG Assistant provides a minor mode @code{epa-mail-mode} to help
c05c2b9b
DU
304user compose inline OpenPGP messages. Inline OpenPGP is a traditional
305style of sending signed/encrypted emails by embedding raw OpenPGP
306blobs inside a message body, not using modern MIME format.
3b7ab45f 307
c05c2b9b 308NOTE: Inline OpenPGP is not recommended and you should consider to use
1df7defd 309PGP/MIME@. See
c154c0be 310@uref{http://josefsson.org/inline-openpgp-considered-harmful.html,
c05c2b9b 311Inline OpenPGP in E-mail is bad@comma{} Mm'kay?}.
c154c0be
MO
312
313@noindent
0f215bca
DU
314Once @code{epa-mail-mode} is enabled, the following keys are assigned.
315You can do it by @kbd{C-u 1 M-x epa-mail-mode} or through the Customize
316interface. Try @kbd{M-x customize-variable epa-global-mail-mode}.
c154c0be
MO
317
318@table @kbd
d85d3b3a
DU
319@item C-c C-e C-d and C-c C-e d
320@kindex @kbd{C-c C-e C-d}
c154c0be
MO
321@kindex @kbd{C-c C-e d}
322@findex epa-mail-decrypt
323Decrypt OpenPGP armors in the current buffer.
324
d85d3b3a
DU
325@item C-c C-e C-v and C-c C-e v
326@kindex @kbd{C-c C-e C-v}
c154c0be
MO
327@kindex @kbd{C-c C-e v}
328@findex epa-mail-verify
329Verify OpenPGP cleartext signed messages in the current buffer.
330
d85d3b3a
DU
331@item C-c C-e C-s and C-c C-e s
332@kindex @kbd{C-c C-e C-s}
c154c0be
MO
333@kindex @kbd{C-c C-e s}
334@findex epa-mail-sign
335Compose a signed message from the current buffer.
336
d85d3b3a
DU
337@item C-c C-e C-e and C-c C-e e
338@kindex @kbd{C-c C-e C-e}
c154c0be
MO
339@kindex @kbd{C-c C-e e}
340@findex epa-mail-encrypt
341Compose an encrypted message from the current buffer.
7a603b73
DU
342By default it tries to build the recipient list from @samp{to},
343@samp{cc}, and @samp{bcc} fields of the mail header. To include your
344key in the recipient list, use @samp{encrypt-to} option in
345@file{~/.gnupg/gpg.conf}.
c154c0be
MO
346
347@end table
348
349@node Encrypting/decrypting *.gpg files
350@section Encrypting/decrypting *.gpg files
8b358e90
DU
351By default, every file whose name ends with @samp{.gpg} will be
352treated as encrypted. That is, when you open such a file, the
353decrypted text is inserted in the buffer rather than encrypted one.
354Similarly, when you save the buffer to a @samp{foo.gpg} file,
355encrypted data is written.
c154c0be 356
8b358e90
DU
357The file name pattern for encrypted files can be controlled by
358@var{epa-file-name-regexp}.
359
360@defvar epa-file-name-regexp
361Regexp which matches filenames treated as encrypted.
362@end defvar
363
364You can disable this behavior with @kbd{M-x epa-file-disable}, and
365then get it back with @kbd{M-x epa-file-enable}.
c154c0be
MO
366
367@deffn Command epa-file-disable
368Disable automatic encryption/decryption of *.gpg files.
369@end deffn
370
371@deffn Command epa-file-enable
372Enable automatic encryption/decryption of *.gpg files.
373@end deffn
374
375@noindent
8b358e90
DU
376By default, @code{epa-file} will try to use symmetric encryption, aka
377password-based encryption. If you want to use public key encryption
378instead, do @kbd{M-x epa-file-select-keys}, which will pops up the key
379selection dialog.
380
381@deffn Command epa-file-select-keys
382Select recipient keys to encrypt the currently visiting file with
383public key encryption.
384@end deffn
385
386You can also change the default behavior with the variable
387@var{epa-file-select-keys}.
388
389@defvar epa-file-select-keys
390Control whether or not to pop up the key selection dialog.
391@end defvar
392
393For frequently visited files, it might be a good idea to tell Emacs
394which encryption method should be used through @xref{File Variables, ,
395, emacs, the Emacs Manual}. Use the @code{epa-file-encrypt-to} local
396variable for this.
c154c0be
MO
397@vindex epa-file-encrypt-to
398
8b358e90
DU
399For example, if you want an Elisp file should be encrypted with a
400public key associated with an email address @samp{ueno@@unixuser.org},
401add the following line to the beginning of the file.
402
c154c0be
MO
403@cartouche
404@lisp
405;; -*- epa-file-encrypt-to: ("ueno@@unixuser.org") -*-
406@end lisp
407@end cartouche
408
8b358e90
DU
409Instead, if you want the file always (regardless of the value of the
410@code{epa-file-select-keys} variable) encrypted with symmetric
411encryption, change the line as follows.
2c6c404a 412
8b358e90
DU
413@cartouche
414@lisp
415;; -*- epa-file-encrypt-to: nil -*-
416@end lisp
417@end cartouche
2c6c404a 418
c154c0be
MO
419Other variables which control the automatic encryption/decryption
420behavior are below.
421
422@defvar epa-file-cache-passphrase-for-symmetric-encryption
423If non-@code{nil}, cache passphrase for symmetric encryption. The
424default value is @code{nil}.
425@end defvar
426
427@defvar epa-file-inhibit-auto-save
428If non-@code{nil}, disable auto-saving when opening an encrypted file.
429The default value is @code{t}.
430@end defvar
431
65f54520
DU
432@node Caching Passphrases
433@chapter Caching Passphrases
434
435Typing passphrases is an irritating task if you frequently open and
436close the same file. GnuPG and EasyPG Assistant provide mechanisms to
437remember your passphrases. However, the configuration is a bit
438confusing since it depends on your GnuPG installation (GnuPG version 1 or
439GnuPG version 2), encryption method (symmetric or public key), and whether or
440not you want to use gpg-agent. Here are some questions:
441
442@enumerate
443@item Do you use GnuPG version 2 instead of GnuPG version 1?
444@item Do you use symmetric encryption rather than public key encryption?
445@item Do you want to use gpg-agent?
446@end enumerate
447
448Here are configurations depending on your answers:
449
450@multitable {111} {222} {333} {configuration configuration configuration}
451@item @b{1} @tab @b{2} @tab @b{3} @tab Configuration
98e2b864 452@item Yes @tab Yes @tab Yes @tab Set up gpg-agent.
65f54520 453@item Yes @tab Yes @tab No @tab You can't, without gpg-agent.
98e2b864 454@item Yes @tab No @tab Yes @tab Set up gpg-agent.
65f54520
DU
455@item Yes @tab No @tab No @tab You can't, without gpg-agent.
456@item No @tab Yes @tab Yes @tab Set up elisp passphrase cache.
457@item No @tab Yes @tab No @tab Set up elisp passphrase cache.
98e2b864 458@item No @tab No @tab Yes @tab Set up gpg-agent.
65f54520
DU
459@item No @tab No @tab No @tab You can't, without gpg-agent.
460@end multitable
461
98e2b864 462To set up gpg-agent, follow the instruction in GnuPG manual.
65f54520
DU
463@pxref{Invoking GPG-AGENT, , Invoking GPG-AGENT, gnupg}.
464
465To set up elisp passphrase cache, set
466@code{epa-file-cache-passphrase-for-symmetric-encryption}.
467@xref{Encrypting/decrypting *.gpg files}.
468
b9476c04
DU
469@node Bug Reports
470@chapter Bug Reports
471
472Bugs and problems with EasyPG Assistant are actively worked on by the
473Emacs development team. Feature requests and suggestions are also
474more than welcome. Use @kbd{M-x report-emacs-bug}, @pxref{Bugs, ,
475Bugs, emacs, Reporting Bugs}.
476
477When submitting a bug report, please try to describe in excruciating
478detail the steps required to reproduce the problem. Also try to
479collect necessary information to fix the bug, such as:
480
481@itemize @bullet
482@item the GnuPG version. Send the output of @samp{gpg --version}.
483@item the GnuPG configuration. Send the contents of @file{~/.gnupg/gpg.conf}.
484@end itemize
485
486Before reporting the bug, you should set @code{epg-debug} in the
487@file{~/.emacs} file and repeat the bug. Then, include the contents
488of the @samp{ *epg-debug*} buffer. Note that the first letter of the
489buffer name is a whitespace.
490
0b1af106
GM
491@node GNU Free Documentation License
492@appendix GNU Free Documentation License
493@include doclicense.texi
494
c154c0be
MO
495@bye
496
497@c End: