|
|
|
@ -633,6 +633,7 @@ TlsTransportStatus_t TLS_FreeRTOS_Connect( NetworkContext_t * pNetworkContext,
|
|
|
|
|
TlsTransportParams_t * pTlsTransportParams = NULL;
|
|
|
|
|
TlsTransportStatus_t returnStatus = TLS_TRANSPORT_SUCCESS;
|
|
|
|
|
BaseType_t socketStatus = 0;
|
|
|
|
|
BaseType_t isSocketConnected = pdFALSE, isTlsSetup = pdFALSE;
|
|
|
|
|
|
|
|
|
|
if( ( pNetworkContext == NULL ) ||
|
|
|
|
|
( pNetworkContext->pParams == NULL ) ||
|
|
|
|
@ -660,6 +661,10 @@ TlsTransportStatus_t TLS_FreeRTOS_Connect( NetworkContext_t * pNetworkContext,
|
|
|
|
|
if( returnStatus == TLS_TRANSPORT_SUCCESS )
|
|
|
|
|
{
|
|
|
|
|
pTlsTransportParams = pNetworkContext->pParams;
|
|
|
|
|
|
|
|
|
|
/* Initialize tcpSocket. */
|
|
|
|
|
pTlsTransportParams->tcpSocket = NULL;
|
|
|
|
|
|
|
|
|
|
socketStatus = TCP_Sockets_Connect( &( pTlsTransportParams->tcpSocket ),
|
|
|
|
|
pHostName,
|
|
|
|
|
port,
|
|
|
|
@ -678,6 +683,8 @@ TlsTransportStatus_t TLS_FreeRTOS_Connect( NetworkContext_t * pNetworkContext,
|
|
|
|
|
/* Initialize mbedtls. */
|
|
|
|
|
if( returnStatus == TLS_TRANSPORT_SUCCESS )
|
|
|
|
|
{
|
|
|
|
|
isSocketConnected = pdTRUE;
|
|
|
|
|
|
|
|
|
|
returnStatus = initMbedtls( &( pTlsTransportParams->sslContext.entropyContext ),
|
|
|
|
|
&( pTlsTransportParams->sslContext.ctrDrgbContext ) );
|
|
|
|
|
}
|
|
|
|
@ -691,17 +698,25 @@ TlsTransportStatus_t TLS_FreeRTOS_Connect( NetworkContext_t * pNetworkContext,
|
|
|
|
|
/* Perform TLS handshake. */
|
|
|
|
|
if( returnStatus == TLS_TRANSPORT_SUCCESS )
|
|
|
|
|
{
|
|
|
|
|
isTlsSetup = pdTRUE;
|
|
|
|
|
|
|
|
|
|
returnStatus = tlsHandshake( pNetworkContext, pNetworkCredentials );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Clean up on failure. */
|
|
|
|
|
if( returnStatus != TLS_TRANSPORT_SUCCESS )
|
|
|
|
|
{
|
|
|
|
|
if( ( pNetworkContext != NULL ) && ( pNetworkContext->pParams != NULL ) )
|
|
|
|
|
/* Free SSL context if it's setup. */
|
|
|
|
|
if( isTlsSetup == pdTRUE )
|
|
|
|
|
{
|
|
|
|
|
sslContextFree( &( pTlsTransportParams->sslContext ) );
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Call Sockets_Disconnect if socket was connected. */
|
|
|
|
|
if( isSocketConnected == pdTRUE )
|
|
|
|
|
{
|
|
|
|
|
TCP_Sockets_Disconnect( pTlsTransportParams->tcpSocket );
|
|
|
|
|
pTlsTransportParams->tcpSocket = NULL;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|