RFC 2246 defines this message as: Structure of this message: struct { ProtocolVersion client_version; opaque random[46]; } PreMasterSecret; client_version The latest (newest) version supported by the client. This is used to detect version roll-back attacks. Our code isn't properly outputting the debug information for this case. For example, our client may request TLSv1.2, but the server might select TLSv1. The client output will print: *** ClientKeyExchange, RSA PreMasterSecret, TLSv1> instead of: *** ClientKeyExchange, RSA PreMasterSecret, TLSv1.2> We can still see the right value in the SESSION KEYGEN: PreMaster Secret: 0000: 03 01 However, if you don't know what you're looking at, you will get the wrong impression.