

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

# Portabilidad de la interfaz de transporte de red
<a name="afr-porting-network-transport-interface"></a>

## Integración de la biblioteca TLS
<a name="afr-porting-tls"></a>

Para la autenticación de la seguridad de la capa de transporte (TLS), utilice la pila de TLS que prefiera. Recomendamos usar [Mbed TLS](https://tls.mbed.org/) porque se ha probado con las bibliotecas FreeRTOS. Puedes encontrar un ejemplo de esto en este [GitHub](https://github.com/FreeRTOS/FreeRTOS)repositorio.

Independientemente de la implementación de TLS que utilice su dispositivo, debe implementar los enlaces de transporte subyacentes para el TLS pila tras pila. TCP/IP Deben ser compatibles con los [conjuntos de cifrado TLS compatibles con AWS IoT](https://docs.aws.amazon.com/iot/latest/developerguide/transport-security.html#tls-cipher-suite-support). 

## Portabilidad de la biblioteca de interfaces de transporte de red
<a name="network-intro"></a>

Debe implementar una interfaz de transporte de red para usar [coreMQTT](https://www.freertos.org/mqtt/index.html) y [coreHTTP](https://www.freertos.org/http/index.html). La interfaz de transporte de red contiene los punteros de función y los datos de contexto necesarios para enviar y recibir datos en una sola conexión de red. Consulte [Interfaz de transporte](https://www.freertos.org/network-interface.html) para obtener más información. FreeRTOS proporciona un conjunto de pruebas de interfaz de transporte de red integradas para validar estas implementaciones. La siguiente sección le guía sobre cómo configurar su proyecto para ejecutar estas pruebas. 

## Requisitos previos
<a name="prereqs"></a>

Para realizar la portabilidad de esta prueba, necesita lo siguiente:
+ Un proyecto con un sistema de creación que permita crear FreeRTOS con un puerto de kernel de FreeRTOS validado.
+ Implementación funcional de los controladores de red.

## Portabilidad
<a name="porting-network-transport-interface"></a>
+ [ FreeRTOS-Libraries-Integration-Tests](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests)Añádelo como submódulo a tu proyecto. No importa dónde se coloque el submódulo en el proyecto, siempre que se pueda crear.
+ Copie `config_template/test_execution_config_template.h` y `config_template/test_param_config_template.h` en una ubicación del proyecto en la ruta de creación y cámbieles el nombre a `test_execution_config.h` y `test_param_config.h`.
+ Incluya los archivos relevantes en el sistema creación. Si utiliza `CMake`, `qualification_test.cmake` y `src/transport_interface_tests.cmake` se usan para incluir los archivos relevantes.
+ Implemente las siguientes funciones en la ubicación adecuada del proyecto:
+ 
  + Una `network connect function`: la firma se define mediante `NetworkConnectFunc` en `src/common/network_connection.h`. Esta función incorpora un puntero al contexto de red, un puntero a la información del host y un puntero a las credenciales de red. Establece una conexión con el servidor especificado en la información del host con las credenciales de red proporcionadas.
  + Una `network disconnect function`: la firma se define mediante `NetworkDisconnectFunc` en `src/common/network_connection.h`. Esta función incorpora un puntero a un contexto de red. Desconecta una conexión establecida previamente almacenada en el contexto de red.
  + `setupTransportInterfaceTestParam()`: se define en `src/transport_interface/transport_interface_tests.h`. La implementación debe tener exactamente el mismo nombre y firma que se definen en `transport_interface_tests.h`. Esta función lleva un puntero a una *TransportInterfaceTestParam*estructura. Rellenará los campos de la *TransportInterfaceTestParam*estructura que utiliza la prueba de la interfaz de transporte.
+ Implemente **UNITY\_OUTPUT\_CHAR** para que los registros de salida de la prueba no se intercalen con los registros del dispositivo.
+ Llame a `runQualificationTest()`desde la aplicación. El hardware del dispositivo debe estar correctamente inicializado y la red debe estar conectada antes de la llamada.

### Gestión de credenciales (clave generada en el dispositivo)
<a name="cred-management-key"></a>

Cuando **FORCE\_GENERATE\_NEW\_KEY\_PAIR** en `test_param_config.h` se establece en 1, la aplicación del dispositivo genera un nuevo par de claves en el dispositivo y genera la clave pública. La aplicación del dispositivo utiliza **ECHO\_SERVER\_ROOT\_CA** y **TRANSPORT\_CLIENT\_CERTIFICATE** como CA raíz del servidor echo y certificado de cliente al establecer una conexión TLS con el servidor echo. IDT establece estos parámetros durante la ejecución de la calificación. 

### Gestión de credenciales (clave de importación)
<a name="cred-management-importing-key"></a>

La aplicación del dispositivo utiliza **ECHO\_SERVER\_ROOT\_CA**, **TRANSPORT\_CLIENT\_CERTIFICATE** y **TRANSPORT\_CLIENT\_PRIVATE\_KEY** en `test_param_config.h` como CA raíz del servidor echo, certificado de cliente y clave privada de cliente al establecer una conexión TLS con el servidor echo. IDT establece estos parámetros durante la ejecución de la calificación.

## Testeo
<a name="testing-transport-interface"></a>

En esta sección se describe cómo puede probar localmente la interfaz de transporte con las pruebas de calificación. Puede encontrar más información en el archivo README.md que se proporciona en la sección [transport\_interface](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests/tree/main/src/transport_interface) de la on. FreeRTOS-Libraries-Integration-Tests GitHub

También puede utilizar IDT para automatizar la ejecución. Consulte [AWS IoT Device Tester para FreeRTOS](https://docs.aws.amazon.com/freertos/latest/userguide/device-tester-for-freertos-ug.html) en la *Guía del usuario de FreeRTOS* para obtener más información.

### Habilitación de la prueba
<a name="enabling-test"></a>

Abra `test_execution_config.h` y defina **TRANSPORT\_INTERFACE\_TEST\_ENABLED** en 1.

### Configuración del servidor echo para realizar las pruebas
<a name="configuring-echo-server-test"></a>

Para realizar las pruebas locales, es necesario disponer de un servidor de eco al que se pueda acceder desde el dispositivo que ejecuta las pruebas. El servidor echo debe admitir TLS si la implementación de la interfaz de transporte admite TLS. Si aún no tienes uno, el [ FreeRTOS-Libraries-Integration-Tests](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests/tree/main/tools/echo_server) GitHub repositorio tiene una implementación de servidor echo.

### Configuración del proyecto para probarlo
<a name="configure-project"></a>

En `test_param_config.h`, actualice **ECHO\_SERVER\_ENDPOINT** y **ECHO\_SERVER\_PORT** con la configuración del punto de conexión y del servidor del paso anterior.

### Configuración de las credenciales (clave generada en el dispositivo)
<a name="setup-credentials-device-key"></a>
+ Establezca **ECHO\_SERVER\_ROOT\_CA** con el certificado de servidor del servidor echo.
+ Establezca **FORCE\_GENERATE\_NEW\_KEY\_PAIR** en 1 para generar un par de claves y obtener la clave pública.
+ Vuelva a establecer **FORCE\_GENERATE\_NEW\_KEY\_PAIR** en 0 tras la generación de la clave.
+ Utilice la clave pública y la clave y el certificado de servidor para generar el certificado de cliente.
+ Establezca **TRANSPORT\_CLIENT\_CERTIFICATE** con el certificado de cliente generado.

### Configuración de las credenciales (clave de importación)
<a name="setup-credentials-import-key"></a>
+ Establezca **ECHO\_SERVER\_ROOT\_CA** con el certificado de servidor del servidor echo.
+ Establezca **TRANSPORT\_CLIENT\_CERTIFICATE** con el certificado de cliente generado previamente.
+ Establezca **TRANSPORT\_CLIENT\_PRIVATE\_KEY** con la clave privada de cliente generada previamente.

### Creación e instalación de la aplicación
<a name="build-flash"></a>

Cree e instale la aplicación con la cadena de herramientas que prefiera. Cuando se invoque a `runQualificationTest()`, se ejecutarán las pruebas de la interfaz de transporte. Los resultados de la prueba se envían al puerto de serie.

**nota**  
Para calificar oficialmente un dispositivo para FreeRTOS, debes validar el código fuente portado del dispositivo con los grupos de prueba OTA PAL y OTA E2E con. AWS IoT Device Tester Siga las instrucciones de [Uso AWS IoT Device Tester para FreeRTOS](https://docs.aws.amazon.com/freertos/latest/userguide/device-tester-for-freertos-ug.html) de la *Guía del usuario de FreeRTOS* para configurar AWS IoT Device Tester la validación de puertos. Para probar el puerto de una biblioteca específica, debe estar habilitado el grupo de prueba correcto en el `device.json` archivo de la AWS IoT Device Tester `configs` carpeta.