| 384 |
384 |
| 385 static void |
385 static void |
| 386 ssl_gnutls_connect(PurpleSslConnection *gsc) |
386 ssl_gnutls_connect(PurpleSslConnection *gsc) |
| 387 { |
387 { |
| 388 PurpleSslGnutlsData *gnutls_data; |
388 PurpleSslGnutlsData *gnutls_data; |
| 389 static const int cert_type_priority[2] = { GNUTLS_CRT_X509, 0 }; |
|
| 390 |
389 |
| 391 gnutls_data = g_new0(PurpleSslGnutlsData, 1); |
390 gnutls_data = g_new0(PurpleSslGnutlsData, 1); |
| 392 gsc->private_data = gnutls_data; |
391 gsc->private_data = gnutls_data; |
| 393 |
392 |
| 394 gnutls_init(&gnutls_data->session, GNUTLS_CLIENT); |
393 gnutls_init(&gnutls_data->session, GNUTLS_CLIENT); |
| 411 } |
410 } |
| 412 #else |
411 #else |
| 413 gnutls_set_default_priority(gnutls_data->session); |
412 gnutls_set_default_priority(gnutls_data->session); |
| 414 #endif |
413 #endif |
| 415 |
414 |
| 416 gnutls_certificate_type_set_priority(gnutls_data->session, |
415 gnutls_server_name_set(gnutls_data->session, GNUTLS_NAME_DNS, gsc->host, |
| 417 cert_type_priority); |
416 strlen(gsc->host)); |
| 418 |
417 |
| 419 gnutls_credentials_set(gnutls_data->session, GNUTLS_CRD_CERTIFICATE, |
418 gnutls_credentials_set(gnutls_data->session, GNUTLS_CRD_CERTIFICATE, |
| 420 xcred); |
419 xcred); |
| 421 |
420 |
| 422 gnutls_transport_set_ptr(gnutls_data->session, GINT_TO_POINTER(gsc->fd)); |
421 gnutls_transport_set_ptr(gnutls_data->session, GINT_TO_POINTER(gsc->fd)); |