* It seems annoying to have a bunch of licensing and history lessons as the
first thing you read when you look at the documentation. Rather, the first
thing you see should be how to install it and use it.
* GPG.encrypt_file() isn't ever directly used now, and so we should switch to
calling it in the same way that GPG._sign_file() is now called when
necessary though GPG.sign().
* If GPG.gen_key_input() is called with 'separate_keyring = True', then a
unique temporary keyring filename will be created in the format:
username@hostname_timestamp.[pub|sec]ring
where the timestamp is an integer representing seconds since epoch for
UTC. The filename for the two temporary keyrings are stored in the class
attribute GPG.temp_keyring and GPG.temp_secring, so that when GPG.gen_key()
is called with results of GPG.gen_key_input([...], separate_keyring=True),
the keys are created using the temporary keyrings, which are then renamed
to:
fingerprint.[pub|sec]ring
where fingerprint is the fingerprint of the key which has just been
generated. The attributes GPG.temp_keyring and GPG.temp_secring are then
both reset to None, so that these attributes, if the hold anything, only
hold the filenames for the last call to GPG.gen_key_input().
* I didn't especially want to add new features right now, but this turned out
to be necessary for cases where we want to generate a bunch of keys and
then use them right away. Without doing this, it would have been necessary
to store the results of the freshly generated key in memory and then write
them to a file by hand, which proved to be rather volatile and error-prone,
as none of the unittests for encryption/decryption for multiple recipients
were passing, nor had ever passed. (A note again on the latter: upstream's
unittests for encryption and decryption are entirely encased in try/except
blocks which CATCH ALL ERRORS. Qu'est-que fuck is the point of a unittest
if it catches all errors?)