As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Fazer portabilidade da Network Transport Interface
Integração da biblioteca TLS
Para autenticação Transport Layer Security (TLS), use a pilha TLS de sua preferência. Recomendamos usar o Mbed TLS
Independentemente da implementação de TLS usada pelo seu dispositivo, você deve implementar os hooks de transporte subjacentes para a pilha TLS com a pilha TCP/IP. Eles devem oferecer suporte aos pacotes de criptografia TLS que são compatíveis com o AWS IoT.
Fazer portabilidade da biblioteca Network Transport Interface
Você deve implementar uma interface de transporte de rede para usar coreMQTT
Pré-requisitos
Para fazer a portabilidade desse teste, é necessário:
Um projeto com um sistema de compilação que pode criar o FreeRTOS com uma porta validada do kernel do FreeRTOS.
Implementação funcional de drivers de rede.
Portabilidade
Adicione Freertos-Libraries-Integration-Tests
como um submódulo em seu projeto. Não importa onde o submódulo será colocado no projeto, desde que ele possa ser compilado. Copie
config_template/test_execution_config_template.h
econfig_template/test_param_config_template.h
para um local do projeto no caminho de compilação e renomeie-os paratest_execution_config.h
etest_param_config.h
.Inclua os arquivos relevantes no sistema de compilação. Se estiver usando
CMake
,qualification_test.cmake
esrc/transport_interface_tests.cmake
são usados para incluir os arquivos relevantes.Implemente as seguintes funções em um local apropriado do projeto:
-
R
network connect function
: a assinatura é definida porNetworkConnectFunc
emsrc/common/network_connection.h
. Essa função usa um ponteiro para o contexto da rede, um ponteiro para as informações do host e um ponteiro para as credenciais da rede. Ela estabelece uma conexão com o servidor especificado nas informações do host com as credenciais de rede fornecidas.R
network disconnect function
: a assinatura é definida porNetworkDisconnectFunc
emsrc/common/network_connection.h
. Essa função usa um ponteiro para um contexto de rede. Ela desconecta uma conexão previamente estabelecida armazenada no contexto da rede.setupTransportInterfaceTestParam()
: esta API é definida emsrc/transport_interface/transport_interface_tests.h
. A implementação deve ter exatamente o mesmo nome e assinatura definidos emtransport_interface_tests.h
. Essa função recebe um ponteiro para uma estrutura TransportInterfaceTestParam. Ela preencherá os campos na estrutura TransportInterfaceTestParam que é usada pelo teste da interface de transporte.
Implemente UNITY_OUTPUT_CHAR para que os logs de saída do teste não intercalem com os logs do dispositivo.
Chame
runQualificationTest()
do aplicativo. O hardware do dispositivo deve ser inicializado corretamente e a rede deve estar conectada antes da chamada.
Gerenciamento de credenciais (chave gerada no dispositivo)
Quando FORCE_GENERATE_NEW_KEY_PAIR em test_param_config.h
é definido como 1, o aplicativo do dispositivo gera um novo par de chaves no dispositivo e gera a chave pública. O aplicativo do dispositivo usa ECHO_SERVER_ROOT_CA e TRANSPORT_CLIENT_CERTIFICATE como certificado da CA raiz do servidor echo e do cliente ao estabelecer uma conexão TLS com o servidor echo. O IDT define esses parâmetros durante a execução da qualificação.
Gerenciamento de credenciais (chave de importação)
O aplicativo do dispositivo usa ECHO_SERVER_ROOT_CA, TRANSPORT_CLIENT_CERTIFICATE e TRANSPORT_CLIENT_PRIVATE_KEY em test_param_config.h
como certificado da CA raiz do servidor echo, certificado de cliente e chave privada de cliente ao estabelecer uma conexão TLS com o servidor echo. O IDT define esses parâmetros durante a execução da qualificação.
Testes
Esta seção descreve como você pode testar localmente a interface de transporte com os testes de qualificação. Detalhes adicionais podem ser encontrados no arquivo README.md fornecido na seção transport_interface
Como alternativa, você também pode usar o IDT para automatizar a execução. Consulte o AWS IoT Device Tester para o FreeRTOS no Guia do usuário do FreeRTOS para obter detalhes.
Habilitação do teste
Abra test_execution_config.h
e defina TRANSPORT_INTERFACE_TEST_ENABLED como 1.
Configuração do servidor echo para testes
É necessário ter um servidor echo acessível a partir do dispositivo que executa os testes para fazer testes locais. O servidor echo deve oferecer suporte ao TLS se a implementação da interface de transporte oferecer suporte ao TLS. Se você ainda não tem um, o repositório GitHub Freertos-libraries-integration-tests
Configuração do projeto para teste
Em test_param_config.h
, atualize ECHO_SERVER_ENDPOINT e ECHO_SERVER_PORT para a configuração do endpoint e do servidor na etapa anterior.
Credenciais de configuração (chave gerada no dispositivo)
Defina ECHO_SERVER_ROOT_CA como o certificado do servidor echo.
Defina FORCE_GENERATE_NEW_KEY_PAIR como 1 para gerar um par de chaves e obter a chave pública.
Defina FORCE_GENERATE_NEW_KEY_PAIR como 0 novamente após a geração da chave.
Use a chave pública e do servidor e o certificado para gerar o certificado do cliente.
Defina TRANSPORT_CLIENT_CERTIFICATE como o certificado de cliente gerado.
Credenciais de configuração (chave de importação)
Defina ECHO_SERVER_ROOT_CA como o certificado do servidor echo.
Defina TRANSPORT_CLIENT_CERTIFICATE como o certificado de cliente pré-gerado.
Defina TRANSPORT_CLIENT_PRIVATE_KEY como a chave privada pré-gerada do cliente.
Compilação e instalação do aplicativo
Compile e instale o aplicativo usando a cadeia de ferramentas de sua escolha. Quando runQualificationTest()
for invocado, os testes da interface de transporte serão executados. Os resultados do teste são emitidos para a porta serial.
nota
Para qualificar oficialmente um dispositivo para o FreeRTOS, você deve validar o código-fonte transferido do dispositivo nos grupos de teste OTA PAL e OTA E2E com o AWS IoT Device Tester. Siga as instruções em Usar o AWS IoT Device Tester Device Tester para o FreeRTOS no Guia do usuário do FreeRTOS para configurar o AWS IoT Device Tester para validação de portabilidade. Para testar a portabilidade de uma biblioteca específica, o grupo de testes correto deve ser habilitado no arquivo device.json
na pasta do AWS IoT Device Tester configs
.