> On Jul 26, 2017, at 03:08, Kazu Yamamoto (山本和彦) <k...@iij.ad.jp> wrote:
> 
> Hi Stephen,
> 
>> Initially, I thought proposal I would be the best, but now I have a
>> mild preference for proposal III. I think it makes the language
>> simpler over all. It essentially becomes two primitive types
>> (`opaque` and `uint8`) and four type definitions:
> 
> 
> I like III, too. But I don't want to keep unused labels such as
> 'server_share'. So, I like the following definition.
> 
>   struct {
>       KeyShareEntry client_shares<0..2^16-1>;
>   } ClientKeyShares;
> 
>   struct {
>       select (Handshake.msg_type) {
>           case client_hello:        ClientKeyShares;
>           case hello_retry_request: NamedGroup;
>           case server_hello:        KeyShareEntry;
>       };
>   } KeyShare;

That would be fine too, but `server_share` really is described in the text and 
there's no good way to discuss it without having a field name.

> 
>> Neither the current presentation language nor my proposed one above
>> gives meaning to `uint16 ProtocolVersion;`. Absent a compelling
>> reason for type aliases, I think this should be written as `uint8
>> ProtocolVersion[2];`
> 
> If I remember correctly, ProtocolVersion is defined:
> 
>      struct {
>          uint8 major;
>          uint8 minor;
>      } ProtocolVersion;
> 
> And its value is described as { 3, 1 }.

I believe that's how it was defined in previous versions. Now it's defined (see 
B.3.1) as

    uint16 ProtocolVersion;

But this notation (a type alias/typedef) isn't defined in the presentation 
language and isn't, to the best of my knowledge, used anywhere else.

-- 
Stephen Checkoway



_______________________________________________
TLS mailing list
TLS@ietf.org
https://www.ietf.org/mailman/listinfo/tls

Reply via email to