Предоставляет базовые типы, домены ошибок и фабричные функции для криптографических служб и управления ключами.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 253d08fc1defПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Предоставляет базовые типы, домены ошибок и фабричные функции для криптографических служб и управления ключами.
Пространство имен ara::crypto предоставляет общие базовые типы, буферы памяти и глобальные фабричные функции для криптографических служб в AUTOSAR Adaptive. Приложения создают или получают экземпляры подсистем, такие как провайдеры криптографии и хранилищ ключей, детерминированно через точки входа, такие как LoadCryptoProvider[SWS_CRYPT_20099]. Все криптографические операции и случаи использования ключей при этом строго контролируются через определенные флаги использования, а также стандартизированный домен ошибок с CryptoErrc[SWS_CRYPT_10099]. Все фабричные интерфейсы предполагают наличие валидного отображения процессов (process mapping) и спроектированы как потокобезопасные.
Контекст
Пространство имен ara::crypto образует общую основу и центральную точку входа для всех криптографических служб, функций управления ключами и операций с сертификатами в AUTOSAR Adaptive Platform. Вместо раскрытия деталей реализации базовых драйверов или аппаратных модулей безопасности пространство имен определяет стандартизированные интерфейсы и глобальные фабричные функции. Через эти точки входа приложения запрашивают экземпляры специализированных подсистем: общий провайдер криптографии [SWS_CRYPT_20099], провайдер X.509 [SWS_CRYPT_40099], доступы для чтения и записи к слотам хранения ключей [SWS_CRYPT_50004][SWS_CRYPT_50005], а также модули форматирования для сериализации объектов [SWS_CRYPT_50200].
Контекстная диаграмма: взаимодействие между экземплярами приложений, точками входа в ara::crypto и предоставляемыми объектами подсистем. Источники: [SWS_CRYPT_20099], [SWS_CRYPT_40099], [SWS_CRYPT_50004], [SWS_CRYPT_50005], [SWS_CRYPT_50200].
Жизненный цикл
Управление жизненным циклом базовых криптографических объектов следует паттерну «Фабрика» через глобальные точки входа:
Инстанцирование и отношения владения: приложения не создают экземпляры вручную через конструкторы. Вместо этого фабричные функции LoadCryptoProvider[SWS_CRYPT_20099], LoadKeySlot[SWS_CRYPT_50004], LoadWriteableKeySlot[SWS_CRYPT_50005], LoadX509Provider[SWS_CRYPT_40099] и LoadFormatter[SWS_CRYPT_50200] возвращают ссылки разделяемого владения в форме ara::core::Result<...::Sptr>.
Жизненные циклы синглтона и провайдера: функция LoadX509Provider предоставляет единственный экземпляр синглтон-провайдера X.509 [SWS_CRYPT_40099]. LoadCryptoProvider создает или ссылается на существующий экземпляр криптопровайдера, смоделированного через ara::core::InstanceSpecifier[SWS_CRYPT_20099].
Параллелизм и уничтожение: все фабричные функции, а также вспомогательные функции домена ошибок GetCryptoErrorDomain[SWS_CRYPT_19952] и MakeErrorCode[SWS_CRYPT_19951] специфицированы как исключения-безопасные (noexcept) и потокобезопасные (thread-safe). Освобождение адресуемых объектов происходит автоматически, как только прекращает действие последний удерживающий shared pointer.
Путь использования
Типичный путь использования для выполнения криптографических операций или управления ключами состоит из следующих шагов:
Загрузка провайдера: приложение вызывает LoadCryptoProvider с подходящим ara::core::InstanceSpecifier для получения доступа к криптографическим операциям [SWS_CRYPT_20099].
Ссылка на ключевой слот: для процессов на основе ключей загружается соответствующая область памяти: только для чтения с помощью LoadKeySlot[SWS_CRYPT_50004] или с правами записи через LoadWriteableKeySlot[SWS_CRYPT_50005].
Валидация объектов и проверка прав: перед выполнением приложение проверяет типы объектов (CryptoObjectType[SWS_CRYPT_10016]) и сконфигурированные ограничения использования (AllowedUsageFlags[SWS_CRYPT_10015]), например kAllowDataEncryption[SWS_CRYPT_13101] или kAllowDataDecryption[SWS_CRYPT_13102] в соответствии с CryptoTransform[SWS_CRYPT_10019].
Диаграмма последовательности: порядок вызова и инициализации для загрузки провайдеров и ключевых слотов с последующей проверкой ошибок. Источники: [SWS_CRYPT_20099], [SWS_CRYPT_50004], [SWS_CRYPT_19951].
Сценарии ошибок
Обработка ошибок в ara::crypto основана на глобальном домене ошибок CryptoErrorDomain[SWS_CRYPT_19952], перечисление которого CryptoErrc[SWS_CRYPT_10099] определяет все специфические коды ошибок:
Ошибки аргументов и буфера: недействительные аргументы приводят к kInvalidArgument, неизвестные идентификаторы — к kUnknownIdentifier, а неподходящие комбинации параметров — к kIncompatibleArguments[SWS_CRYPT_10099]. Если емкости ReadWriteMemRegion[SWS_CRYPT_10031] недостаточно, интерфейс сигнализирует kInsufficientCapacity[SWS_CRYPT_10099]. При некорректных размерах входных данных возникает kInvalidInputSize[SWS_CRYPT_10099].
Нарушения состояния и порядка вызовов: при некорректной последовательности вызовов система сообщает kInvalidUsageOrder[SWS_CRYPT_10099]. Использование контекста до инициализации или опрос вычислительного шага до его завершения приводит к kUninitializedContext, kProcessingNotStarted или kProcessingNotFinished[SWS_CRYPT_10099] соответственно.
Нарушения прав и безопасности: операции, противоречащие правам, объявленным в AllowedUsageFlags, генерируют kUsageViolation[SWS_CRYPT_10099]. Если проверка тега аутентификации завершается неудачно, инициируется kAuthTagNotValid[SWS_CRYPT_10099].
Ошибки слотов и отображения: пустые или несовместимые контейнеры ключей приводят к kEmptyKeySlot или kIncompatibleObject[SWS_CRYPT_10099]. Если InstanceSpecifier при LoadCryptoProvider, LoadKeySlot или LoadWriteableKeySlot указывает не на смоделированный для текущего процесса PortPrototype, это расценивается как ProcessMappingViolation ([SWS_CRYPT_20099], [SWS_CRYPT_50004], [SWS_CRYPT_50005]).
Экземпляры ошибок генерируются программно через вспомогательную функцию MakeErrorCode и без исключения ссылаются на CryptoErrorDomain[SWS_CRYPT_19951].
Настоящее руководство основано исключительно на требованиях спецификации AUTOSAR R25-11.
KI-gestützte Gruppierung auf Basis der Records und Spezifikationsauszüge; keine Gliederung aus der AUTOSAR-Spezifikation.
Диаграмма классов
Abgerundete Rahmen = Namespace- bzw. Klassen-Scopes; hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); graue Boxen = namespace-fremde bzw. externe Basisklassen. Klicken öffnet die jeweilige Klassen- bzw. cppreference-Seite.
This factory method shall create or return the existing instance of a specific Crypto Provider.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: b6b49fc6b39dПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Фабричная функция LoadCryptoProvider в пространстве имён ara::crypto служит центральной точкой входа для создания экземпляра поставщика криптографических услуг или для получения уже существующего экземпляра [SWS_CRYPT_20099]. Для интеграции требуется заголовочный файл ara/crypto/common/entry_point.h[SWS_CRYPT_20099].
При вызове действуют следующие свойства параметров и возвращаемых значений [SWS_CRYPT_20099]:
Возвращаемое значение: при успешном создании экземпляра функция возвращает ara::core::Result<cryp::CryptoProvider::Sptr>, инкапсулирующий shared pointer на загруженный объект провайдера [SWS_CRYPT_20099].
Параллелизм: функция объявлена как noexcept, считается exception safe и явно специфицирована как thread-safe, благодаря чему вызовы из параллельных потоков допустимы [SWS_CRYPT_20099].
Что касается обработки ошибок, спецификация не определяет стандартизированных кодов ошибок [SWS_CRYPT_20099]. Однако сбой операции должен отражаться как состояние ошибки в возвращаемом ara::core::Result. Вопрос Q-ad283a067489b0eb (открытый) Кроме того, определено нарушение моделирования ProcessMappingViolation: оно возникает, если переданный InstanceSpecifier не указывает на действительный для текущего процесса PortPrototype, типизированный через CryptoProviderInterface[SWS_CRYPT_20099].
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
ProcessMappingVio- In case InstanceSpecifier does not point to a PortPrototype typed lation by a CryptoProviderInterface modeled for the current process.
Parameter (in)
Parameter
Beschreibung
iSpecify
InstanceSpecifier of the RPortPrototype of type CryptoProvider Interface
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 1ad37ba369f0ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция LoadFormatter в пространстве имен ara::crypto служит фабрикой для создания экземпляра Formatter[SWS_CRYPT_50200]. Объявление предоставляется через заголовочный файл ara/crypto/common/formatter.h.
Использование и интерфейс: вызов выполняется синхронно и не требует входных параметров. В качестве возвращаемого значения функция возвращает ara::core::Result<ara::crypto::Formatter::Sptr>, которое в случае успеха инкапсулирует shared pointer на вновь созданный объект Formatter[SWS_CRYPT_50200].
Обработка ошибок: спецификация не определяет для LoadFormatter стандартизированных кодов ошибок [SWS_CRYPT_50200]. Поскольку возвращаемое значение спроектировано как ara::core::Result, ошибки создания объекта, специфичные для реализации, предположительно передаются через канал ошибок этого типа результата. Вопрос Q-dd9ac8319a9ad931 (открытый)
Параллелизм и безопасность выполнения: функция объявлена как noexcept и специфицирована как исключениебезопасная (exception safe), а также потокобезопасная (thread-safe) [SWS_CRYPT_50200]. Таким образом, ее можно вызывать параллельно из различных потоков без внешних мер синхронизации.
Данное указание по использованию сгенерировано автоматически и основано на требованиях стандарта AUTOSAR.
Load a read-only key slot. This factory method shall load the information associated with the specified KeySlot into a KeySlot object.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 8366de538e98Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция LoadKeySlot в пространстве имен ara::crypto спроектирована как фабричный метод для загрузки доступного только для чтения слота ключа (read-only key slot) [SWS_CRYPT_50004]. При синхронном вызове метод загружает метаданные и информацию о ключе, ассоциированные с указанным слотом, в соответствующий объект KeySlot[SWS_CRYPT_50004]. Для подключения служит заголовочный файл ara/crypto/common/entry_point.h.
В качестве входного параметра функция принимает спецификатор экземпляра iSpecify типа const ara::core::InstanceSpecifier&[SWS_CRYPT_50004]. Этот идентификатор должен указывать на RPortPrototype некоторого CryptoKeySlotInterface или некоторого CryptoKeySlotClientInterface, однозначно идентифицирующий загружаемый ключ [SWS_CRYPT_50004].
В качестве результата метод возвращает ara::core::Result<cryp::KeySlot::Sptr>, предоставляющий либо shared-указатель на загруженный объект KeySlot, либо ошибку [SWS_CRYPT_50004]. Спецификация не определяет для LoadKeySlot стандартных кодов ошибок [SWS_CRYPT_50004]. Однако документируется ProcessMappingViolation: она имеет место, если переданный InstanceSpecifier указывает не на смоделированный для текущего процесса порт, типизированный через CryptoKeySlotInterface или CryptoKeySlotClientInterface[SWS_CRYPT_50004].
Для выполнения функция объявлена как noexcept и обеспечивает полную безопасность по отношению к исключениям (exception safe) [SWS_CRYPT_50004]. Кроме того, вызов специфицирован как потокобезопасный (thread-safe), благодаря чему поддерживается конкурентный доступ из нескольких потоков [SWS_CRYPT_50004].
Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
ProcessMappingVio- In case InstanceSpecifier does not point to a PortPrototype typed lation by a CryptoKeySlotInterface or CryptoKeySlotClientInterface modeled for the current process.
Parameter (in)
Parameter
Beschreibung
iSpecify
instance specifier to the RPortPrototype of a CryptoKeySlot Interface or a CryptoKeySlotClientInterface that identifies the key to be loaded
Load a writeable key slot. This factory method shall load the information associated with the specified KeySlot into a WriteableKeySlot object.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 548256d68415ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Функция LoadWriteableKeySlot служит синхронным фабричным методом для загрузки информации указанного слота ключа в объект cryp::WriteableKeySlot[SWS_CRYPT_50005]. Функция определена в пространстве имен ara::crypto и предоставляется через заголовочный файл ara/crypto/common/entry_point.h[SWS_CRYPT_50005].
Параметры:iSpecify (типа const ara::core::InstanceSpecifier&) указывает на RPortPrototype некоторого CryptoKeySlotInterface и тем самым идентифицирует загружаемый ключ [SWS_CRYPT_50005].
Возвращаемое значение:ara::core::Result<cryp::WriteableKeySlot::Sptr>, содержащий либо загруженный KeySlot в виде shared-указателя, либо объект ошибки [SWS_CRYPT_50005].
Семантика: вызов выполняется синхронно непосредственно при выполнении [SWS_CRYPT_50005].
Обработка ошибок и граничные условия
Для этой функции стандартизированные коды ошибок не специфицированы [SWS_CRYPT_50005]. Возникающие ошибочные состояния, предположительно, передаются через возвращаемый ara::core::Result. Вопрос Q-e2f8966bf78b1569 (открытый) Архитектурная ошибка или ошибка конфигурации приводит к ProcessMappingViolation, если переданный InstanceSpecifier указывает не на смоделированный для текущего процесса PortPrototype, типизированный через CryptoKeySlotInterface[SWS_CRYPT_50005].
Параллелизм и взаимодействие
Функция объявлена как потокобезопасная (thread-safe) и безопасная по отношению к исключениям (exception safe) с гарантией noexcept[SWS_CRYPT_50005]. Она реализует вышестоящее криптографическое требование [RS_CRYPTO_02004] и представляет собой центральную точку доступа для предоставления доступных для записи слотов ключей в процессе [SWS_CRYPT_50005].
Данное указание по использованию было сгенерировано ИИ на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
ProcessMappingVio- In case InstanceSpecifier does not point to a PortPrototype typed lation by a CryptoKeySlotInterface modeled for the current process.
Parameter (in)
Parameter
Beschreibung
iSpecify
instance specifier to the RPortPrototype of a CryptoKeySlot Interface that identifies the key to be loaded
This factory method shall create or return the existing instance of the singleton X.509 Provider.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 70f8a61e4c9eПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Функция LoadX509Provider в пространстве имен ara::crypto служит фабричным методом для создания экземпляра-одиночки провайдера X.509 или получения уже существующего экземпляра [SWS_CRYPT_40099]. Для вызова необходимо включить заголовочный файл ara/crypto/common/entry_point.h[SWS_CRYPT_40099]. Вызов выполняется синхронно и не принимает входных параметров. В качестве возвращаемого значения функция возвращает ara::core::Result<ara::crypto::x509::X509Provider::Sptr>, предоставляющий shared pointer на загруженный экземпляр провайдера X.509 [SWS_CRYPT_40099].
Обработка ошибок
В спецификации для LoadX509Provider не определены стандартизированные коды ошибок [SWS_CRYPT_40099]. Функция объявлена с noexcept и специфицирована как исключениебезопасная (exception safe) [SWS_CRYPT_40099]. Интерпретация: поскольку результат инкапсулирован через тип ara::core::Result, специфичные для системы состояния ошибок при инициализации провайдера, вероятно, передаются вызывающей стороне через этот объект Result. Вопрос Q-c187f4f152ccc89f (открытый)
Параллелизм и взаимодействие
Согласно спецификации LoadX509Provider классифицирован как потокобезопасный (thread-safe) [SWS_CRYPT_40099]. Благодаря этому вызов может выполняться параллельно из нескольких потоков без дополнительных мер синхронизации для получения ссылки на один и тот же экземпляр-одиночку. Функционально функция реализует вышестоящие требования RS_CRYPTO_02306 и RS_CRYPTO_02301[SWS_CRYPT_40099].
Этот текст был сгенерирован системой ИИ на основе спецификации.
Руководство разработчика реализации в подготовке (сложность I1)
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал