In TLS 1.2, the cipher suite lists the algorithms for everything (key exchange, signature, cipher/MAC). So by choosing a suite, all the algorithms will have been negotiated. And I can see them from the Security tab in Chrome DevTools, such as:
TLS 1.2, ECDHE_RSA with P-256, and AES_128_GCM or
TLS 1.2, ECDHE_ECDSA with X25519, and CHACHA20_POLY1305
In TLS 1.3, the key exchange and signature algorithms are no longer included in the cipher suite. So I'm wondering how they are negotiated. Are they negotiated by a separate method? And is there a way I can find out which algorithms are chosen? In Chrome DevTools, I see results like:
TLS 1.3, X25519, and AES_128_GCM or
TLS 1.3, X25519, and CHACHA20_POLY1305
Which only tells me Curve25519 is picked for the elliptic curve. It seems the following combinations of key exchange and signature algorithms are all possible: FFDHE_ECDSA, FFDHE_EdDSA, ECDHE_RSA, ECDHE_ECDSA, ECDHE_EdDSA
So how do I tell?