diff options
Diffstat (limited to 'src/testcurl/https/tls_alert_test.c')
-rw-r--r-- | src/testcurl/https/tls_alert_test.c | 98 |
1 files changed, 15 insertions, 83 deletions
diff --git a/src/testcurl/https/tls_alert_test.c b/src/testcurl/https/tls_alert_test.c index cbb2cf20..75444bc2 100644 --- a/src/testcurl/https/tls_alert_test.c +++ b/src/testcurl/https/tls_alert_test.c | |||
@@ -30,74 +30,10 @@ | |||
30 | #include "gnutls_int.h" | 30 | #include "gnutls_int.h" |
31 | #include "gnutls_datum.h" | 31 | #include "gnutls_datum.h" |
32 | #include "gnutls_record.h" | 32 | #include "gnutls_record.h" |
33 | #include "tls_test_keys.h" | ||
34 | 33 | ||
35 | #define MHD_E_MEM "Error: memory error\n" | 34 | #include "tls_test_common.h" |
36 | #define MHD_E_SERVER_INIT "Error: failed to start server\n" | 35 | extern const char srv_key_pem[]; |
37 | #define MHD_E_FAILED_TO_CONNECT "Error: server connection could not be established\n" | 36 | extern const char srv_self_signed_cert_pem[]; |
38 | |||
39 | const char *ca_cert_file_name = "ca_cert_pem"; | ||
40 | const char *test_file_name = "https_test_file"; | ||
41 | const char test_file_data[] = "Hello World\n"; | ||
42 | |||
43 | struct CBC | ||
44 | { | ||
45 | char *buf; | ||
46 | size_t pos; | ||
47 | size_t size; | ||
48 | }; | ||
49 | |||
50 | /* HTTP access handler call back */ | ||
51 | static int | ||
52 | http_ahc (void *cls, struct MHD_Connection *connection, | ||
53 | const char *url, const char *method, const char *upload_data, | ||
54 | const char *version, unsigned int *upload_data_size, void **ptr) | ||
55 | { | ||
56 | return 0; | ||
57 | } | ||
58 | |||
59 | static int | ||
60 | setup (MHD_gtls_session_t * session, | ||
61 | MHD_gnutls_datum_t * key, | ||
62 | MHD_gnutls_datum_t * cert, MHD_gtls_cert_credentials_t * xcred) | ||
63 | { | ||
64 | int ret; | ||
65 | const char *err_pos; | ||
66 | |||
67 | MHD__gnutls_certificate_allocate_credentials (xcred); | ||
68 | |||
69 | MHD_gtls_set_datum_m (key, srv_key_pem, strlen (srv_key_pem), &malloc); | ||
70 | MHD_gtls_set_datum_m (cert, srv_self_signed_cert_pem, | ||
71 | strlen (srv_self_signed_cert_pem), &malloc); | ||
72 | |||
73 | MHD__gnutls_certificate_set_x509_key_mem (*xcred, cert, key, | ||
74 | GNUTLS_X509_FMT_PEM); | ||
75 | |||
76 | MHD__gnutls_init (session, GNUTLS_CLIENT); | ||
77 | ret = MHD__gnutls_priority_set_direct (*session, "NORMAL", &err_pos); | ||
78 | if (ret < 0) | ||
79 | { | ||
80 | return -1; | ||
81 | } | ||
82 | |||
83 | MHD__gnutls_credentials_set (*session, MHD_GNUTLS_CRD_CERTIFICATE, xcred); | ||
84 | return 0; | ||
85 | } | ||
86 | |||
87 | static int | ||
88 | teardown (MHD_gtls_session_t session, | ||
89 | MHD_gnutls_datum_t * key, | ||
90 | MHD_gnutls_datum_t * cert, MHD_gtls_cert_credentials_t xcred) | ||
91 | { | ||
92 | |||
93 | MHD_gtls_free_datum_m (key, free); | ||
94 | MHD_gtls_free_datum_m (cert, free); | ||
95 | |||
96 | MHD__gnutls_deinit (session); | ||
97 | |||
98 | MHD__gnutls_certificate_free_credentials (xcred); | ||
99 | return 0; | ||
100 | } | ||
101 | 37 | ||
102 | /* | 38 | /* |
103 | * assert server closes connection upon receiving a | 39 | * assert server closes connection upon receiving a |
@@ -114,14 +50,13 @@ test_alert_close_notify (MHD_gtls_session_t session) | |||
114 | sd = socket (AF_INET, SOCK_STREAM, 0); | 50 | sd = socket (AF_INET, SOCK_STREAM, 0); |
115 | if (sd == -1) | 51 | if (sd == -1) |
116 | { | 52 | { |
117 | fprintf(stderr, | 53 | fprintf (stderr, "Failed to create socket: %s\n", strerror (errno)); |
118 | "Failed to create socket: %s\n", | ||
119 | strerror(errno)); | ||
120 | return -1; | 54 | return -1; |
121 | } | 55 | } |
56 | |||
122 | memset (&sa, '\0', sizeof (struct sockaddr_in)); | 57 | memset (&sa, '\0', sizeof (struct sockaddr_in)); |
123 | sa.sin_family = AF_INET; | 58 | sa.sin_family = AF_INET; |
124 | sa.sin_port = htons (42433); | 59 | sa.sin_port = htons (DEAMON_TEST_PORT); |
125 | inet_pton (AF_INET, "127.0.0.1", &sa.sin_addr); | 60 | inet_pton (AF_INET, "127.0.0.1", &sa.sin_addr); |
126 | 61 | ||
127 | MHD__gnutls_transport_set_ptr (session, (MHD_gnutls_transport_ptr_t) sd); | 62 | MHD__gnutls_transport_set_ptr (session, (MHD_gnutls_transport_ptr_t) sd); |
@@ -170,14 +105,12 @@ test_alert_unexpected_message (MHD_gtls_session_t session) | |||
170 | sd = socket (AF_INET, SOCK_STREAM, 0); | 105 | sd = socket (AF_INET, SOCK_STREAM, 0); |
171 | if (sd == -1) | 106 | if (sd == -1) |
172 | { | 107 | { |
173 | fprintf(stderr, | 108 | fprintf (stderr, "Failed to create socket: %s\n", strerror (errno)); |
174 | "Failed to create socket: %s\n", | ||
175 | strerror(errno)); | ||
176 | return -1; | 109 | return -1; |
177 | } | 110 | } |
178 | memset (&sa, '\0', sizeof (struct sockaddr_in)); | 111 | memset (&sa, '\0', sizeof (struct sockaddr_in)); |
179 | sa.sin_family = AF_INET; | 112 | sa.sin_family = AF_INET; |
180 | sa.sin_port = htons (42433); | 113 | sa.sin_port = htons (DEAMON_TEST_PORT); |
181 | inet_pton (AF_INET, "127.0.0.1", &sa.sin_addr); | 114 | inet_pton (AF_INET, "127.0.0.1", &sa.sin_addr); |
182 | 115 | ||
183 | MHD__gnutls_transport_set_ptr (session, | 116 | MHD__gnutls_transport_set_ptr (session, |
@@ -225,8 +158,8 @@ main (int argc, char *const *argv) | |||
225 | MHD_gtls_global_set_log_level (11); | 158 | MHD_gtls_global_set_log_level (11); |
226 | 159 | ||
227 | d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION | MHD_USE_SSL | | 160 | d = MHD_start_daemon (MHD_USE_THREAD_PER_CONNECTION | MHD_USE_SSL | |
228 | MHD_USE_DEBUG, 42433, | 161 | MHD_USE_DEBUG, DEAMON_TEST_PORT, |
229 | NULL, NULL, &http_ahc, NULL, | 162 | NULL, NULL, &http_dummy_ahc, NULL, |
230 | MHD_OPTION_HTTPS_MEM_KEY, srv_key_pem, | 163 | MHD_OPTION_HTTPS_MEM_KEY, srv_key_pem, |
231 | MHD_OPTION_HTTPS_MEM_CERT, srv_self_signed_cert_pem, | 164 | MHD_OPTION_HTTPS_MEM_CERT, srv_self_signed_cert_pem, |
232 | MHD_OPTION_END); | 165 | MHD_OPTION_END); |
@@ -237,16 +170,15 @@ main (int argc, char *const *argv) | |||
237 | return -1; | 170 | return -1; |
238 | } | 171 | } |
239 | 172 | ||
240 | setup (&session, &key, &cert, &xcred); | 173 | setup_session (&session, &key, &cert, &xcred); |
241 | errorCount += test_alert_close_notify (session); | 174 | errorCount += test_alert_close_notify (session); |
242 | teardown (session, &key, &cert, xcred); | 175 | teardown_session (session, &key, &cert, xcred); |
243 | 176 | ||
244 | setup (&session, &key, &cert, &xcred); | 177 | setup_session (&session, &key, &cert, &xcred); |
245 | errorCount += test_alert_unexpected_message (session); | 178 | errorCount += test_alert_unexpected_message (session); |
246 | teardown (session, &key, &cert, xcred); | 179 | teardown_session (session, &key, &cert, xcred); |
247 | 180 | ||
248 | if (errorCount != 0) | 181 | print_test_result (errorCount, argv[0]); |
249 | fprintf (stderr, "Failed test: %s.\n", argv[0]); | ||
250 | 182 | ||
251 | MHD_stop_daemon (d); | 183 | MHD_stop_daemon (d); |
252 | MHD__gnutls_global_deinit (); | 184 | MHD__gnutls_global_deinit (); |