@@ -37,7 +37,7 @@ void ssl_init(sslclient_context *ssl_client)
3737}
3838
3939
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)
4141{
4242 char buf[512 ];
4343 int ret, flags, len, timeout;
@@ -53,10 +53,17 @@ int start_ssl_client(sslclient_context *ssl_client, uint32_t ipAddress, uint32_t
5353 return ssl_client->socket ;
5454 }
5555
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+
5663 struct sockaddr_in serv_addr;
5764 memset (&serv_addr, 0 , sizeof (serv_addr));
5865 serv_addr.sin_family = AF_INET;
59- serv_addr.sin_addr .s_addr = ipAddress ;
66+ serv_addr.sin_addr .s_addr = srv ;
6067 serv_addr.sin_port = htons (port);
6168
6269 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
9097 return handle_error (ret);
9198 }
9299
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+
96103 if (rootCABuff != NULL ) {
97104 log_i (" Loading CA cert" );
98105 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
129136 mbedtls_ssl_conf_own_cert (&ssl_client->ssl_conf , &ssl_client->client_cert , &ssl_client->client_key );
130137 }
131138
132- /*
133- // TODO: implement match CN verification
139+ log_i (" Setting hostname for TLS session..." );
134140
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+ }
144145
145146 mbedtls_ssl_conf_rng (&ssl_client->ssl_conf , mbedtls_ctr_drbg_random, &ssl_client->drbg_ctx );
146147
@@ -221,7 +222,7 @@ int data_to_read(sslclient_context *ssl_client)
221222 ret = mbedtls_ssl_read (&ssl_client->ssl_ctx , NULL , 0 );
222223 // log_e("RET: %i",ret); //for low level debug
223224 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
225226 if (ret != MBEDTLS_ERR_SSL_WANT_READ && ret != MBEDTLS_ERR_SSL_WANT_WRITE && ret < 0 ) {
226227 return handle_error (ret);
227228 }
0 commit comments