As stated int he question, is compression methods list in the client_hello in TLS 1.2 a mandatory field (it is clear that it is mandatory in session_resumption, but not clear to me whether it is mandatory in the new session case)?

Reference to the standard TLS 1.2, RFC 6246, chapter (formatted):


This is a list of the compression methods supported by the client, sorted by client preference. If the session_id field is not empty (implying a session resumption request), it MUST include the compression_method from that session. This vector MUST contain, and all implementations MUST support, CompressionMethod.null. Thus, a client and server will always be able to agree on a compression method.


1 Answer 1


Well, it is specified in the ClientHello struct here, and the description reads:

The ClientHello includes a list of compression algorithms supported by the client, ordered according to the client's preference.

And since the client hello is the first message that needs to be send to the server, yes, new sessions should contain this struct, even if the internal value just points to the zero-compression.

  • $\begingroup$ And after compression-based attacks like CRIME, many checklists prohibit using anything but 'null'. $\endgroup$ Aug 13, 2017 at 6:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.