@@ -37,7 +37,7 @@ void ssl_init(sslclient_context *ssl_client)
37
37
}
38
38
39
39
40
- int start_ssl_client (sslclient_context *ssl_client, uint32_t ipAddress , uint32_t port, const char *rootCABuff, const char *cli_cert, const char *cli_key)
40
+ int start_ssl_client (sslclient_context *ssl_client, const char *host , uint32_t port, const char *rootCABuff, const char *cli_cert, const char *cli_key)
41
41
{
42
42
char buf[512 ];
43
43
int ret, flags, len, timeout;
@@ -53,10 +53,17 @@ int start_ssl_client(sslclient_context *ssl_client, uint32_t ipAddress, uint32_t
53
53
return ssl_client->socket ;
54
54
}
55
55
56
+ struct hostent *server;
57
+ server = gethostbyname (host);
58
+ if (server == NULL ) {
59
+ return 0 ;
60
+ }
61
+ IPAddress srv ((const uint8_t *)(server->h_addr ));
62
+
56
63
struct sockaddr_in serv_addr;
57
64
memset (&serv_addr, 0 , sizeof (serv_addr));
58
65
serv_addr.sin_family = AF_INET;
59
- serv_addr.sin_addr .s_addr = ipAddress ;
66
+ serv_addr.sin_addr .s_addr = srv ;
60
67
serv_addr.sin_port = htons (port);
61
68
62
69
if (lwip_connect (ssl_client->socket , (struct sockaddr *)&serv_addr, sizeof (serv_addr)) == 0 ) {
@@ -90,9 +97,9 @@ int start_ssl_client(sslclient_context *ssl_client, uint32_t ipAddress, uint32_t
90
97
return handle_error (ret);
91
98
}
92
99
93
- /* MBEDTLS_SSL_VERIFY_REQUIRED if a CA certificate is defined on Arduino IDE and
94
- MBEDTLS_SSL_VERIFY_NONE if not.
95
- */
100
+ // MBEDTLS_SSL_VERIFY_REQUIRED if a CA certificate is defined on Arduino IDE and
101
+ // MBEDTLS_SSL_VERIFY_NONE if not.
102
+
96
103
if (rootCABuff != NULL ) {
97
104
log_i (" Loading CA cert" );
98
105
mbedtls_x509_crt_init (&ssl_client->ca_cert );
@@ -129,18 +136,12 @@ int start_ssl_client(sslclient_context *ssl_client, uint32_t ipAddress, uint32_t
129
136
mbedtls_ssl_conf_own_cert (&ssl_client->ssl_conf , &ssl_client->client_cert , &ssl_client->client_key );
130
137
}
131
138
132
- /*
133
- // TODO: implement match CN verification
139
+ log_i (" Setting hostname for TLS session..." );
134
140
135
- log_i("Setting hostname for TLS session...");
136
-
137
- // Hostname set here should match CN in server certificate
138
- if((ret = mbedtls_ssl_set_hostname(&ssl_client->ssl_ctx, host)) != 0)
139
- {
140
- return handle_error(ret);
141
-
142
- }
143
- */
141
+ // Hostname set here should match CN in server certificate
142
+ if ((ret = mbedtls_ssl_set_hostname (&ssl_client->ssl_ctx , host)) != 0 ){
143
+ return handle_error (ret);
144
+ }
144
145
145
146
mbedtls_ssl_conf_rng (&ssl_client->ssl_conf , mbedtls_ctr_drbg_random, &ssl_client->drbg_ctx );
146
147
@@ -221,7 +222,7 @@ int data_to_read(sslclient_context *ssl_client)
221
222
ret = mbedtls_ssl_read (&ssl_client->ssl_ctx , NULL , 0 );
222
223
// log_e("RET: %i",ret); //for low level debug
223
224
res = mbedtls_ssl_get_bytes_avail (&ssl_client->ssl_ctx );
224
- // log_e("RES: %i",res);
225
+ // log_e("RES: %i",res); //for low level debug
225
226
if (ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE && ret < 0 ) {
226
227
return handle_error (ret);
227
228
}
0 commit comments