Управляет слотом хранения для криптографических ключей и обеспечивает запросы метаданных, а также обратные вызовы при изменении.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 15ebff2d544cПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Управляет слотом хранения для криптографических ключей и обеспечивает запросы метаданных, а также обратные вызовы при изменении.
Интерфейс инкапсулирует постоянный или энергозависимый слот хранения для криптографических ключей и позволяет запрашивать метаданные ключа, а также ответственный CryptoProvider[SWS_CRYPT_30403]. Приложения могут отслеживать изменения содержимого с помощью регистрируемого обратного вызова наблюдателя [SWS_CRYPT_30404]. При пустом слоте обращения к типу ключа или его алгоритму завершаются с кодом ошибки ara::crypto::CryptoErrc::kEmptyKeySlot[SWS_CRYPT_50055]. Поскольку копирование и перемещение запрещены, доступ осуществляется потокобезопасно через Shared-Pointer.
Контекст
Интерфейс ara::crypto::cryp::KeySlot представляет собой выделенный слот хранения для криптографических ключей в рамках AUTOSAR Adaptive Platform. Являясь инкапсуляцией логического слота ключа, он управляет метаданными, информацией о типе и сопоставлением поддерживаемых алгоритмов для размещенного в нем ключа. Экземпляр обычно взаимодействует с тремя сторонами: использующим программным обеспечением, соответствующим cryp::CryptoProvider, на который через [SWS_CRYPT_30403] может быть получена разделяемая ссылка, а также прикладным обратным вызовом для отслеживания содержимого согласно [SWS_CRYPT_30404].
KeySlot жестко привязан к представляемому им хранилищу ключей. Соответственно интерфейс предотвращает дублирование и перемещение экземпляра: как конструктор копирования [SWS_CRYPT_50149], так и конструктор перемещения [SWS_CRYPT_50150] явно удалены. То же самое относится к оператору присваивания копированием [SWS_CRYPT_50147] и оператору присваивания перемещением [SWS_CRYPT_50148].
Для управления отношениями владения и ссылок класс определяет псевдоним типа интеллектуального указателя Sptr как std::shared_ptr<KeySlot>[SWS_CRYPT_50151]. Освобождение осуществляется через виртуальный стандартный деструктор [SWS_CRYPT_50146]. Интерпретация: поскольку интерфейс не определяет открытых конструкторов, конкретные экземпляры, вероятно, создаются ответственным CryptoProvider и предоставляются как Sptr. Вопрос Q-baef4cb1493c96cd (открытый) Все предоставляемые методы объявлены потокобезопасными, благодаря чему одновременный доступ для чтения и мониторинга из нескольких контекстов выполнения допустим.
Путь использования
Типичное взаимодействие с KeySlot подразделяется на конфигурацию мониторинга содержимого и опрос сохраненных метаданных ключа:
Регистрация наблюдателя: приложение регистрирует с помощью RegisterUpdateObserver функцию обратного вызова, а также прикладной идентификатор keySlotIdentifier[SWS_CRYPT_30404]. При повторном вызове при обновлениях или удалениях содержимого слота всегда вызывается только последний переданный callback.
Запрос поддерживаемых алгоритмов: через GetPossibleAlgIds приложение получает список всех идентификаторов алгоритмов, поддерживаемых слотом [SWS_CRYPT_50056].
Проверка текущего ключа: если в слоте находится ключ, GetCryptoObjectType возвращает тип объекта ключа [SWS_CRYPT_50054], а GetAlgId — его конкретный идентификатор алгоритма [SWS_CRYPT_50055].
Определение ответственного провайдера: при необходимости через GetCryptoProvider можно запросить управляющий CryptoProvider в виде Shared-Pointer [SWS_CRYPT_30403].
Отмена регистрации наблюдателя: после завершения мониторинга регистрация отменяется через UnregisterUpdateObserver[SWS_CRYPT_30406].
Опрашивающие методы защищают состояния ошибок через тип результата ara::core::Result. Если KeySlot не содержит ключа, вызовы GetCryptoObjectType[SWS_CRYPT_50054] и GetAlgId[SWS_CRYPT_50055] возвращают стандартизированный код ошибки ara::crypto::CryptoErrc::kEmptyKeySlot с семантикой отката. Методы GetPossibleAlgIds[SWS_CRYPT_50056] и GetCryptoProvider[SWS_CRYPT_30403] не специфицируют стандартизированных кодов ошибок. Для управления наблюдателем с помощью RegisterUpdateObserver[SWS_CRYPT_30404], а также UnregisterUpdateObserver[SWS_CRYPT_30406] в случае сбоя в объекте результата предусмотрены ошибки, зависящие от реализации.
Данное руководство было создано ИИ на основе спецификации R25-11.
The interface shall register an application callback function to be called when the content of the KeySlot is updated (i.e., modified or cleared). If this function is called multiple times, only the most recently registered callback of an application will be called.
The interface shall register an application callback function to be called when the content of the KeySlot is updated (i.e., modified or cleared). If this function is called multiple times, only the most recently registered callback of an application will be called.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 9361e576efa7ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод RegisterUpdateObserver класса ara::crypto::cryp::KeySlot служит для регистрации зависящей от приложения callback-функции, которая получает уведомление при каждом обновлении содержимого слота ключа [SWS_CRYPT_30404]. При этом обновлением считаются как изменения содержимого, так и полная очистка слота [SWS_CRYPT_30404].
Использование и параметры
Функция подключается через заголовочный файл ara/crypto/cryp/keyslot.h и принимает callback callback, а также идентификатор keySlotIdentifier[SWS_CRYPT_30404]. Функциональный объект callback при вызове получает в качестве аргумента строку keySlotIdentifier для однозначного сопоставления соответствующего слота в логике приложения [SWS_CRYPT_30404]. При повторных вызовах RegisterUpdateObserver тем же приложением сохраняется и выполняется исключительно последняя зарегистрированная callback-функция [SWS_CRYPT_30404].
Параллелизм и обработка ошибок
Интерфейс является потокобезопасным (thread-safe) и специфицирован как noexcept без выброса исключений [SWS_CRYPT_30404]. Он возвращает ara::core::Result<void>[SWS_CRYPT_30404]. Стандартизированных ошибок не существует; в случае ошибки возвращается специфичный для реализации код ошибки [SWS_CRYPT_30404]. Интерпретация: фактический вызов callback-функции, по-видимому, происходит асинхронно в контексте криптодрайвера, как только обновление вступит в силу в хранилище ключей. Вопрос Q-cfbcc1ddcbe88062 (открытый)
Это указание по использованию основано на спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
Unregisters any previously UpdateObserver callback that has been registered previously by the application.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: b5edba50839dПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод UnregisterUpdateObserver класса ara::crypto::cryp::KeySlot служит для отмены регистрации ранее зарегистрированного приложением callback-вызова наблюдателя (UpdateObserver) [SWS_CRYPT_30406]. Функция объявлена в заголовке ara/crypto/cryp/keyslot.h, спроектирована как чисто виртуальный метод (=0) и не ожидает входных параметров [SWS_CRYPT_30406].
В отношении контекста вызова и параллелизма действуют следующие граничные условия:
Синхронная семантика и потокобезопасность: отмена регистрации выполняется синхронно и явно специфицирована как thread-safe [SWS_CRYPT_30406]. Таким образом, вызовы могут выполняться потокобезопасно и параллельно другим операциям над тем же экземпляром KeySlot.
Безопасность исключений: метод имеет спецификацию noexcept и считается exception-safe [SWS_CRYPT_30406]. Поэтому ошибочные состояния ни в коем случае не приводят к исключениям C++, а корректно обрабатываются через объект возвращаемого значения.
В качестве возвращаемого значения функция возвращает ara::core::Result<void>, которое при успешной отмене регистрации является пустым или в случае ошибки инкапсулирует код ошибки [SWS_CRYPT_30406]. Спецификация намеренно не определяет стандартизированных кодов ошибок AUTOSAR для этого вызова; возможные ошибки поэтому специфичны для производителя или реализации [SWS_CRYPT_30406]. Вызывающие стороны должны проверять результат на наличие ошибки, однако не могут выполнять проверку на соответствие стандартизированным константам ошибок.
Во взаимодействии с управлением ключами отмена регистрации надежно предотвращает получение приложением дальнейших уведомлений об изменениях содержимого ключа. Если на момент вызова callback зарегистрирован не был, функция, согласно интерпретации, должна либо успешно завершиться без каких-либо действий, либо вернуть специфичную для реализации ошибку. Вопрос Q-7a1e7e0db0691ce6 (открытый)
Это указание по использованию было создано автоматически на основе спецификации AUTOSAR.
Руководство разработчика реализации в подготовке (сложность I1)
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал