

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Portage de l'interface de transport réseau
<a name="afr-porting-network-transport-interface"></a>

## Intégration de la bibliothèque TLS
<a name="afr-porting-tls"></a>

Pour l'authentification TLS (Transport Layer Security), utilisez votre pile TLS préférée. Nous recommandons d'utiliser [Mbed TLS](https://tls.mbed.org/) car il est testé avec les bibliothèques FreeRTOS. Vous pouvez en trouver un exemple dans ce [GitHub](https://github.com/FreeRTOS/FreeRTOS)référentiel.

Quelle que soit l'implémentation TLS utilisée par votre appareil, vous devez implémenter les crochets de transport sous-jacents pour le protocole TLS pile par TCP/IP pile. Ils doivent prendre en charge les [suites de chiffrement TLS prises en charge par](https://docs.aws.amazon.com/iot/latest/developerguide/transport-security.html#tls-cipher-suite-support). AWS IoT

## Portage de la bibliothèque d'interface de transport réseau
<a name="network-intro"></a>

[Vous devez implémenter une interface de transport réseau pour utiliser [CoreMQTT et CoreHTTP](https://www.freertos.org/mqtt/index.html).](https://www.freertos.org/http/index.html) L'interface de transport réseau contient des pointeurs de fonction et des données contextuelles nécessaires pour envoyer et recevoir des données sur une seule connexion réseau. Voir [Interface de transport](https://www.freertos.org/network-interface.html) pour plus de détails. FreeRTOS fournit un ensemble de tests d'interface de transport réseau intégrés pour valider ces implémentations. La section suivante explique comment configurer votre projet pour exécuter ces tests. 

## Conditions préalables
<a name="prereqs"></a>

Pour transférer ce test, vous avez besoin des éléments suivants :
+ Un projet avec un système de compilation capable de créer FreeRTOS avec un port de noyau FreeRTOS validé.
+ Implémentation fonctionnelle des pilotes réseau.

## Portage
<a name="porting-network-transport-interface"></a>
+ Ajoutez-le [ FreeRTOS-Libraries-Integration-Tests](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests)en tant que sous-module à votre projet. Peu importe où le sous-module est placé dans le projet, tant qu'il peut être construit.
+ Copiez `config_template/test_execution_config_template.h` et `config_template/test_param_config_template.h` vers un emplacement de projet dans le chemin de construction, et renommez-les en `test_execution_config.h` et`test_param_config.h`.
+ Incluez les fichiers pertinents dans le système de compilation. Si vous `CMake` les utilisez, `qualification_test.cmake` et `src/transport_interface_tests.cmake` sont utilisés pour inclure les fichiers pertinents.
+ Implémentez les fonctions suivantes sur un site de projet approprié :
+ 
  + R `network connect function` : La signature est définie par `NetworkConnectFunc` in`src/common/network_connection.h`. Cette fonction prend en compte un pointeur vers le contexte du réseau, un pointeur vers les informations d'hôte et un pointeur vers les informations d'identification du réseau. Il établit une connexion avec le serveur spécifié dans les informations d'hôte avec les informations d'identification réseau fournies.
  + R `network disconnect function` : La signature est définie par `NetworkDisconnectFunc` in`src/common/network_connection.h`. Cette fonction prend en compte un pointeur vers un contexte réseau. Il déconnecte une connexion précédemment établie enregistrée dans le contexte du réseau.
  + `setupTransportInterfaceTestParam()`: Ceci est défini dans`src/transport_interface/transport_interface_tests.h`. L'implémentation doit avoir exactement le même nom et la même signature que ceux définis dans`transport_interface_tests.h`. Cette fonction prend en compte un pointeur vers une *TransportInterfaceTestParam*structure. Il remplira les champs de la *TransportInterfaceTestParam*structure utilisée par le test de l'interface de transport.
+ Implémentez **UNITY\_OUTPUT\_CHAR** afin que les journaux de sortie des tests ne soient pas entrelacés avec les journaux des périphériques.
+ Appelez `runQualificationTest()` depuis l'application. Le matériel de l'appareil doit être correctement initialisé et le réseau doit être connecté avant l'appel.

### Gestion des informations d'identification (clé générée sur l'appareil)
<a name="cred-management-key"></a>

Lorsque **FORCE\_GENERATE\_NEW\_KEY\_PAIR in `test_param_config.h` est défini sur 1, l'application de l'appareil génère une nouvelle paire** de clés intégrée à l'appareil et émet la clé publique. L'application de périphérique utilise **ECHO\_SERVER\_ROOT\_CA et TRANSPORT\_CLIENT\_CERTIFICATE** **comme autorité de certification racine et certificat** client du serveur d'écho lors de l'établissement d'une connexion TLS avec le serveur d'écho. IDT définit ces paramètres lors de la phase de qualification. 

### Gestion des informations d'identification (clé d'importation)
<a name="cred-management-importing-key"></a>

L'application de l'appareil utilise **ECHO\_SERVER\_ROOT\_CA, TRANSPORT\_CLIENT\_CERTIFICATE** **et TRANSPORT\_CLIENT\_PRIVATE\_KEY `test_param_config.h` comme autorité de certification racine du serveur d'écho, certificat** **client et clé privée du client lors de l'établissement d'une connexion TLS** avec le serveur d'écho. IDT définit ces paramètres lors de la phase de qualification.

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

Cette section décrit comment tester localement l'interface de transport à l'aide des tests de qualification. Des détails supplémentaires peuvent être trouvés dans le fichier README.md fourni dans la section [transport\_interface](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests/tree/main/src/transport_interface) du fichier on. FreeRTOS-Libraries-Integration-Tests GitHub

Vous pouvez également utiliser IDT pour automatiser l'exécution. Voir [FreeRTOS dans le Guide de l'utilisateur de *FreeRTOS AWS IoT Device Tester * pour](https://docs.aws.amazon.com/freertos/latest/userguide/device-tester-for-freertos-ug.html) plus de détails.

### Activez le test
<a name="enabling-test"></a>

Ouvrez `test_execution_config.h` et définissez **TRANSPORT\_INTERFACE\_TEST\_ENABLED sur 1**.

### Configurer le serveur Echo pour les tests
<a name="configuring-echo-server-test"></a>

Un serveur d'écho accessible depuis l'appareil exécutant les tests est requis pour les tests locaux. Le serveur d'écho doit prendre en charge le protocole TLS si l'implémentation de l'interface de transport prend en charge le protocole TLS. Si vous n'en avez pas déjà un, le [ FreeRTOS-Libraries-Integration-Tests](https://github.com/FreeRTOS/FreeRTOS-Libraries-Integration-Tests/tree/main/tools/echo_server) GitHub dépôt dispose d'une implémentation de serveur Echo.

### Configuration du projet à des fins de test
<a name="configure-project"></a>

Dans`test_param_config.h`, mettez à jour **ECHO\_SERVER\_ENDPOINT et ECHO\_SERVER\_PORT** **selon la configuration du point de terminaison et du serveur** à l'étape précédente.

### Informations d'identification de configuration (clé générée sur l'appareil)
<a name="setup-credentials-device-key"></a>
+ **Attribuez à ECHO\_SERVER\_ROOT\_CA** le certificat du serveur Echo.
+ Définissez **FORCE\_GENERATE\_NEW\_KEY\_PAIR sur 1 pour** générer une paire de clés et obtenir la clé publique.
+ Remettez **FORCE\_GENERATE\_NEW\_KEY\_PAIR à 0 après la génération de la clé**.
+ Utilisez la clé publique, la clé de serveur et le certificat pour générer le certificat client.
+ Attribuez à **TRANSPORT\_CLIENT\_CERTIFICATE le certificat** client généré.

### Informations d'identification de configuration (clé d'importation)
<a name="setup-credentials-import-key"></a>
+ **Attribuez à ECHO\_SERVER\_ROOT\_CA** le certificat du serveur Echo.
+ Attribuez à **TRANSPORT\_CLIENT\_CERTIFICATE le certificat** client prégénéré.
+ Définissez **TRANSPORT\_CLIENT\_PRIVATE\_KEY sur la clé privée** du client prégénérée.

### Créez et flashez l'application
<a name="build-flash"></a>

Créez et flashez l'application à l'aide de la chaîne d'outils de votre choix. Lorsqu'il `runQualificationTest()` est invoqué, les tests de l'interface de transport sont exécutés. Les résultats des tests sont transmis au port série.

**Note**  
Pour qualifier officiellement un appareil pour FreeRTOS, vous devez valider le code source porté de l'appareil par rapport aux groupes de test OTA PAL et OTA E2E avec. AWS IoT Device Tester Suivez les instructions de la section [Utilisation AWS IoT Device Tester pour FreeRTOS](https://docs.aws.amazon.com/freertos/latest/userguide/device-tester-for-freertos-ug.html) du Guide de l'*utilisateur de FreeRTOS pour configurer la validation des ports*. AWS IoT Device Tester Pour tester le port d'une bibliothèque spécifique, le groupe de test approprié doit être activé dans le `device.json` fichier du AWS IoT Device Tester `configs` dossier.