- works with new proposal code

- still some(!) memleaks
This commit is contained in:
Martin Willi
2006-02-09 10:16:20 +00:00
parent c06dbbabd1
commit 93df94acad
16 changed files with 205 additions and 53 deletions
+13 -13
View File
@@ -35,6 +35,8 @@ void test_child_proposal(protected_tester_t *tester)
{
child_proposal_t *proposal1, *proposal2, *proposal3;
iterator_t *iterator;
algorithm_t *algo;
bool result;
proposal1 = child_proposal_create(1);
proposal1->add_algorithm(proposal1, ESP, ENCRYPTION_ALGORITHM, ENCR_3DES, 0);
@@ -50,29 +52,28 @@ void test_child_proposal(protected_tester_t *tester)
proposal2->add_algorithm(proposal2, ESP, ENCRYPTION_ALGORITHM, ENCR_3IDEA, 0);
proposal2->add_algorithm(proposal2, ESP, ENCRYPTION_ALGORITHM, ENCR_AES_CBC, 16);
proposal2->add_algorithm(proposal2, ESP, INTEGRITY_ALGORITHM, AUTH_HMAC_MD5_96, 20);
//proposal1->add_algorithm(proposal2, AH, DIFFIE_HELLMAN_GROUP, MODP_1024_BIT, 0);
proposal1->add_algorithm(proposal2, AH, DIFFIE_HELLMAN_GROUP, MODP_1024_BIT, 0);
/* ah and esp prop */
proposal3 = proposal1->select(proposal1, proposal2);
tester->assert_false(tester, proposal3 == NULL, "proposal select");
if (proposal3)
{
iterator = proposal3->create_algorithm_iterator(proposal3, ESP, ENCRYPTION_ALGORITHM);
tester->assert_false(tester, iterator == NULL, "encryption algo select");
while(iterator->has_next(iterator))
{
algorithm_t *algo;
iterator->current(iterator, (void**)&algo);
tester->assert_true(tester, algo->algorithm == ENCR_AES_CBC, "encryption algo");
tester->assert_true(tester, algo->key_size == 16, "encryption keylen");
}
iterator->destroy(iterator);
result = proposal3->get_algorithm(proposal3, ESP, ENCRYPTION_ALGORITHM, &algo);
tester->assert_true(tester, result, "encryption algo select");
tester->assert_true(tester, algo->algorithm == ENCR_AES_CBC, "encryption algo");
tester->assert_true(tester, algo->key_size == 16, "encryption keylen");
result = proposal3->get_algorithm(proposal3, ESP, INTEGRITY_ALGORITHM, &algo);
tester->assert_true(tester, result, "integrity algo select");
tester->assert_true(tester, algo->algorithm == AUTH_HMAC_MD5_96, "integrity algo");
tester->assert_true(tester, algo->key_size == 20, "integrity keylen");
iterator = proposal3->create_algorithm_iterator(proposal3, ESP, INTEGRITY_ALGORITHM);
tester->assert_false(tester, iterator == NULL, "integrity algo select");
while(iterator->has_next(iterator))
{
algorithm_t *algo;
iterator->current(iterator, (void**)&algo);
tester->assert_true(tester, algo->algorithm == AUTH_HMAC_MD5_96, "integrity algo");
tester->assert_true(tester, algo->key_size == 20, "integrity keylen");
@@ -83,7 +84,6 @@ void test_child_proposal(protected_tester_t *tester)
tester->assert_false(tester, iterator == NULL, "dh group algo select");
while(iterator->has_next(iterator))
{
algorithm_t *algo;
iterator->current(iterator, (void**)&algo);
tester->assert_true(tester, algo->algorithm == MODP_1024_BIT, "dh group algo");
tester->assert_true(tester, algo->key_size == 0, "dh gorup keylen");
+1 -1
View File
@@ -680,7 +680,7 @@ void test_generator_with_sa_payload(protected_tester_t *tester)
list->insert_last(list, (void*)child_proposal1);
list->insert_last(list, (void*)child_proposal2);
sa_payload = sa_payload_create_from_child_proposals(list);
sa_payload = sa_payload_create_from_child_proposal_list(list);
tester->assert_true(tester,(sa_payload != NULL), "sa_payload create check");
generator->generate_payload(generator,(payload_t *)sa_payload);
+47 -4
View File
@@ -38,7 +38,8 @@ void test_sa_config(protected_tester_t *tester)
sa_config_t *sa_config;
traffic_selector_t *ts_policy[3], *ts_request[4], *ts_reference[3], **ts_result;
child_proposal_t *proposal1, *proposal2, *proposal3, *proposal_sel;
linked_list_t *list;
linked_list_t *proposals_list;
iterator_t *iterator;
size_t count;
logger_t *logger;
ts_payload_t *ts_payload;
@@ -78,12 +79,54 @@ void test_sa_config(protected_tester_t *tester)
sa_config->add_proposal(sa_config, proposal3);
list = sa_config->get_proposals(sa_config);
tester->assert_true(tester, (list->get_count(list) == 3), "proposal count");
proposals_list = sa_config->get_proposals(sa_config);
tester->assert_true(tester, (proposals_list->get_count(proposals_list) == 3), "proposal count");
//proposal_sel = sa_config->select_proposal(sa_config, list);
proposals_list = linked_list_create();
proposal1 = child_proposal_create(1);
proposal1->add_algorithm(proposal1, ESP, ENCRYPTION_ALGORITHM, ENCR_AES_CBC, 32);
proposal2 = child_proposal_create(2);
proposal2->add_algorithm(proposal2, ESP, ENCRYPTION_ALGORITHM, ENCR_AES_CBC, 16);
proposal2->add_algorithm(proposal2, ESP, ENCRYPTION_ALGORITHM, ENCR_3DES, 16);
proposal2->add_algorithm(proposal2, ESP, ENCRYPTION_ALGORITHM, ENCR_BLOWFISH, 0);
proposal2->add_algorithm(proposal2, AH, INTEGRITY_ALGORITHM, AUTH_HMAC_SHA1_96, 20);
proposal2->add_algorithm(proposal2, AH, INTEGRITY_ALGORITHM, AUTH_HMAC_MD5_96, 20);
proposals_list->insert_last(proposals_list, proposal1);
proposals_list->insert_last(proposals_list, proposal2);
proposal_sel = sa_config->select_proposal(sa_config, proposals_list);
tester->assert_false(tester, proposal_sel == NULL, "proposal select");
/* check ESP encryption algo */
iterator = proposal_sel->create_algorithm_iterator(proposal_sel, ESP, ENCRYPTION_ALGORITHM);
tester->assert_false(tester, iterator == NULL, "algorithm select ESP");
while (iterator->has_next(iterator))
{
algorithm_t *algo;
iterator->current(iterator, (void**)&algo);
tester->assert_true(tester, algo->algorithm == ENCR_3DES, "ESP encryption algo");
tester->assert_true(tester, algo->key_size == 16, "ESP encryption keysize");
}
iterator->destroy(iterator);
iterator = proposal_sel->create_algorithm_iterator(proposal_sel, AH, INTEGRITY_ALGORITHM);
/* check AH integrity algo */
tester->assert_false(tester, iterator == NULL, "algorithm select AH");
while (iterator->has_next(iterator))
{
algorithm_t *algo;
iterator->current(iterator, (void**)&algo);
tester->assert_true(tester, algo->algorithm == AUTH_HMAC_MD5_96, "ESP encryption algo");
tester->assert_true(tester, algo->key_size == 20, "ESP encryption keysize");
}
iterator->destroy(iterator);
proposal_sel->destroy(proposal_sel);
/* cleanup */
proposal1->destroy(proposal1);
proposal1->destroy(proposal2);
proposals_list->destroy(proposals_list);
/*
* test traffic selection getting and matching