Позволяет безопасно упаковывать и распаковывать ключи с помощью симметричного шифрования ключей.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 16126e8d9692ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Позволяет безопасно упаковывать и распаковывать ключи с помощью симметричного шифрования ключей.
Контекст SymmetricKeyWrapperCtx служит для криптографической упаковки и распаковки ключей с помощью симметричных алгоритмов. Перед выполнением Wrap или UnwrapSymmetricKey контекст должен быть сконфигурирован через SetKey с использованием совместимого ключа шифрования ключей (KEK) [SWS_CRYPT_24018]. Все операции требуют соответствующих прав использования задействованных объектов ключей и сообщают об ошибках через ara::core::Result с семантикой отката [SWS_CRYPT_24014]. Интерфейс является безопасным относительно исключений и специфицирован как потокобезопасный для параллельной работы.
Контекст
Класс SymmetricKeyWrapperCtx определяет стандартизированный интерфейс для алгоритмов симметричного обертывания ключей (Key Wrapping) в рамках AUTOSAR Adaptive Platform. Его главная обязанность заключается в криптографической защите ключей при экспорте, а также в восстановлении упакованных ключей для внутреннего использования. При этом класс в первую очередь взаимодействует с ключами шифрования ключей (Key Encryption Keys, KEK), которые предоставляются либо как временный объект ключа типа SymmetricKey, либо персистентно через KeySlot[SWS_CRYPT_24018], [SWS_CRYPT_50034]. При упаковке контекст принимает обобщенный CryptoObject[SWS_CRYPT_24014], тогда как операция распаковки создает и возвращает новый, готовый к использованию объект SymmetricKey[SWS_CRYPT_24016].
Жизненный цикл
Экземпляры SymmetricKeyWrapperCtx управляются через типизированный умный указатель Sptr (псевдоним для std::shared_ptr<SymmetricKeyWrapperCtx>) [SWS_CRYPT_24001]. Фактическое создание объектов, вероятно, выполняется через соответствующую фабрику провайдера, поскольку класс представляет собой абстрактный интерфейс с чисто виртуальными методами. Вопрос Q-7b9a1007da43ddcd (открытый) Все функции-члены интерфейса специфицированы как безопасные относительно исключений (exception safe) и потокобезопасные (thread-safe), что обеспечивает безопасное использование в параллельных программных компонентах [SWS_CRYPT_24014], [SWS_CRYPT_24016].
В жизненном цикле контекст проходит две основные фазы: непосредственно после инстанцирования он находится в неинициализированном состоянии. В этой фазе криптографические операции и вычисления размера буфера завершаются с ошибкой kUninitializedContext[SWS_CRYPT_50035], [SWS_CRYPT_24014]. Только после успешного вызова SetKey с совместимым KEK или KeySlot контекст переходит в рабочее состояние, в котором ключи можно безопасно упаковывать или распаковывать [SWS_CRYPT_24018], [SWS_CRYPT_50034].
Путь использования
Стандартный процесс упаковки ключа требует скоординированной последовательности конфигурации, проверки буфера и выполнения. Сначала приложение настраивает контекст через SetKey с желаемым объектом KEK [SWS_CRYPT_24018] или привязывает соответствующий KeySlot[SWS_CRYPT_50034]. На втором шаге приложение определяет через GetRequiredWrappedKeyBufferSize максимально необходимый размер выходного буфера для упаковываемого целевого объекта [SWS_CRYPT_50035]. После того как предоставлена область памяти соответствующего размера (ReadWriteMemRegion), выполняется вызов Wrap, который записывает сериализованные и зашифрованные данные ключа в буфер и возвращает точное количество байт [SWS_CRYPT_24014].
Для комплементарной операции распаковки приложение после конфигурации с помощью SetKey передает входной буфер с упакованными данными в UnwrapSymmetricKey[SWS_CRYPT_24016]. При этом для вновь создаваемого симметричного ключа должны быть явно заданы идентификатор целевого алгоритма (targetAlgId), а также разрешенные флаги использования (allowedUsage) [SWS_CRYPT_24016].
Сценарии ошибок
Методы класса сигнализируют об ошибках через тип возвращаемого значения ara::core::Result с семантикой отката. К ключевым сценариям ошибок относятся:
Отсутствие инициализации: если GetRequiredWrappedKeyBufferSize, Wrap или UnwrapSymmetricKey вызываются до успешного назначения ключа, они возвращают ara::crypto::CryptoErrc::kUninitializedContext[SWS_CRYPT_50035], [SWS_CRYPT_24014], [SWS_CRYPT_24016].
Нарушение прав использования: при установке KEK он должен иметь как минимум разрешение kAllowKeyWrapping или kAllowKeyUnwrapping, иначе SetKey завершается с ошибкой ara::crypto::CryptoErrc::kUsageViolation[SWS_CRYPT_24018]. В Wrap отсутствие kAllowKeyWrapping у KEK или отсутствие kAllowSecuredExport у упаковываемого объекта также приводит к kUsageViolation[SWS_CRYPT_24014]. При распаковке проверяется, разрешает ли KEK kAllowKeyUnwrapping[SWS_CRYPT_24016].
Несовместимости и ошибки буфера: если целевой буфер для Wrap слишком мал, возвращается ara::crypto::CryptoErrc::kInsufficientCapacity[SWS_CRYPT_24014]. Некорректные форматы ключей или несовместимые типы приводят к ara::crypto::CryptoErrc::kInvalidArgument[SWS_CRYPT_24014], [SWS_CRYPT_24016]. Если контекст поддерживает только слоты или только объекты ключей, SetKey сообщает об ошибке kUnsupported[SWS_CRYPT_24018], [SWS_CRYPT_50034].
Конфликты ресурсов и пустые слоты: если операция обращается к занятому ресурсу, возвращается ara::crypto::CryptoErrc::kBusyResource; если ссылаемый KeySlot пуст, это приводит к ara::crypto::CryptoErrc::kEmptyKeySlot[SWS_CRYPT_24014], [SWS_CRYPT_24016].
Данное руководство создано ИИ и опирается исключительно на спецификацию AUTOSAR.
Configure the context to use the provided key as key encryption key.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: d0a83598653dПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование и семантика
Синхронная функция-член SetKey конфигурирует экземпляр ara::crypto::cryp::SymmetricKeyWrapperCtx таким образом, чтобы переданный объект SymmetricKey::Sptr использовался в качестве Key Encryption Key (KEK) для последующих операций с ключами [SWS_CRYPT_24018]. Функция специфицирована как чисто виртуальный метод с noexcept и возвращает пустое ara::core::Result<void> в случае успешного назначения [SWS_CRYPT_24018].
Обработка ошибок и откат
Если при конфигурации возникает ошибка, применяется обязательная семантика отката, так что состояние контекста остается неизменным [SWS_CRYPT_24018]. Возможные причины ошибок отражаются через коды ошибок из ara::crypto::CryptoErrc:
kIncompatibleObject: переданный объект ключа несовместим с симметричным контекстом [SWS_CRYPT_24018].
kUsageViolation: разрешенное использование ключа не включает ни kAllowKeyWrapping, ни kAllowKeyUnwrapping[SWS_CRYPT_24018].
kUnsupported: реализация контекста поддерживает установку ключа исключительно через KeySlot[SWS_CRYPT_24018].
Параллелизм и взаимодействие
Метод специфицирован как thread-safe и безопасный относительно исключений (exception safe) [SWS_CRYPT_24018]. Если ключи управляются через слоты или контекст поддерживает исключительно KeySlot, для того же контекста оболочки (wrapper) существует альтернативная перегрузка SetKey с KeySlot::Sptr[SWS_CRYPT_50034]. Она настраивает контекст на загрузку ключа, размещенного в слоте, в момент выполнения key wrapping [SWS_CRYPT_50034].
Данное указание по использованию основано на спецификации AUTOSAR Adaptive Platform Release R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
Configure the context to use the key stored in the provided KeySlot at the time the key wrapping is performed.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 30d79040bb46Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Виртуальный метод SetKey конфигурирует контекст ara::crypto::cryp::SymmetricKeyWrapperCtx таким образом, чтобы использовать ключ, сохранённый в предоставленном KeySlot, как только будет выполняться оборачивание ключа [SWS_CRYPT_50034]. Вызов ожидает в качестве параметра keySlot объект KeySlot::Sptr, содержащий симметричный ключ [SWS_CRYPT_50034]. Функция вызывается синхронно, объявлена с noexcept и возвращает ara::core::Result<void>[SWS_CRYPT_50034].
Обработка ошибок
В случае ошибки метод обеспечивает семантику отката (rollback) и возвращает один из следующих результатов ошибки [SWS_CRYPT_50034]:
ara::crypto::CryptoErrc::kIncompatibleObject: переданный keySlot несовместим с этим контекстом [SWS_CRYPT_50034].
ara::crypto::CryptoErrc::kUnsupported: контекст поддерживает установку исключительно прямого SymmetricKey[SWS_CRYPT_50034].
Параллелизм
Операция является потокобезопасной (thread-safe) и обеспечивает гарантированную безопасность исключений (exception safe) [SWS_CRYPT_50034].
Взаимодействие
Интерфейс представляет собой внутри SymmetricKeyWrapperCtx слот-ориентированный аналог перегрузки SetKey с SymmetricKey::Sptr, которая привязывает ключ напрямую в качестве ключа шифрования ключей (Key Encryption Key, KEK) [SWS_CRYPT_24018]. Аналогичные функции конфигурации на основе слотов используются также в родственных криптографических контекстах, таких как KeyDerivationFunctionCtx[SWS_CRYPT_50010], KeyEncapsulatorPublicCtx[SWS_CRYPT_50012], VerifierPublicCtx[SWS_CRYPT_50018], MessageAuthnCodeCtx[SWS_CRYPT_50026] и SignerPrivateCtx[SWS_CRYPT_50036].
Это указание по использованию было автоматически сгенерировано на основе спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
Unwrap a wrapped key using the previously set key encryption key and return an SymmetricKey.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: fe87df5f5eaeПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод UnwrapSymmetricKey интерфейса ara::crypto::cryp::SymmetricKeyWrapperCtx расшифровывает упакованный ключ с использованием ранее установленного ключа шифрования ключей (KEK) и возвращает новый объект SymmetricKey[SWS_CRYPT_24016]. В качестве параметров синхронная функция принимает входной буфер с защищенными данными ключа (wrappedKey), идентификатор алгоритма для целевого ключа (targetAlgId), а также битовые флаги для его разрешенных типов преобразования (allowedUsage) [SWS_CRYPT_24016].
Возвращаемое значение ara::core::Result<SymmetricKey::Sptr> при успешном выполнении содержит смарт-указатель на созданный ключ или сигнализирует об ошибке с семантикой отката [SWS_CRYPT_24016]. Возможными причинами ошибок являются:
InvalidArgument: переданные данные ключа в wrappedKey не могут быть распакованы, например из-за недопустимого формата или неверного размера буфера [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kUninitializedContext: контекст оболочки (wrapper context) еще не был инициализирован подходящим KEK [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kUsageViolation: ограничения использования KEK запрещают распаковку (отсутствие kAllowKeyUnwrapping) [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kUnknownIdentifier: переданное значение для targetAlgId неизвестно или не поддерживается [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kIncompatibleArguments: указанные флаги allowedUsage несовместимы с targetAlgId или типом ключа [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kBusyResource: системный ресурс, необходимый для операции, в данный момент занят [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kEmptyKeySlot: сконфигурированный для операции KeySlot пуст [SWS_CRYPT_24016].
Метод объявлен как const, а также noexcept, гарантирует безопасность исключений и согласно спецификации является thread-safe для параллельного вызова [SWS_CRYPT_24016].
Этот текст был создан ИИ и служит в качестве ориентира. Определяющее значение имеет спецификация.
Wrap the provided key using the previously set key encryption key.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 8e6ff8198c9dПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Метод Wrap класса ara::crypto::cryp::SymmetricKeyWrapperCtx (заголовочный файл ara/crypto/cryp/symmetric_key_wrapper_ctx.h) упаковывает предоставленный ключ с использованием ранее установленного ключа шифрования ключей (Key Encryption Key) [SWS_CRYPT_24014].
wrappedKey (ReadWriteMemRegion): выходной буфер, в который записывается упакованный ключ.
В качестве возвращаемого значения операция возвращает ara::core::Result<std::size_t>, который в случае успеха содержит количество записанных в буфер байтов упакованного ключа [SWS_CRYPT_24014].
Обработка ошибок и семантика
Метод определен как exception safe и реализует для случаев ошибок строгую семантику отката [SWS_CRYPT_24014]. Могут возвращаться следующие состояния ошибок [SWS_CRYPT_24014]:
InvalidArgument: объект ключа не может быть упакован (например, из-за недопустимого размера или неверного типа).
ara::crypto::CryptoErrc::kUninitializedContext: контекст еще не был инициализирован значением ключа.
ara::crypto::CryptoErrc::kUsageViolation: допустимое использование KEK не включает kAllowKeyWrapping или использование объекта не включает kAllowSecuredExport.
ara::crypto::CryptoErrc::kInsufficientCapacity: выходной буфер wrappedKey слишком мал.
ara::crypto::CryptoErrc::kEmptyKeySlot: Сконфигурированный KeySlot в данный момент пуст.
Параллелизм и ограничения
Интерфейс специфицирован как thread-safe[SWS_CRYPT_24014]. Предварительным условием для выполнения являются предварительно инициализированный контекст, а также подходящие атрибуты использования участвующих ключей [SWS_CRYPT_24014].
Данное указание по использованию было автоматически сгенерировано на основе спецификации AUTOSAR Adaptive R25-11.
rollback_semantics if the allowed usage of the KEK does not include kAllowKey Wrapping or the allowed usage of the object does not include k AllowSecuredExport
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал