in platform/posix/transport/src/mbedtls_pkcs11_posix.c [421:465]
static MbedtlsPkcs11Status_t configureMbedtlsSniAlpn( MbedtlsPkcs11Context_t * pMbedtlsPkcs11Context,
const MbedtlsPkcs11Credentials_t * pMbedtlsPkcs11Credentials,
const char * pHostName )
{
MbedtlsPkcs11Status_t returnStatus = MBEDTLS_PKCS11_SUCCESS;
int32_t mbedtlsError = 0;
assert( pMbedtlsPkcs11Context != NULL );
assert( pHostName != NULL );
assert( pMbedtlsPkcs11Credentials != NULL );
assert( pMbedtlsPkcs11Credentials->pRootCaPath != NULL );
if( pMbedtlsPkcs11Credentials->pAlpnProtos != NULL )
{
/* Include an application protocol list in the TLS ClientHello message. */
mbedtlsError = mbedtls_ssl_conf_alpn_protocols( &( pMbedtlsPkcs11Context->config ),
pMbedtlsPkcs11Credentials->pAlpnProtos );
if( mbedtlsError != 0 )
{
LogError( ( "Failed to configure ALPN protocol in MbedTLS: mbedTLSError= %s : %s.",
mbedtlsHighLevelCodeOrDefault( mbedtlsError ),
mbedtlsLowLevelCodeOrDefault( mbedtlsError ) ) );
returnStatus = MBEDTLS_PKCS11_INTERNAL_ERROR;
}
}
/* Enable SNI if requested. */
if( ( returnStatus == MBEDTLS_PKCS11_SUCCESS ) &&
( pMbedtlsPkcs11Credentials->disableSni == false ) )
{
mbedtlsError = mbedtls_ssl_set_hostname( &( pMbedtlsPkcs11Context->context ),
pHostName );
if( mbedtlsError != 0 )
{
LogError( ( "Failed to set server name: mbedTLSError= %s : %s.",
mbedtlsHighLevelCodeOrDefault( mbedtlsError ),
mbedtlsLowLevelCodeOrDefault( mbedtlsError ) ) );
returnStatus = MBEDTLS_PKCS11_INTERNAL_ERROR;
}
}
return returnStatus;
}