test for proposal substructure written
This commit is contained in:
parent
67978e0b4f
commit
800b308c2a
2 changed files with 144 additions and 0 deletions
|
@ -33,6 +33,7 @@
|
|||
#include "../payloads/ike_header.h"
|
||||
#include "../payloads/transform_attribute.h"
|
||||
#include "../payloads/transform_substructure.h"
|
||||
#include "../payloads/proposal_substructure.h"
|
||||
|
||||
/*
|
||||
* Described in Header
|
||||
|
@ -308,3 +309,138 @@ void test_generator_with_transform_substructure(tester_t *tester)
|
|||
|
||||
global_logger_manager->destroy_logger(global_logger_manager,logger);
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
* Described in header
|
||||
*/
|
||||
void test_generator_with_proposal_substructure(tester_t *tester)
|
||||
{
|
||||
generator_t *generator;
|
||||
transform_attribute_t *attribute1, *attribute2, *attribute3;
|
||||
transform_substructure_t *transform1, *transform2;
|
||||
proposal_substructure_t *proposal;
|
||||
chunk_t data;
|
||||
status_t status;
|
||||
chunk_t generated_data;
|
||||
logger_t *logger;
|
||||
|
||||
logger = global_logger_manager->create_logger(global_logger_manager,TESTER,"transform substr.");
|
||||
|
||||
/* create generator */
|
||||
generator = generator_create();
|
||||
tester->assert_true(tester,(generator != NULL), "generator create check");
|
||||
|
||||
/* create attribute 1 */
|
||||
attribute1 = transform_attribute_create();
|
||||
char *stringval = "abcd";
|
||||
data.ptr = (void *) stringval;
|
||||
data.len = 4;
|
||||
status = attribute1->set_value(attribute1,data);
|
||||
tester->assert_true(tester,(status == SUCCESS),"set_value call check");
|
||||
status = attribute1->set_attribute_type(attribute1,0);
|
||||
tester->assert_true(tester,(status == SUCCESS),"set_attribute_type call check");
|
||||
logger->log(logger,CONTROL,"attribute1 created");
|
||||
|
||||
/* create attribute 2 */
|
||||
attribute2 = transform_attribute_create();
|
||||
stringval = "efgh";
|
||||
data.ptr = (void *) stringval;
|
||||
data.len = 4;
|
||||
status = attribute2->set_value(attribute2,data);
|
||||
tester->assert_true(tester,(status == SUCCESS),"set_value call check");
|
||||
status = attribute2->set_attribute_type(attribute2,0);
|
||||
tester->assert_true(tester,(status == SUCCESS),"set_attribute_type call check");
|
||||
logger->log(logger,CONTROL,"attribute2 created");
|
||||
|
||||
/* create attribute 3 */
|
||||
attribute3 = transform_attribute_create();
|
||||
stringval = "ijkl";
|
||||
data.ptr = (void *) stringval;
|
||||
data.len = 4;
|
||||
status = attribute3->set_value(attribute3,data);
|
||||
tester->assert_true(tester,(status == SUCCESS),"set_value call check");
|
||||
status = attribute3->set_attribute_type(attribute3,0);
|
||||
tester->assert_true(tester,(status == SUCCESS),"set_attribute_type call check");
|
||||
logger->log(logger,CONTROL,"attribute3 created");
|
||||
|
||||
/* create transform 1*/
|
||||
transform1 = transform_substructure_create();
|
||||
tester->assert_true(tester,(transform1 != NULL), "transform create check");
|
||||
status = transform1->add_transform_attribute(transform1,attribute1);
|
||||
tester->assert_true(tester,(status == SUCCESS),"add_transform_attribute call check");
|
||||
status = transform1->add_transform_attribute(transform1,attribute2);
|
||||
tester->assert_true(tester,(status == SUCCESS),"add_transform_attribute call check");
|
||||
status = transform1->set_transform_type(transform1,5); /* hex 5 */
|
||||
tester->assert_true(tester,(status == SUCCESS),"set_transform_type call check");
|
||||
status = transform1->set_transform_id(transform1,65000); /* hex FDE8 */
|
||||
tester->assert_true(tester,(status == SUCCESS),"set_transform_id call check");
|
||||
|
||||
/* create transform 2*/
|
||||
transform2 = transform_substructure_create();
|
||||
tester->assert_true(tester,(transform2 != NULL), "transform create check");
|
||||
status = transform2->add_transform_attribute(transform2,attribute3);
|
||||
tester->assert_true(tester,(status == SUCCESS),"add_transform_attribute call check");
|
||||
status = transform2->set_transform_type(transform2,3); /* hex 3 */
|
||||
tester->assert_true(tester,(status == SUCCESS),"set_transform_type call check");
|
||||
status = transform2->set_transform_id(transform2,4); /* hex 4 */
|
||||
tester->assert_true(tester,(status == SUCCESS),"set_transform_id call check");
|
||||
|
||||
logger->log(logger,CONTROL,"transforms created");
|
||||
|
||||
proposal = proposal_substructure_create();
|
||||
tester->assert_true(tester,(proposal != NULL), "proposal create check");
|
||||
|
||||
stringval = "ABCDEFGH";
|
||||
data.ptr = (void *) stringval;
|
||||
data.len = 8;
|
||||
|
||||
status = proposal->add_transform_substructure(proposal,transform1);
|
||||
tester->assert_true(tester,(status == SUCCESS),"add_transform_substructure call check");
|
||||
status = proposal->add_transform_substructure(proposal,transform2);
|
||||
tester->assert_true(tester,(status == SUCCESS),"add_transform_substructure call check");
|
||||
status = proposal->set_spi(proposal,data);
|
||||
tester->assert_true(tester,(status == SUCCESS),"set_spi call check");
|
||||
status = proposal->set_proposal_number(proposal,7);
|
||||
tester->assert_true(tester,(status == SUCCESS),"set_proposal_number call check");
|
||||
status = proposal->set_protocol_id(proposal,4);
|
||||
tester->assert_true(tester,(status == SUCCESS),"set_protocol_id call check");
|
||||
|
||||
|
||||
status = generator->generate_payload(generator,(payload_t *)proposal);
|
||||
tester->assert_true(tester,(status == SUCCESS),"generate_payload call check");
|
||||
tester->assert_true(tester,(generator->write_to_chunk(generator,&generated_data) == SUCCESS),"write_to_chunk call check");
|
||||
logger->log_chunk(logger,RAW,"generated transform",&generated_data);
|
||||
|
||||
u_int8_t expected_generation[] = {
|
||||
/* proposal header */
|
||||
0x00,0x00,0x00,0x38,
|
||||
0x07,0x04,0x08,0x02,
|
||||
/* SPI */
|
||||
0x41,0x42,0x43,0x44,
|
||||
0x45,0x46,0x47,0x48,
|
||||
/* first transform */
|
||||
0x03,0x00,0x00,0x18,
|
||||
0x05,0x00,0xFD,0xE8,
|
||||
/* first transform attributes */
|
||||
0x00,0x00,0x00,0x04,
|
||||
0x61,0x62,0x63,0x64,
|
||||
0x00,0x00,0x00,0x04,
|
||||
0x65,0x66,0x67,0x68,
|
||||
/* second transform */
|
||||
0x00,0x00,0x00,0x10,
|
||||
0x03,0x00,0x00,0x04,
|
||||
/* second transform attributes */
|
||||
0x00,0x00,0x00,0x04,
|
||||
0x69,0x6A,0x6B,0x6C
|
||||
};
|
||||
tester->assert_true(tester,(memcmp(expected_generation,generated_data.ptr,sizeof(expected_generation)) == 0), "compare generated data");
|
||||
|
||||
allocator_free_chunk(generated_data);
|
||||
tester->assert_true(tester,(proposal->destroy(proposal) == SUCCESS), "proposal destroy call check");
|
||||
tester->assert_true(tester,(generator->destroy(generator) == SUCCESS), "generator destroy call check");
|
||||
|
||||
|
||||
global_logger_manager->destroy_logger(global_logger_manager,logger);
|
||||
}
|
||||
|
||||
|
|
|
@ -50,5 +50,13 @@ void test_generator_with_transform_attribute(tester_t *tester);
|
|||
*/
|
||||
void test_generator_with_transform_substructure(tester_t *tester);
|
||||
|
||||
/**
|
||||
* @brief Test function used to test the generator with proposal substructure payload
|
||||
*
|
||||
*
|
||||
* @param tester associated tester object
|
||||
*/
|
||||
void test_generator_with_proposal_substructure(tester_t *tester);
|
||||
|
||||
|
||||
#endif /*GENERATOR_TEST_H_*/
|
||||
|
|
Loading…
Reference in a new issue