Clearsigning (again)

brian moore bem at cmc.net
Thu May 25 15:39:15 CEST 2000


I know there is very little in the RFC regarding clearsigning and that
PGP-MIME is better.  But Network Solutions wants clearsigned (and so do
many Usenet readers since multipart MIME is evil on Usenet), so I need
it to work properly.

>From the fine man page:

       -t, --textmode
                 Use   canonical  text  mode.   If  -t  (but  not
                 --textmode) is used together with  armoring  and
                 signing,   this  enables  clearsigned  messages.
                 This kludge is  needed  for  PGP  compatibility;
                 normally  you would use --sign or --clearsign to
                 selected the type of the signature.

But this doesn't wholly work.

[thorin:~] 2:10:46pm 193 % echo foo | gpg -t --armor --sign

You need a passphrase to unlock the secret key for
user: "brian moore <bem at cmc.net>"
1024-bit DSA key, ID 88322B51, created 1998-10-17

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

foo
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.1 (GNU/Linux)
Comment: For info see http://www.gnupg.org

iD8DBQE5LZbaN3/OJIgyK1ERAm/3AJ99ETFfFOvIS+necd4awNO5S255EACghazh
p9oyByxGr6xctlsQTU7C4zk=
=myQV
-----END PGP SIGNATURE-----

The problem is that with PGP, the same sort of thing will have an empty
line after the 'foo'.  PGP5 will verify the above, but it will be
missing the end of line:

[thorin:~] 2:12:53pm 200 % ls -l foo
-rw-------    1 bem      bem             3 May 25 14:12 foo
[thorin:~] 2:12:56pm 201 % od -x foo
0000000 6f66 006f
0000003

The trailing newline placed there by 'echo foo' (which emits 4
characters) is gone.

Again, I realize that RFC2440 isn't clear at all about 'clearsigned'
messages but I believe interoperability is important.  How does the
above behave with PGP6?  If it behaves as PGP5 does, then I think gnupg
needs to change.

The relevant wording in 2440 I see is:

                                                                The
   line ending (i.e. the <CR><LF>) before the '-----BEGIN PGP
   SIGNATURE-----' line that terminates the signed text is not
   considered part of the signed text.

That seems to imply "insert an extra newline here when signing and
discard it when you verify".  

There is also a problem in lines ending with TAB (which, alas, I know
because NSI seems to send forms with TABs at the end of the line for
reasons known only to them):

[thorin:~] 2:15:13pm 211 % echo "foo    " > foo             # that's a tab
[thorin:~] 2:15:14pm 212 % gpg -t --armor --sign foo

You need a passphrase to unlock the secret key for user: "brian moore <bem at cmc.net>"
1024-bit DSA key, ID 88322B51, created 1998-10-17

[thorin:~] 2:15:25pm 213 % pgpv foo.asc
Opening file "foo" type text.
BAD signature made 2000-05-25 21:15 GMT by key:
  1024 bits, Key ID 88322B51, Created 1998-10-17
   "brian moore <bem at cmc.net>"
   "brian moore <bem at thorin.cmc.net>"
   "brian moore <bem at news.cmc.net>"

This seems to be contrary to RFC2440:

   Also, any trailing whitespace (spaces, and tabs, 0x09) at the end of
   any line is ignored when the cleartext signature is calculated.

Spaces at the end of the line -are- ignored correctly.  But tabs are
not.

If there's consensus that these two things need fixing, I'll submit a
patch, but so far I've had no response to these even being problems. :(

Again, both of these are needed to work with Network Solutions, which is
why it's annoying me.  If I manually ":%s/^I$//", and insert a blank
line at the end of my forms, yes, I can then submit them to NSI and have
them verify, but that seems goofy.

-- 
Brian Moore                       | Of course vi is God's editor.
      Sysadmin, C/Perl Hacker     | If He used Emacs, He'd still be waiting
      Usenet Vandal               |  for it to load on the seventh day.
      Netscum, Bane of Elves.



More information about the Gnupg-devel mailing list