Blame TODO

Packit Service 0ef63b
#+TITLE: TODO List
Packit Service 672cf4
Hey Emacs, this is -*- org -*- mode!
Packit Service 672cf4
Packit Service 0ef63b
* IMPORTANT!
Packit Service 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: dev-gnupg-org
Packit Service 0ef63b
  :END:
Packit Service 0ef63b
Packit Service 0ef63b
  There was a nine year gap (2009 to 2018) between edits of this file,
Packit Service 0ef63b
  so it is likely that much of the old information in it is wrong or
Packit Service 0ef63b
  no longer applicable.
Packit Service 0ef63b
Packit Service 0ef63b
  Bugs, feature requests and other development related work will be
Packit Service 0ef63b
  tracked through the [[https://dev.gnupg.org/][dev.gnupg.org]] site.
Packit Service 0ef63b
Packit Service 0ef63b
Packit Service 0ef63b
* Documentation
Packit Service 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: documentation
Packit Service 0ef63b
  :END:
Packit Service 0ef63b
Packit Service 0ef63b
** Document all the new stuff.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: more-docs-is-better
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 0ef63b
*** TODO Fix this TODO list.
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: fix-todo
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 0ef63b
    Clean up the current TODO list.  Include properties as relevant (so
Packit Service 0ef63b
    if someone does make a PDF or HTML version the TOC will work).
Packit Service 0ef63b
Packit Service 0ef63b
    Also check to see if some of these ancient things can be removed
Packit Service 0ef63b
    (e.g. do we really need to fix things that were broken in GPG
Packit Service 0ef63b
    1.3.x?  I'm thinking not so much).
Packit Service 0ef63b
Packit Service 0ef63b
**** DONE fix TODO items
Packit Service 0ef63b
     CLOSED: [2018-03-04 Sun 08:55]
Packit Service 0ef63b
     :PROPERTIES:
Packit Service 0ef63b
     :CUSTOM_ID: fix-todo-items
Packit Service 0ef63b
     :END:
Packit Service 0ef63b
Packit Service 0ef63b
     Adjust todo items so each can now be referenced by custom-id and
Packit Service 0ef63b
     checked off as necessary.
Packit Service 0ef63b
Packit Service 0ef63b
** TODO Document validity and trust issues.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: valid-trust-issues
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 0ef63b
** In gpgme.texi: Register callbacks under the right letter in the index.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: gpgme-texi
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 0ef63b
Packit Service 672cf4
* Fix the remaining UI Server problems:
Packit Service 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: ui-server-fix
Packit Service 0ef63b
  :END:
Packit Service 672cf4
** VERIFY --silent support.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: verify-silent
Packit Service 0ef63b
   :END:
Packit Service 672cf4
** ENCRYPT/DECRYPT/VERIFY/SIGN reset the engine, shouldn't be done with UISERVER?
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: reset-engine-not-ui
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
Packit Service 672cf4
* IMPORTANT
Packit Service 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: important-stuff-really
Packit Service 0ef63b
  :END:
Packit Service 672cf4
** When using descriptor passing, we need to set the fd to blocking before
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: set-fd-blocking
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
   issuing simple commands, because we are mixing synchronous
Packit Service 672cf4
   commands into potentially asynchronous operations.
Packit Service 0ef63b
** Might want to implement nonblock for w32 native backend!
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: nonblock-win32
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
   Right now we block reading the next line with assuan.
Packit Service 0ef63b
Packit Service 672cf4
Packit Service 672cf4
* Before release:
Packit Service 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: pre-release
Packit Service 0ef63b
  :END:
Packit Service 0ef63b
Packit Service 0ef63b
** CANCELLED Some gpg tests fail with gpg 1.3.4-cvs (gpg/t-keylist-sig)
Packit Service 0ef63b
   CLOSED: [2018-03-09 Fri 08:16]
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: gpg-1-3-4-really
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
   - State "CANCELLED"  from "TODO"       [2018-03-09 Fri 08:16] \\
Packit Service 0ef63b
     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 0ef63b
Packit Service 672cf4
** When gpg supports it, write binary subpackets directly,
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: binary-subpackets
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   and parse SUBPACKET status lines.
Packit Service 672cf4
Packit Service 0ef63b
Packit Service 672cf4
* ABI's to break:
Packit Service 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: abi-breakage-apparently-on-purpose
Packit Service 0ef63b
  :END:
Packit Service 0ef63b
Packit Service 672cf4
** Old opassuan interface.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: old-opassuan
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
** Implementation: Remove support for old style error codes in
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: remove-old-error-codes
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   conversion.c::_gpgme_map_gnupg_error.
Packit Service 0ef63b
Packit Service 672cf4
** gpgme_edit_cb_t: Add "processed" return argument
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: add-processed-return
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   (see edit.c::command_handler).
Packit Service 0ef63b
Packit Service 672cf4
** I/O and User Data could be made extensible.  But this can be done
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: add-io-user-data
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   without breaking the ABI hopefully.
Packit Service 0ef63b
Packit Service 672cf4
** All enums should be replaced by ints and simple macros for
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: enums-should-be-ints
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   maximum compatibility.
Packit Service 0ef63b
Packit Service 672cf4
** Compatibility interfaces that can be removed in future versions:
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: compat-interfaces-to-go
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
*** gpgme_data_new_from_filepart
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: gpgme-data-new-from-filepart
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
*** gpgme_data_new_from_file
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: gpgme-data-new-from-file
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
*** gpgme_data_new_with_read_cb
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: gpgme-data-new-with-read-cb
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
*** gpgme_data_rewind
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: gpgme-data-rewind
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
*** gpgme_op_import_ext
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: gpgme-op-import-ext
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
*** gpgme_get_sig_key
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: gpgme-get-sig-key
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
*** gpgme_get_sig_ulong_attr
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: gpgme-get-sig-ulong-attr
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
*** gpgme_get_sig_string_attr
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: gpgme-get-sig-string-attr
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
*** GPGME_SIG_STAT_*
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: gpgme-sig-stat
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
*** gpgme_get_sig_status
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: gpgme-get-sig-status
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
*** gpgme_trust_item_release
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: gpgme-trust-item-release
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
*** gpgme_trust_item_get_string_attr
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: gpgme-trust-item-get-string-attr
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
*** gpgme_trust_item_get_ulong_attr
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: gpgme-trust-item-get-ulong-attr
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
*** gpgme_attr_t
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: gpgme-attr-t
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
*** All Gpgme* typedefs.
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: all-gpgme-typedefs
Packit Service 0ef63b
    :END:
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* Thread support:
Packit Service 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: threads
Packit Service 0ef63b
  :END:
Packit Service 0ef63b
Packit Service 672cf4
** When GNU Pth supports sendmsg/recvmsg, wrap them properly.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: wrap-oth
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
** Without timegm (3) support our ISO time parser is not thread safe.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: time-threads
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   There is a configure time warning, though.
Packit Service 672cf4
Packit Service 0ef63b
Packit Service 672cf4
* New features:
Packit Service 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: new-features
Packit Service 0ef63b
  :END:
Packit Service 0ef63b
Packit Service 672cf4
** Flow control for data objects.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: flow-control-is-not-a-euphemism-for-an-s-bend
Packit Service 0ef63b
   :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 0ef63b
Packit Service 672cf4
** Extended notation support.  When gpg supports arbitrary binary
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: extended-notation
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   notation data, provide a user interface for that.
Packit Service 0ef63b
Packit Service 672cf4
** notification system
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: notification-system
Packit Service 0ef63b
   :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 0ef63b
   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 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: learn-code
Packit Service 0ef63b
   :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 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: stat-data
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
** Implement support for photo ids.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: photo-id
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
** Allow selection of subkeys
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: subkey-selection
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
** Allow to return time stamps in ISO format
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: iso-format-datetime
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
   This allows us to handle years later than 2037 properly.  With the
Packit Service 0ef63b
   time_t interface they are all mapped to 2037-12-31
Packit Service 0ef63b
Packit Service 672cf4
** New features requested by our dear users, but rejected or left for
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: feature-requests
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   later consideration:
Packit Service 0ef63b
Packit Service 672cf4
*** Allow to export secret keys.
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: export-secret-keys
Packit Service 0ef63b
    :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 0ef63b
Packit Service 672cf4
*** Selecting the key ring, setting the version or comment in output.
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: select-keyring-version
Packit Service 0ef63b
    :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 0ef63b
Packit Service 672cf4
*** Selecting the symmetric cipher.
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: symmetric-cipher-selection
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
*** Exchanging keys with key servers.
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: key-server-exchange
Packit Service 0ef63b
    :END:
Packit Service 672cf4
Packit Service 672cf4
Packit Service 672cf4
* Engines
Packit Service 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: engines
Packit Service 0ef63b
  :END:
Packit Service 0ef63b
Packit Service 672cf4
** Do not create/destroy engines, but create engine and then reset it.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: reset-engine-is-not-quite-just-ignition
Packit Service 0ef63b
   :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 0ef63b
Packit Service 672cf4
** Optimize the case where a data object has an underlying fd we can pass
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: optimus-data-cousin-of-optimus-prime
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   directly to the engine.  This will be automatic with socket I/O and
Packit Service 672cf4
   descriptor passing.
Packit Service 0ef63b
Packit Service 672cf4
** Move code common to all engines up from gpg to engine.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: move-code-common-to-engines-out-of-gpg
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
** engine operations can return General Error on unknown protocol
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: general-error-looking-to-be-court-martialled
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   (it's an internal error, as select_protocol checks already).
Packit Service 0ef63b
Packit Service 672cf4
** When server mode is implemented properly, more care has to be taken to
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: server-mode
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   release all resources on error (for example to free assuan_cmd).
Packit Service 0ef63b
Packit Service 0ef63b
** op_import_keys and op_export_keys have a limit in the number of keys.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: import-export-problems
Packit Service 0ef63b
   :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 0ef63b
Packit Service 672cf4
* GPG breakage:
Packit Service 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: gpg-breakage
Packit Service 0ef63b
  :END:
Packit Service 0ef63b
Packit Service 0ef63b
** CANCELLED gpg 1.4.2 lacks error reporting if sign/encrypt with revoked key.
Packit Service 0ef63b
   CLOSED: [2018-03-09 Fri 08:19]
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: gpg-classic-lacks-stuff
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
   - State "CANCELLED"  from "TODO"       [2018-03-09 Fri 08:19] \\
Packit Service 0ef63b
     WON'T FIX.
Packit Service 0ef63b
Packit Service 0ef63b
** CANCELLED gpg 1.4.2 does crappy error reporting (namely none at all) when
Packit Service 0ef63b
   CLOSED: [2018-03-09 Fri 08:20]
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: gpg-classic-problems-but-do-we-care
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
   - State "CANCELLED"  from "TODO"       [2018-03-09 Fri 08:20] \\
Packit Service 0ef63b
     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 0ef63b
Packit Service 0ef63b
** DONE Without agent and with wrong passphrase, gpg 1.4.2 enters into an
Packit Service 0ef63b
   CLOSED: [2018-03-09 Fri 08:20]
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: recursive-gpg-classic
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
   - State "DONE"       from "TODO"       [2018-03-09 Fri 08:20] \\
Packit Service 0ef63b
     Must have been fixed in a subsequent release.
Packit Service 672cf4
   infinite loop.
Packit Service 0ef63b
Packit Service 0ef63b
** CANCELLED Use correct argv[0]
Packit Service 0ef63b
   CLOSED: [2018-03-09 Fri 08:24]
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: correct-argv
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
   - State "CANCELLED"  from "TODO"       [2018-03-09 Fri 08:24] \\
Packit Service 0ef63b
     WON'T FIX.
Packit Service 0ef63b
Packit Service 0ef63b
     Also, there is no rungpg.c file in GPGME (or in GPG or most, if not
Packit Service 0ef63b
     all of the rest of the libs and packages; I suspect there hasn't been
Packit Service 0ef63b
     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 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: operations-are-not-surgical
Packit Service 0ef63b
  :END:
Packit Service 0ef63b
Packit Service 672cf4
** Include cert values -2, -1, 0 and 1 should be defined as macros.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: certified-macros
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
** If an operation failed, make sure that the result functions don't return
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: operation-failure
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   corrupt partial information. !!!
Packit Service 672cf4
   NOTE: The EOF status handler is not called in this case !!!
Packit Service 0ef63b
Packit Service 672cf4
** Verify must not fail on NODATA premature if auto-key-retrieval failed.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: autobot-key-retrieval
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   It should not fail silently if it knows there is an error. !!!
Packit Service 0ef63b
Packit Service 672cf4
** All operations: Better error reporting. !!
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: better-reporting-not-like-fox-news
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
** Export status handler need much more work. !!!
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: export-status-handler
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
** Import should return a useful error when one happened.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: import-useful-stuff-even-wrong-stuff
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
*** Import does not take notice of NODATA status report.
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: import-no-data
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
*** When GPGSM does issue IMPORT_OK status reports, make sure to check for
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: gpgsm-import-ok
Packit Service 0ef63b
    :END:
Packit Service 672cf4
    them in tests/gpgs m/t-import.c.
Packit Service 0ef63b
Packit Service 672cf4
** Verify can include info about version/algo/class, but currently
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: verify-class
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   this is only available for gpg, not gpgsm.
Packit Service 0ef63b
Packit Service 672cf4
** Return ENC_TO output in verify result.  Again, this is not available
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: return-to-enc
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   for gpgsm.
Packit Service 0ef63b
Packit Service 672cf4
** Genkey should return something more useful than General_Error.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: general-key-assumed-command-from-general-error
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
** If possible, use --file-setsize to set the file size for proper progress
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: file-setsize
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   callback handling.  Write data interface for file size.
Packit Service 0ef63b
Packit Service 672cf4
** Optimize the file descriptor list, so the number of open fds is
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: optimus-descriptus-younger-brother-of-optimus-prime
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   always known easily.
Packit Service 0ef63b
Packit Service 672cf4
** Encryption: It should be verified that the behaviour for partially untrusted
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: only-mostly-dead-means-partially-alive
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   recipients is correct.
Packit Service 0ef63b
Packit Service 672cf4
** When GPG issues INV_something for invalid signers, catch them.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: invalid-sig
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
Packit Service 672cf4
* Error Values
Packit Service 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: error-value
Packit Service 0ef63b
  :END:
Packit Service 0ef63b
Packit Service 672cf4
** Map ASSUAN/GpgSM ERR error values in a better way than is done now. !!
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: map-ass-error
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
** Some error values should identify the source more correctly (mostly error
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: source-errors
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   values derived from status messages).
Packit Service 0ef63b
Packit Service 672cf4
** In rungpg.c we need to check the version of the engine
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: rungpg-c-engine-ver
Packit Service 0ef63b
   :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 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: tests
Packit Service 0ef63b
  :END:
Packit Service 0ef63b
Packit Service 0ef63b
** TODO Write a fake gpg-agent so that we can supply known passphrases to
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: test-fake-gpg-agent
Packit Service 0ef63b
   :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 0ef63b
Packit Service 672cf4
** t-data
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: test-data
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
*** Test gpgme_data_release_and_get_mem.
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: test-gpgme-data-release-mem
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
*** Test gpgme_data_seek for invalid types.
Packit Service 0ef63b
    :PROPERTIES:
Packit Service 0ef63b
    :CUSTOM_ID: test-gpgme-data-seek
Packit Service 0ef63b
    :END:
Packit Service 0ef63b
Packit Service 672cf4
** t-keylist
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: test-keylist
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   Write a test for ext_keylist.
Packit Service 0ef63b
Packit Service 672cf4
** Test reading key signatures.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: test-key-sig
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
Packit Service 672cf4
* Debug
Packit Service 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: debug
Packit Service 0ef63b
  :END:
Packit Service 0ef63b
Packit Service 672cf4
** Tracepoints should be added at: Every public interface enter/leave,
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: tracepoint-pub-int
Packit Service 0ef63b
   :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 0ef63b
Packit Service 0ef63b
** TODO Handle malloc and vasprintf errors.  But decide first if they should be
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: malloc-vasprintf
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 672cf4
   ignored (and logged with 255?!), or really be assertions. !
Packit Service 672cf4
Packit Service 0ef63b
Packit Service 672cf4
* Build suite
Packit Service 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: build-suite
Packit Service 0ef63b
  :END:
Packit Service 0ef63b
Packit Service 0ef63b
** TODO Make sure everything is cleaned correctly (esp. test area).
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: clean-tests
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 0ef63b
** TODO Enable AC_CONFIG_MACRO_DIR and bump up autoconf version requirement.
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: autoconf-macros
Packit Service 0ef63b
   :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 0ef63b
Packit Service 672cf4
* Error checking 
Packit Service 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: error-checking
Packit Service 0ef63b
  :END:
Packit Service 0ef63b
Packit Service 0ef63b
** TODO engine-gpgsm, with-validation
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: gpgsm-validation
Packit Service 0ef63b
   :END:
Packit Service 672cf4
   Add error checking some time after releasing a new gpgsm.
Packit Service 672cf4
Packit Service 672cf4
Packit Service 0ef63b
* Language bindings and related components
Packit Service 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: language-bindings-and-related-stuff
Packit Service 0ef63b
  :END:
Packit Service 0ef63b
Packit Service 0ef63b
** TODO Emacs and elisp binding
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: emacs-and-elisp
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 0ef63b
   Currently GNU Emacs uses EPA and EPG to provide GnuPG support.  EPG
Packit Service 0ef63b
   does this by calling the GPG executable and wrapping the commands
Packit Service 0ef63b
   with elisp functions.  A more preferable solution would be to
Packit Service 0ef63b
   implement an epgme.el which integrated with GPGME, then if it could
Packit Service 0ef63b
   not to attempt calling the gpgme-tool and only if those failed to
Packit Service 0ef63b
   fall back to the current epg.el and calling the command line
Packit Service 0ef63b
   binaries.
Packit Service 0ef63b
Packit Service 0ef63b
** TODO API of an API
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: api-squared
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 0ef63b
   See the more detailed notes on this in the [[lang/python/docs/TODO.org][python TODO]].
Packit Service 0ef63b
Packit Service 0ef63b
** TODO GPGME installation and package management guide
Packit Service 0ef63b
   :PROPERTIES:
Packit Service 0ef63b
   :CUSTOM_ID: package-management
Packit Service 0ef63b
   :END:
Packit Service 0ef63b
Packit Service 0ef63b
   Write a guide/best practices for maintainers of GPGME packages with
Packit Service 0ef63b
   third party package management systems.
Packit Service 0ef63b
Packit Service 0ef63b
Packit Service 0ef63b
* Copyright 2004, 2005, 2018 g10 Code GmbH
Packit Service 0ef63b
  :PROPERTIES:
Packit Service 0ef63b
  :CUSTOM_ID: copyright-and-license
Packit Service 0ef63b
  :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.