Blame TODO

Packit Service 672cf4
#+TITLE: TODO List
Packit Service 672cf4
Hey Emacs, this is -*- org -*- mode!
Packit Service 672cf4
Packit Service 672cf4
* IMPORTANT!
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: dev-gnupg-org
Packit Service 672cf4
  :END:
Packit Service 672cf4
Packit Service 672cf4
  There was a nine year gap (2009 to 2018) between edits of this file,
Packit Service 672cf4
  so it is likely that much of the old information in it is wrong or
Packit Service 672cf4
  no longer applicable.
Packit Service 672cf4
Packit Service 672cf4
  Bugs, feature requests and other development related work will be
Packit Service 672cf4
  tracked through the [[https://dev.gnupg.org/][dev.gnupg.org]] site.
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* Documentation
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: documentation
Packit Service 672cf4
  :END:
Packit Service 672cf4
Packit Service 672cf4
** Document all the new stuff.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: more-docs-is-better
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
*** TODO Fix this TODO list.
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: fix-todo
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
    Clean up the current TODO list.  Include properties as relevant (so
Packit Service 672cf4
    if someone does make a PDF or HTML version the TOC will work).
Packit Service 672cf4
Packit Service 672cf4
    Also check to see if some of these ancient things can be removed
Packit Service 672cf4
    (e.g. do we really need to fix things that were broken in GPG
Packit Service 672cf4
    1.3.x?  I'm thinking not so much).
Packit Service 672cf4
Packit Service 672cf4
**** DONE fix TODO items
Packit Service 672cf4
     CLOSED: [2018-03-04 Sun 08:55]
Packit Service 672cf4
     :PROPERTIES:
Packit Service 672cf4
     :CUSTOM_ID: fix-todo-items
Packit Service 672cf4
     :END:
Packit Service 672cf4
Packit Service 672cf4
     Adjust todo items so each can now be referenced by custom-id and
Packit Service 672cf4
     checked off as necessary.
Packit Service 672cf4
Packit Service 672cf4
** TODO Document validity and trust issues.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: valid-trust-issues
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
** In gpgme.texi: Register callbacks under the right letter in the index.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: gpgme-texi
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* Fix the remaining UI Server problems:
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: ui-server-fix
Packit Service 672cf4
  :END:
Packit Service 672cf4
** VERIFY --silent support.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: verify-silent
Packit Service 672cf4
   :END:
Packit Service 672cf4
** ENCRYPT/DECRYPT/VERIFY/SIGN reset the engine, shouldn't be done with UISERVER?
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: reset-engine-not-ui
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* IMPORTANT
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: important-stuff-really
Packit Service 672cf4
  :END:
Packit Service 672cf4
** When using descriptor passing, we need to set the fd to blocking before
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: set-fd-blocking
Packit Service 672cf4
   :END:
Packit Service 672cf4
   issuing simple commands, because we are mixing synchronous
Packit Service 672cf4
   commands into potentially asynchronous operations.
Packit Service 672cf4
** Might want to implement nonblock for w32 native backend!
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: nonblock-win32
Packit Service 672cf4
   :END:
Packit Service 672cf4
   Right now we block reading the next line with assuan.
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* Before release:
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: pre-release
Packit Service 672cf4
  :END:
Packit Service 672cf4
Packit Service 672cf4
** CANCELLED Some gpg tests fail with gpg 1.3.4-cvs (gpg/t-keylist-sig)
Packit Service 672cf4
   CLOSED: [2018-03-09 Fri 08:16]
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: gpg-1-3-4-really
Packit Service 672cf4
   :END:
Packit Service 672cf4
   - State "CANCELLED"  from "TODO"       [2018-03-09 Fri 08:16] \\
Packit Service 672cf4
     WON'T FIX — too old or no longer applies.
Packit Service 672cf4
   The test is currently disabled there and in gpg/t-import.
Packit Service 672cf4
Packit Service 672cf4
** When gpg supports it, write binary subpackets directly,
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: binary-subpackets
Packit Service 672cf4
   :END:
Packit Service 672cf4
   and parse SUBPACKET status lines.
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* ABI's to break:
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: abi-breakage-apparently-on-purpose
Packit Service 672cf4
  :END:
Packit Service 672cf4
Packit Service 672cf4
** Old opassuan interface.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: old-opassuan
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
** Implementation: Remove support for old style error codes in
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: remove-old-error-codes
Packit Service 672cf4
   :END:
Packit Service 672cf4
   conversion.c::_gpgme_map_gnupg_error.
Packit Service 672cf4
Packit Service 672cf4
** gpgme_edit_cb_t: Add "processed" return argument
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: add-processed-return
Packit Service 672cf4
   :END:
Packit Service 672cf4
   (see edit.c::command_handler).
Packit Service 672cf4
Packit Service 672cf4
** I/O and User Data could be made extensible.  But this can be done
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: add-io-user-data
Packit Service 672cf4
   :END:
Packit Service 672cf4
   without breaking the ABI hopefully.
Packit Service 672cf4
Packit Service 672cf4
** All enums should be replaced by ints and simple macros for
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: enums-should-be-ints
Packit Service 672cf4
   :END:
Packit Service 672cf4
   maximum compatibility.
Packit Service 672cf4
Packit Service 672cf4
** Compatibility interfaces that can be removed in future versions:
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: compat-interfaces-to-go
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
*** gpgme_data_new_from_filepart
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: gpgme-data-new-from-filepart
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
*** gpgme_data_new_from_file
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: gpgme-data-new-from-file
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
*** gpgme_data_new_with_read_cb
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: gpgme-data-new-with-read-cb
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
*** gpgme_data_rewind
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: gpgme-data-rewind
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
*** gpgme_op_import_ext
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: gpgme-op-import-ext
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
*** gpgme_get_sig_key
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: gpgme-get-sig-key
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
*** gpgme_get_sig_ulong_attr
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: gpgme-get-sig-ulong-attr
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
*** gpgme_get_sig_string_attr
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: gpgme-get-sig-string-attr
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
*** GPGME_SIG_STAT_*
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: gpgme-sig-stat
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
*** gpgme_get_sig_status
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: gpgme-get-sig-status
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
*** gpgme_trust_item_release
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: gpgme-trust-item-release
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
*** gpgme_trust_item_get_string_attr
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: gpgme-trust-item-get-string-attr
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
*** gpgme_trust_item_get_ulong_attr
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: gpgme-trust-item-get-ulong-attr
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
*** gpgme_attr_t
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: gpgme-attr-t
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
*** All Gpgme* typedefs.
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: all-gpgme-typedefs
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* Thread support:
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: threads
Packit Service 672cf4
  :END:
Packit Service 672cf4
Packit Service 672cf4
** When GNU Pth supports sendmsg/recvmsg, wrap them properly.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: wrap-oth
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
** Without timegm (3) support our ISO time parser is not thread safe.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: time-threads
Packit Service 672cf4
   :END:
Packit Service 672cf4
   There is a configure time warning, though.
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* New features:
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: new-features
Packit Service 672cf4
  :END:
Packit Service 672cf4
Packit Service 672cf4
** Flow control for data objects.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: flow-control-is-not-a-euphemism-for-an-s-bend
Packit Service 672cf4
   :END:
Packit Service 672cf4
   Currently, gpgme_data_t objects are assumed to be blocking.  To
Packit Service 672cf4
   break this assumption, we need either (A) a way for an user I/O
Packit Service 672cf4
   callback to store the current operation in a continuation that can
Packit Service 672cf4
   be resumed later.  While the continuation exists, file descriptors
Packit Service 672cf4
   associated with this operation must be removed from their
Packit Service 672cf4
   respective event loop.  or (B) a way for gpgme data objects to be
Packit Service 672cf4
   associated with a waitable object, that can be registered with the
Packit Service 672cf4
   user event loop.  Neither is particularly simple.
Packit Service 672cf4
Packit Service 672cf4
** Extended notation support.  When gpg supports arbitrary binary
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: extended-notation
Packit Service 672cf4
   :END:
Packit Service 672cf4
   notation data, provide a user interface for that.
Packit Service 672cf4
Packit Service 672cf4
** notification system
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: notification-system
Packit Service 672cf4
   :END:
Packit Service 672cf4
   We need a simple notification system, probably a simple callback
Packit Service 672cf4
   with a string and some optional arguments.  This is for example
Packit Service 672cf4
   required to notify an application of a changed smartcard, The
Packit Service 672cf4
   application can then do whatever is required.  There are other
Packit Service 672cf4
   usages too.  This notification system should be independent of any
Packit Service 672cf4
   contextes of course.
Packit Service 672cf4
Packit Service 672cf4
   Not sure whether this is still required.  GPGME_PROTOCOL_ASSUAN is
Packit Service 672cf4
   sufficient for this.
Packit Service 672cf4
Packit Service 672cf4
** --learn-code support
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: learn-code
Packit Service 672cf4
   :END:
Packit Service 672cf4
   This might be integrated with import. we still need to work out how
Packit Service 672cf4
   to learn a card when gpg and gpgsm have support for smartcards.  In
Packit Service 672cf4
   GPA we currently invoke gpg directly.
Packit Service 672cf4
Packit Service 672cf4
** Might need a stat() for data objects and use it for length param to gpg.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: stat-data
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
** Implement support for photo ids.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: photo-id
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
** Allow selection of subkeys
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: subkey-selection
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
** Allow to return time stamps in ISO format
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: iso-format-datetime
Packit Service 672cf4
   :END:
Packit Service 672cf4
   This allows us to handle years later than 2037 properly.  With the
Packit Service 672cf4
   time_t interface they are all mapped to 2037-12-31
Packit Service 672cf4
Packit Service 672cf4
** New features requested by our dear users, but rejected or left for
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: feature-requests
Packit Service 672cf4
   :END:
Packit Service 672cf4
   later consideration:
Packit Service 672cf4
Packit Service 672cf4
*** Allow to export secret keys.
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: export-secret-keys
Packit Service 672cf4
    :END:
Packit Service 672cf4
    Rejected because this is conceptually flawed.  Secret keys on a
Packit Service 672cf4
    smart card can not be exported, for example.
Packit Service 672cf4
    May eventually e supproted with a keywrapping system.
Packit Service 672cf4
Packit Service 672cf4
*** Selecting the key ring, setting the version or comment in output.
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: select-keyring-version
Packit Service 672cf4
    :END:
Packit Service 672cf4
    Rejected because the naive implementation is engine specific, the
Packit Service 672cf4
    configuration is part of the engine's configuration or readily
Packit Service 672cf4
    worked around in a different way
Packit Service 672cf4
Packit Service 672cf4
*** Selecting the symmetric cipher.
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: symmetric-cipher-selection
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
*** Exchanging keys with key servers.
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: key-server-exchange
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* Engines
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: engines
Packit Service 672cf4
  :END:
Packit Service 672cf4
Packit Service 672cf4
** Do not create/destroy engines, but create engine and then reset it.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: reset-engine-is-not-quite-just-ignition
Packit Service 672cf4
   :END:
Packit Service 672cf4
   Internally the reset operation still spawns a new engine process,
Packit Service 672cf4
   but this can be replaced with a reset later.  Also, be very sure to
Packit Service 672cf4
   release everything properly at a reset and at an error.  Think hard
Packit Service 672cf4
   about where to guarantee what (ie, what happens if start fails, are
Packit Service 672cf4
   the fds unregistered immediately - i think so?)
Packit Service 672cf4
   Note that we need support in gpgsm to set include-certs to default
Packit Service 672cf4
   as RESET does not reset it, also for no_encrypt_to and probably
Packit Service 672cf4
   other options.
Packit Service 672cf4
Packit Service 672cf4
** Optimize the case where a data object has an underlying fd we can pass
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: optimus-data-cousin-of-optimus-prime
Packit Service 672cf4
   :END:
Packit Service 672cf4
   directly to the engine.  This will be automatic with socket I/O and
Packit Service 672cf4
   descriptor passing.
Packit Service 672cf4
Packit Service 672cf4
** Move code common to all engines up from gpg to engine.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: move-code-common-to-engines-out-of-gpg
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
** engine operations can return General Error on unknown protocol
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: general-error-looking-to-be-court-martialled
Packit Service 672cf4
   :END:
Packit Service 672cf4
   (it's an internal error, as select_protocol checks already).
Packit Service 672cf4
Packit Service 672cf4
** When server mode is implemented properly, more care has to be taken to
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: server-mode
Packit Service 672cf4
   :END:
Packit Service 672cf4
   release all resources on error (for example to free assuan_cmd).
Packit Service 672cf4
Packit Service 672cf4
** op_import_keys and op_export_keys have a limit in the number of keys.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: import-export-problems
Packit Service 672cf4
   :END:
Packit Service 672cf4
   This is because we pass them in gpg via the command line and gpgsm
Packit Service 672cf4
   via an assuan control line.  We should pipe them instead and maybe
Packit Service 672cf4
   change gpg/gpgsm to not put them in memory.
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* GPG breakage:
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: gpg-breakage
Packit Service 672cf4
  :END:
Packit Service 672cf4
Packit Service 672cf4
** CANCELLED gpg 1.4.2 lacks error reporting if sign/encrypt with revoked key.
Packit Service 672cf4
   CLOSED: [2018-03-09 Fri 08:19]
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: gpg-classic-lacks-stuff
Packit Service 672cf4
   :END:
Packit Service 672cf4
   - State "CANCELLED"  from "TODO"       [2018-03-09 Fri 08:19] \\
Packit Service 672cf4
     WON'T FIX.
Packit Service 672cf4
Packit Service 672cf4
** CANCELLED gpg 1.4.2 does crappy error reporting (namely none at all) when
Packit Service 672cf4
   CLOSED: [2018-03-09 Fri 08:20]
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: gpg-classic-problems-but-do-we-care
Packit Service 672cf4
   :END:
Packit Service 672cf4
   - State "CANCELLED"  from "TODO"       [2018-03-09 Fri 08:20] \\
Packit Service 672cf4
     WON'T FIX.
Packit Service 672cf4
   smart card is missing for sign operation:
Packit Service 672cf4
    [GNUPG:] CARDCTRL 4
Packit Service 672cf4
    gpg: selecting openpgp failed: ec=6.110
Packit Service 672cf4
    gpg: signing failed: general error
Packit Service 672cf4
    [GNUPG:] BEGIN_ENCRYPTION 2 10
Packit Service 672cf4
    gpg: test: sign+encrypt failed: general error
Packit Service 672cf4
Packit Service 672cf4
** DONE Without agent and with wrong passphrase, gpg 1.4.2 enters into an
Packit Service 672cf4
   CLOSED: [2018-03-09 Fri 08:20]
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: recursive-gpg-classic
Packit Service 672cf4
   :END:
Packit Service 672cf4
   - State "DONE"       from "TODO"       [2018-03-09 Fri 08:20] \\
Packit Service 672cf4
     Must have been fixed in a subsequent release.
Packit Service 672cf4
   infinite loop.
Packit Service 672cf4
Packit Service 672cf4
** CANCELLED Use correct argv[0]
Packit Service 672cf4
   CLOSED: [2018-03-09 Fri 08:24]
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: correct-argv
Packit Service 672cf4
   :END:
Packit Service 672cf4
   - State "CANCELLED"  from "TODO"       [2018-03-09 Fri 08:24] \\
Packit Service 672cf4
     WON'T FIX.
Packit Service 672cf4
Packit Service 672cf4
     Also, there is no rungpg.c file in GPGME (or in GPG or most, if not
Packit Service 672cf4
     all of the rest of the libs and packages; I suspect there hasn't been
Packit Service 672cf4
     for a very long time).
Packit Service 672cf4
   In rungpg.c:build_argv we use
Packit Service 672cf4
      argv[argc] = strdup ("gpg"); /* argv[0] */
Packit Service 672cf4
   This should be changed to take the real file name used in account.
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* Operations
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: operations-are-not-surgical
Packit Service 672cf4
  :END:
Packit Service 672cf4
Packit Service 672cf4
** Include cert values -2, -1, 0 and 1 should be defined as macros.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: certified-macros
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
** If an operation failed, make sure that the result functions don't return
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: operation-failure
Packit Service 672cf4
   :END:
Packit Service 672cf4
   corrupt partial information. !!!
Packit Service 672cf4
   NOTE: The EOF status handler is not called in this case !!!
Packit Service 672cf4
Packit Service 672cf4
** Verify must not fail on NODATA premature if auto-key-retrieval failed.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: autobot-key-retrieval
Packit Service 672cf4
   :END:
Packit Service 672cf4
   It should not fail silently if it knows there is an error. !!!
Packit Service 672cf4
Packit Service 672cf4
** All operations: Better error reporting. !!
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: better-reporting-not-like-fox-news
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
** Export status handler need much more work. !!!
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: export-status-handler
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
** Import should return a useful error when one happened.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: import-useful-stuff-even-wrong-stuff
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
*** Import does not take notice of NODATA status report.
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: import-no-data
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
*** When GPGSM does issue IMPORT_OK status reports, make sure to check for
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: gpgsm-import-ok
Packit Service 672cf4
    :END:
Packit Service 672cf4
    them in tests/gpgs m/t-import.c.
Packit Service 672cf4
Packit Service 672cf4
** Verify can include info about version/algo/class, but currently
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: verify-class
Packit Service 672cf4
   :END:
Packit Service 672cf4
   this is only available for gpg, not gpgsm.
Packit Service 672cf4
Packit Service 672cf4
** Return ENC_TO output in verify result.  Again, this is not available
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: return-to-enc
Packit Service 672cf4
   :END:
Packit Service 672cf4
   for gpgsm.
Packit Service 672cf4
Packit Service 672cf4
** Genkey should return something more useful than General_Error.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: general-key-assumed-command-from-general-error
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
** If possible, use --file-setsize to set the file size for proper progress
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: file-setsize
Packit Service 672cf4
   :END:
Packit Service 672cf4
   callback handling.  Write data interface for file size.
Packit Service 672cf4
Packit Service 672cf4
** Optimize the file descriptor list, so the number of open fds is
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: optimus-descriptus-younger-brother-of-optimus-prime
Packit Service 672cf4
   :END:
Packit Service 672cf4
   always known easily.
Packit Service 672cf4
Packit Service 672cf4
** Encryption: It should be verified that the behaviour for partially untrusted
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: only-mostly-dead-means-partially-alive
Packit Service 672cf4
   :END:
Packit Service 672cf4
   recipients is correct.
Packit Service 672cf4
Packit Service 672cf4
** When GPG issues INV_something for invalid signers, catch them.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: invalid-sig
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* Error Values
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: error-value
Packit Service 672cf4
  :END:
Packit Service 672cf4
Packit Service 672cf4
** Map ASSUAN/GpgSM ERR error values in a better way than is done now. !!
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: map-ass-error
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
** Some error values should identify the source more correctly (mostly error
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: source-errors
Packit Service 672cf4
   :END:
Packit Service 672cf4
   values derived from status messages).
Packit Service 672cf4
Packit Service 672cf4
** In rungpg.c we need to check the version of the engine
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: rungpg-c-engine-ver
Packit Service 672cf4
   :END:
Packit Service 672cf4
   This requires a way to get the cached version number from the
Packit Service 672cf4
   engine layer.
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* Tests
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: tests
Packit Service 672cf4
  :END:
Packit Service 672cf4
Packit Service 672cf4
** TODO Write a fake gpg-agent so that we can supply known passphrases to
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: test-fake-gpg-agent
Packit Service 672cf4
   :END:
Packit Service 672cf4
   gpgsm and setup the configuration files to use the agent.  Without
Packit Service 672cf4
   this we are testing a currently running gpg-agent which is not a
Packit Service 672cf4
   clever idea. !
Packit Service 672cf4
Packit Service 672cf4
** t-data
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: test-data
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
*** Test gpgme_data_release_and_get_mem.
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: test-gpgme-data-release-mem
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
*** Test gpgme_data_seek for invalid types.
Packit Service 672cf4
    :PROPERTIES:
Packit Service 672cf4
    :CUSTOM_ID: test-gpgme-data-seek
Packit Service 672cf4
    :END:
Packit Service 672cf4
Packit Service 672cf4
** t-keylist
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: test-keylist
Packit Service 672cf4
   :END:
Packit Service 672cf4
   Write a test for ext_keylist.
Packit Service 672cf4
Packit Service 672cf4
** Test reading key signatures.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: test-key-sig
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* Debug
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: debug
Packit Service 672cf4
  :END:
Packit Service 672cf4
Packit Service 672cf4
** Tracepoints should be added at: Every public interface enter/leave,
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: tracepoint-pub-int
Packit Service 672cf4
   :END:
Packit Service 672cf4
   before and in every callback, at major decision points, at every
Packit Service 672cf4
   internal data point which might easily be observed by the outside
Packit Service 672cf4
   (system handles).  We also trace handles and I/O support threads in
Packit Service 672cf4
   the w32 implementation because that's fragile code.
Packit Service 672cf4
   Files left to do:
Packit Service 672cf4
   data-fd.c data-mem.c data-stream.c data-user.c debug.c rungpg.c
Packit Service 672cf4
   engine.c engine-gpgsm.c funopen.c w32-glib-io.c wait.c
Packit Service 672cf4
   wait-global.c wait-private.c wait-user.c op-support.c decrypt.c
Packit Service 672cf4
   decrypt-verify.c delete.c edit.c encrypt.c encrypt-sign.c export.c
Packit Service 672cf4
   genkey.c import.c key.c keylist.c passphrase.c progress.c signers.c
Packit Service 672cf4
   sig-notation.c trust-item.c trustlist.c verify.c
Packit Service 672cf4
Packit Service 672cf4
** TODO Handle malloc and vasprintf errors.  But decide first if they should be
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: malloc-vasprintf
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
   ignored (and logged with 255?!), or really be assertions. !
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* Build suite
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: build-suite
Packit Service 672cf4
  :END:
Packit Service 672cf4
Packit Service 672cf4
** TODO Make sure everything is cleaned correctly (esp. test area).
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: clean-tests
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
** TODO Enable AC_CONFIG_MACRO_DIR and bump up autoconf version requirement.
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: autoconf-macros
Packit Service 672cf4
   :END:
Packit Service 672cf4
   (To fix "./autogen.sh; ./configure --enable-maintainer-mode; touch
Packit Service 672cf4
   configure.ac; make").  Currently worked around with ACLOCAL_AMFLAGS???
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* Error checking 
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: error-checking
Packit Service 672cf4
  :END:
Packit Service 672cf4
Packit Service 672cf4
** TODO engine-gpgsm, with-validation
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: gpgsm-validation
Packit Service 672cf4
   :END:
Packit Service 672cf4
   Add error checking some time after releasing a new gpgsm.
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* Language bindings and related components
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: language-bindings-and-related-stuff
Packit Service 672cf4
  :END:
Packit Service 672cf4
Packit Service 672cf4
** TODO Emacs and elisp binding
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: emacs-and-elisp
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
   Currently GNU Emacs uses EPA and EPG to provide GnuPG support.  EPG
Packit Service 672cf4
   does this by calling the GPG executable and wrapping the commands
Packit Service 672cf4
   with elisp functions.  A more preferable solution would be to
Packit Service 672cf4
   implement an epgme.el which integrated with GPGME, then if it could
Packit Service 672cf4
   not to attempt calling the gpgme-tool and only if those failed to
Packit Service 672cf4
   fall back to the current epg.el and calling the command line
Packit Service 672cf4
   binaries.
Packit Service 672cf4
Packit Service 672cf4
** TODO API of an API
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: api-squared
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
   See the more detailed notes on this in the [[lang/python/docs/TODO.org][python TODO]].
Packit Service 672cf4
Packit Service 672cf4
** TODO GPGME installation and package management guide
Packit Service 672cf4
   :PROPERTIES:
Packit Service 672cf4
   :CUSTOM_ID: package-management
Packit Service 672cf4
   :END:
Packit Service 672cf4
Packit Service 672cf4
   Write a guide/best practices for maintainers of GPGME packages with
Packit Service 672cf4
   third party package management systems.
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* Copyright 2004, 2005, 2018 g10 Code GmbH
Packit Service 672cf4
  :PROPERTIES:
Packit Service 672cf4
  :CUSTOM_ID: copyright-and-license
Packit Service 672cf4
  :END:
Packit Service 672cf4
Packit Service 672cf4
This file is free software; as a special exception the author gives
Packit Service 672cf4
unlimited permission to copy and/or distribute it, with or without
Packit Service 672cf4
modifications, as long as this notice is preserved.
Packit Service 672cf4
Packit Service 672cf4
This file is distributed in the hope that it will be useful, but
Packit Service 672cf4
WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
Packit Service 672cf4
implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
Packit Service 672cf4
PURPOSE.