[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: binary format proposal as internet-draft

I had read the binary format draft earlier, and had thought by Tatu's
and Carl's comments that the binary format had been incorporated into
the new draft.  I spent my evening reading.  Maybe I'm not interpreting
it correctly, but it seems to be parsing decimal ASCII strings instead of
binary lengths.  Why?

I like a lot of Tatu's draft, and think it would simplify things
somewhat.  Please discuss using a "purer" binary format.

Meanwhile, I'd prefer a slight change to Tatu's formats.  I prefer that
a single number cannot have two different representations.  Tatu's
format allows a small number (say 42) to be represented in each field

I'd also prefer that folks use the formats (or close to the formats)
already used in PGP and Photuris.  I'm biased.

vlbyte (variable length byte-strings)

These are for byte-strings, which tend to be short, and as such should
use a single byte when possible.  The range is better extended, without
duplicates (and somewhat compatible with PGP):

   |x x            |

        xx = 0..2

        Range: 0 .. 191

   |1 1 x x                        |

        xx = 0..2

        Range: 192 .. 16,575

   |1 1 1 1 x x                                    |

        xx = 0..2

        Range: 16,576 .. 1,065,151

   Reserve leading fc..fe (hex) for 4 byte Size, etc.

vpbit (variable precision bit-strings)

These are for bit-strings, usually fairly large, and don't need the
single byte case (we do not expect to support moduli less than 256).
The range is better (and compatible with PGP and Photuris) when we
start right out with 2 byte lengths:

   |x x x x x x x x                |

        xx = 00..fe (hex).

        Range: 1 to 65,279 significant bits
               (in 1 to 8,160 bytes).

   |1 1 1 1 1 1 1 1 x x x x x x x x                                |

        xx = 00..fe (hex).

        Range: 65,280 to 16,776,959 significant bits
               (in 2,097,120 bytes).

   Reserve leading ffff (hex) for 8 byte Size.

    Key fingerprint =  17 40 5E 67 15 6F 31 26  DD 0D B9 9B 6A 15 2C 32
    Key fingerprint =  2E 07 23 03 C5 62 70 D3  59 B1 4F 5E 1D C2 C1 A2