Hey Emacs, this is -*- org -*- mode!
There was a nine year gap (2009 to 2018) between edits of this file, so it is likely that much of the old information in it is wrong or no longer applicable.
Bugs, feature requests and other development related work will be tracked through the dev.gnupg.org site.
Clean up the current TODO list. Include properties as relevant (so if someone does make a PDF or HTML version the TOC will work).
Also check to see if some of these ancient things can be removed (e.g. do we really need to fix things that were broken in GPG 1.3.x? I’m thinking not so much).
Adjust todo items so each can now be referenced by custom-id and checked off as necessary.
issuing simple commands, because we are mixing synchronous commands into potentially asynchronous operations. Right now we block reading the next line with assuan.- State “CANCELLED” from “TODO” [2018-03-09 Fri 08:16]
WON’T FIX — too old or no longer applies.
The test is currently disabled there and in gpg/t-import.
and parse SUBPACKET status lines. conversion.c::_gpgme_map_gnupg_error. (see edit.c::command_handler). without breaking the ABI hopefully. maximum compatibility. There is a configure time warning, though. Currently, gpgme_data_t objects are assumed to be blocking. To break this assumption, we need either (A) a way for an user I/O callback to store the current operation in a continuation that can be resumed later. While the continuation exists, file descriptors associated with this operation must be removed from their respective event loop. or (B) a way for gpgme data objects to be associated with a waitable object, that can be registered with the user event loop. Neither is particularly simple. notation data, provide a user interface for that. We need a simple notification system, probably a simple callback with a string and some optional arguments. This is for example required to notify an application of a changed smartcard, The application can then do whatever is required. There are other usages too. This notification system should be independent of any contextes of course.Not sure whether this is still required. GPGME_PROTOCOL_ASSUAN is sufficient for this.
This might be integrated with import. we still need to work out how to learn a card when gpg and gpgsm have support for smartcards. In GPA we currently invoke gpg directly. This allows us to handle years later than 2037 properly. With the time_t interface they are all mapped to 2037-12-31 later consideration: Rejected because this is conceptually flawed. Secret keys on a smart card can not be exported, for example. May eventually e supproted with a keywrapping system. Rejected because the naive implementation is engine specific, the configuration is part of the engine’s configuration or readily worked around in a different way Internally the reset operation still spawns a new engine process, but this can be replaced with a reset later. Also, be very sure to release everything properly at a reset and at an error. Think hard about where to guarantee what (ie, what happens if start fails, are the fds unregistered immediately - i think so?) Note that we need support in gpgsm to set include-certs to default as RESET does not reset it, also for no_encrypt_to and probably other options. directly to the engine. This will be automatic with socket I/O and descriptor passing. (it’s an internal error, as select_protocol checks already). release all resources on error (for example to free assuan_cmd). This is because we pass them in gpg via the command line and gpgsm via an assuan control line. We should pipe them instead and maybe change gpg/gpgsm to not put them in memory.- State “CANCELLED” from “TODO” [2018-03-09 Fri 08:19]
WON’T FIX.
- State “CANCELLED” from “TODO” [2018-03-09 Fri 08:20]
WON’T FIX.
smart card is missing for sign operation: [GNUPG:] CARDCTRL 4 gpg: selecting openpgp failed: ec=6.110 gpg: signing failed: general error [GNUPG:] BEGIN_ENCRYPTION 2 10 gpg: test: sign+encrypt failed: general error
- State “DONE” from “TODO” [2018-03-09 Fri 08:20]
Must have been fixed in a subsequent release.
infinite loop.
- State “CANCELLED” from “TODO” [2018-03-09 Fri 08:24]
WON’T FIX.Also, there is no rungpg.c file in GPGME (or in GPG or most, if not all of the rest of the libs and packages; I suspect there hasn’t been for a very long time).
In rungpg.c:build_argv we use argv[argc] = strdup (“gpg”); * argv[0] * This should be changed to take the real file name used in account.
corrupt partial information. !!! NOTE: The EOF status handler is not called in this case !!! It should not fail silently if it knows there is an error. !!! them in tests/gpgs m/t-import.c. this is only available for gpg, not gpgsm. for gpgsm. callback handling. Write data interface for file size. always known easily. recipients is correct. values derived from status messages). This requires a way to get the cached version number from the engine layer. gpgsm and setup the configuration files to use the agent. Without this we are testing a currently running gpg-agent which is not a clever idea. ! Write a test for ext_keylist. before and in every callback, at major decision points, at every internal data point which might easily be observed by the outside (system handles). We also trace handles and I/O support threads in the w32 implementation because that’s fragile code. Files left to do: data-fd.c data-mem.c data-stream.c data-user.c debug.c rungpg.c engine.c engine-gpgsm.c funopen.c w32-glib-io.c wait.c wait-global.c wait-private.c wait-user.c op-support.c decrypt.c decrypt-verify.c delete.c edit.c encrypt.c encrypt-sign.c export.c genkey.c import.c key.c keylist.c passphrase.c progress.c signers.c sig-notation.c trust-item.c trustlist.c verify.cignored (and logged with 255?!), or really be assertions. !
(To fix “./autogen.sh; ./configure –enable-maintainer-mode; touch configure.ac; make”). Currently worked around with ACLOCAL_AMFLAGS??? Add error checking some time after releasing a new gpgsm.Currently GNU Emacs uses EPA and EPG to provide GnuPG support. EPG does this by calling the GPG executable and wrapping the commands with elisp functions. A more preferable solution would be to implement an epgme.el which integrated with GPGME, then if it could not to attempt calling the gpgme-tool and only if those failed to fall back to the current epg.el and calling the command line binaries.
See the more detailed notes on this in the python TODO.
Write a guide/best practices for maintainers of GPGME packages with third party package management systems.
This file is free software; as a special exception the author gives unlimited permission to copy and/or distribute it, with or without modifications, as long as this notice is preserved.
This file is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY, to the extent permitted by law; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.