in components/network_transport/source/tls_freertos.c [42:109]
TlsTransportStatus_t TLS_FreeRTOS_Connect( NetworkContext_t * pNetworkContext,
const char * pHostName,
uint16_t port,
const NetworkCredentials_t * pNetworkCredentials,
uint32_t receiveTimeoutMs,
uint32_t sendTimeoutMs )
{
TlsTransportStatus_t returnStatus = TLS_TRANSPORT_SUCCESS;
if( ( pNetworkContext == NULL ) ||
( pHostName == NULL ) ||
( pNetworkCredentials == NULL ) )
{
ESP_LOGE(TAG, "Invalid input parameter(s): Arguments cannot be NULL. pNetworkContext=%p, "
"pHostName=%p, pNetworkCredentials=%p.",
pNetworkContext,
pHostName,
pNetworkCredentials);
return TLS_TRANSPORT_INVALID_PARAMETER;
}
pNetworkContext->transport = esp_transport_ssl_init();
pNetworkContext->receiveTimeoutMs = receiveTimeoutMs;
pNetworkContext->sendTimeoutMs = sendTimeoutMs;
if (pNetworkCredentials->pAlpnProtos) {
esp_transport_ssl_set_alpn_protocol(pNetworkContext->transport, pNetworkCredentials->pAlpnProtos);
}
if (pNetworkCredentials->disableSni) {
esp_transport_ssl_skip_common_name_check(pNetworkContext->transport);
}
if (pNetworkCredentials->pRootCa) {
esp_transport_ssl_set_cert_data_der(pNetworkContext->transport, (const char *)pNetworkCredentials->pRootCa, pNetworkCredentials->rootCaSize);
}
if (pNetworkCredentials->pClientCert) {
esp_transport_ssl_set_client_cert_data_der(pNetworkContext->transport, (const char *)pNetworkCredentials->pClientCert, pNetworkCredentials->clientCertSize);
}
if (pNetworkCredentials->pPrivateKey) {
esp_transport_ssl_set_client_key_data_der(pNetworkContext->transport, (const char *)pNetworkCredentials->pPrivateKey, pNetworkCredentials->privateKeySize);
}
if (esp_transport_connect(pNetworkContext->transport, pHostName, port, receiveTimeoutMs) < 0) {
returnStatus = TLS_TRANSPORT_CONNECT_FAILURE;
} else {
returnStatus = TLS_TRANSPORT_SUCCESS;
}
/* Clean up on failure. */
if( returnStatus != TLS_TRANSPORT_SUCCESS )
{
if( pNetworkContext != NULL )
{
esp_transport_close( pNetworkContext->transport );
esp_transport_destroy( pNetworkContext->transport );
}
}
else
{
ESP_LOGI(TAG, "(Network connection %p) Connection to %s established.",
pNetworkContext,
pHostName);
}
return returnStatus;
}