El TLS 1.1 (RFC 4346), la sección para el Mensaje de intercambio de claves del servidor (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
Pero, a continuación en la misma sección para la estructura del mensaje, se proporciona la siguiente estructura:
struct {
select (KeyExchangeAlgorithm) {
case diffie_hellman:
ServerDHParams params;
Signature signed_params;
case rsa:
ServerRSAParams params;
Signature signed_params;
};
} ServerKeyExchange;
¿En qué condición se enviarán los ServerRSAParams? ¿Por qué es necesario? En la especificación TLS 1.2 (RFC 5246), encuentro que la estructura ServerKeyExchange no indica ningún parámetro para enviar para RSA. Fragmento de RFC 5246 a continuación:
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;