Comments on 1.0.6d

David Shaw dshaw@jabberwocky.com
Mon Mar 4 23:55:01 2002


Hi,

As promised, here's are some comments about the latest snapshot.
These are the "doesn't work right" comments.  I'll do the "would be
nice" list later :)

I've started on fixes for #5, #8, #10, #13, and #15.

1) --edit a public key you have the secret key for, and use "adduid".
   Make up any user ID you like, but when prompted for a passphrase,
   just hit enter a few times.  This causes an assertion failure:
   "free-packet.c:287: free_user_id: Assertion `uid->ref > 0' failed."

2) The RPM spec file in scripts/gnupg.spec(.in) needs updating for the
   keyserver helpers (gpgkeys_ldap, gpgkeys_mailto).

3) If a key is revoked, it is not shown as revoked in the --edit menu
   until ownertrust is set for that key.  This happens with expired
   keys as well.

4) The 'keyid!' (with exclamation point) syntax works with public
   (i.e. for encryption), but does not work with private (for signing)
   keys.  This seems to be because lookup() in getkey.c calls itself
   and the flags are wiped.

5) When revoking a local key signature (i.e. from 'lsign'), the
   revocation should be local as well to prevent possibly leaking
   information about the local signature.

6) --list-packets shows an awful lot more than it used to in 1.0.6.
   For example, when decrypting a message it shows the packets in the
   keyring as they are read to find the key to decrypt with.  This
   makes it a lot less useful than it used to be.  1.0.6 used to only
   show the immediate object being worked with - when decrypting for
   example, it showed only the packets in the encrypted message.

7) When you delete a key with ownertrust set it does not disappear
   from the trustdb.  I mentioned this one a few months ago and I
   think it was concluded to be a feature and not a bug, though I
   still think that if I delete a key there should be no remnants of
   that key left behind.  The more significant problem is if there is
   an ultimately trusted key that gets deleted, then gpg will complain
   constantly:

   gpg: Oops: keyid_from_fingerprint: no pubkey

   and whenever --update-trustdb or --check-trustdb is run:

   gpg: public key of ultimately trusted key 00000000 not found

8) V3 key revocations should not prompt for a revocation reason since
   V3 revocations do not use it anyway.

9) For some reason --with-colons no longer shows anything in the
   ownertrust field.

10) The keyserver stuff needs an "exec-path" or similar, as the user's
    path may be untrustworthy, and it is also difficult to use the
    keyserver stuff via cron or other non-login methods without it.

11) --list-packets does not work with partial body lengths

12) Should "RIJNDAEL" be called "AES" now that the standard (at least
    the US standard) went through?  PGP calls it "AES", so there may
    be confusion there.  Perhaps GnuPG should accept both names?

13) The command "gpg --export 0xz blah" causes BUG() to be called.

14) Sign a key so that it's trust goes to "full".  Now, delete or
    revoke the signature.  The trust level stays at "full" until you
    export, delete, and then re-import the trustdb.

15) Compiler warning in util/:
   iobuf.c:1891: warning: static declaration for `fseeko' follows non-static

    (I'm not mentioning the compiler warnings in g10/keyedit.c as that
    is the fault of the compiler and not the code.)

16) Assembler warning in mpi/:
   _mpih-rshift.s:129: Warning: using `%dl' instead of `%edx' due to `b' suffix

17) Something seems to be not correct with MDC packets.  Encrypt a
    message so that MDC packets are included, and then run gpg on the
    message.  Do not enter a passphrase, but just hit enter a few
    times.  You get errors that seem to imply the message goes on
    longer than gpg expects it to.  This is visible with
    --list-packets as well.

18) Using several config options like "default-recipient" or
    "secret-keyring" in a config file with no argument causes a
    segfault.

19) If the user makes a key ultimately trusted, there is no way to
    later make it not ultimately trusted without deleting the trustdb
    or exporting the trustdb, editing it manually and re-importing it.

20) This isn't a problem, but I just wanted to comment on it in case
    someone disagrees.  In the way I wrote the signature expiration
    and non-revocability code, expiration subpackets are marked
    critical, and non-revocable subpackets are not.

    The rationale for the non-revocable subpacket being not critical
    is that the worst thing that could happen with such a signature is
    that it ended up on an implementation that treated it as
    revocable.  Since the user is the only person who could issue the
    revocation anyway, there is no problem here.

    The expiration subpacket on the other hand, *is* marked as
    critical, as if it was used on an implementation that did not
    understand expiring signatures the signature could live longer
    then the signer intended, which is clearly wrong.  Better in that
    case to have no signature rather than a signature that persisted
    beyond when the user intended.

David

-- 
   David Shaw  |  dshaw@jabberwocky.com  |  WWW http://www.jabberwocky.com/
+---------------------------------------------------------------------------+
   "There are two major products that come out of Berkeley: LSD and UNIX.
      We don't believe this to be a coincidence." - Jeremy S. Anderson