TLS 1.1 (RFC 4346), la sezione per Server Key Exchange Message (7.4.3) dice
It is not legal to send the server key exchange message for the
following key exchange methods:
RSA
DH_DSS
DH_RSA
Ma, sotto nella stessa sezione per la struttura del messaggio, fornisce la struttura come segue:
struct {
select (KeyExchangeAlgorithm) {
case diffie_hellman:
ServerDHParams params;
Signature signed_params;
case rsa:
ServerRSAParams params;
Signature signed_params;
};
} ServerKeyExchange;
In quale condizione verranno inviati i ServerRSAParam? Perché è necessario? Nella specifica TLS 1.2 (RFC 5246), trovo che la struttura ServerKeyExchange non indica alcun parametro da inviare per RSA. Snippet da RFC 5246 in basso:
struct {
select (KeyExchangeAlgorithm) {
case dh_anon:
ServerDHParams params;
case dhe_dss:
case dhe_rsa:
ServerDHParams params;
digitally-signed struct {
opaque client_random[32];
opaque server_random[32];
ServerDHParams params;
} signed_params;
case rsa:
case dh_dss:
case dh_rsa:
struct {} ;
/* message is omitted for rsa, dh_dss, and dh_rsa */
/* may be extended, e.g., for ECDH -- see [TLSECC] */
};
} ServerKeyExchange;