On Sat, 2016-09-17 at 08:50 +0000, David Woodhouse wrote: > > opaque psk_identity<1..2^16-1>; > > psk_identity identity_list<1..2^16-1>; > > > > That means that for id 'psk' you have: > > > > > > > > uint16(size of psk + 2)||uint16(size of psk)||psk| > > or |uint16(5)||uint16(3)||psk| > > ? ? ? 2-bytes ?2-bytes ? ?3-bytes > > > > Where the uint16 is in big-endian order. > More generally, since the client can propose multiple identities, it > is... > > ? uint16 10015 // provisional extension ID > ? uint16 extlen // all extensions have a length of their payload These you shouldn't normally care about (at least in the gnutls api if I remember well) > ... then the payload contains what you talked about above... > ? uint16 entirely_redundant_payload_len_again == extlen-2 > ????uint16 ident1_len > ????char "dave" > ????uint16 ident2-len > ????char "nikos" > ????... right. > Can we ditch the first in uint16 in payload, given that it is > entirely > redundant? Or am I misreading the spec to put it there in the first > place, > and the formal language is supposed to *include* what I called > 'extlen' According to the protocol tt has to be there.