* epa-setup.el: New file.
[elisp/epg.git] / README
1 * What's this?
2
3 EasyPG is yet another GnuPG interface for Emacs.  It consists of two parts:
4
5 epa.el - EasyPG Assistant, a basic GUI of GnuPG
6 epg.el - the EasyPG library which interacts with GnuPG
7
8 NOTE: EasyPG is not a fork or a re-implementation of Gnus/PGG.
9
10 * Requirements
11
12 ** GNU Emacs 21.4 or later, XEmacs 21.4 or later
13
14 ** GnuPG 1.4.3 or later
15
16 * Quick start
17
18 ** Installation
19
20 $ ./configure
21 $ sudo make install
22
23 Add the following line to your ~/.emacs
24
25 (require 'epa-setup)
26
27 * Advantages over other competitors
28
29 There are many competitors of EasyPG such as Mailcrypt, Gnus/PGG,
30 gpg.el, etc.  EasyPG has some advantages over them.
31
32 ** EasyPG avoides potential security flaws of Emacs
33
34 See "Security consideration" section.
35
36 ** GnuPG features are directly accessible from Emacs
37
38 Other competitors provide only specific features of GnuPG since they
39 still support PGP 2.*, 5.*, 6.*.  As the name indicates, EasyPG is
40 inspired by GPGME (GnuPG Made Easy), and the library interface is
41 close to GPGME.  With EasyPG you can benefit from a lot of features of
42 GnuPG.
43
44 * Security consideration
45
46 ** `call-process-region' writes data in region to a temporary file
47
48 `call-process-region' writes data in region to a temporary file.
49 EasyPG does *not* use `call-process-region' to communicate with a gpg
50 subprocess.
51
52 ** `(fillarray string 0)' is not enough to clear passphrases
53
54 If Emacs crashed and dumps core, passphrase strings in memory are also
55 dumped within the core file.  `read-passwd' function clears passphrase
56 strings by `(fillarray string 0)'.  However, Emacs performs compaction
57 in gc_sweep phase.  If GC happens before `fillarray', passphrase
58 strings may be moved elsewhere in memory.
59
60 Fortunately, there is gpg-agent to cache passphrases in more secure
61 way, so the EasyPG library dares *not* to cache passphrase by itself.
62 Elisp programs can set `epg-context-passphrase-callback' to cache
63 user's passphrases.