diff options
| author | Ben McGinnes <[email protected]> | 2018-02-27 16:21:18 +0000 | 
|---|---|---|
| committer | Ben McGinnes <[email protected]> | 2018-02-27 16:21:18 +0000 | 
| commit | 73c51bc9858de2aab25844e7e283a6334038ccc8 (patch) | |
| tree | 4016c20612097e7e17bc7d06f101ff03fa8a90f9 | |
| parent | core: Support non-thread-safe getenv. (diff) | |
| download | gpgme-73c51bc9858de2aab25844e7e283a6334038ccc8.tar.gz gpgme-73c51bc9858de2aab25844e7e283a6334038ccc8.zip | |
TODO ... the TODO
* If we're going to use Org, let's actually use Org.
* Added the properties tags for each point.
* Some of thems still need custom ID tags assigned properly.
* Probably ought to make them actual TODOs at some point, but that can
  wait until they can be marked as DONE anyway.
* Will add a TODO for some of this stuff ... oh, the irony.
Diffstat (limited to '')
| -rw-r--r-- | TODO | 319 | 
1 files changed, 316 insertions, 3 deletions
| @@ -1,58 +1,172 @@  Hey Emacs, this is -*- org -*- mode!  * Document all the new stuff. +  :PROPERTIES: +  :CUSTOM_ID: more-docs-is-better +  :END: + +  * Fix the remaining UI Server problems: +  :PROPERTIES: +  :CUSTOM_ID: ui-server-fix +  :END:  ** VERIFY --silent support. +   :PROPERTIES: +   :CUSTOM_ID: verify-silent +   :END:  ** ENCRYPT/DECRYPT/VERIFY/SIGN reset the engine, shouldn't be done with UISERVER? +   :PROPERTIES: +   :CUSTOM_ID: reset-engine-not-ui +   :END: +  * IMPORTANT +  :PROPERTIES: +  :CUSTOM_ID: important-stuff-really +  :END:  ** When using descriptor passing, we need to set the fd to blocking before +   :PROPERTIES: +   :CUSTOM_ID: set-fd-blocking +   :END:     issueing simple commands, because we are mixing synchronous     commands into potentially asynchronous operations. -** Might want to implement nonblock for w32 native backend!  Right now, -   we block reading the next line with assuan. +** Might want to implement nonblock for w32 native backend! +   :PROPERTIES: +   :CUSTOM_ID: nonblock-win32 +   :END: +   Right now we block reading the next line with assuan.  * Before release: +  :PROPERTIES: +  :CUSTOM_ID: pre-release +  :END:  ** Some gpg tests fail with gpg 1.3.4-cvs (gpg/t-keylist-sig) +   :PROPERTIES: +   :CUSTOM_ID: gpg-1-3-4-really +   :END:     The test is currently disabled there and in gpg/t-import.  ** When gpg supports it, write binary subpackets directly, +   :PROPERTIES: +   :CUSTOM_ID: binary-subpackets +   :END:     and parse SUBPACKET status lines.  * ABI's to break: +  :PROPERTIES: +  :CUSTOM_ID: abi-breakage-apparently-on-purpose +  :END:  ** Old opassuan interface. +   :PROPERTIES: +   :CUSTOM_ID: old-opassuan +   :END:  ** Implementation: Remove support for old style error codes in +   :PROPERTIES: +   :CUSTOM_ID: remove-old-error-codes +   :END:     conversion.c::_gpgme_map_gnupg_error.  ** gpgme_edit_cb_t: Add "processed" return argument +   :PROPERTIES: +   :CUSTOM_ID: add-processed-return +   :END:     (see edit.c::command_handler).  ** I/O and User Data could be made extensible.  But this can be done +   :PROPERTIES: +   :CUSTOM_ID: add-io-user-data +   :END:     without breaking the ABI hopefully.  ** All enums should be replaced by ints and simple macros for +   :PROPERTIES: +   :CUSTOM_ID: enums-should-be-ints +   :END:     maximum compatibility.  ** Compatibility interfaces that can be removed in future versions: +   :PROPERTIES: +   :CUSTOM_ID: compat-interfaces-to-go +   :END:  *** gpgme_data_new_from_filepart +    :PROPERTIES: +    :CUSTOM_ID: gpgme-data-new-from-filepart +    :END:  *** gpgme_data_new_from_file +    :PROPERTIES: +    :CUSTOM_ID: gpgme-data-new-from-file +    :END:  *** gpgme_data_new_with_read_cb +    :PROPERTIES: +    :CUSTOM_ID: gpgme-data-new-with-read-cb +    :END:  *** gpgme_data_rewind +    :PROPERTIES: +    :CUSTOM_ID: gpgme-data-rewind +    :END:  *** gpgme_op_import_ext +    :PROPERTIES: +    :CUSTOM_ID: gpgme-op-import-ext +    :END:  *** gpgme_get_sig_key +    :PROPERTIES: +    :CUSTOM_ID: gpgme-get-sig-key +    :END:  *** gpgme_get_sig_ulong_attr +    :PROPERTIES: +    :CUSTOM_ID: gpgme-get-sig-ulong-attr +    :END:  *** gpgme_get_sig_string_attr +    :PROPERTIES: +    :CUSTOM_ID: gpgme-get-sig-string-attr +    :END:  *** GPGME_SIG_STAT_* +    :PROPERTIES: +    :CUSTOM_ID: gpgme-sig-stat +    :END:  *** gpgme_get_sig_status +    :PROPERTIES: +    :CUSTOM_ID: gpgme-get-sig-status +    :END:  *** gpgme_trust_item_release +    :PROPERTIES: +    :CUSTOM_ID: gpgme-trust-item-release +    :END:  *** gpgme_trust_item_get_string_attr +    :PROPERTIES: +    :CUSTOM_ID: gpgme-trust-item-get-string-attr +    :END:  *** gpgme_trust_item_get_ulong_attr +    :PROPERTIES: +    :CUSTOM_ID: gpgme-trust-item-get-ulong-attr +    :END:  *** gpgme_attr_t +    :PROPERTIES: +    :CUSTOM_ID: gpgme-attr-t +    :END:  *** All Gpgme* typedefs. +    :PROPERTIES: +    :CUSTOM_ID: all-gpgme-typedefs +    :END:  * Thread support: +  :PROPERTIES: +  :CUSTOM_ID:  +  :END:  ** When GNU Pth supports sendmsg/recvmsg, wrap them properly. +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:  ** Without timegm (3) support our ISO time parser is not thread safe. +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     There is a configure time warning, though.  * New features: +  :PROPERTIES: +  :CUSTOM_ID:  +  :END:  ** Flow control for data objects. +   :PROPERTIES: +   :CUSTOM_ID:  +   :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     callback to store the current operation in a continuation that can @@ -62,8 +176,14 @@ Hey Emacs, this is -*- org -*- mode!     associated with a waitable object, that can be registered with the     user event loop.  Neither is particularly simple.  ** Extended notation support.  When gpg supports arbitrary binary +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     notation data, provide a user interface for that.  ** notification system +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     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 @@ -75,35 +195,82 @@ Hey Emacs, this is -*- org -*- mode!     sufficient for this.  ** --learn-code support +   :PROPERTIES: +   :CUSTOM_ID:  +   :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     GPA we currently invoke gpg directly.  ** Might need a stat() for data objects and use it for length param to gpg. +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:  ** Implement support for photo ids. +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:  ** Allow selection of subkeys +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:  ** Allow to return time stamps in ISO format +   :PROPERTIES: +   :CUSTOM_ID:  +   :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:  +   :END:     later consideration:  *** Allow to export secret keys. +    :PROPERTIES: +    :CUSTOM_ID:  +    :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:  +    :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:  +    :END:  *** Exchanging keys with key servers. +    :PROPERTIES: +    :CUSTOM_ID:  +    :END: +  * Documentation +  :PROPERTIES: +  :CUSTOM_ID:  +  :END:  ** Document validity and trust issues. +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:  ** In gpgme.texi: Register callbacks under the right letter in the index. +   :PROPERTIES: +   :CUSTOM_ID:  +   :END: +  * Engines +  :PROPERTIES: +  :CUSTOM_ID:  +  :END:  ** Do not create/destroy engines, but create engine and then reset it. +   :PROPERTIES: +   :CUSTOM_ID:  +   :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     release everything properly at a reset and at an error.  Think hard @@ -113,21 +280,46 @@ Hey Emacs, this is -*- org -*- mode!     as RESET does not reset it, also for no_encrypt_to and probably     other options.  ** Optimize the case where a data object has an underlying fd we can pass +   :PROPERTIES: +   :CUSTOM_ID:  +   :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:  +   :END:  ** engine operations can return General Error on unknown protocol +   :PROPERTIES: +   :CUSTOM_ID:  +   :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:  +   :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. +   :PROPERTIES: +   :CUSTOM_ID:  +   :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     change gpg/gpgsm to not put them in memory. +  * GPG breakage: +  :PROPERTIES: +  :CUSTOM_ID:  +  :END:  ** gpg 1.4.2 lacks error reporting if sign/encrypt with revoked key. +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:  ** gpg 1.4.2 does crappy error reporting (namely none at all) when +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     smart card is missing for sign operation:      [GNUPG:] CARDCTRL 4      gpg: selecting openpgp failed: ec=6.110 @@ -135,62 +327,157 @@ Hey Emacs, this is -*- org -*- mode!      [GNUPG:] BEGIN_ENCRYPTION 2 10      gpg: test: sign+encrypt failed: general error  ** Without agent and with wrong passphrase, gpg 1.4.2 enters into an +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     infinite loop.  ** Use correct argv[0] +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     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.  * Operations +  :PROPERTIES: +  :CUSTOM_ID:  +  :END:  ** Include cert values -2, -1, 0 and 1 should be defined as macros. +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:  ** If an operation failed, make sure that the result functions don't return +   :PROPERTIES: +   :CUSTOM_ID:  +   :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:  +   :END:     It should not fail silently if it knows there is an error. !!!  ** All operations: Better error reporting. !! +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:  ** Export status handler need much more work. !!! +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:  ** Import should return a useful error when one happened. +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:  *** Import does not take notice of NODATA status report. +    :PROPERTIES: +    :CUSTOM_ID:  +    :END:  *** When GPGSM does issue IMPORT_OK status reports, make sure to check for +    :PROPERTIES: +    :CUSTOM_ID:  +    :END:      them in tests/gpgs m/t-import.c.  ** Verify can include info about version/algo/class, but currently +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     this is only available for gpg, not gpgsm.  ** Return ENC_TO output in verify result.  Again, this is not available +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     for gpgsm.  ** Genkey should return something more useful than General_Error. +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:  ** If possible, use --file-setsize to set the file size for proper progress +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     callback handling.  Write data interface for file size.  ** Optimize the file descriptor list, so the number of open fds is +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     always known easily.  ** Encryption: It should be verified that the behaviour for partially untrusted +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     recipients is correct.  ** When GPG issues INV_something for invalid signers, catch them. +   :PROPERTIES: +   :CUSTOM_ID:  +   :END: +  * Error Values +  :PROPERTIES: +  :CUSTOM_ID:  +  :END:  ** Map ASSUAN/GpgSM ERR error values in a better way than is done now. !! +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:  ** Some error values should identify the source more correctly (mostly error +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     values derived from status messages).  ** In rungpg.c we need to check the version of the engine +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     This requires a way to get the cached version number from the     engine layer.  * Tests +  :PROPERTIES: +  :CUSTOM_ID:  +  :END:  ** Write a fake gpg-agent so that we can supply known passphrases to +   :PROPERTIES: +   :CUSTOM_ID:  +   :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:  +   :END:  *** Test gpgme_data_release_and_get_mem. +    :PROPERTIES: +    :CUSTOM_ID:  +    :END:  *** Test gpgme_data_seek for invalid types. +    :PROPERTIES: +    :CUSTOM_ID:  +    :END:  ** t-keylist +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     Write a test for ext_keylist.  ** Test reading key signatures. +   :PROPERTIES: +   :CUSTOM_ID:  +   :END: +  * Debug +  :PROPERTIES: +  :CUSTOM_ID:  +  :END:  ** Tracepoints should be added at: Every public interface enter/leave, +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     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 @@ -203,20 +490,46 @@ Hey Emacs, this is -*- org -*- mode!     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 +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     ignored (and logged with 255?!), or really be assertions. ! +  * Build suite +  :PROPERTIES: +  :CUSTOM_ID:  +  :END:  ** Make sure everything is cleaned correctly (esp. test area). +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:  ** Enable AC_CONFIG_MACRO_DIR and bump up autoconf version requirement. +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     (To fix "./autogen.sh; ./configure --enable-maintainer-mode; touch     configure.ac; make").  Currently worked around with ACLOCAL_AMFLAGS??? +  * Error checking  +  :PROPERTIES: +  :CUSTOM_ID:  +  :END:  ** engine-gpgsm, with-validation +   :PROPERTIES: +   :CUSTOM_ID:  +   :END:     Add error checking some time after releasing a new gpgsm. -Copyright 2004, 2005 g10 Code GmbH +* Language bindings and related components +  :PROPERTIES: +  :CUSTOM_ID: language-bindings-and-related-stuff +  :END: + + +Copyright 2004, 2005, 2018 g10 Code GmbH  This file is free software; as a special exception the author gives  unlimited permission to copy and/or distribute it, with or without | 
