Class to implement the subfunction TransmitCertificate (29 04) of UDS service Authentication as interface to application. This class implements a so called generic interface, where the application has means to handle one ore more certificateEvaluationId transferred certificates.
Permite que a aplicação receba e verifique certificados de diagnóstico no serviço UDS Authentication.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 82e724c2cab7ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Permite que a aplicação receba e verifique certificados de diagnóstico no serviço UDS Authentication.
A classe ara::diag::TransmitCertificate implementa a interface de aplicação para a subfunção UDS TransmitCertificate (0x29 0x04) do serviço Authentication[SWS_DM_01961]. Após a liberação via Offer(), a aplicação recebe dados de certificado transmitidos no método assíncrono Process() e inicia a verificação específica da aplicação [SWS_DM_01968]. Em caso de verificação bem-sucedida, o Diagnostic Management dispara uma resposta positiva de UDS com o parâmetro de retorno 0x13 (CertificateVerified), enquanto erros são respondidos como uma resposta negativa com o NRC correspondente. A instância é vinculada de forma fixa a uma interface de porta e não deve ser copiada nem movida.
Contexto
A classe ara::diag::TransmitCertificate[SWS_DM_01961] no cabeçalho ara/diag/transmit_certificate.h (AUTOSAR_AP_SWS_Diagnostics §8.26 «Header: ara/diag/transmit_certificate.h») representa a interface da aplicação Adaptive para a realização da subfunção UDS TransmitCertificate (0x29 0x04) do serviço Authentication. Como interface genérica, ela permite que a aplicação receba e processe um ou mais certificados transmitidos com base em um identificador de 16 bits (certificateEvaluationId).
Três componentes principais participam da interação:
O testador de diagnóstico externo, que envia a requisição UDS para transmissão de certificados ao veículo [SWS_DM_01968].
O Diagnostic Server (Diagnostic Management, DM) da Adaptive Platform, que filtra e encaminha requisições de diagnóstico recebidas e gera as respostas UDS finais [SWS_DM_01251], [SWS_DM_01969].
A aplicação Adaptive, que disponibiliza uma instância derivada de ara::diag::TransmitCertificate, realiza a verificação do certificado e retorna o resultado de forma assíncrona ao servidor [SWS_DM_01968].
Instâncias de ara::diag::TransmitCertificate são criadas através do construtor mediante especificação de um ara::core::InstanceSpecifier, bem como do modo de concorrência ConcurrencyType[SWS_DM_01962]. O InstanceSpecifier deve referenciar no manifesto um PortPrototype tipificado por um DiagnosticTransmitCertificateInterface[SWS_DM_01962]. Se esse mapeamento falhar ou se o identificador de instância for utilizado múltiplas vezes no processo atual, ocorrem violações de tempo de execução como InstanceSpecifierMappingIntegrityViolation, PortInterfaceMappingViolation, ProcessMappingViolation ou InstanceSpecifierAlreadyInUseViolation[SWS_DM_01962].
A classe está sujeita a regras estritas de posse e instanciação: um manipulador de autenticação é projetado como uma instância única, não copiável e não movível. Consequentemente, o construtor de cópia [SWS_DM_01964], o operador de atribuição por cópia [SWS_DM_01966], bem como o construtor de movimento [SWS_DM_01963] e o operador de atribuição por movimento [SWS_DM_01965] estão explicitamente excluídos (=delete).
O próprio construtor é especificado como seguro para threads e seguro contra exceções [SWS_DM_01962]. A liberação ocorre através do destrutor padrão virtual [SWS_DM_01967]. Se o método de execução real Process precisa ser implementado de forma segura para threads depende do concurrencyType selecionado (kConcurrent ou kNotConcurrent) [SWS_DM_01962], [SWS_DM_01968].
Caminho de utilização
O fluxo regular abrange o registro do manipulador, o processamento de certificados recebidos e o cancelamento posterior de registro:
Oferecer serviço (Offer): a aplicação chama Offer() para sinalizar ao Diagnostic Management que requisições para a interface configurada podem ser encaminhadas a este manipulador [SWS_DM_01969].
Receber requisição (Process): se uma requisição UDS da subfunção TransmitCertificate chegar ao Diagnostic Server, este encaminha os dados para o método puramente virtual Process() da aplicação [SWS_DM_01968]. O método recebe o identificador de 16 bits certificateEvaluationId, os dados brutos do certificado como ara::core::Span<ara::core::Byte const>, metadados (metaInfo) e um cancellationHandler[SWS_DM_01968].
Avaliação e ação: como a AUTOSAR não prescreve uma semântica fixa para os certificados, a verificação e a derivação das medidas necessárias cabem inteiramente à aplicação [SWS_DM_01968]. Interpretação: a aplicação tipicamente deve verificar criptograficamente o certificado transmitido ou utilizá-lo para a atualização de um armazenamento interno de chaves. Pergunta Q-34844f9257d074c6 (aberta)
Encerrar serviço (StopOffer): se o manipulador não deve mais receber requisições adicionais, a aplicação encerra o encaminhamento chamando StopOffer()[SWS_DM_01970].
Estados de erro podem ocorrer em diferentes fases do ciclo de vida:
Oferta já ativa: se Offer() for chamado embora o serviço já esteja sendo oferecido ativamente para esta instância, a chamada falha e retorna no ara::core::Result<void> o código de erro DiagOfferErrc::kAlreadyOffered com semântica de reversão [SWS_DM_01969]. Offer() e StopOffer() não são seguros para threads e não devem ser chamados concorrentemente [SWS_DM_01969], [SWS_DM_01970].
Cancelamento de conversações em andamento: durante o processamento assíncrono, a aplicação pode consultar o status via cancellationHandler.IsCanceled() para verificar se a conversação de diagnóstico foi cancelada [SWS_DM_01968]. Adicionalmente, pode ser registrada via cancellationHandler.SetNotifier(...) uma função de callback que é notificada imediatamente em caso de cancelamento [SWS_DM_01968].
Este guia baseia-se na especificação AUTOSAR Adaptive Platform R25-11 (módulo diag) e foi curado com o auxílio de IA.
This method is used to process certificates send by a diagnostic tester, via the UDS subfunction TransmitCertificate inside the application. There is no specific semantics for the certificate and it is left to the application to process the received certificate and derive the needed actions.
This Offer will enable the DM to forward request messages to this handler.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: db62dd9c27e2ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Por meio do método Offer, uma Adaptive Application ativa o encaminhamento de requisições de diagnóstico pelo Diagnostic Management (DM) para o handler responsável da classe ara::diag::TransmitCertificate[SWS_DM_01969]. A chamada ocorre de forma síncrona e sem parâmetros; a interface é definida como segura contra exceções (noexcept) [SWS_DM_01969]. Como tipo de retorno serve ara::core::Result<void>, com o qual o sucesso do registro ou um estado de erro é transmitido ao chamador [SWS_DM_01969].
Se a função já tiver sido chamada anteriormente para a respectiva instância do handler, uma nova chamada falhará e retornará o erro específico DiagOfferErrc::kAlreadyOffered com semântica de rollback [SWS_DM_01969], o qual corresponde ao valor de erro padronizado em DiagErrc[SWS_DM_00514]. Como o método é explicitamente especificado como não thread-safe [SWS_DM_01969], acessos paralelos na mesma instância devem ser evitados (interpretação: a proteção contra chamadas concorrentes incumbe ao software de aplicação). Pergunta Q-b44b11a0a2dcb2b4 (aberta)
O padrão funcional de Offer segue o conceito uniforme de disponibilização de handlers de diagnóstico, como também é aplicado em ara::diag::Authentication::Offer[SWS_DM_01130], ara::diag::CommunicationControl::Offer[SWS_DM_00809] ou ara::diag::GenericRoutine::Offer[SWS_DM_00557]. A AUTOSAR esclarece que, apesar da semelhança nominal com ara::com, trata-se de uma implementação de diagnóstico independente (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»). Antes da disponibilização por Offer, o DM não encaminha requisições para o handler, de forma análoga aos serviços DoIP, que são considerados não prontos antes da chamada [SWS_DM_01525].
Esta nota de uso foi gerada automaticamente e baseia-se nas especificações do release R25-11.
This method is used to process certificates send by a diagnostic tester, via the UDS subfunction TransmitCertificate inside the application. There is no specific semantics for the certificate and it is left to the application to process the received certificate and derive the needed actions.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: d261181b4bb6Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método Process da classe de interface ara::diag::TransmitCertificate serve para o processamento interno na aplicação de certificados que um testador de diagnóstico transmite no âmbito do serviço UDS 0x29 (Authentication) por meio da subfunção TransmitCertificate (0x04) [SWS_DM_01968], AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.11.5 «Service 0x29 – transmitCertificate (0x04)». Como a AUTOSAR não define uma semântica específica para o certificado, a verificação do conteúdo e a derivação das ações necessárias incumbem inteiramente à aplicação [SWS_DM_01968].
O método é chamado de forma assíncrona e recebe os seguintes parâmetros [SWS_DM_01968]:
certificateEvaluationId: ID de avaliação de 16 bits da mensagem de requisição UDS para identificação da avaliação do certificado [SWS_DM_01968], [SWS_DM_01247].
certificateData: os dados do certificado transmitidos pelo testador como ara::core::Span<ara::core::Byte const>[SWS_DM_01968].
metaInfo: metainformações sobre a requisição de diagnóstico [SWS_DM_01968].
cancellationHandler: permite consultar o status de cancelamento via cancellationHandler.IsCanceled(), bem como registrar uma notificação via cancellationHandler.SetNotifier() em caso de interrupção prematura da conversação de diagnóstico [SWS_DM_01968].
O retorno ocorre de forma assíncrona como ara::core::Future<void>[SWS_DM_01968]. Se o processamento falhar, um Negative Response Code (NRC) aplicável conforme a ISO 14229-1 deve ser disponibilizado por meio de DiagUdsNrcErrc[SWS_DM_01968]. A função é declarada como noexcept e é segura contra exceções (exception safe) [SWS_DM_01968].
A segurança de threads é condicional (conditional): ela orienta-se pelo ConcurrencyType passado para o construtor de ara::diag::TransmitCertificate[SWS_DM_01968]. Antes do encaminhamento, o gerenciador de diagnóstico valida a requisição com base na certificateEvaluationId[SWS_DM_01247].
Esta nota de uso foi gerada automaticamente com base na especificação AUTOSAR R25-11.
conditional whether the function has to be implemented thread safe or non-thread safe is determined by the ConcurrencyType given in the constructor
Parameter (in)
Parameter
Beschreibung
certificateEvaluationId
Represents the 16bit certificate evaluation ID as part of the UDS request message
certificateData
Certificate to be verified, transmitted by the tester
metaInfo
MetaInfo of the request.
cancellationHandler
This parameter is used to • Query the current cancellation status by calling cancellationHandler.IsCanceled. Returns true in case, the current conversation has been cancelled and false otherwise. • Register a notifier function by calling cancellationHandler.SetNotifier. The registered notifier is called if the current conversation is cancelled.
This StopOffer will disable the forwarding of request messages from DM.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 7da07a83c1d7ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método StopOffer da classe ara::diag::TransmitCertificate ([SWS_DM_01970]) encerra a disponibilização do serviço de transmissão de certificados para o Diagnostic Management (DM). Por meio da chamada, o encaminhamento de mensagens de requisição de diagnóstico recebidas do DM para este handler é desativado ([SWS_DM_01970]).
Utilização e semântica
A chamada ocorre sem parâmetros por meio da assinatura void StopOffer() noexcept; do cabeçalho ara/diag/transmit_certificate.h ([SWS_DM_01970]). A função não fornece valor de retorno e é especificada como noexcept, bem como exception safe ([SWS_DM_01970]), de modo que garante não lançar exceções.
Simultaneidade e restrições
O método é explicitamente especificado como not thread-safe ([SWS_DM_01970]). Os chamadores devem, portanto, assegurar que chamadas concorrentes na mesma instância de ara::diag::TransmitCertificate sejam sincronizadas por mecanismos externos. Interpretação: antes da destruição de uma instância de serviço ou em caso de desativação temporária, supõe-se que StopOffer seja chamado para impedir a chegada de novas requisições durante a mudança de estado. Pergunta Q-9ab97301565c5bf9 (aberta)
Interação
O conceito corresponde ao padrão padronizado do DM para a desativação do encaminhamento de mensagens, como também está definido em interfaces correlatas como [SWS_DM_00767] (SecurityAccess), [SWS_DM_00810] (CommunicationControl) ou [SWS_DM_01017] (EcuResetRequest). Embora esta implementação de diagnóstico específica do fabricante compartilhe a nomenclatura com o framework de comunicação, ela deve ser diferenciada de ara::com (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»). O elemento serve para o atendimento do upstream requirement RS_Diag_04251, o qual também serve de base para a interface de autenticação (AUTOSAR_AP_SWS_Diagnostics §8.3.1.1.3.2 «StopOffer»; [SWS_DM_01131]).
Este texto foi criado por um sistema de IA com base nos documentos de especificação.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: b553bcd9da3eProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O construtor inicializa uma instância da classe ara::diag::TransmitCertificate para o processamento de certificados no âmbito do serviço UDS 0x29 (subfunção TransmitCertificate) [SWS_DM_01962].
usar
A chamada ocorre de forma síncrona e é especificada como noexcept bem como exception safe[SWS_DM_01962]. Na chamada, são passados dois parâmetros:
specifier: Um ara::core::InstanceSpecifier que deve referenciar um PortPrototype tipificado através de um DiagnosticAuthenticationPortMapping para um DiagnosticTransmitCertificateInterface no manifesto [SWS_DM_01962].
concurrencyType: Determina através de kConcurrent ou kNotConcurrent se a interface permite chamadas concorrentes do método virtual Process ou se deve ser processada sequencialmente [SWS_DM_01962], [SWS_DM_01968].
Tratamento de erros e condições de contorno
A instanciação do objeto é thread-safe [SWS_DM_01962]. Como uma instância de autenticação deve ser unívoca, os construtores de cópia e de movimentação, bem como os operadores de atribuição, foram explicitamente excluídos [SWS_DM_01963], [SWS_DM_01964], [SWS_DM_01965], [SWS_DM_01966]. Em caso de configurações incorretas no manifesto ou uso duplicado de um identificador, são reportadas violations (como InstanceSpecifierMappingIntegrityViolation, PortInterfaceMappingViolation, ProcessMappingViolation ou InstanceSpecifierAlreadyInUseViolation) [SWS_DM_01962]. Como o construtor não lança exceptions, presume-se que essas mensagens sejam sinalizadas por meio do relatório de tempo de execução do framework ara. Pergunta Q-140f1e794355ad96 (aberta)
Interação
Após a construção, a instância deve ser disponibilizada por meio de Offer() para que o Diagnostic Management Daemon encaminhe requisições [SWS_DM_01969]. Em caso de processamento bem-sucedido via Process(), o servidor responde positivamente com o parâmetro CertificateVerified (0x13) [SWS_DM_01251], ao passo que erros levam a respostas UDS negativas [SWS_DM_01249]. O encaminhamento é encerrado com StopOffer()[SWS_DM_01970].
Este texto foi gerado por uma IA e serve como orientação. Apenas as especificações oficiais da AUTOSAR são vinculativas.
InstanceSpeci- InstanceSpecifier either cannot be resolved in the model in the fierMappingIn- context of your executable, or it refers to a model element other tegrityViolation than a PortPrototype. PortInterfaceMap- A PortPrototype that is referenced by a pingViolation DiagnosticAuthenticationPortMapping needs to be typed by a DiagnosticTransmitCertificateInterface. ProcessMappingVio- Matching InstanceRef exists, but no matching (modelled) Process lation found that matches the (runtime) process. InstanceSpecifier- Violation message that is sent in case a constructor in the ara AlreadyInUseViola- framework was called with an InstanceSpecifier already in use in tion this process.
Parameter (in)
Parameter
Beschreibung
specifier
InstanceSpecifier to a PortPrototype of a DiagnosticTransmitCertificateInterface service instance in the manifest.
concurrencyType
Specifies if the interface is implemented as thread safe ( kConcurrent) or non-thread safe (kNotConcurrent).
Request a governed re-review of this record. The record is not changed immediately.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão