mbedtls upgrade to 2.x completed!
This commit is contained in:
parent
cfc9271bb5
commit
88c27aeca0
|
|
@ -27,13 +27,15 @@
|
|||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
#include <stddef.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "papi.h"
|
||||
#include "plibs.h"
|
||||
#include "psettings.h"
|
||||
#include "psynclib.h"
|
||||
#include "ptimer.h"
|
||||
#include <stddef.h>
|
||||
#include <string.h>
|
||||
|
||||
/*
|
||||
commented definitions are unused, but kept because they may be
|
||||
|
|
@ -105,8 +107,9 @@ psync_socket *psync_api_connect(const char *hostname, int usessl) {
|
|||
if (psync_timer_time() > notuntil || !userapi) {
|
||||
ret = psync_socket_connect(
|
||||
hostname, usessl ? PSYNC_API_PORT_SSL : PSYNC_API_PORT, usessl);
|
||||
if (ret)
|
||||
if (ret) {
|
||||
return ret;
|
||||
}
|
||||
if (!userapi || !strcmp(hostname, userapi))
|
||||
return NULL;
|
||||
ret = psync_socket_connect(
|
||||
|
|
|
|||
|
|
@ -1088,9 +1088,12 @@ psync_socket *psync_socket_connect(const char *host, int unsigned port,
|
|||
psync_socket_t sock;
|
||||
char sport[8];
|
||||
psync_slprintf(sport, sizeof(sport), "%d", port);
|
||||
|
||||
sock = connect_socket(host, sport);
|
||||
if (unlikely_log(sock == INVALID_SOCKET))
|
||||
if (unlikely_log(sock == INVALID_SOCKET)) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
if (ssl) {
|
||||
ssl = psync_ssl_connect(sock, &sslc, host);
|
||||
while (ssl == PSYNC_SSL_NEED_FINISH) {
|
||||
|
|
@ -1104,8 +1107,9 @@ psync_socket *psync_socket_connect(const char *host, int unsigned port,
|
|||
psync_close_socket(sock);
|
||||
return NULL;
|
||||
}
|
||||
} else
|
||||
} else {
|
||||
sslc = NULL;
|
||||
}
|
||||
ret = psync_new(psync_socket);
|
||||
ret->ssl = sslc;
|
||||
ret->buffer = NULL;
|
||||
|
|
|
|||
|
|
@ -351,6 +351,7 @@ static psync_socket *get_connected_socket() {
|
|||
|
||||
psync_set_status(PSTATUS_TYPE_AUTH, PSTATUS_AUTH_PROVIDED);
|
||||
saveauth = psync_setting_get_bool(_PS(saveauth));
|
||||
|
||||
sock = psync_api_connect(apiserver, psync_setting_get_bool(_PS(usessl)));
|
||||
|
||||
if (unlikely_log(!sock)) {
|
||||
|
|
|
|||
|
|
@ -360,6 +360,7 @@ static int psync_ssl_check_peer_public_key(ssl_connection_t *conn) {
|
|||
return -1;
|
||||
}
|
||||
|
||||
// FIXME
|
||||
int psync_ssl_connect(psync_socket_t sock, void **sslconn,
|
||||
const char *hostname) {
|
||||
ssl_connection_t *conn;
|
||||
|
|
@ -372,6 +373,15 @@ int psync_ssl_connect(psync_socket_t sock, void **sslconn,
|
|||
mbedtls_net_init(&conn->srv);
|
||||
conn->sock = sock;
|
||||
|
||||
if ((ret = mbedtls_ssl_config_defaults(&conn->cfg, MBEDTLS_SSL_IS_CLIENT,
|
||||
MBEDTLS_SSL_TRANSPORT_STREAM,
|
||||
MBEDTLS_SSL_PRESET_DEFAULT)) != 0) {
|
||||
debug(D_ERROR,
|
||||
"failed to set ssl cfg defaults: ! mbedtls_ssl_config_defaults "
|
||||
"returned %d\n\n",
|
||||
ret);
|
||||
goto err0;
|
||||
}
|
||||
mbedtls_ssl_conf_endpoint(&conn->cfg, MBEDTLS_SSL_IS_CLIENT);
|
||||
mbedtls_ssl_conf_dbg(&conn->cfg, debug_cb, debug_ctx);
|
||||
mbedtls_ssl_conf_authmode(&conn->cfg, MBEDTLS_SSL_VERIFY_REQUIRED);
|
||||
|
|
@ -389,8 +399,9 @@ int psync_ssl_connect(psync_socket_t sock, void **sslconn,
|
|||
|
||||
if ((sess = (mbedtls_ssl_session *)psync_cache_get(conn->cachekey))) {
|
||||
debug(D_NOTICE, "reusing cached session for %s", hostname);
|
||||
if (mbedtls_ssl_set_session(&conn->ssl, sess))
|
||||
if (mbedtls_ssl_set_session(&conn->ssl, sess)) {
|
||||
debug(D_WARNING, "ssl_set_session failed");
|
||||
}
|
||||
mbedtls_ssl_session_free(sess);
|
||||
psync_free(sess);
|
||||
}
|
||||
|
|
@ -398,13 +409,16 @@ int psync_ssl_connect(psync_socket_t sock, void **sslconn,
|
|||
ret = mbedtls_ssl_handshake(&conn->ssl);
|
||||
if (ret == 0) {
|
||||
int result;
|
||||
|
||||
if ((result = psync_ssl_check_peer_public_key(conn))) {
|
||||
goto err1;
|
||||
}
|
||||
*sslconn = conn;
|
||||
|
||||
psync_ssl_save_session(conn);
|
||||
return PSYNC_SSL_SUCCESS;
|
||||
}
|
||||
|
||||
psync_set_ssl_error(conn, ret);
|
||||
if (likely_log(ret == MBEDTLS_ERR_SSL_WANT_READ ||
|
||||
ret == MBEDTLS_ERR_SSL_WANT_WRITE)) {
|
||||
|
|
@ -421,13 +435,18 @@ err0:
|
|||
int psync_ssl_connect_finish(void *sslconn, const char *hostname) {
|
||||
ssl_connection_t *conn;
|
||||
int ret;
|
||||
|
||||
conn = (ssl_connection_t *)sslconn;
|
||||
ret = mbedtls_ssl_handshake(&conn->ssl);
|
||||
if (ret == 0) {
|
||||
if (psync_ssl_check_peer_public_key(conn))
|
||||
int result;
|
||||
if ((result = psync_ssl_check_peer_public_key(conn))) {
|
||||
goto fail;
|
||||
}
|
||||
psync_ssl_save_session(conn);
|
||||
return PSYNC_SSL_SUCCESS;
|
||||
} else {
|
||||
debug(D_ERROR, "handshake failed, return code was %d", ret);
|
||||
}
|
||||
psync_set_ssl_error(conn, ret);
|
||||
if (likely_log(ret == MBEDTLS_ERR_SSL_WANT_READ ||
|
||||
|
|
|
|||
Loading…
Reference in New Issue