Bibliothèque Secure Sockets - Gratuit RTOS

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.

Bibliothèque Secure Sockets

Important

Cette bibliothèque est hébergée sur le RTOS référentiel Amazon Free, qui est obsolète. Nous vous recommandons de commencer ici lorsque vous créez un nouveau projet. Si vous possédez déjà un RTOS projet gratuit basé sur le RTOS référentiel Amazon Free, désormais obsolète, consultez le. Guide de migration du référentiel RTOS Github gratuit sur Amazon

Présentation

Vous pouvez utiliser la bibliothèque Free RTOS Secure Sockets pour créer des applications intégrées qui communiquent en toute sécurité. Cette bibliothèque a été conçue pour faciliter les premiers pas des développeurs logiciels aux expériences de programmation réseau diverses.

La bibliothèque Free RTOS Secure Sockets est basée sur l'interface des sockets de Berkeley, avec une option de communication sécurisée supplémentaire par TLS protocole. Pour plus d'informations sur les différences entre la bibliothèque Free RTOS Secure Sockets et l'interface des sockets Berkeley, reportez-vous SOCKETS_SetSockOpt à la section Secure Sockets API Reference.

Note

Actuellement, seul le clientAPIs, ainsi qu'une implémentation IP légère (LWiP) Bind API côté serveur, sont pris en charge pour RTOS les Free Secure Sockets.

Dépendances et exigences

La bibliothèque Free RTOS Secure Sockets dépend d'une pile TCP /IP et d'une TLS implémentation. Ports for Free RTOS répond à ces dépendances de trois manières :

Le diagramme de dépendance ci-dessous montre l'implémentation de référence incluse dans la bibliothèque Free RTOS Secure Sockets. Cette implémentation de référence prend en charge TLS TCP /IP via Ethernet et Wi-Fi avec RTOS Free+ TCP et mbed TLS comme dépendances. Pour plus d'informations sur la RTOS TLS couche Free, consultez : acte de révision dans un pipeline se poursuivant d'une étape à l'autre dans un flux de travail..

Architecture de la bibliothèque Secure Sockets avec Free RTOS +TCP, TLS Layer et TLS composants.

Fonctionnalités

Les fonctionnalités de la bibliothèque Free RTOS Secure Sockets incluent :

  • Une interface standard basée sur Berkeley Sockets

  • Thread-safe APIs pour l'envoi et la réception de données

  • Easy-to-enable TLS

Résolution des problèmes

Codes d’erreur

Les codes d'erreur renvoyés par la bibliothèque Free RTOS Secure Sockets sont des valeurs négatives. Pour plus d'informations sur chaque code d'erreur, consultez la section Codes d'erreur Secure Sockets dans le manuel Secure Sockets API Reference.

Note

Si Free RTOS Secure Sockets API renvoie un code d'erreur, leMQTTbibliothèque de base, qui dépend de la bibliothèque Free RTOS Secure Sockets, renvoie le code d'erreurAWS_IOT_MQTT_SEND_ERROR.

Developer Support

La bibliothèque Free RTOS Secure Sockets inclut deux macros d'assistance pour la gestion des adresses IP :

SOCKETS_inet_addr_quick

Cette macro convertit une adresse IP qui est exprimée sous la forme de quatre octets numériques distincts en adresse IP exprimée sous la forme d'un nombre 32 bits dans l'ordre des octets de réseau.

SOCKETS_inet_ntoa

Cette macro convertit une adresse IP exprimée sous la forme d'un nombre 32 bits dans l'ordre des octets de réseau en chaîne de décimales dans la notation décimale séparée par des points.

Restrictions liées à l'utilisation

Seuls les TCP sockets sont pris en charge par la bibliothèque Free RTOS Secure Sockets. UDPles prises ne sont pas prises en charge.

APIsLes serveurs ne sont pas pris en charge par la bibliothèque Free RTOS Secure Sockets, à l'exception d'une implémentation IP légère (LWip) côté serveur. Bind API APIsLes clients sont pris en charge.

Initialisation

Pour utiliser la bibliothèque Free RTOS Secure Sockets, vous devez initialiser la bibliothèque et ses dépendances. Pour initialiser la bibliothèque Secure Sockets, utilisez le code suivant dans votre application :

BaseType_t xResult = pdPASS; xResult = SOCKETS_Init();

Les bibliothèques dépendantes doivent être initialisées séparément. Par exemple, si RTOS Free+ TCP est une dépendance, vous devez également l'invoquer FreeRTOS_IPInitdans votre application.

Référence API

Pour une API référence complète, consultez la section Secure Sockets API Reference.

Exemple d’utilisation

Le code suivant connecte un client à un serveur.

#include "aws_secure_sockets.h" #define configSERVER_ADDR0 127 #define configSERVER_ADDR1 0 #define configSERVER_ADDR2 0 #define configSERVER_ADDR3 1 #define configCLIENT_PORT 443 /* Rx and Tx timeouts are used to ensure the sockets do not wait too long for * missing data. */ static const TickType_t xReceiveTimeOut = pdMS_TO_TICKS( 2000 ); static const TickType_t xSendTimeOut = pdMS_TO_TICKS( 2000 ); /* PEM-encoded server certificate */ /* The certificate used below is one of the Amazon Root CAs.\ Change this to the certificate of your choice. */ static const char cTlsECHO_SERVER_CERTIFICATE_PEM[] = "-----BEGIN CERTIFICATE-----\n" "MIIBtjCCAVugAwIBAgITBmyf1XSXNmY/Owua2eiedgPySjAKBggqhkjOPQQDAjA5\n" "MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6b24g\n" "Um9vdCBDQSAzMB4XDTE1MDUyNjAwMDAwMFoXDTQwMDUyNjAwMDAwMFowOTELMAkG\n" "A1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJvb3Qg\n" "Q0EgMzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABCmXp8ZBf8ANm+gBG1bG8lKl\n" "ui2yEujSLtf6ycXYqm0fc4E7O5hrOXwzpcVOho6AF2hiRVd9RFgdszflZwjrZt6j\n" "QjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgGGMB0GA1UdDgQWBBSr\n" "ttvXBp43rDCGB5Fwx5zEGbF4wDAKBggqhkjOPQQDAgNJADBGAiEA4IWSoxe3jfkr\n" "BqWTrBqYaGFy+uGh0PsceGCmQ5nFuMQCIQCcAu/xlJyzlvnrxir4tiz+OpAUFteM\n" "YyRIHN8wfdVoOw==\n" "-----END CERTIFICATE-----\n"; static const uint32_t ulTlsECHO_SERVER_CERTIFICATE_LENGTH = sizeof( cTlsECHO_SERVER_CERTIFICATE_PEM ); void vConnectToServerWithSecureSocket( void ) { Socket_t xSocket; SocketsSockaddr_t xEchoServerAddress; BaseType_t xTransmitted, lStringLength; xEchoServerAddress.usPort = SOCKETS_htons( configCLIENT_PORT ); xEchoServerAddress.ulAddress = SOCKETS_inet_addr_quick( configSERVER_ADDR0, configSERVER_ADDR1, configSERVER_ADDR2, configSERVER_ADDR3 ); /* Create a TCP socket. */ xSocket = SOCKETS_Socket( SOCKETS_AF_INET, SOCKETS_SOCK_STREAM, SOCKETS_IPPROTO_TCP ); configASSERT( xSocket != SOCKETS_INVALID_SOCKET ); /* Set a timeout so a missing reply does not cause the task to block indefinitely. */ SOCKETS_SetSockOpt( xSocket, 0, SOCKETS_SO_RCVTIMEO, &xReceiveTimeOut, sizeof( xReceiveTimeOut ) ); SOCKETS_SetSockOpt( xSocket, 0, SOCKETS_SO_SNDTIMEO, &xSendTimeOut, sizeof( xSendTimeOut ) ); /* Set the socket to use TLS. */ SOCKETS_SetSockOpt( xSocket, 0, SOCKETS_SO_REQUIRE_TLS, NULL, ( size_t ) 0 ); SOCKETS_SetSockOpt( xSocket, 0, SOCKETS_SO_TRUSTED_SERVER_CERTIFICATE, cTlsECHO_SERVER_CERTIFICATE_PEM, ulTlsECHO_SERVER_CERTIFICATE_LENGTH ); if( SOCKETS_Connect( xSocket, &xEchoServerAddress, sizeof( xEchoServerAddress ) ) == 0 ) { /* Send the string to the socket. */ xTransmitted = SOCKETS_Send( xSocket, /* The socket receiving. */ ( void * )"some message", /* The data being sent. */ 12, /* The length of the data being sent. */ 0 ); /* No flags. */ if( xTransmitted < 0 ) { /* Error while sending data */ return; } SOCKETS_Shutdown( xSocket, SOCKETS_SHUT_RDWR ); } else { //failed to connect to server } SOCKETS_Close( xSocket ); }

Pour obtenir un exemple complet, consultez Démonstration du client Secure Sockets Echo.

Portage

Les Free RTOS Secure Sockets dépendent d'une pile TCP /IP et d'une TLS implémentation. En fonction de votre pile, pour effectuer le portage de la bibliothèque Secure Sockets, vous devez parfois inclure les éléments suivants :

Pour plus d'informations sur le portage, consultez la section Portage de la bibliothèque Secure Sockets dans le guide de RTOS portage gratuit.