9ba4ef39bb7472784da4ec8167f915db58bbefde
[strongswan.git] / src / charon / testing / connection_test.c
1 /**
2 * @file connection_test.c
3 *
4 * @brief Tests for the connection_t class.
5 *
6 */
7
8 /*
9 * Copyright (C) 2005 Jan Hutter, Martin Willi
10 * Hochschule fuer Technik Rapperswil
11 *
12 * This program is free software; you can redistribute it and/or modify it
13 * under the terms of the GNU General Public License as published by the
14 * Free Software Foundation; either version 2 of the License, or (at your
15 * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
16 *
17 * This program is distributed in the hope that it will be useful, but
18 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
19 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
20 * for more details.
21 */
22
23 #include "connection_test.h"
24
25 #include <config/connections/connection.h>
26 #include <crypto/prfs/prf.h>
27
28
29 /**
30 * Described in header.
31 */
32 void test_connection(protected_tester_t *tester)
33 {
34 host_t *alice = host_create(AF_INET, "192.168.0.1", 500);
35 host_t *bob = host_create(AF_INET, "192.168.0.2", 500);
36 connection_t *connection = connection_create("alice-bob", TRUE, alice, bob, RSA_DIGITAL_SIGNATURE);
37 proposal_t *prop1, *prop2, *prop3, *prop4;
38 linked_list_t *list;
39
40 prop1 = proposal_create(PROTO_IKE);
41 prop1->add_algorithm(prop1, ENCRYPTION_ALGORITHM, ENCR_AES_CBC, 20);
42 prop1->add_algorithm(prop1, INTEGRITY_ALGORITHM, AUTH_HMAC_SHA1_96, 20);
43 prop1->add_algorithm(prop1, PSEUDO_RANDOM_FUNCTION, PRF_HMAC_SHA1, 20);
44 prop1->add_algorithm(prop1, DIFFIE_HELLMAN_GROUP, MODP_2048_BIT, 0);
45
46 prop2 = proposal_create(PROTO_IKE);
47 prop2->add_algorithm(prop2, ENCRYPTION_ALGORITHM, ENCR_AES_CBC, 20);
48 prop2->add_algorithm(prop2, INTEGRITY_ALGORITHM, AUTH_HMAC_SHA1_96, 20);
49 prop2->add_algorithm(prop2, PSEUDO_RANDOM_FUNCTION, PRF_HMAC_MD5, 20);
50 prop2->add_algorithm(prop2, DIFFIE_HELLMAN_GROUP, MODP_1024_BIT, 0);
51
52 prop3 = proposal_create(PROTO_IKE);
53 prop3->add_algorithm(prop3, ENCRYPTION_ALGORITHM, ENCR_DES, 20);
54 prop3->add_algorithm(prop3, INTEGRITY_ALGORITHM, AUTH_HMAC_SHA1_96, 20);
55 prop3->add_algorithm(prop3, PSEUDO_RANDOM_FUNCTION, PRF_HMAC_MD5, 20);
56 prop3->add_algorithm(prop3, DIFFIE_HELLMAN_GROUP, MODP_768_BIT, 0);
57
58 prop4 = proposal_create(PROTO_IKE);
59 prop4->add_algorithm(prop4, ENCRYPTION_ALGORITHM, ENCR_3DES, 20);
60 prop4->add_algorithm(prop4, INTEGRITY_ALGORITHM, AUTH_HMAC_SHA1_96, 20);
61 prop4->add_algorithm(prop4, PSEUDO_RANDOM_FUNCTION, PRF_HMAC_TIGER, 20);
62 prop4->add_algorithm(prop4, DIFFIE_HELLMAN_GROUP, MODP_768_BIT, 0);
63
64 connection->add_proposal(connection, prop1);
65 connection->add_proposal(connection, prop2);
66 connection->add_proposal(connection, prop3);
67 connection->add_proposal(connection, prop4);
68
69 list = connection->get_proposals(connection);
70
71 tester->assert_true(tester,(list->get_count(list) == 4), "proposal count check ");
72
73
74 /* going to check proposals */
75 /* TODO test?*/
76
77 list->destroy(list);
78
79 connection->destroy(connection);
80 }