TLS (non anonimo) L'handshake richiede al server di firmare il messaggio ServerKeyExchange in modo che il client possa autenticare il server utilizzando la chiave pubblica presente nel certificato del server.
Tuttavia, TLS Handshake con Autenticazione client richiede che il client cancelli tutti i precedenti messaggi di handshake, firma digitalmente & invia questa firma nel messaggio CertificateVerify. Il server verifica quindi questa firma utilizzando la chiave pubblica presente nel certificato client.
È comprensibile che ClientKeyExchange & CertificateVerify sono 2 messaggi separati perché l'Autenticazione client è facoltativa. Ma c'è qualche ragione specifica per avere il Cliente a firmare tutti i messaggi precedenti invece di firmare semplicemente ClientKeyExchange (come fa il Server) e inviare la firma in CertificateVerify?