Служит для безопасной распаковки и импорта защищенных криптографических ключей и данных в приложении.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: a42cd9e6f52bПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Служит для безопасной распаковки и импорта защищенных криптографических ключей и данных в приложении.
Интерфейс обеспечивает безопасную распаковку и импорт защищенных криптографических данных и ключей с помощью сконфигурированного транспортного ключа [SWS_CRYPT_50205]. Распакованный ключевой материал может быть либо напрямую записан в постоянный слот для ключей, либо типизированно загружен в память в виде ключевого объекта [SWS_CRYPT_50207]. Все методы работают потокобезопасно и следуют строгой семантике отката при ошибках, в то время как Reset гарантирует удаление внутренних буферов без остатка [SWS_CRYPT_50212].
Контекст
Интерфейс ara::crypto::cryp::ProtectedKeyImportCtx предоставляет криптографический контекст для безопасного импорта и распаковки в системе защищенных структур данных, таких как секретный ключевой материал. Контекст выступает в качестве посредника между запрашивающим приложением, механизмом защиты на основе транспортного ключа и целевыми структурами криптографии AUTOSAR. Входящие сериализованные пакеты данных аутентифицируются, расшифровываются и парсятся контекстом [SWS_CRYPT_50207]. Источниками необходимого транспортного ключа служат либо самостоятельные симметричные ключевые объекты [SWS_CRYPT_50205], либо слоты для ключей в хранилище ключей [SWS_CRYPT_50206]. В качестве приемника распакованные ключевые объекты могут передаваться напрямую вызывающему приложению или непосредственно сериализоваться в доступный для записи слот для ключей [SWS_CRYPT_50207].
Жизненный цикл
Для совместного доступа контекст обычно управляется через предоставленный тип умного указателя Sptr[SWS_CRYPT_50085]; при этом экземпляры, вероятно, предоставляются соответствующим компонентом криптодрайвера. Вопрос Q-3517b24b5eec4529 (открытый) До непосредственной обработки контекст находится в несконфигурированном исходном состоянии, в котором транспортный ключ еще не назначен. Назначение транспортного ключа осуществляется через метод SetKey, в результате чего контекст переходит в готовое к работе состояние [SWS_CRYPT_50205][SWS_CRYPT_50206].
После успешного выполнения операции Import контекст сохраняет распакованные данные и метаданные во внутренних буферах, что позволяет идентифицировать тип объекта и считывать ключевые объекты [SWS_CRYPT_50207][SWS_CRYPT_50208]. С помощью метода Reset контекст возвращается обратно в исходное состояние: все внутренние буферы с ранее импортированными данными полностью очищаются, а сохраненный транспортный ключ удаляется [SWS_CRYPT_50212]. Все методы интерфейса специфицированы как исключебнобезопасные и потокобезопасные, благодаря чему конкурентный доступ из нескольких контекстов выполнения остается контролируемым [SWS_CRYPT_50207].
Стандартный рабочий процесс начинается с конфигурации транспортного ключа. Для этого приложение вызывает SetKey либо с SymmetricKey::Sptr[SWS_CRYPT_50205], либо с KeySlot::Sptr[SWS_CRYPT_50206]. На следующем шаге выполняется метод Import, которому сериализованный пакет данных передается в виде ReadOnlyMemRegion[SWS_CRYPT_50207]. Если ключ должен быть сохранен персистентно, можно опционально напрямую передать WriteableKeySlot::Sptr, куда будет записан распакованный материал [SWS_CRYPT_50207].
Если целевой слот не был указан или ключ должен использоваться как временный, приложение определяет категорию последнего импортированного объекта с помощью GetCryptoObjectType[SWS_CRYPT_50208]. На основе этого типа приложение вызывает соответствующий типу метод получения: GetPrivateKey для закрытых ключей [SWS_CRYPT_50209], GetPublicKey для открытых ключей [SWS_CRYPT_50211] или GetSymmetricKey для симметричного ключевого материала [SWS_CRYPT_50210]. Если используемый протокол импорта требует обратной связи с отправителем — как, например, в случае контрольных блоков M4 и M5 последовательности SHE-LoadKey —, ее можно записать в предоставленный буфер через GetResponse[SWS_CRYPT_41020]. После завершения последовательности обработки вызов Reset возвращает контекст в исходное состояние [SWS_CRYPT_50212].
Если во время вызова метода возникает ошибка, применяется строгая семантика отката, сохраняющая состояние до вызова. При конфигурации через SetKey вызов завершается ошибкой с CryptoErrc::kUsageViolation, если флаг использования ключа не содержит разрешения kAllowKeyUnwrapping[SWS_CRYPT_50205][SWS_CRYPT_50206]. Если объект ключа или указанный слот принципиально непригодны для использования в качестве транспортного ключа, сообщается CryptoErrc::kIncompatibleObject[SWS_CRYPT_50205][SWS_CRYPT_50206].
При вызове Import несоответствия размера входных данных приводят к CryptoErrc::kInvalidInputSize, а нарушения формата — к CryptoErrc::kInvalidArgument[SWS_CRYPT_50207]. Если проверка целостности или подлинности защитного слоя завершается неудачно (например, из-за недействительного кода аутентификации сообщения или некорректной подписи), вызов возвращает CryptoErrc::kAuthTagNotValid[SWS_CRYPT_50207]. Если криптографический компонент временно занят, об этом сигнализируется через CryptoErrc::kBusyResource[SWS_CRYPT_50207].
Предварительным условием для считывания импортированных ключей является успешное выполнение Import; в противном случае GetPrivateKey, GetPublicKey и GetSymmetricKey отвечают CryptoErrc::kProcessingNotFinished[SWS_CRYPT_50209][SWS_CRYPT_50210][SWS_CRYPT_50211]. Если запрошенный тип ключа не совпадает с фактически распакованным объектом или объект еще не был импортирован, методы получения подтверждают это с помощью CryptoErrc::kNoSuchValue[SWS_CRYPT_50208][SWS_CRYPT_50209][SWS_CRYPT_50210][SWS_CRYPT_50211]. Если емкости выходного буфера при GetResponse недостаточно, это приводит к CryptoErrc::kInsufficientCapacity[SWS_CRYPT_41020]. Если конкретная реализация не поддерживает частичную функцию (например, определенные типы ключей или сброс), единообразно возвращается CryptoErrc::kUnsupported[SWS_CRYPT_50205][SWS_CRYPT_50208][SWS_CRYPT_50212].
Это руководство по классам основано на спецификации AUTOSAR Adaptive Platform Release R25-11.
The interface shall write the response of the CryptoProvider to the last invocation of Import into the provided output buffer. E.g., this interface could return M4/M5 of a SHE LoadKey operation.
virtual ara::core::Result< std::size_t > GetResponse (ReadWriteMem Region responseBuffer) const noexcept=0; DIRECTION NOT responseBuffer -- DEFINED
The interface shall unwrap the protected data provided, parse the content, and make the parsed content (key-material and meta-data) available for retrieval by the application. If optionally a Key Slot is specified, the unwrapped key material shall be directly serialized into the KeySlot.
The interface shall restore the context to its initial state by ensuring that no key-import-key is set and all previously imported data is deleted from the ProtectedKeyImportCtx’s internal buffers.
The interface shall return a shared pointer to the unwrapped PrivateKey.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 569ddfa8ee2aПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод GetPrivateKey класса ara::crypto::cryp::ProtectedKeyImportCtx (предоставляемый через заголовочный файл #include "ara/crypto/cryp/protected_key_import_ctx.h") служит для получения shared pointer на предварительно импортированный и распакованный закрытый ключ (PrivateKey::Sptr) ([SWS_CRYPT_50209]). Интерфейс не имеет входных параметров и возвращает результат синхронно в виде ara::core::Result<PrivateKey::Sptr> ([SWS_CRYPT_50209]).
Для выполнения действуют обязательные требования относительно порядка вызова, параллелизма и безопасности относительно исключений: метод специфицирован как thread-safe, а также exception safe и объявлен с noexcept ([SWS_CRYPT_50209]). Обязательным предварительным условием для успешного получения является предварительное успешное выполнение операции импорта в рамках контекста ([SWS_CRYPT_50209]).
Если при предоставлении возникает ошибка, для всех ошибочных ситуаций применяется семантика отката ([SWS_CRYPT_50209]). Возвращаемый Result в этом случае содержит один из следующих специфических кодов ошибок:
ara::crypto::CryptoErrc::kProcessingNotFinished: предшествующий шаг импорта еще не был успешно выполнен ([SWS_CRYPT_50209]).
ara::crypto::CryptoErrc::kNoSuchValue: последний импортированный CryptoObject не является закрытым ключом ([SWS_CRYPT_50209]).
ara::crypto::CryptoErrc::kUnsupported: контекст в принципе не поддерживает импорт закрытых ключей ([SWS_CRYPT_50209]).
Это указание по использованию было создано ИИ на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
The interface shall return a shared pointer to the unwrapped PublicKey.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: b41e5e96382cПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод GetPublicKey класса ara::crypto::cryp::ProtectedKeyImportCtx служит для синхронного получения указателя на ранее импортированный, распакованный открытый ключ ([SWS_CRYPT_50211]). Функция не принимает входных параметров и возвращает результат типобезопасным образом в виде ara::core::Result<PublicKey::Sptr> ([SWS_CRYPT_50211]).
Перед вызовом операция импорта должна быть успешно завершена; в противном случае вызов завершается сбоем и возвращает код ошибки ara::crypto::CryptoErrc::kProcessingNotFinished ([SWS_CRYPT_50211]). Если последний импортированный криптографический объект не являлся открытым ключом, это приводит к ошибке ara::crypto::CryptoErrc::kNoSuchValue ([SWS_CRYPT_50211]). Если конкретный контекст импорта в принципе не поддерживает внесение открытых ключей, сообщается ara::crypto::CryptoErrc::kUnsupported ([SWS_CRYPT_50211]). Для всех специфицированных ошибок интерфейс гарантирует семантику отката ([SWS_CRYPT_50211]).
В отношении конкурентности и отказоустойчивости метод специфицирован как thread-safe, а также exception-safe и не генерирует исключений C++ (noexcept) ([SWS_CRYPT_50211]).
Функционально этот механизм импорта отличается от других интерфейсов: в то время как здесь распаковывается защищённый объект, одноимённая функция в ara::crypto::cryp::PrivateKey ([SWS_CRYPT_22511]) возвращает открытый ключ существующего закрытого ключа, который, например, был ранее сгенерирован с помощью GeneratePrivateKey ([SWS_CRYPT_20722]).
Этот текст был сгенерирован ИИ на основе требований спецификации.
Руководство разработчика реализации в подготовке (сложность I1)
virtual ara::core::Result< std::size_t > GetResponse (ReadWriteMem Region responseBuffer) const noexcept=0; DIRECTION NOT responseBuffer -- DEFINED
The interface shall write the response of the CryptoProvider to the last invocation of Import into the provided output buffer. E.g., this interface could return M4/M5 of a SHE LoadKey operation.
The interface shall return a shared pointer to the unwrapped SymmetricKey.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: cefc876d47dbПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод GetSymmetricKey класса ara::crypto::cryp::ProtectedKeyImportCtx возвращает shared pointer на распакованный симметричный ключ (SymmetricKey::Sptr) [SWS_CRYPT_50210]. Вызов выполняется синхронно, объявлен как const, а также noexcept и не принимает параметров [SWS_CRYPT_50210].
Для успешного получения необходимо соблюдать определенные предварительные условия и последовательность действий [SWS_CRYPT_50210]:
Предварительно должна быть успешно завершена операция импорта; в противном случае вызов завершается ошибкой с кодом ошибки ara::crypto::CryptoErrc::kProcessingNotFinished[SWS_CRYPT_50210].
Если последний импортированный криптографический объект не является симметричным ключом, метод возвращает ara::crypto::CryptoErrc::kNoSuchValue[SWS_CRYPT_50210].
Если выбранный контекст импорта вообще не поддерживает импорт симметричных ключей, возвращается ошибка ara::crypto::CryptoErrc::kUnsupported[SWS_CRYPT_50210].
С точки зрения надежности выполнения интерфейс специфицирован как thread-safe и exception-safe [SWS_CRYPT_50210]. Все определенные случаи ошибок обеспечивают семантику отката, благодаря чему состояние контекста в случае ошибки остается неизменным [SWS_CRYPT_50210].
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
The interface shall unwrap the protected data provided, parse the content, and make the parsed content (key-material and meta-data) available for retrieval by the application. If optionally a Key Slot is specified, the unwrapped key material shall be directly serialized into the KeySlot.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 89f9277cd6aaПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Синхронный метод Import класса ara::crypto::cryp::ProtectedKeyImportCtx распаковывает защищенные данные ключа из области памяти serialized ([SWS_CRYPT_50207]). Он анализирует содержимое данных и предоставляет извлеченный ключевой материал, а также метаданные для последующего извлечения. Если опционально передается WriteableKeySlot, ключевой материал сериализуется непосредственно в этот слот ([SWS_CRYPT_50207]). Интерпретация: если keySlot не передан, ключевой материал, предположительно, остается исключительно в состоянии контекста импорта. Вопрос Q-130f11475af1bb33 (открытый)
Обработка ошибок
Функция возвращает ara::core::Result<void>. В случае сбоя операции для всех кодов ошибок применяется семантика отката ([SWS_CRYPT_50207]):
ara::crypto::CryptoErrc::kInvalidInputSize: размер входных данных serialized является неожиданным ([SWS_CRYPT_50207]).
ara::crypto::CryptoErrc::kInvalidArgument: сериализованные данные не соответствуют ожидаемому формату ([SWS_CRYPT_50207]).
ara::crypto::CryptoErrc::kAuthTagNotValid: проверка аутентификации (MAC или подпись) завершается неудачно ([SWS_CRYPT_50207]).
ara::crypto::CryptoErrc::kBusyResource: операция временно не может быть выполнена ([SWS_CRYPT_50207]).
Параллелизм и взаимодействие
Метод является потокобезопасным и исключениебезопасным (noexcept) ([SWS_CRYPT_50207]). После успешного вызова распакованный объект ключа может быть получен из контекста через GetPrivateKey ([SWS_CRYPT_50209]), GetSymmetricKey ([SWS_CRYPT_50210]) или GetPublicKey ([SWS_CRYPT_50211]). Если базовый протокол требует ответа отправителю, GetResponse ([SWS_CRYPT_41020]) предоставляет ответ криптопровайдера. Для незащищенных форматов ключей в качестве альтернативы служат методы ImportPublicKey ([SWS_CRYPT_20732]), ImportSymmetricKey ([SWS_CRYPT_50014]) и ImportPrivateKey ([SWS_CRYPT_50132]) фабричного класса CryptoProvider.
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
The interface shall restore the context to its initial state by ensuring that no key-import-key is set and all previously imported data is deleted from the ProtectedKeyImportCtx’s internal buffers.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 21bf97fcdbf3Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод Reset сбрасывает экземпляр ara::crypto::cryp::ProtectedKeyImportCtx в исходное состояние [SWS_CRYPT_50212]. При этом интерфейс гарантирует, что больше не установлен ни один Key-Import-Key (KIK), а все предварительно импортированные данные полностью удалены из внутренних буферов контекста [SWS_CRYPT_50212].
Вызов выполняется синхронно и согласно спецификации классифицирован как thread-safe, а также exception safe[SWS_CRYPT_50212]. Метод объявляет сигнатуру virtual ara::core::Result<void> Reset() const noexcept = 0; и требует подключения заголовочного файла ara/crypto/cryp/protected_key_import_ctx.h[SWS_CRYPT_50212].
Обработка ошибок
Результат возвращается через ara::core::Result<void>[SWS_CRYPT_50212]. Если операция завершается неудачно, интерфейс возвращает код ошибки:
ara::crypto::CryptoErrc::kUnsupported: возникает, если конкретный контекст не поддерживает сброс своего состояния (семантика отката) [SWS_CRYPT_50212].
Это указание по использованию было создано автоматически на основе спецификации SWS_CRYPT_50212.
Руководство разработчика реализации в подготовке (сложность I1)
The interface shall configure the context to use the provided symmetric key as transport key.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: bb7a4eb711eaПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод SetKey класса ara::crypto::cryp::ProtectedKeyImportCtx конфигурирует контекст таким образом, чтобы переданный объект симметричного ключа key (SymmetricKey::Sptr) использовался в качестве транспортного ключа [SWS_CRYPT_50205]. Вызов происходит синхронно и возвращает ara::core::Result<void>[SWS_CRYPT_50205].
Обработка ошибок
Если при конфигурации возникает ошибка, о ней сообщается с семантикой отката, благодаря чему предыдущее состояние контекста остается неизменным [SWS_CRYPT_50205]. Определены следующие коды ошибок:
ara::crypto::CryptoErrc::kUnsupported: возвращается, если контекст поддерживает исключительно назначение KeySlot[SWS_CRYPT_50205].
ara::crypto::CryptoErrc::kIncompatibleObject: предоставленный объект ключа не может использоваться в качестве транспортного ключа [SWS_CRYPT_50205].
ara::crypto::CryptoErrc::kUsageViolation: флаги использования ключа не содержат требуемого права kAllowKeyUnwrapping[SWS_CRYPT_50205].
Параллелизм и взаимодействие
Операция специфицирована как потокобезопасная (thread-safe) и исключениебезопасная (exception safe) и не генерирует исключений (noexcept) [SWS_CRYPT_50205]. В то время как такие контексты, как SymmetricKeyWrapperCtx, привязывают ключ для защиты или упаковки (wrapping) [SWS_CRYPT_24018], ключ здесь служит для импорта защищенных ключей. Условие ошибки kUnsupported указывает, кроме того, на архитектуры, в которых контексты альтернативно конфигурируются через KeySlot[SWS_CRYPT_50034]. Интерпретация: назначение транспортного ключа, вероятно, должно быть обязательно завершено до последующих операций импорта. Вопрос Q-f1f3eab5ab896b1b (открытый)
Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
The interface shall configure the context to use the key stored in the provided KeySlot at the time the import operation is started as the transport key.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: e6e7bd1f753cПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Метод SetKey конфигурирует контекст [SWS_CRYPT_50206] (ara::crypto::cryp::ProtectedKeyImportCtx) таким образом, чтобы симметричный ключ, сохраненный в переданном KeySlot::Sptr keySlot, использовался в качестве транспортного ключа в момент запуска процедуры импорта. Вызов происходит синхронно и возвращает ara::core::Result<void>.
Обработка ошибок
Если при конфигурации возникает ошибка, применяется семантика отката [SWS_CRYPT_50206]. Специфические коды ошибок включают:
ara::crypto::CryptoErrc::kUnsupported: если контекст поддерживает исключительно установку прямого объекта SymmetricKey[SWS_CRYPT_50206].
ara::crypto::CryptoErrc::kIncompatibleObject: если ключ, содержащийся в слоте, не может использоваться в качестве транспортного ключа [SWS_CRYPT_50206].
ara::crypto::CryptoErrc::kUsageViolation: если разрешенные флаги использования ключа в KeySlot не содержат флаг kAllowKeyUnwrapping[SWS_CRYPT_50206].
Параллелизм и взаимодействие
Функция специфицирована как исключениебезопасная (exception safe) и потокобезопасная (thread-safe) [SWS_CRYPT_50206]. Ключ извлекается из слота только при запуске последующего импорта [SWS_CRYPT_50206]. В то время как другие криптографические контексты, такие как SymmetricKeyWrapperCtx[SWS_CRYPT_50034] или KeyDerivationFunctionCtx[SWS_CRYPT_50010], также могут подключать слоты в качестве источника ключа, ProtectedKeyImportCtx::SetKey явно требует полномочий на распаковку ключей.
Этот текст был сгенерирован инструментом документирования на базе ИИ и не заменяет обращение к официальным спецификациям AUTOSAR.
Руководство разработчика реализации в подготовке (сложность I2)
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал