4 We currently use the PGP APIs to do the following:
5 - Load a key ring into memory.
6 - Find a key in a key ring and store a reference to it.
7 - Use a secure key to sign a message in clear text ascii armour
9 - Check the signature on a clear text signed message, giving back
10 the contents, the key that signed it and the time at which it was
11 signed. If the check fails, we need to know the reason why e.g. Was
12 the signature corrupt, did it match the text, was the message in
13 the correct format, has the key be revoked etc.
14 - Add an ascii armoured key to a key ring held in memory.
15 - Store a key ring held in memory back to disk.
17 We may also want to use standard encryption and decryption in the future.
22 - encrypting, signing, decrypting, verifying documents.
24 - issuing key certifications and revocations
26 - user id: add, remove, revoke
27 - keyring handling (on disk storage)
28 - keyserver querying fu
29 - trust handling (a la gpg)
30 - export of <everything>
31 - import of <everything>
33 Specific non-requirements
34 -------------------------
36 X We will not use GPG slave processes to do keyserver queries - nor
37 any other slave process, this will be done entirely in-process.