From 12a87af1df906744a14079ff7ff88e7d60679695 Mon Sep 17 00:00:00 2001 From: Ben McGinnes Date: Sun, 4 Mar 2018 08:32:31 +1100 Subject: [PATCH] TODO updates * Updated TODO with tags to make everything appear properly when exported to HTML or PDF. * Added a couple more items, mainly to do with docs or future bindings. * Marked some, but not all as actual TODO items. * Some items should probably be removed, but haven't been yet. * Some have probably been completed already. --- TODO | 152 +++++++++++++++++++++++++++++++---------------------------- 1 file changed, 80 insertions(+), 72 deletions(-) diff --git a/TODO b/TODO index 8efa4b5e..c865ba4a 100644 --- a/TODO +++ b/TODO @@ -158,25 +158,25 @@ Hey Emacs, this is -*- org -*- mode! * Thread support: :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: threads :END: ** When GNU Pth supports sendmsg/recvmsg, wrap them properly. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: wrap-oth :END: ** Without timegm (3) support our ISO time parser is not thread safe. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: time-threads :END: There is a configure time warning, though. * New features: :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: new-features :END: ** Flow control for data objects. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: flow-control-is-not-a-euphemism-for-an-s-bend :END: 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 @@ -188,12 +188,12 @@ Hey Emacs, this is -*- org -*- mode! user event loop. Neither is particularly simple. ** Extended notation support. When gpg supports arbitrary binary :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: extended-notation :END: notation data, provide a user interface for that. ** notification system :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: notification-system :END: We need a simple notification system, probably a simple callback with a string and some optional arguments. This is for example @@ -207,7 +207,7 @@ Hey Emacs, this is -*- org -*- mode! ** --learn-code support :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: learn-code :END: 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 @@ -215,72 +215,72 @@ Hey Emacs, this is -*- org -*- mode! ** Might need a stat() for data objects and use it for length param to gpg. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: stat-data :END: ** Implement support for photo ids. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: photo-id :END: ** Allow selection of subkeys :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: subkey-selection :END: ** Allow to return time stamps in ISO format :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: iso-format-datetime :END: This allows us to handle years later than 2037 properly. With the time_t interface they are all mapped to 2037-12-31 ** New features requested by our dear users, but rejected or left for :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: feature-requests :END: later consideration: *** Allow to export secret keys. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: export-secret-keys :END: 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. *** Selecting the key ring, setting the version or comment in output. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: select-keyring-version :END: 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 *** Selecting the symmetric cipher. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: symmetric-cipher-selection :END: *** Exchanging keys with key servers. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: key-server-exchange :END: * Documentation :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: documentation :END: -** Document validity and trust issues. +** TODO Document validity and trust issues. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: valid-trust-issues :END: ** In gpgme.texi: Register callbacks under the right letter in the index. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: gpgme-texi :END: * Engines :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: engines :END: ** Do not create/destroy engines, but create engine and then reset it. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: reset-engine-is-not-quite-just-ignition :END: Internally the reset operation still spawns a new engine process, but this can be replaced with a reset later. Also, be very sure to @@ -292,27 +292,27 @@ Hey Emacs, this is -*- org -*- mode! other options. ** Optimize the case where a data object has an underlying fd we can pass :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: optimus-data-cousin-of-optimus-prime :END: directly to the engine. This will be automatic with socket I/O and descriptor passing. ** Move code common to all engines up from gpg to engine. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: move-code-common-to-engines-out-of-gpg :END: ** engine operations can return General Error on unknown protocol :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: general-error-looking-to-be-court-martialled :END: (it's an internal error, as select_protocol checks already). ** When server mode is implemented properly, more care has to be taken to :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: server-mode :END: release all resources on error (for example to free assuan_cmd). -** op_import_keys and op_export_keys have a limit ion the number of keys. +** op_import_keys and op_export_keys have a limit in the number of keys. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: import-export-problems :END: 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 @@ -321,15 +321,15 @@ Hey Emacs, this is -*- org -*- mode! * GPG breakage: :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: gpg-breakage :END: ** gpg 1.4.2 lacks error reporting if sign/encrypt with revoked key. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: gpg-classic-lacks-stuff :END: ** gpg 1.4.2 does crappy error reporting (namely none at all) when :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: gpg-classic-problems-but-do-we-care :END: smart card is missing for sign operation: [GNUPG:] CARDCTRL 4 @@ -339,12 +339,12 @@ Hey Emacs, this is -*- org -*- mode! gpg: test: sign+encrypt failed: general error ** Without agent and with wrong passphrase, gpg 1.4.2 enters into an :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: recursive-gpg-classic :END: infinite loop. ** Use correct argv[0] :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: correct-argv :END: In rungpg.c:build_argv we use argv[argc] = strdup ("gpg"); /* argv[0] */ @@ -353,95 +353,95 @@ Hey Emacs, this is -*- org -*- mode! * Operations :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: operations-are-not-surgical :END: ** Include cert values -2, -1, 0 and 1 should be defined as macros. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: certified-macros :END: ** If an operation failed, make sure that the result functions don't return :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: operation-failure :END: corrupt partial information. !!! NOTE: The EOF status handler is not called in this case !!! ** Verify must not fail on NODATA premature if auto-key-retrieval failed. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: autobot-key-retrieval :END: It should not fail silently if it knows there is an error. !!! ** All operations: Better error reporting. !! :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: better-reporting-not-like-fox-news :END: ** Export status handler need much more work. !!! :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: export-status-handler :END: ** Import should return a useful error when one happened. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: import-useful-stuff-even-wrong-stuff :END: *** Import does not take notice of NODATA status report. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: import-no-data :END: *** When GPGSM does issue IMPORT_OK status reports, make sure to check for :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: gpgsm-import-ok :END: them in tests/gpgs m/t-import.c. ** Verify can include info about version/algo/class, but currently :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: verify-class :END: this is only available for gpg, not gpgsm. ** Return ENC_TO output in verify result. Again, this is not available :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: return-to-enc :END: for gpgsm. ** Genkey should return something more useful than General_Error. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: general-key-assumed-command-from-general-error :END: ** If possible, use --file-setsize to set the file size for proper progress :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: file-setsize :END: callback handling. Write data interface for file size. ** Optimize the file descriptor list, so the number of open fds is :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: optimus-descriptus-younger-brother-of-optimus-prime :END: always known easily. ** Encryption: It should be verified that the behaviour for partially untrusted :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: only-mostly-dead-means-partially-alive :END: recipients is correct. ** When GPG issues INV_something for invalid signers, catch them. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: invalid-sig :END: * Error Values :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: error-value :END: ** Map ASSUAN/GpgSM ERR error values in a better way than is done now. !! :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: map-ass-error :END: ** Some error values should identify the source more correctly (mostly error :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: source-errors :END: values derived from status messages). ** In rungpg.c we need to check the version of the engine :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: rungpg-c-engine-ver :END: This requires a way to get the cached version number from the engine layer. @@ -449,35 +449,35 @@ Hey Emacs, this is -*- org -*- mode! * Tests :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: tests :END: -** Write a fake gpg-agent so that we can supply known passphrases to +** TODO Write a fake gpg-agent so that we can supply known passphrases to :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: test-fake-gpg-agent :END: 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. ! ** t-data :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: test-data :END: *** Test gpgme_data_release_and_get_mem. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: test-gpgme-data-release-mem :END: *** Test gpgme_data_seek for invalid types. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: test-gpgme-data-seek :END: ** t-keylist :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: test-keylist :END: Write a test for ext_keylist. ** Test reading key signatures. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: test-key-sig :END: @@ -487,7 +487,7 @@ Hey Emacs, this is -*- org -*- mode! :END: ** Tracepoints should be added at: Every public interface enter/leave, :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: tracepoint-pub-int :END: before and in every callback, at major decision points, at every internal data point which might easily be observed by the outside @@ -500,10 +500,11 @@ Hey Emacs, this is -*- org -*- mode! 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.c -** Handle malloc and vasprintf errors. But decide first if they should be +** TODO Handle malloc and vasprintf errors. But decide first if they should be :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: malloc-vasprintf :END: + ignored (and logged with 255?!), or really be assertions. ! @@ -511,13 +512,13 @@ Hey Emacs, this is -*- org -*- mode! :PROPERTIES: :CUSTOM_ID: :END: -** Make sure everything is cleaned correctly (esp. test area). +** TODO Make sure everything is cleaned correctly (esp. test area). :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: clean-tests :END: -** Enable AC_CONFIG_MACRO_DIR and bump up autoconf version requirement. +** TODO Enable AC_CONFIG_MACRO_DIR and bump up autoconf version requirement. :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: autoconf-macros :END: (To fix "./autogen.sh; ./configure --enable-maintainer-mode; touch configure.ac; make"). Currently worked around with ACLOCAL_AMFLAGS??? @@ -525,11 +526,11 @@ Hey Emacs, this is -*- org -*- mode! * Error checking :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: error-checking :END: -** engine-gpgsm, with-validation +** TODO engine-gpgsm, with-validation :PROPERTIES: - :CUSTOM_ID: + :CUSTOM_ID: gpgsm-validation :END: Add error checking some time after releasing a new gpgsm. @@ -559,6 +560,13 @@ Hey Emacs, this is -*- org -*- mode! See the more detailed notes on this in the [[lang/python/docs/TODO.org][python TODO]]. +** TODO GPGME installation and package management guide + :PROPERTIES: + :CUSTOM_ID: package-management + :END: + + Write a guide/best practices for maintainers of GPGME packages with + third party package management systems. Copyright 2004, 2005, 2018 g10 Code GmbH