3. Autenticazione del client
Questo documento definisce un meccanismo di autenticazione del client che prende il nome dal tipo di certificato client coinvolto: ECDSA_sign. Il meccanismo ECDSA_sign è utilizzabile con uno qualsiasi degli algoritmi di scambio chiavi ECC non anonimi descritti nella Sezione 2, nonché con altri algoritmi di scambio chiavi non anonimi (non ECC) definiti in TLS.
Si noti che anche i certificati client con chiavi pubbliche EdDSA utilizzano questo meccanismo.
Un server può richiedere l'autenticazione del client basata su ECC includendo questo tipo di certificato nel suo messaggio CertificateRequest. Un client deve verificare se possiede un certificato adatto al metodo suggerito dal server ed è disposto a utilizzarlo per l'autenticazione.
Se queste condizioni non sono soddisfatte, il client DOVREBBE (SHOULD) inviare un messaggio Certificate client non contenente certificati. In questo caso, il ClientKeyExchange DEVE (MUST) essere inviato come descritto nella Sezione 2 e il CertificateVerify NON DEVE (MUST NOT) essere inviato. Se il server richiede l'autenticazione del client, può rispondere con un avviso di fallimento fatale dell'handshake.
Se il client possiede un certificato adatto ed è disposto a utilizzarlo per l'autenticazione, deve inviare tale certificato nel messaggio Certificate del client (come da Sezione 5.6) e dimostrare il possesso della chiave privata corrispondente alla chiave certificata. Il processo di determinazione di un certificato adatto e di prova del possesso è diverso per ciascun meccanismo di autenticazione ed è descritto di seguito.
NOTA: È consentito a un server richiedere (e al client di inviare) un certificato client di tipo diverso rispetto al certificato del server.
3.1. ECDSA_sign
Per utilizzare questo meccanismo di autenticazione, il client DEVE (MUST) possedere un certificato contenente una chiave pubblica in grado di eseguire ECDSA o EdDSA.
Il client dimostra il possesso della chiave privata corrispondente alla chiave certificata includendo una firma nel messaggio CertificateVerify come descritto nella Sezione 5.8.