diff options
| -rw-r--r-- | src/idevice.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/idevice.c b/src/idevice.c index 5912aeb..f2de6a3 100644 --- a/src/idevice.c +++ b/src/idevice.c | |||
| @@ -642,7 +642,11 @@ static const char *ssl_error_to_string(int e) | |||
| 642 | /** | 642 | /** |
| 643 | * Internally used gnutls callback function that gets called during handshake. | 643 | * Internally used gnutls callback function that gets called during handshake. |
| 644 | */ | 644 | */ |
| 645 | #if GNUTLS_VERSION_NUMBER >= 0x020b07 | ||
| 646 | static int internal_cert_callback(gnutls_session_t session, const gnutls_datum_t * req_ca_rdn, int nreqs, const gnutls_pk_algorithm_t * sign_algos, int sign_algos_length, gnutls_retr2_st * st) | ||
| 647 | #else | ||
| 645 | static int internal_cert_callback(gnutls_session_t session, const gnutls_datum_t * req_ca_rdn, int nreqs, const gnutls_pk_algorithm_t * sign_algos, int sign_algos_length, gnutls_retr_st * st) | 648 | static int internal_cert_callback(gnutls_session_t session, const gnutls_datum_t * req_ca_rdn, int nreqs, const gnutls_pk_algorithm_t * sign_algos, int sign_algos_length, gnutls_retr_st * st) |
| 649 | #endif | ||
| 646 | { | 650 | { |
| 647 | int res = -1; | 651 | int res = -1; |
| 648 | gnutls_certificate_type_t type = gnutls_certificate_type_get(session); | 652 | gnutls_certificate_type_t type = gnutls_certificate_type_get(session); |
| @@ -650,7 +654,12 @@ static int internal_cert_callback(gnutls_session_t session, const gnutls_datum_t | |||
| 650 | ssl_data_t ssl_data = (ssl_data_t)gnutls_session_get_ptr(session); | 654 | ssl_data_t ssl_data = (ssl_data_t)gnutls_session_get_ptr(session); |
| 651 | if (ssl_data && ssl_data->host_privkey && ssl_data->host_cert) { | 655 | if (ssl_data && ssl_data->host_privkey && ssl_data->host_cert) { |
| 652 | debug_info("Passing certificate"); | 656 | debug_info("Passing certificate"); |
| 657 | #if GNUTLS_VERSION_NUMBER >= 0x020b07 | ||
| 658 | st->cert_type = type; | ||
| 659 | st->key_type = GNUTLS_PRIVKEY_X509; | ||
| 660 | #else | ||
| 653 | st->type = type; | 661 | st->type = type; |
| 662 | #endif | ||
| 654 | st->ncerts = 1; | 663 | st->ncerts = 1; |
| 655 | st->cert.x509 = &ssl_data->host_cert; | 664 | st->cert.x509 = &ssl_data->host_cert; |
| 656 | st->key.x509 = ssl_data->host_privkey; | 665 | st->key.x509 = ssl_data->host_privkey; |
| @@ -759,7 +768,11 @@ LIBIMOBILEDEVICE_API idevice_error_t idevice_connection_enable_ssl(idevice_conne | |||
| 759 | debug_info("enabling SSL mode"); | 768 | debug_info("enabling SSL mode"); |
| 760 | errno = 0; | 769 | errno = 0; |
| 761 | gnutls_certificate_allocate_credentials(&ssl_data_loc->certificate); | 770 | gnutls_certificate_allocate_credentials(&ssl_data_loc->certificate); |
| 771 | #if GNUTLS_VERSION_NUMBER >= 0x020b07 | ||
| 772 | gnutls_certificate_set_retrieve_function(ssl_data_loc->certificate, internal_cert_callback); | ||
| 773 | #else | ||
| 762 | gnutls_certificate_client_set_retrieve_function(ssl_data_loc->certificate, internal_cert_callback); | 774 | gnutls_certificate_client_set_retrieve_function(ssl_data_loc->certificate, internal_cert_callback); |
| 775 | #endif | ||
| 763 | gnutls_init(&ssl_data_loc->session, GNUTLS_CLIENT); | 776 | gnutls_init(&ssl_data_loc->session, GNUTLS_CLIENT); |
| 764 | gnutls_priority_set_direct(ssl_data_loc->session, "NONE:+VERS-SSL3.0:+ANON-DH:+RSA:+AES-128-CBC:+AES-256-CBC:+SHA1:+MD5:+COMP-NULL", NULL); | 777 | gnutls_priority_set_direct(ssl_data_loc->session, "NONE:+VERS-SSL3.0:+ANON-DH:+RSA:+AES-128-CBC:+AES-256-CBC:+SHA1:+MD5:+COMP-NULL", NULL); |
| 765 | gnutls_credentials_set(ssl_data_loc->session, GNUTLS_CRD_CERTIFICATE, ssl_data_loc->certificate); | 778 | gnutls_credentials_set(ssl_data_loc->session, GNUTLS_CRD_CERTIFICATE, ssl_data_loc->certificate); |
