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.
Позволяет приложению принимать и проверять диагностические сертификаты в UDS-службе Authentication.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 82e724c2cab7ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Позволяет приложению принимать и проверять диагностические сертификаты в UDS-службе Authentication.
Класс ara::diag::TransmitCertificate реализует интерфейс приложения для подфункции UDS TransmitCertificate (0x29 0x04) службы Authentication[SWS_DM_01961]. После предоставления через Offer() приложение принимает переданные данные сертификата в асинхронном методе Process() и инициирует проверку, специфичную для приложения [SWS_DM_01968]. При успешной проверке Diagnostic Management инициирует положительный ответ UDS с возвращаемым параметром 0x13 (CertificateVerified), тогда как при ошибках отправляется отрицательный ответ с соответствующим NRC. Экземпляр жестко привязан к интерфейсу порта и не подлежит ни копированию, ни перемещению.
Контекст
Класс ara::diag::TransmitCertificate[SWS_DM_01961] в заголовке ara/diag/transmit_certificate.h (AUTOSAR_AP_SWS_Diagnostics §8.26 «Header: ara/diag/transmit_certificate.h») представляет собой интерфейс адаптивного приложения для реализации подфункции UDS TransmitCertificate (0x29 0x04) службы Authentication. Будучи универсальным интерфейсом, он позволяет приложению принимать и обрабатывать один или несколько переданных сертификатов на основе 16-битного идентификатора (certificateEvaluationId).
Во взаимодействии участвуют три основных компонента:
Внешний диагностический тестер, отправляющий автомобилю UDS-запрос на передачу сертификата [SWS_DM_01968].
Diagnostic Server (Diagnostic Management, DM) платформы Adaptive Platform, который фильтрует и перенаправляет входящие диагностические запросы, а также формирует итоговые UDS-ответы [SWS_DM_01251], [SWS_DM_01969].
Адаптивное приложение, предоставляющее производный от ara::diag::TransmitCertificate экземпляр, выполняющий проверку сертификата и асинхронно возвращающий результат серверу [SWS_DM_01968].
Экземпляры ara::diag::TransmitCertificate создаются через конструктор с указанием ara::core::InstanceSpecifier, а также режима параллелизма ConcurrencyType[SWS_DM_01962]. InstanceSpecifier должен указывать в манифесте на PortPrototype, типизированный через DiagnosticTransmitCertificateInterface[SWS_DM_01962]. Если это сопоставление завершается ошибкой или идентификатор экземпляра используется в текущем процессе многократно, возникают нарушения времени выполнения, такие как InstanceSpecifierMappingIntegrityViolation, PortInterfaceMappingViolation, ProcessMappingViolation или InstanceSpecifierAlreadyInUseViolation[SWS_DM_01962].
Класс подчиняется строгим правилам владения и инстанцирования: обработчик аутентификации спроектирован как уникальный, некопируемый и неперемещаемый экземпляр. Соответственно, конструктор копирования [SWS_DM_01964], оператор присваивания с копированием [SWS_DM_01966], а также конструктор перемещения [SWS_DM_01963] и оператор присваивания с перемещением [SWS_DM_01965] явно удалены (=delete).
Сам конструктор специфицирован как потокобезопасный и исключающе-безопасный [SWS_DM_01962]. Освобождение выполняется через виртуальный стандартный деструктор [SWS_DM_01967]. Должен ли фактический метод выполнения Process быть реализован потокобезопасным, зависит от выбранного concurrencyType (kConcurrent или kNotConcurrent) [SWS_DM_01962], [SWS_DM_01968].
Путь использования
Штатный процесс включает регистрацию обработчика, обработку входящих сертификатов и последующую отмену регистрации:
Предложение службы (Offer): приложение вызывает Offer(), чтобы сигнализировать Diagnostic Management о том, что запросы для сконфигурированного интерфейса разрешено перенаправлять данному обработчику [SWS_DM_01969].
Получение запроса (Process): при поступлении на Diagnostic Server UDS-запроса подфункции TransmitCertificate он перенаправляет данные чисто виртуальному методу Process() приложения [SWS_DM_01968]. Метод получает 16-битный идентификатор certificateEvaluationId, необработанные данные сертификата в виде ara::core::Span<ara::core::Byte const>, метаданные (metaInfo), а также cancellationHandler[SWS_DM_01968].
Анализ и действие: поскольку AUTOSAR не предписывает фиксированной семантики для сертификатов, проверка и вывод необходимых мер полностью возлагаются на приложение [SWS_DM_01968]. Интерпретация: как правило, приложение должно криптографически проверить переданный сертификат или использовать его для обновления внутреннего хранилища ключей. Вопрос Q-34844f9257d074c6 (открытый)
Остановка службы (StopOffer): если обработчик больше не должен принимать запросы, приложение прекращает перенаправление вызовом StopOffer()[SWS_DM_01970].
Состояния ошибок могут возникать на различных этапах жизненного цикла:
Уже активное предложение: если Offer() вызывается, когда служба для этого экземпляра уже активно предлагается, вызов завершается ошибкой и возвращает в ara::core::Result<void> код ошибки DiagOfferErrc::kAlreadyOffered с семантикой отката [SWS_DM_01969]. Offer() и StopOffer() не являются потокобезопасными и не должны вызываться параллельно [SWS_DM_01969], [SWS_DM_01970].
Прерывание текущих сеансов взаимодействия: во время асинхронной обработки приложение может запросить статус через cancellationHandler.IsCanceled(), чтобы определить, был ли прерван диагностический сеанс взаимодействия [SWS_DM_01968]. Дополнительно через cancellationHandler.SetNotifier(...) можно зарегистрировать функцию обратного вызова, которая немедленно уведомляется при прерывании [SWS_DM_01968].
Данное руководство основано на спецификации AUTOSAR Adaptive Platform R25-11 (модуль diag) и подготовлено с помощью ИИ.
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: db62dd9c27e2ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
С помощью метода Offer Adaptive Application активирует пересылку диагностических запросов модулем Diagnostic Management (DM) соответствующему обработчику класса ara::diag::TransmitCertificate[SWS_DM_01969]. Вызов выполняется синхронно и без параметров; интерфейс определен как безопасный по исключениям (noexcept) [SWS_DM_01969]. В качестве типа возвращаемого значения служит ara::core::Result<void>, с помощью которого вызывающей стороне передается успешность регистрации или состояние ошибки [SWS_DM_01969].
Если функция для соответствующего экземпляра обработчика уже вызывалась ранее, повторный вызов завершается сбоем и возвращает специфическую ошибку DiagOfferErrc::kAlreadyOffered с семантикой отката [SWS_DM_01969], которая соответствует стандартизированному значению ошибки в DiagErrc[SWS_DM_00514]. Поскольку метод явно специфицирован как непотокобезопасный [SWS_DM_01969], необходимо избегать параллельного доступа к одному и тому же экземпляру (Интерпретация: защита от параллельных вызовов возлагается на прикладное программное обеспечение). Вопрос Q-b44b11a0a2dcb2b4 (открытый)
Шаблон функционирования Offer следует единой концепции предоставления диагностических обработчиков, которая также применяется в ara::diag::Authentication::Offer[SWS_DM_01130], ara::diag::CommunicationControl::Offer[SWS_DM_00809] или ara::diag::GenericRoutine::Offer[SWS_DM_00557]. AUTOSAR разъясняет, что, несмотря на аналогичное именование, сходное с ara::com, речь идет о независимой диагностической реализации (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»). До момента предоставления через Offer DM не пересылает запросы обработчику, аналогично службам DoIP, которые до вызова считаются не готовыми [SWS_DM_01525].
Это указание по использованию сгенерировано автоматически и основано на спецификациях релиза R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: d261181b4bb6Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод Process интерфейсного класса ara::diag::TransmitCertificate служит для внутриприкладной обработки сертификатов, передаваемых диагностическим тестером в рамках службы UDS 0x29 (Authentication) через субфункцию TransmitCertificate (0x04) [SWS_DM_01968], AUTOSAR_AP_SWS_Diagnostics §7.3.2.8.11.5 «Service 0x29 – transmitCertificate (0x04)». Поскольку AUTOSAR не задает специфической семантики для сертификата, содержательная проверка и вывод необходимых действий полностью возлагаются на приложение [SWS_DM_01968].
Метод вызывается асинхронно и принимает следующие параметры [SWS_DM_01968]:
certificateEvaluationId: 16-битный ID вычисления из сообщения диагностического запроса UDS для идентификации анализа сертификата [SWS_DM_01968], [SWS_DM_01247].
certificateData: данные сертификата, переданные тестером, в виде ara::core::Span<ara::core::Byte const>[SWS_DM_01968].
metaInfo: метаинформация о диагностическом запросе [SWS_DM_01968].
cancellationHandler: позволяет опрашивать статус отмены через cancellationHandler.IsCanceled(), а также регистрировать уведомление через cancellationHandler.SetNotifier() при преждевременном прерывании диагностической беседы [SWS_DM_01968].
Возврат осуществляется асинхронно в виде ara::core::Future<void>[SWS_DM_01968]. В случае сбоя обработки необходимо предоставить соответствующий Negative Response Code (NRC) согласно ISO 14229-1 через DiagUdsNrcErrc[SWS_DM_01968]. Функция объявлена как noexcept и является безопасной по исключениям (exception safe) [SWS_DM_01968].
Потокобезопасность является условной (conditional): она определяется ConcurrencyType, переданным конструктору ara::diag::TransmitCertificate[SWS_DM_01968]. Перед пересылкой менеджер диагностики проверяет запрос на основе certificateEvaluationId[SWS_DM_01247].
Это указание по использованию было автоматически сгенерировано на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
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.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 7da07a83c1d7ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод StopOffer класса ara::diag::TransmitCertificate ([SWS_DM_01970]) завершает предоставление службы передачи сертификатов для Diagnostic Management (DM). Вызов деактивирует пересылку входящих сообщений диагностических запросов от DM этому обработчику ([SWS_DM_01970]).
Использование и семантика
Вызов выполняется без параметров с помощью сигнатуры void StopOffer() noexcept; из заголовка ara/diag/transmit_certificate.h ([SWS_DM_01970]). Функция не возвращает значения и специфицирована как noexcept, а также exception safe ([SWS_DM_01970]), благодаря чему гарантированно не генерирует исключений.
Параллелизм и ограничения
Метод явно специфицирован как not thread-safe ([SWS_DM_01970]). Поэтому вызывающие стороны должны гарантировать, что конкурирующие вызовы на одном и том же экземпляре ara::diag::TransmitCertificate синхронизируются внешними механизмами. Интерпретация: перед уничтожением экземпляра службы или при временной деактивации, вероятно, вызывается StopOffer, чтобы предотвратить поступление новых запросов во время смены состояния. Вопрос Q-9ab97301565c5bf9 (открытый)
Взаимодействие
Концепция соответствует стандартизированному паттерну DM по деактивации пересылки сообщений, как это также определено в связанных интерфейсах, таких как [SWS_DM_00767] (SecurityAccess), [SWS_DM_00810] (CommunicationControl) или [SWS_DM_01017] (EcuResetRequest). Хотя эта специфичная для производителя диагностическая реализация имеет общее наименование с коммуникационным фреймворком, ее следует отличать от ara::com (AUTOSAR_AP_SWS_Diagnostics §7.3.4.1.2 «Monitors»). Элемент служит для выполнения требований верхнего уровня RS_Diag_04251, на которых также основан интерфейс аутентификации (AUTOSAR_AP_SWS_Diagnostics §8.3.1.1.3.2 «StopOffer»; [SWS_DM_01131]).
Этот текст был создан системой ИИ на основе документов спецификации.
Руководство разработчика реализации в подготовке (сложность I2)
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: b553bcd9da3eПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Конструктор инициализирует экземпляр класса ara::diag::TransmitCertificate для обработки сертификатов в рамках службы UDS 0x29 (подфункция TransmitCertificate) [SWS_DM_01962].
Использование
Вызов выполняется синхронно и специфицирован как noexcept, а также exception safe[SWS_DM_01962]. При вызове передаются два параметра:
specifier: ara::core::InstanceSpecifier, который должен указывать на PortPrototype, типизированный через DiagnosticAuthenticationPortMapping на DiagnosticTransmitCertificateInterface в манифесте [SWS_DM_01962].
concurrencyType: определяет через kConcurrent или kNotConcurrent, разрешает ли интерфейс параллельные вызовы виртуального метода Process или обработка должна выполняться последовательно [SWS_DM_01962], [SWS_DM_01968].
Обработка ошибок и граничные условия
Создание объекта является потокобезопасным [SWS_DM_01962]. Поскольку экземпляр аутентификации должен быть уникальным, конструкторы копирования и перемещения, а также операторы присваивания явно удалены [SWS_DM_01963], [SWS_DM_01964], [SWS_DM_01965], [SWS_DM_01966]. При ошибочных конфигурациях в манифесте или повторном использовании идентификатора регистрируются нарушения (такие как InstanceSpecifierMappingIntegrityViolation, PortInterfaceMappingViolation, ProcessMappingViolation или InstanceSpecifierAlreadyInUseViolation) [SWS_DM_01962]. Поскольку конструктор не генерирует исключений, эти сообщения, вероятно, сигнализируются через отчетность времени выполнения фреймворка ara. Вопрос Q-140f1e794355ad96 (открытый)
Взаимодействие
После конструирования экземпляр должен быть разблокирован с помощью Offer(), чтобы демон Diagnostic Management пересылал запросы [SWS_DM_01969]. При успешной обработке через Process() сервер отвечает положительно с параметром CertificateVerified (0x13) [SWS_DM_01251], тогда как ошибки приводят к отрицательным ответам UDS [SWS_DM_01249]. С помощью StopOffer() пересылка завершается [SWS_DM_01970].
Этот текст был сгенерирован ИИ и служит в качестве справочного материала. Обязательную силу имеют исключительно официальные спецификации AUTOSAR.
Руководство разработчика реализации в подготовке (сложность I3)
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 · Немецкий оригинал