Re: ABNF experts sought for OpenPGP header definition

"Charles Lindsey" <[email protected]>
Newsgroups gmane.ietf.rfc822
Message-ID <[email protected]>
In <[email protected]> Simon Josefsson <[email protected]> writes:

>Dear all,

>We would like help with improving the ABNF for our OpenPGP mail/news
>header.  The document and some more info is available from
><http://josefsson.org/openpgp-header/>.  FYI, version -01 was just
>submitted.

>The ABNF section currently reads:


>   openpgp   :=  "OpenPGP:" id-or-url /
>                            (openpgp-parameter *(";" openpgp-parameter))
>                            CRLF

>   id-or-url := id / url

>   openpgp-parameter
>              := ("id" "=" id) /
>                 ("url" "=" url) /
>                 parameter   ; See RFC 2045 for definition of parameter.

>This is rather incomplete; for one it doesn't include CFWS at the
>necessary spots.  Further, it doesn't permit quoting, such as:


You have esentially two problems:

A. To establish exactly what the syntax of parameter is.

B. To specify the syntax of openpgp-parameter or whatever.

Regarding A, the syntax of parameter actually now comes from RFC 2231, and
it is not the world's clearest piece of syntax (moreover, it has a bug
documented in the RFC errata). But it is still based on RFC 822 rather
than RFC 2822, and so inherits the RFC 822 folding/comments rules.

So you need to do some handwaving to explain this. Alternatively, you
could recast the whole syntax in RFC 2822 style, but if you do that make
it in the form of an explanation "for convenience" and not normative. The
overall result should be that [CFWS] is allowed at either end, plus on
either side of the '='.

Regarding B, you have two choices:

B1. Give the syntax as you have shown, and then write some more textual
handwaving to explain that it is really more complicated than it looks.

B2. Write the syntax in the following form:

openpgp-parameter = id-param / url-param ; etc. etc.
id-param  = <a <parameter> with attribute "id" and some <id> as its value>
url-param = <a <parameter> with attribute "url" and some <url> as its value>
id        = .....
url       = .....

That makes use of <parameter> as already defined by your handwaving under
A. Maybe the nested '<...>' is not such a good idea, and might be avoided.

And finally, out of kindness to your reader, a NOTE explaining that this
makes quoting available, and even necessary in some cases.

And may I support Frank's suggestion that you should include [FWS] at
suitable places within your syntax for <url>, so that is can be folded
without the necessity of invoking the gibbous multiline conventions from
RFC 2231 (which you should probably then deprecate). That practice is
indeed recommended in RFC 3986 (STD 66), which also recommends enclosing
the complete urls within "<...>".

And, to be very pedantic, it should be <uri> rather than <url>.

-- 
Charles H. Lindsey ---------At Home, doing my own thing------------------------
Tel: +44 161 436 6131 Fax: +44 161 436 6133   Web: http://www.cs.man.ac.uk/~chl
Email: [email protected]      Snail: 5 Clerewood Ave, CHEADLE, SK8 3JU, U.K.
PGP: 2C15F1A9      Fingerprint: 73 6D C2 51 93 A0 01 E7 65 E8 64 7E 14 A4 AB A5
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.