0

I am reading RFC5077, and bumped into following diagram:

        ClientHello
        (empty SessionTicket extension)-------->
                                                         ServerHello
                                     (empty SessionTicket extension)
                                                        Certificate*
                                                  ServerKeyExchange*
                                                 CertificateRequest*
                                      <--------      ServerHelloDone
         Certificate*
         ClientKeyExchange
         CertificateVerify*
         [ChangeCipherSpec]
         Finished                     -------->
                                                    NewSessionTicket
                                                  [ChangeCipherSpec]
                                      <--------             Finished
         Application Data             <------->     Application Data

I guess Certificate* means there can be one or more Certificate, and [ChangeCipherSpec] means it is optional. But I can't find accurate definitions in this document or Internet. Where can I find explanations of these symbols for RFCs?

Nan Xiao
  • 105
  • 7

1 Answers1

0

Your interpretation would be consistent with common (E)BNF and regexp notation, but actually

* message is sent once or not at all, depending

[ChangeCipherSpec] is a different record-level type;
technically it is not a 'handshake' message even though 
it is a critical element of the handshake protocol.

RFC5077 (and 4507) is a modification to RFC4346 for TLS1.1 and RFC2246 for TLS1.0; it also applies to RFC5246 for TLS1.2 issued subsequently. (It does not apply to TLS1.3 in RFC8446; 1.3 replaces both the old form of session resumption and 5077-type tickets with a new temporary-PSK method of reusing session parameters, and it reuses the NewTicket message code for data quite different than 5077.) The meaning for * is stated just after Fig. 1 in RFC5246 on page 36, RFC4346 on page 33, or RFC2246 on page 31. This is not a standard for other protocols or RFCs in general. Even RFC8446 for TLS1.3 changes it substantially.

dave_thompson_085
  • 3,262
  • 1
  • 16
  • 16