- added verify functionality

This commit is contained in:
Jan Hutter
2005-11-17 12:50:54 +00:00
parent 8b3bc23b1c
commit 2dbc31682c
2 changed files with 15 additions and 8 deletions
+13 -8
View File
@@ -540,9 +540,19 @@ static status_t parse_header (private_message_t *this)
status = this->parser->parse_payload(this->parser,HEADER,(payload_t **) &ike_header); status = this->parser->parse_payload(this->parser,HEADER,(payload_t **) &ike_header);
if (status != SUCCESS) if (status != SUCCESS)
{ {
this->logger->log(this->logger, ERROR, "Header could not be parsed");
return status; return status;
} }
/* verify payload */
status = ike_header->payload_interface.verify(&(ike_header->payload_interface));
if (status != SUCCESS)
{
this->logger->log(this->logger, ERROR, "Header could not be verified");
return status;
}
if (this->ike_sa_id != NULL) if (this->ike_sa_id != NULL)
{ {
this->ike_sa_id->destroy(this->ike_sa_id); this->ike_sa_id->destroy(this->ike_sa_id);
@@ -552,18 +562,13 @@ static status_t parse_header (private_message_t *this)
this->ike_sa_id = ike_sa_id_create(ike_header->get_initiator_spi(ike_header),ike_header->get_responder_spi(ike_header),this->original_initiator); this->ike_sa_id = ike_sa_id_create(ike_header->get_initiator_spi(ike_header),ike_header->get_responder_spi(ike_header),this->original_initiator);
if (this->ike_sa_id == NULL) if (this->ike_sa_id == NULL)
{ {
this->logger->log(this->logger, ERROR, "Could not creaee ike_sa_id object");
ike_header->destroy(ike_header); ike_header->destroy(ike_header);
return OUT_OF_RES; return OUT_OF_RES;
} }
this->exchange_type = ike_header->get_exchange_type(ike_header); this->exchange_type = ike_header->get_exchange_type(ike_header);
this->message_id = ike_header->get_message_id(ike_header); this->message_id = ike_header->get_message_id(ike_header);
this->is_request = (!(ike_header->get_response_flag(ike_header))); this->is_request = (!(ike_header->get_response_flag(ike_header)));
if ((ike_header->get_initiator_spi(ike_header) == 0) && (ike_header->get_responder_spi(ike_header) != 0))
{
/* initiator spi not set */
ike_header->destroy(ike_header);
return PARSE_ERROR;
}
this->major_version = ike_header->get_maj_version(ike_header); this->major_version = ike_header->get_maj_version(ike_header);
this->minor_version = ike_header->get_min_version(ike_header); this->minor_version = ike_header->get_min_version(ike_header);
this->first_payload = ike_header->payload_interface.get_next_type(&(ike_header->payload_interface)); this->first_payload = ike_header->payload_interface.get_next_type(&(ike_header->payload_interface));
@@ -620,11 +625,11 @@ static status_t parse_body (private_message_t *this)
current_payload_type = current_payload->get_next_type(current_payload); current_payload_type = current_payload->get_next_type(current_payload);
// status = current_payload->verify(current_payload); status = current_payload->verify(current_payload);
if (status != SUCCESS) if (status != SUCCESS)
{ {
this->logger->log(this->logger, ERROR, "Payload type %s could not be verified",mapping_find(payload_type_m,current_payload_type)); this->logger->log(this->logger, ERROR, "Payload type %s could not be verified",mapping_find(payload_type_m,current_payload_type));
status = PARSE_ERROR; status = VERIFY_ERROR;
break; break;
} }
+2
View File
@@ -191,6 +191,7 @@ struct message_s {
* - SUCCESS if header could be parsed * - SUCCESS if header could be parsed
* - OUT_OF_RES if out of ressources * - OUT_OF_RES if out of ressources
* - PARSE_ERROR if corrupted/invalid data found * - PARSE_ERROR if corrupted/invalid data found
* - FAILED if consistence check of header failed
*/ */
status_t (*parse_header) (message_t *this); status_t (*parse_header) (message_t *this);
@@ -204,6 +205,7 @@ struct message_s {
* - OUT_OF_RES if out of ressources * - OUT_OF_RES if out of ressources
* - FAILED if message type is not suppported! * - FAILED if message type is not suppported!
* - PARSE_ERROR if corrupted/invalid data found * - PARSE_ERROR if corrupted/invalid data found
* - VERIFY_ERROR if verification of some payload failed
*/ */
status_t (*parse_body) (message_t *this); status_t (*parse_body) (message_t *this);