mutt stable branch with some hacks
1This is an implementation of Autocrypt Level 1.1. <https://autocrypt.org/>
2
3
4Still Todo
5==========
6* Setup message creation
7* Setup message import
8 These can both be added to the account menu, and perhaps the first-run too.
9
10
11Developer Notes
12===============
13
14* header->security | AUTOCRYPT
15
16 During message composition, AUTOCRYPT is mutually exclusive from
17 ENCRYPT and SIGN. The former means that autocrypt will sign and
18 encrypt the email upon send, the latter means the normal keyring
19 will do so.
20
21 We keep these separate so that autocrypt can detect the normal
22 keyring has been turned on (manually, or by oppenc or something) and
23 disable itself.
24
25 Outside message composition the flags are not exclusive. We can't
26 tell a message is an autocrypt message until we try to decrypt it.
27 Once we do so, the flag is added to the existing flags. The only
28 relevance for decrypted messages is when replying - in which case
29 we want to force using autocrypt in the reply.
30
31* header->security | AUTOCRYPT_OVERRIDE
32
33 I was loathe to use another bit for this, but unlike OPPENCRYPT,
34 AUTOCRYPT means the message *will* be encrypted, not that the option
35 is on.
36
37 We need a way to distinguish between the user manually enabling
38 autocrypt and the recommendation engine doing so. If this is not
39 set, the engine can turn AUTOCRYPT back off when the recipients
40 change. But if the user manually set it, we don't want to do that.
41
42* mutt_autocrypt_init()
43
44 All public functions (in autocrypt.h) should call this function to
45 make sure everything is set up. Nothing prevents the user from manually
46 flipping the option at runtime, but in that case the directory and such
47 may not even exist.
48
49 Right now, I only allow "first run" initialization during startup.
50 Not all calls are interactive, and we don't want to prompt the user
51 while opening a mailbox, for instance.
52
53* Database schema version
54
55 There is a "schema" table in the database, which records database
56 version. Any changes to the database should bump the schema version
57 by adding a call in mutt_autocrypt_schema_update().