diff options
Diffstat (limited to 'Source/charon/testcases')
-rw-r--r-- | Source/charon/testcases/child_proposal_test.c | 26 | ||||
-rw-r--r-- | Source/charon/testcases/generator_test.c | 2 | ||||
-rw-r--r-- | Source/charon/testcases/sa_config_test.c | 51 |
3 files changed, 61 insertions, 18 deletions
diff --git a/Source/charon/testcases/child_proposal_test.c b/Source/charon/testcases/child_proposal_test.c index e1ca7de52..f0944df8d 100644 --- a/Source/charon/testcases/child_proposal_test.c +++ b/Source/charon/testcases/child_proposal_test.c @@ -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"); diff --git a/Source/charon/testcases/generator_test.c b/Source/charon/testcases/generator_test.c index 8da86e75a..c249e82cc 100644 --- a/Source/charon/testcases/generator_test.c +++ b/Source/charon/testcases/generator_test.c @@ -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); diff --git a/Source/charon/testcases/sa_config_test.c b/Source/charon/testcases/sa_config_test.c index aada26ca2..8fe624eb2 100644 --- a/Source/charon/testcases/sa_config_test.c +++ b/Source/charon/testcases/sa_config_test.c @@ -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 |