• M
    Fix SSL_get_servername() and SNI behaviour · e9cd6e76
    Matt Caswell 提交于
    The SNI behaviour for TLSv1.3 and the behaviour of SSL_get_servername()
    was not quite right, and not entirely consistent with the RFC.
    
    The TLSv1.3 RFC explicitly says that SNI is negotiated on each handshake
    and the server is not required to associate it with the session. This was
    not quite reflected in the code so we fix that.
    
    Additionally there were some additional checks around early_data checking
    that the SNI between the original session and this session were
    consistent. In fact the RFC does not require any such checks, so they are
    removed.
    
    Finally the behaviour of SSL_get_servername() was not quite right. The
    behaviour was not consistent between resumption and normal handshakes,
    and also not quite consistent with historical behaviour. We clarify the
    behaviour in various scenarios and also attempt to make it match historical
    behaviour as closely as possible.
    
    Fixes #8822
    Reviewed-by: NBen Kaduk <kaduk@mit.edu>
    (Merged from https://github.com/openssl/openssl/pull/10018)
    
    (cherry picked from commit 7955c1f16e72dc944677fd1dbf4b1300e75f1c84)
    e9cd6e76
extensions.c 59.4 KB