aboutsummaryrefslogtreecommitdiff
path: root/src/testcurl/https/tls_alert_test.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/testcurl/https/tls_alert_test.c')
-rw-r--r--src/testcurl/https/tls_alert_test.c98
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" 35extern const char srv_key_pem[];
37#define MHD_E_FAILED_TO_CONNECT "Error: server connection could not be established\n" 36extern const char srv_self_signed_cert_pem[];
38
39const char *ca_cert_file_name = "ca_cert_pem";
40const char *test_file_name = "https_test_file";
41const char test_file_data[] = "Hello World\n";
42
43struct CBC
44{
45 char *buf;
46 size_t pos;
47 size_t size;
48};
49
50/* HTTP access handler call back */
51static int
52http_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
59static int
60setup (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
87static int
88teardown (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 ();