}
static int SSLv3ParseHandshakeType(SSLState *ssl_state, uint8_t *input,
- uint32_t input_len)
+ uint32_t input_len, uint8_t direction)
{
void *ptmp;
uint8_t *initial_input = input;
break;
case SSLV3_HS_CERTIFICATE:
+ /* For now, only decode the server certificate */
+ if (direction == 0) {
+ SCLogDebug("Incorrect SSL Record type sent in the toserver "
+ "direction!");
+ break;
+ }
if (ssl_state->curr_connp->trec == NULL) {
ssl_state->curr_connp->trec_len =
2 * ssl_state->curr_connp->record_length +
}
static int SSLv3ParseHandshakeProtocol(SSLState *ssl_state, uint8_t *input,
- uint32_t input_len)
+ uint32_t input_len, uint8_t direction)
{
uint8_t *initial_input = input;
int retval;
/* fall through */
}
- retval = SSLv3ParseHandshakeType(ssl_state, input, input_len);
+ retval = SSLv3ParseHandshakeType(ssl_state, input, input_len, direction);
if (retval < 0) {
return retval;
}
return -1;
}
- retval = SSLv3ParseHandshakeProtocol(ssl_state, input + parsed, input_len);
+ retval = SSLv3ParseHandshakeProtocol(ssl_state, input + parsed,
+ input_len, direction);
if (retval < 0) {
SSLSetEvent(ssl_state,
TLS_DECODER_EVENT_INVALID_HANDSHAKE_MESSAGE);