aboutsummaryrefslogtreecommitdiffstats
path: root/Source/charon/testcases
diff options
context:
space:
mode:
Diffstat (limited to 'Source/charon/testcases')
-rw-r--r--Source/charon/testcases/child_proposal_test.c26
-rw-r--r--Source/charon/testcases/generator_test.c2
-rw-r--r--Source/charon/testcases/sa_config_test.c51
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