We might consider making the SSL object remember the established session to make things slightly easier, but fundamentally TLS 1.3 requires one use the callback rather than assume there is one SSL_SESSION and it is ready when the handshake completes. We do this due to False Start, but we also grab the session out of SSL_get_session in some codepaths. (In TLS 1.3, NewSessionTicket is a post-handshake message.)
Most of this weirdness comes from the 1.2 case because we do the cert verify externally.
Comment 1 by bugdroid1@chromium.org
, Jul 27 2016