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 a la aplicación la recepción y comprobación de certificados de diagnóstico en el servicio UDS Authentication.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 82e724c2cab7ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Permite a la aplicación la recepción y comprobación de certificados de diagnóstico en el servicio UDS Authentication.
La clase ara::diag::TransmitCertificate implementa la interfaz de aplicación para la subfunción UDS TransmitCertificate (0x29 0x04) del servicio Authentication[SWS_DM_01961]. Tras la habilitación mediante Offer(), la aplicación recibe los datos de certificado transmitidos en el método asíncrono Process() e inicia la verificación específica de la aplicación [SWS_DM_01968]. Si la comprobación es correcta, Diagnostic Management emite una respuesta UDS positiva con el parámetro de retorno 0x13 (CertificateVerified), mientras que los errores se responden como respuesta negativa con el NRC correspondiente. La instancia está vinculada de forma fija a una interfaz de puerto y no debe copiarse ni moverse.
Contexto
La clase ara::diag::TransmitCertificate[SWS_DM_01961] en el encabezado ara/diag/transmit_certificate.h (AUTOSAR_AP_SWS_Diagnostics §8.26 «Header: ara/diag/transmit_certificate.h») representa la interfaz de la aplicación Adaptive para la realización de la subfunción UDS TransmitCertificate (0x29 0x04) del servicio Authentication. Como interfaz genérica, permite a la aplicación recibir y procesar uno o más certificados transmitidos a partir de un identificador de 16 bits (certificateEvaluationId).
En la interacción intervienen tres componentes principales:
El tester de diagnóstico externo, que envía la petición UDS para la transmisión de certificados al vehículo [SWS_DM_01968].
El Diagnostic Server (Diagnostic Management, DM) de la Adaptive Platform, que filtra y reenvía las peticiones de diagnóstico entrantes y genera las respuestas UDS finales [SWS_DM_01251], [SWS_DM_01969].
La aplicación Adaptive, que proporciona una instancia derivada de ara::diag::TransmitCertificate, realiza la comprobación del certificado y devuelve el resultado de forma asíncrona al servidor [SWS_DM_01968].
Las instancias de ara::diag::TransmitCertificate se crean mediante el constructor especificando un ara::core::InstanceSpecifier así como el modo de concurrencia ConcurrencyType[SWS_DM_01962]. En el manifiesto, el InstanceSpecifier debe hacer referencia a un PortPrototype que esté tipificado por un DiagnosticTransmitCertificateInterface[SWS_DM_01962]. Si esta asignación falla o el identificador de instancia se utiliza varias veces en el proceso actual, se producen infracciones en tiempo de ejecución como InstanceSpecifierMappingIntegrityViolation, PortInterfaceMappingViolation, ProcessMappingViolation o InstanceSpecifierAlreadyInUseViolation[SWS_DM_01962].
La clase está sujeta a estrictas reglas de propiedad e instanciación: un manejador de autenticación está diseñado como una instancia única, no copiable y no movible. En consecuencia, el constructor de copia [SWS_DM_01964], el operador de asignación por copia [SWS_DM_01966], así como el constructor de movimiento [SWS_DM_01963] y el operador de asignación por movimiento [SWS_DM_01965] están explícitamente eliminados (=delete).
El propio constructor está especificado como seguro para subprocesos y seguro contra excepciones [SWS_DM_01962]. La liberación se realiza mediante el destructor virtual por defecto [SWS_DM_01967]. Si el método de ejecución propiamente dicho Process debe implementarse de forma segura para subprocesos depende del concurrencyType seleccionado (kConcurrent o kNotConcurrent) [SWS_DM_01962], [SWS_DM_01968].
Ruta de uso
El flujo regular comprende el registro del manejador, el procesamiento de los certificados entrantes y la posterior cancelación del registro:
Ofrecer servicio (Offer): la aplicación invoca Offer() para indicar a Diagnostic Management que las peticiones para la interfaz configurada pueden reenviarse a este manejador [SWS_DM_01969].
Recibir petición (Process): si llega al Diagnostic Server una petición UDS de la subfunción TransmitCertificate, este reenvía los datos al método puramente virtual Process() de la aplicación [SWS_DM_01968]. El método recibe el identificador de 16 bits certificateEvaluationId, los datos sin procesar del certificado como ara::core::Span<ara::core::Byte const>, metadatos (metaInfo), así como un cancellationHandler[SWS_DM_01968].
Evaluación y acción: dado que AUTOSAR no prescribe una semántica fija para los certificados, la verificación y la adopción de las medidas necesarias corresponden por completo a la aplicación [SWS_DM_01968]. Interpretación: la aplicación típicamente debería verificar el certificado transmitido de forma criptográfica o utilizarlo para actualizar un almacén de claves interno. Pregunta Q-34844f9257d074c6 (abierta)
Finalizar servicio (StopOffer): si el manejador no debe recibir más peticiones, la aplicación finaliza el reenvío mediante la invocación de StopOffer()[SWS_DM_01970].
Los estados de error pueden producirse en diferentes fases del ciclo de vida:
Oferta ya activa: si se invoca Offer() a pesar de que el servicio ya se ofrece activamente para esta instancia, la invocación falla y devuelve en ara::core::Result<void> el código de error DiagOfferErrc::kAlreadyOffered con semántica de reversión [SWS_DM_01969]. Offer() y StopOffer() no son seguros para subprocesos y no deben invocarse concurrentemente [SWS_DM_01969], [SWS_DM_01970].
Cancelación de conversaciones en curso: durante el procesamiento asíncrono, la aplicación puede consultar el estado a través de cancellationHandler.IsCanceled() para determinar si la conversación de diagnóstico se ha cancelado [SWS_DM_01968]. De manera complementaria, mediante cancellationHandler.SetNotifier(...) se puede registrar una función de retrollamada a la que se notifica de inmediato en caso de cancelación [SWS_DM_01968].
Esta guía se basa en la especificación AUTOSAR Adaptive Platform R25-11 (módulo diag) y ha sido elaborada con la ayuda 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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: db62dd9c27e2ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
A través del método Offer, una Adaptive Application activa el reenvío de solicitudes de diagnóstico por parte del Diagnostic Management (DM) al handler competente de la clase ara::diag::TransmitCertificate[SWS_DM_01969]. La llamada se realiza de forma síncrona y sin parámetros; la interfaz está definida como segura frente a excepciones (noexcept) [SWS_DM_01969]. Como tipo de retorno sirve ara::core::Result<void>, con lo cual se transmite al emisor de la llamada el éxito del registro o un estado de error [SWS_DM_01969].
Si la función ya se había invocado previamente para la instancia del handler en cuestión, una nueva llamada falla y devuelve el error específico DiagOfferErrc::kAlreadyOffered con semántica de rollback [SWS_DM_01969], que corresponde al valor de error estandarizado en DiagErrc[SWS_DM_00514]. Dado que el método está especificado explícitamente como no seguro para subprocesos [SWS_DM_01969], deben evitarse los accesos paralelos sobre la misma instancia (interpretación: la protección contra llamadas concurrentes recae en el software de aplicación). Pregunta Q-b44b11a0a2dcb2b4 (abierta)
El patrón funcional de Offer sigue el concepto uniforme de puesta a disposición de handlers de diagnóstico, tal como se aplica también en ara::diag::Authentication::Offer[SWS_DM_01130], ara::diag::CommunicationControl::Offer[SWS_DM_00809] o ara::diag::GenericRoutine::Offer[SWS_DM_00557]. AUTOSAR aclara que, a pesar de la similitud en la denominación con ara::com, se trata de una implementación de diagnóstico independiente (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»). Antes de la puesta a disposición mediante Offer, el DM no reenvía solicitudes al handler, de forma análoga a los servicios DoIP, que se consideran no listos antes de la llamada [SWS_DM_01525].
Esta nota de uso se generó de manera automatizada y se basa en las especificaciones del 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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: d261181b4bb6Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método Process de la clase de interfaz ara::diag::TransmitCertificate sirve para el procesamiento interno en la aplicación de certificados que un tester de diagnóstico transmite en el marco del servicio UDS 0x29 (Authentication) mediante la subfunción TransmitCertificate (0x04) [SWS_DM_01968], AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.11.5 «Service 0x29 – transmitCertificate (0x04)». Dado que AUTOSAR no predetermina una semántica específica para el certificado, la comprobación del contenido y la derivación de las acciones requeridas recaen enteramente en la aplicación [SWS_DM_01968].
El método se invoca de forma asíncrona y recibe los siguientes parámetros [SWS_DM_01968]:
certificateEvaluationId: ID de evaluación de 16 bits del mensaje de solicitud UDS para la identificación de la evaluación del certificado [SWS_DM_01968], [SWS_DM_01247].
certificateData: los datos del certificado transmitidos por el tester como ara::core::Span<ara::core::Byte const>[SWS_DM_01968].
metaInfo: metainformación sobre la solicitud de diagnóstico [SWS_DM_01968].
cancellationHandler: permite consultar el estado de cancelación mediante cancellationHandler.IsCanceled(), así como registrar una notificación mediante cancellationHandler.SetNotifier() en caso de cancelación prematura de la conversación de diagnóstico [SWS_DM_01968].
El retorno se realiza de forma asíncrona como ara::core::Future<void>[SWS_DM_01968]. Si el procesamiento falla, se debe proporcionar un Negative Response Code (NRC) correspondiente según ISO 14229-1 a través de DiagUdsNrcErrc[SWS_DM_01968]. La función está declarada como noexcept y es segura frente a excepciones (exception safe) [SWS_DM_01968].
La seguridad para subprocesos es condicional (conditional): se rige por el ConcurrencyType transferido al constructor de ara::diag::TransmitCertificate[SWS_DM_01968]. Antes del reenvío, el administrador de diagnóstico valida la solicitud en función de certificateEvaluationId[SWS_DM_01247].
Esta nota de uso se generó automáticamente a partir de la especificación 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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 7da07a83c1d7ProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método StopOffer de la clase ara::diag::TransmitCertificate ([SWS_DM_01970]) finaliza la puesta a disposición del servicio de transferencia de certificados para el Diagnostic Management (DM). Mediante la llamada, se desactiva el reenvío de mensajes de solicitud de diagnóstico entrantes desde el DM a este handler ([SWS_DM_01970]).
Uso y semántica
La llamada se realiza sin parámetros mediante la firma void StopOffer() noexcept; del encabezado ara/diag/transmit_certificate.h ([SWS_DM_01970]). La función no devuelve ningún valor de retorno y está especificada como noexcept y exception safe ([SWS_DM_01970]), de modo que garantiza no lanzar excepciones.
Concurrencia y restricciones
El método está especificado explícitamente como not thread-safe ([SWS_DM_01970]). Por lo tanto, los emisores de llamadas deben asegurarse de que las llamadas concurrentes sobre la misma instancia de ara::diag::TransmitCertificate se sincronicen mediante mecanismos externos. Interpretación: es probable que se llame a StopOffer antes de la destrucción de una instancia de servicio o en caso de desactivación temporal para evitar la llegada de nuevas solicitudes durante el cambio de estado. Pregunta Q-9ab97301565c5bf9 (abierta)
Interacción
El concepto responde al patrón estandarizado del DM para desactivar el reenvío de mensajes, tal como se define también en interfaces afines como [SWS_DM_00767] (SecurityAccess), [SWS_DM_00810] (CommunicationControl) o [SWS_DM_01017] (EcuResetRequest). Si bien esta implementación de diagnóstico específica del fabricante comparte la nomenclatura con el framework de comunicación, debe distinguirse de ara::com (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»). El elemento sirve para dar cumplimiento al upstream requirement RS_Diag_04251, en el que también se fundamenta la interfaz de autenticación (AUTOSAR_AP_SWS_Diagnostics §8.3.1.1.3.2 «StopOffer»; [SWS_DM_01131]).
Este texto ha sido elaborado por un sistema de IA a partir de los documentos de especificación.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: b553bcd9da3eProcedenciaPreguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El constructor inicializa una instancia de la clase ara::diag::TransmitCertificate para el procesamiento de certificados en el marco del servicio UDS 0x29 (subfunción TransmitCertificate) [SWS_DM_01962].
usar
La llamada se realiza de forma síncrona y está especificada como noexcept, así como exception safe[SWS_DM_01962]. En la llamada se transfieren dos parámetros:
specifier: un ara::core::InstanceSpecifier que debe hacer referencia a un PortPrototype, el cual está tipificado mediante un DiagnosticAuthenticationPortMapping hacia un DiagnosticTransmitCertificateInterface en el manifiesto [SWS_DM_01962].
concurrencyType: determina mediante kConcurrent o kNotConcurrent si la interfaz permite llamadas concurrentes del método virtual Process o si debe procesarse secuencialmente [SWS_DM_01962], [SWS_DM_01968].
Tratamiento de errores y condiciones límite
La creación del objeto es thread-safe [SWS_DM_01962]. Dado que una instancia de autenticación debe ser unívoca, los constructores de copia y movimiento, así como los operadores de asignación, están explícitamente eliminados [SWS_DM_01963], [SWS_DM_01964], [SWS_DM_01965], [SWS_DM_01966]. En caso de configuraciones erróneas en el manifiesto o de uso duplicado de un identificador se notifican violaciones (tales como InstanceSpecifierMappingIntegrityViolation, PortInterfaceMappingViolation, ProcessMappingViolation o InstanceSpecifierAlreadyInUseViolation) [SWS_DM_01962]. Dado que el constructor no lanza excepciones, estas notificaciones deberían señalizarse a través del reporte en tiempo de ejecución del framework ara. Pregunta Q-140f1e794355ad96 (abierta)
Interacción
Tras la construcción, la instancia debe habilitarse mediante Offer() para que el demonio del Diagnostic Management reenvíe las solicitudes [SWS_DM_01969]. En caso de procesamiento correcto mediante Process(), el servidor responde positivamente con el parámetro CertificateVerified (0x13) [SWS_DM_01251], mientras que los errores dan lugar a respuestas negativas de UDS [SWS_DM_01249]. Con StopOffer() se finaliza el reenvío [SWS_DM_01970].
Este texto fue generado por una IA y sirve como guía orientativa. Únicamente las especificaciones oficiales de AUTOSAR son vinculantes.
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 en alemán