first working TLS transfers

git-svn-id: http://svn.berlios.de/svnroot/repos/sipsak/trunk@415 75b5f7c7-cfd4-0310-b54c-e118b2c5249a
(cherry picked from commit 29aa3ea72c24560d43ee1b1a3408cd57a0cb9b94)
(cherry picked from commit a8878136b1)
mr4.2.1
nils-ohlmeier 20 years ago committed by Victor Seva
parent a76649731d
commit 3014db7913

@ -112,7 +112,7 @@ int rawsock;
#ifdef WITH_TLS_TRANSP
# ifdef USE_GNUTLS
extern void print_x509_certificate_info(session);
//extern void print_x509_certificate_info(session);
void gnutls_session_info(gnutls_session_t session) {
const char *tmp;
@ -142,7 +142,7 @@ void gnutls_session_info(gnutls_session_t session) {
gnutls_dh_get_prime_bits(session));
}
// print certificate informations if available
print_x509_certificate_info(session);
//print_x509_certificate_info(session);
break;
default:
printf("UNKNOWN GNUTLS authentication type!!!\n");
@ -323,7 +323,9 @@ void create_sockets(struct sipsak_con_data *cd) {
}
# endif /* USE_OPENSSL */
#endif /* USE_GNUTLS */
#ifdef DEBUG
printf("initialized tls socket %i\n", cd->csock);
#endif
}
#endif /* WITH_TLS_TRANSP */
}
@ -360,7 +362,21 @@ void send_message(char* mes, struct sipsak_con_data *cd,
#ifdef DEBUG
printf("\nusing connected socket for sending\n");
#endif
ret = send(cd->csock, mes, strlen(mes), 0);
#ifdef WITH_TLS_TRANSP
if (transport == SIP_TLS_TRANSPORT) {
# ifdef USE_GNUTLS
ret = gnutls_record_send(tls_session, mes, strlen(mes));
# else /* USE_GNUTLS */
# ifdef USE_OPENSSL
# endif /* USE_OPENSSL */
# endif /* USE_GNUTLS */
}
else {
#endif /* TLS_TRANSP */
ret = send(cd->csock, mes, strlen(mes), 0);
#ifdef WITH_TLS_TRANSP
}
#endif /* TLS_TRANSP */
}
(void)gettimeofday(&(srt->sendtime), &tz);
if (ret==-1) {
@ -619,7 +635,21 @@ int recv_message(char *buf, int size, int inv_trans,
else {
#endif
check_socket_error(sock, size);
ret = recvfrom(sock, buf, size, 0, NULL, 0);
#ifdef WITH_TLS_TRANSP
if (transport == SIP_TLS_TRANSPORT) {
# ifdef USE_GNUTLS
ret = gnutls_record_recv(tls_session, buf, size);
# else /* USE_GNUTLS */
# ifdef USE_OPENSSL
# endif /* USE_OPENSSL */
# endif /* USE_GNUTLS */
}
else {
#endif /* TLS_TRANSP */
ret = recvfrom(sock, buf, size, 0, NULL, 0);
#ifdef WITH_TLS_TRANSP
}
#endif /* TLS_TRANSP */
}
#ifdef RAW_SUPPORT
else {
@ -782,20 +812,27 @@ int set_target(struct sockaddr_in *adr, unsigned long target, int port, int sock
# ifdef USE_GNUTLS
ret = gnutls_handshake(tls_session);
if (ret < 0) {
printf("*** Handshake FAILED!!!\n");
#ifdef DEBUG
printf("*** TLS Handshake FAILED!!!\n");
#endif
gnutls_perror(ret);
exit_code(3);
} else {
printf("*** Handshake was completed!\n");
}
#ifdef DEBUG
else {
printf("*** TLS Handshake was completed!\n");
}
#endif
# else /* USE_GNUTLS */
# ifdef USE_OPENSSL
ret = SSL_connect(ssl);
if (ret == 1) {
#ifdef DEBUG
printf("TLS connect successful\n");
printf("TLS connect: new connection using %s %s %d\n",
SSL_get_cipher_version(ssl), SSL_get_cipher_name(ssl),
SSL_get_cipher_bits(ssl, 0));
#endif
cert = SSL_get_peer_certificate(ssl);
if (cert != 0) {
tls_dump_cert_info("TLS connect: server certificate", cert);

Loading…
Cancel
Save