epa.texi 16 KB

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