Служит интерфейсом для операций симметричного шифрования и расшифрования в потоках данных или одиночных вызовах.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 0261b663ca0dПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Служит интерфейсом для операций симметричного шифрования и расшифрования в потоках данных или одиночных вызовах.
Класс ara::crypto::cryp::SymmetricCipherCtx служит потокобезопасным интерфейсом для операций симметричного шифрования и расшифрования в AUTOSAR Adaptive [SWS_CRYPT_50044]. После конфигурирования ключа через SetKey() данные могут обрабатываться либо в рамках одиночного вызова, либо пошагово в потоковом цикле из Start(), Update() и Finish()[SWS_CRYPT_50138], [SWS_CRYPT_50139]. Все методы специфицированы как noexcept и сигнализируют об ошибках, таких как отсутствие инициализации или слишком малый размер буфера, через ara::core::Result[SWS_CRYPT_50140].
Контекст
Интерфейс ara::crypto::cryp::SymmetricCipherCtx инкапсулирует симметричные криптографические преобразования, охватывающие как операции шифрования, так и расшифрования. Внутри криптографической архитектуры класс действует как контекст выполнения для симметричных алгоритмов и взаимодействует с объектами ключей, а также буферами памяти. Для конфигурирования криптографического ключа класс взаимодействует либо напрямую с временными ключами через SymmetricKey[SWS_CRYPT_50138], либо с постоянными или изолированно управляемыми ключами через KeySlot[SWS_CRYPT_50043]. Подлежащие обработке открытые и зашифрованные тексты, а также векторы инициализации (IV) передаются и принимаются через области памяти типа ReadOnlyMemRegion и ReadWriteMemRegion[SWS_CRYPT_50048], [SWS_CRYPT_50049].
Жизненный цикл
Жизненный цикл и отношения владения интерфейса управляются преимущественно через типизированный псевдоним интеллектуального указателя Sptr (std::shared_ptr<SymmetricCipherCtx>) [SWS_CRYPT_50137]. Предоставление конкретного экземпляра на практике, вероятно, осуществляется через вышестоящий криптографический фабричный метод (интерпретация), поскольку само определение интерфейса не содержит функций создания. Вопрос Q-5b5f5ffdf964c91f (открытый)
После инстанциации контекст проходит несколько рабочих фаз:
Не инициализирован: непосредственно после инстанциации контексту не сопоставлен ключ. Любой вызов обработки в этой фазе приводит к ошибке CryptoErrc::kUninitializedContext[SWS_CRYPT_50044], [SWS_CRYPT_50047].
Инициализирован / ключ привязан: путем вызова SetKey() с SymmetricKey[SWS_CRYPT_50138] или KeySlot[SWS_CRYPT_50043] контекст становится готовым к использованию. Из этого состояния можно либо выполнять операции без сохранения состояния в режиме одиночного вызова, либо запускать процесс потоковой обработки с сохранением состояния.
Потоковая обработка: вызов Start() запускает пошаговое преобразование [SWS_CRYPT_50044], [SWS_CRYPT_23625]. В этой фазе данные могут преобразовываться через Update()[SWS_CRYPT_50139], а позиция может изменяться через Seek()[SWS_CRYPT_23613]. Состояние потоковой обработки штатно завершается с помощью Finish()[SWS_CRYPT_50045] либо FinishEncrypt()[SWS_CRYPT_23618] или преждевременно отбрасывается через Cancel()[SWS_CRYPT_50046]. После этого контекст возвращается в инициализированное базовое состояние.
Все методы SymmetricCipherCtx объявлены как noexcept, обеспечивают безопасность относительно исключений («exception safe») и специфицированы как потокобезопасные («thread-safe») для параллельного доступа [SWS_CRYPT_50044], [SWS_CRYPT_50139].
Перед фактическим преобразованием данных рекомендуется определить требуемые размеры буферов и фрагментов (chunks). С помощью GetMinimumChunkSize()[SWS_CRYPT_50144] и GetMaximumChunkSize()[SWS_CRYPT_50050] можно определить допустимые границы для входных блоков. Если требуются векторы инициализации, границы их длины можно запросить с помощью GetMinimumInputIvSize()[SWS_CRYPT_50141], GetMaximumInputIvSize()[SWS_CRYPT_50142] или GetOutputIvSize()[SWS_CRYPT_50143]. Максимально необходимый размер целевого буфера для операции рассчитывается с помощью GetRequiredOutputBufferSize()[SWS_CRYPT_50140].
Для пошагового потокового шифрования или расшифрования действует следующий стандартный порядок:
Конфигурирование ключа: привязка криптографического ключа к контексту через SetKey()[SWS_CRYPT_50138].
Запуск преобразования: вызов Start() с указанием направления преобразования (шифрование или расшифрование) и опционального IV [SWS_CRYPT_23625] либо без IV [SWS_CRYPT_50044].
Преобразование блоков данных: повторный вызов Update() для пошаговой передачи входных данных и извлечения выходных данных [SWS_CRYPT_50139]. При необходимости можно осуществлять навигацию внутри потока данных с помощью Seek()[SWS_CRYPT_23613].
Завершение: финализация через Finish()[SWS_CRYPT_50045] или через FinishEncrypt(), если требуется вернуть сгенерированный контекстом IV [SWS_CRYPT_23618].
В качестве альтернативы этой потоковой модели интерфейс поддерживает синхронные одиночные вызовы. Если доступна вся полезная нагрузка целиком, операция может быть выполнена напрямую через ProcessSingleCall()[SWS_CRYPT_50047], ProcessSingleCallWithInputIv()[SWS_CRYPT_50048] или для собственной генерации IV контекстом через EncryptSingleCallWithOutputIv()[SWS_CRYPT_50049].
Методы класса сигнализируют об ошибках через ara::core::Result с кодами домена ошибок ara::crypto::CryptoErrc. Основные условия ошибок включают:
CryptoErrc::kUninitializedContext: возникает, когда вызовы обработки, такие как Start()[SWS_CRYPT_50044], процедуры одиночного вызова [SWS_CRYPT_50047] или GetRequiredOutputBufferSize()[SWS_CRYPT_50140], вызываются до того, как ключ был задан через SetKey().
CryptoErrc::kInsufficientCapacity: предоставленный целевой буфер для данных или IV меньше минимально необходимой емкости [SWS_CRYPT_50139], [SWS_CRYPT_50049].
CryptoErrc::kUsageViolation и CryptoErrc::kIncompatibleObject: переданный тип ключа не подходит для преобразования или заданные в ключе правила использования запрещают операцию (например, отсутствие kAllowDataEncryption или kAllowDataDecryption) [SWS_CRYPT_50044], [SWS_CRYPT_50047].
CryptoErrc::kEmptyKeySlot и CryptoErrc::kBusyResource: указывает на то, что сконфигурированный KeySlot во время выполнения не содержит ключа или заблокирован ресурс, необходимый для криптографической операции [SWS_CRYPT_50048], [SWS_CRYPT_50049].
CryptoErrc::kUnsupported: возвращается, если режим работы (такой как потоковая обработка, одиночный вызов или Seek()) не поддерживается выбранным контекстом или алгоритмом [SWS_CRYPT_23613], [SWS_CRYPT_50047].
Настоящее руководство было создано ИИ-ассистентом на основе требований спецификации.
Get the maximum input buffer size supported for processing in single calls to Update(), Finish(), FinishEncrypt(), or ProcessSingleCall() by this context.
Get the maximum IV size required to be passed to the context in the functions Start() and ProcessSingleCallWithInputIv() for the given transformDirection.
Get the minimum input buffer size supported for processing in single calls to Update(), Finish(), FinishEncrypt(), or ProcessSingleCall() by this context.
Get the minimum IV size required to be passed to the context in the functions Start() and ProcessSingleCallWithInputIv() for the given transformDirection.
Get the output IV size that will be returned by the functions FinishEncrypt() (in case no IV has been provided by the application during the call to Start()), and EncryptSingleCallWithOutputIv().
Cancel the ongoing streaming operation that has been initiated by Start() and has not yet been finished.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 0bea3f0e1d0dПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Синхронный метод Cancel() класса ara::crypto::cryp::SymmetricCipherCtx служит для преждевременного прерывания текущей потоковой операции, которая ранее была инициирована с помощью Start() и еще не завершена [SWS_CRYPT_50046]. Интерфейс объявлен без параметров в ara/crypto/cryp/symmetric_cipher_ctx.h и при успешном выполнении возвращает пустой ara::core::Result<void>[SWS_CRYPT_50046].
Если обработка данных не была предварительно начата вызовом Start(), операция завершается сбоем с конкретным кодом ошибки ara::crypto::CryptoErrc::kProcessingNotStarted и семантикой отката [SWS_CRYPT_50046]. Для контекста вызова спецификация гарантирует потокобезопасность (thread-safe), а также безопасность исключений (exception safe) с объявлением noexcept[SWS_CRYPT_50046]. Интерпретация: благодаря семантике отката объект после прерывания, вероятно, возвращается в исходное состояние готовности. Вопрос Q-b6deb8db5367acc5 (открытый)
Perform encryption in a single-call and return an IV generated by the context.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 9c4059afbb11ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование и обработка буферов
Синхронный метод EncryptSingleCallWithOutputIv выполняет симметричное шифрование за один вызов и возвращает сгенерированный контекстом вектор инициализации через буфер ivOut[SWS_CRYPT_50049]. Входные данные передаются через in, тогда как out принимает зашифрованные данные [SWS_CRYPT_50049]. При успешном выполнении результат ara::core::Result<std::size_t> предоставляет фактический размер созданных выходных данных, который может быть меньше общей емкости out[SWS_CRYPT_50049]. Если выбранный алгоритм не требует вектора инициализации, данные в ivOut не записываются [SWS_CRYPT_50049].
Взаимодействие и предварительные условия
Перед вызовом контекст должен быть инициализирован с помощью подходящего ключа [SWS_CRYPT_50049]. Чтобы обеспечить достаточную емкость буфера ivOut, требуемую длину IV можно предварительно определить через GetOutputIvSize()[SWS_CRYPT_50143]. Если дополнительно требуется аутентификация с вычислением тега, ara::crypto::cryp::AuthCipherCtx предлагает соответствующий аналог [SWS_CRYPT_50080].
Обработка ошибок и параллелизм
Интерфейс специфицирован как потокобезопасный и безопасный по отношению к исключениям («exception safe») и при ошибках применяет семантику отката [SWS_CRYPT_50049]. Интерпретация: эта семантика отката, вероятно, гарантирует, что при возникновении ошибок состояние контекста останется интактным и никакие неполные данные в буфере не останутся помеченными как действительные. Вопрос Q-841087731518d866 (открытый) К релевантным ошибкам относятся:
UninitializedContext: контексту еще не был назначен ключ [SWS_CRYPT_50049].
ara::crypto::CryptoErrc::kInsufficientCapacity: емкость out или ivOut недостаточна [SWS_CRYPT_50049].
ara::crypto::CryptoErrc::kUnsupported: шифрование за один вызов (Single-Call) не поддерживается или алгоритм принудительно требует задания входного IV [SWS_CRYPT_50049].
ara::crypto::CryptoErrc::kUsageViolation или ara::crypto::CryptoErrc::kIncompatibleObject: тип ключа не подходит для преобразования либо использование ключа не разрешает шифрование данных [SWS_CRYPT_50049].
Это указание по использованию было сгенерировано ИИ на основе спецификаций AUTOSAR Adaptive.
Руководство разработчика реализации в подготовке (сложность I2)
an input data buffer containing the ciphertext or plaintext
Parameter (out)
Parameter
Beschreibung
out
an output data buffer that the encrypted or decrypted data is written to
ivOut
an output data buffer that the initialization vector (IV) generated by the context will be written to. If the algorithm does not use an IV, no data will be written into the buffer.
Finalize the encryption/decryption without returning an IV.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 041cbaba2731ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Синхронный метод Finish финализирует симметричное шифрование или расшифрование внутри ara::crypto::cryp::SymmetricCipherCtx без возврата вектора инициализации ([SWS_CRYPT_50045]). Он обрабатывает последний фрагмент данных из входного буфера in (ReadOnlyMemRegion) и записывает результирующие данные в выходной буфер out (ReadWriteMemRegion) ([SWS_CRYPT_50045]). Необходимый для этого размер буфера можно предварительно запросить через GetRequiredOutputBufferSize() ([SWS_CRYPT_50045]). Возвращаемое значение типа ara::core::Result<std::size_t> при успехе предоставляет точное количество записанных байтов, которое может быть меньше общей емкости out ([SWS_CRYPT_50045]).
Обработка ошибок
В случае ошибки метод возвращает ara::core::Result со специфическими кодами ошибок ([SWS_CRYPT_50045]):
ProcessingNotStarted: обработка данных не была предварительно инициирована вызовом Start() ([SWS_CRYPT_50045]).
ara::crypto::CryptoErrc::kInsufficientCapacity: выходной буфер out слишком мал ([SWS_CRYPT_50045]).
ara::crypto::CryptoErrc::kInvalidInputSize: размер входных данных не может быть обработан ([SWS_CRYPT_50045]).
ara::crypto::CryptoErrc::kInvalidArgument: переданные входные данные недействительны ([SWS_CRYPT_50045]).
ara::crypto::CryptoErrc::kUnsupported: потоковая обработка не поддерживается текущим контекстом ([SWS_CRYPT_50045]).
При возникновении одной из ошибок CryptoErrc применяется семантика отката ([SWS_CRYPT_50045]).
Параллелизм и взаимодействие
Операция определена как thread-safe и exception safe ([SWS_CRYPT_50045]). Перед вызовом преобразование обязательно должно быть начато с помощью Start() ([SWS_CRYPT_50045]). Максимально допустимый входной размер для отдельных вызовов Finish() можно определить через GetMaximumChunkSize() ([SWS_CRYPT_50050]). После завершения цикл преобразования, вероятно, окончен, и для дальнейших операций, предположительно, потребуется новый вызов Start(). Вопрос Q-c4ffc8028e8f522b (открытый)
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR R25-11.
Finalize the encryption and return the IV generated by the context.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: c0e4f2ad1bdcПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод FinishEncrypt завершает операцию шифрования и возвращает вектор инициализации (IV), сгенерированный контекстом [SWS_CRYPT_23618]. Он обрабатывает финальный буфер входных данных in и записывает результирующие данные в выходной буфер out, а также IV в ivOut. В качестве возвращаемого значения он возвращает ara::core::Result<std::size_t> с фактическим размером записанных выходных данных, который может быть меньше емкости out[SWS_CRYPT_23618].
Для безошибочного выполнения размеры буферов и состояние контекста должны быть согласованы заранее:
Требуемый размер буфера для out можно определить с помощью [SWS_CRYPT_50140] с установленным параметром isFinal = true. Если размер out недостаточен, вызов завершается сбоем с CryptoErrc::kInsufficientCapacity[SWS_CRYPT_23618].
Входной размер in должен находиться в пределах минимальной и максимальной границ, определенных [SWS_CRYPT_50144] и [SWS_CRYPT_50050], в противном случае возвращается CryptoErrc::kInvalidInputSize[SWS_CRYPT_23618].
Если обработка данных не была предварительно инициирована с помощью Start(), метод возвращает CryptoErrc::kProcessingNotStarted[SWS_CRYPT_23618]. Если входной буфер содержит недействительные данные, следует CryptoErrc::kInvalidArgument[SWS_CRYPT_23618]. Ошибка CryptoErrc::kUnsupported возникает, если потоковая обработка не поддерживается, контекст не использует IV или IV уже был передан в Start()[SWS_CRYPT_23618]. Все ошибки обладают семантикой отката [SWS_CRYPT_23618]. Согласно спецификации вызов является потокобезопасным и безопасным относительно исключений (noexcept) [SWS_CRYPT_23618].
Данное указание по использованию было сгенерировано автоматически на основе полезной нагрузки AUTOSAR.
Руководство разработчика реализации в подготовке (сложность I2)
rollback_semantics if stream processing is not supported by the context or if this context does not use an IV or if the IV has been provided by the application in the Start() function
Request a governed re-review of this record. The record is not changed immediately.
Get the maximum input buffer size supported for processing in single calls to Update(), Finish(), FinishEncrypt(), or ProcessSingleCall() by this context.
Get the maximum IV size required to be passed to the context in the functions Start() and ProcessSingleCallWithInputIv() for the given transformDirection.
Get the minimum input buffer size supported for processing in single calls to Update(), Finish(), FinishEncrypt(), or ProcessSingleCall() by this context.
Get the minimum IV size required to be passed to the context in the functions Start() and ProcessSingleCallWithInputIv() for the given transformDirection.
Get the output IV size that will be returned by the functions FinishEncrypt() (in case no IV has been provided by the application during the call to Start()), and EncryptSingleCallWithOutputIv().
if true, calculate maximum required output buffer size for Finish(), FinishEncrypt(), ProcessSingleCallWithInputIv(), and Encrypt SingleCallWithOutputIv(), otherwise for Update()
Perform en-/decryption in a single-call without setting or returning an IV.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 4a1fdc95f521Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод ProcessSingleCall выполняет шифрование или расшифрование за один синхронный вызов без вектора инициализации (IV) ([SWS_CRYPT_50047]). В качестве входных параметров служат буфер данных in (ReadOnlyMemRegion) и направление преобразования transformDirection (CryptoTransform), тогда как результат записывается в буфер out (ReadWriteMemRegion). При успешном выполнении функция возвращает ara::core::Result<std::size_t>, содержащий количество записанных байтов; это значение может быть меньше общей емкости выходного буфера.
С точки зрения параллелизма и безопасности метод специфицирован как thread-safe и exception safe ([SWS_CRYPT_50047]). Обрабатываемый входной размер in подчиняется ограничениям, определенным контекстом, которые можно запросить через [SWS_CRYPT_50144] (GetMinimumChunkSize) и [SWS_CRYPT_50050] (GetMaximumChunkSize).
ara::crypto::CryptoErrc::kUninitializedContext: контекст не был предварительно инициализирован путем назначения ключа.
ara::crypto::CryptoErrc::kUnsupported: обработка за один вызов (Single-Call) не поддерживается или преобразование требует установки либо считывания IV.
ara::crypto::CryptoErrc::kInsufficientCapacity: выходной буфер out не обладает достаточной емкостью.
ara::crypto::CryptoErrc::kInvalidInputSize: входной размер не может быть обработан контекстом.
ara::crypto::CryptoErrc::kUsageViolation: использование ключа не покрывает запрошенную операцию (kAllowDataEncryption или kAllowDataDecryption).
ara::crypto::CryptoErrc::kIncompatibleObject, kEmptyKeySlot, kInvalidArgument или kBusyResource: ключ несовместим, слот ключа пуст, входные данные недействительны или требуемые ресурсы заняты.
Во взаимодействии с другими интерфейсами вызов требует полностью сконфигурированного контекста; для аутентифицирующих шифров с дополнительной обработкой тегов в AuthCipherCtx доступен альтернативный интерфейс [SWS_CRYPT_50078].
Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR.
Руководство разработчика реализации в подготовке (сложность I2)
rollback_semantics if single-call en-/decryption is not supported, or if the context requires setting or returning an IV in the passed transformDirection
rollback_semantics if the allowed usage of the key does not include kAllowData Encryption for encryption, or kAllowDataDecryption for decryption, respectively
Perform en-/decryption in a single-call, providing an IV to be used during en-/decryption.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: f491c775eb62Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод ProcessSingleCallWithInputIv в ara::crypto::cryp::SymmetricCipherCtx выполняет симметричное шифрование или расшифрование данных за один синхронный вызов (Single-Call) [SWS_CRYPT_50048]. При этом используемый для преобразования вектор инициализации явно передается через входной буфер iv.
Использование и взаимодействие
Через transformDirection управляется, зашифровываются или расшифровываются данные из in. Результат записывается в буфер out. Возвращаемый ara::core::Result<std::size_t> содержит фактическое количество записанных байтов, которое может оказаться меньше общей емкости out[SWS_CRYPT_50048].
Для определения размеров буферов доступны вспомогательные функции:
Требуемый размер буфера для out можно предварительно вычислить через GetRequiredOutputBufferSize с параметром isFinal = true[SWS_CRYPT_50140].
Допустимую длину для iv можно определить для выбранного направления преобразования через GetMinimumInputIvSize[SWS_CRYPT_50141], а также GetMaximumInputIvSize[SWS_CRYPT_50142].
Если дополнительно требуется создание или верификация тега аутентификации, вместо этого следует использовать ara::crypto::cryp::AuthCipherCtx::ProcessSingleCallWithInputIv[SWS_CRYPT_50079].
Обработка ошибок и параллелизм
Операция определена как thread-safe и exception safe[SWS_CRYPT_50048]. Все ошибки обладают семантикой отката:
CryptoErrc::kUninitializedContext или CryptoErrc::kEmptyKeySlot: контексту не был назначен ключ или KeySlot пуст [SWS_CRYPT_50048].
CryptoErrc::kUsageViolation: ключ не разрешает выбранное направление (отсутствует kAllowDataEncryption или kAllowDataDecryption) [SWS_CRYPT_50048].
CryptoErrc::kIncompatibleObject: тип ключа несовместим с преобразованием [SWS_CRYPT_50048].
CryptoErrc::kInsufficientCapacity: выходной буфер out слишком мал [SWS_CRYPT_50048].
CryptoErrc::kInvalidInputSize или CryptoErrc::kInvalidArgument: размер буфера или содержимое in недействительны [SWS_CRYPT_50048].
CryptoErrc::kUnsupported: обработка за один вызов (Single-Call) или входные IV не поддерживаются [SWS_CRYPT_50048].
rollback_semantics if the allowed usage of the key does not include kAllowData Encryption for encryption, or kAllowDataDecryption for decryption, respectively
Set the position of the next byte within the data stream.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 2287fbd40f75ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод Seek интерфейса ara::crypto::cryp::SymmetricCipherCtx устанавливает позицию следующего обрабатываемого байта внутри потока данных [SWS_CRYPT_23613]. Из-за отсутствия асинхронных возвращаемых типов, таких как фьючерсы, вызов, вероятно, выполняется синхронно. Вопрос Q-fccf732722263f60 (открытый)
offset: Байтовое смещение в потоке данных относительно либо начала потока, либо текущей позиции [SWS_CRYPT_23613].
fromBegin: Опорная точка позиционирования; true адресует смещение от начала потока, false — относительно текущей позиции [SWS_CRYPT_23613].
Функция объявлена как noexcept и возвращает ara::core::Result<void>, сигнализирующий об успешном выполнении или содержащий возникший объект ошибки [SWS_CRYPT_23613].
Параллелизм и ограничения
Согласно спецификации, Seek классифицирован как безопасный к исключениям (exception safe) и потокобезопасный (thread-safe) [SWS_CRYPT_23613]. Необходимым условием для выполнения является предварительная инициация обработки данных вызовом Start()[SWS_CRYPT_23613].
Обработка ошибок
Все случаи ошибок подчиняются определенной семантике отката (rollback_semantics), благодаря чему внутреннее состояние при ошибках остается согласованным [SWS_CRYPT_23613]:
ara::crypto::CryptoErrc::kUnsupported: Операция seek не поддерживается текущим криптографическим контекстом [SWS_CRYPT_23613].
ara::crypto::CryptoErrc::kProcessingNotStarted: Обработка данных не была предварительно запущена через Start()[SWS_CRYPT_23613].
ara::crypto::CryptoErrc::kOutOfBounds: Результирующее смещение слишком мало или слишком велико для потока данных [SWS_CRYPT_23613].
ara::crypto::CryptoErrc::kInvalidArgument: Результирующее смещение не выровнено по границе блока, хотя контекст требует выравнивания по блокам [SWS_CRYPT_23613].
Configure the context to use the key stored in the provided KeySlot at the time the en-/decryption is started.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 72406ca015eaПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Чисто виртуальный метод SetKey конфигурирует экземпляр ara::crypto::cryp::SymmetricCipherCtx таким образом, чтобы для будущих криптографических операций он использовал ключ из переданного KeySlot[SWS_CRYPT_50043].
Использование и контекст вызова
Вызов выполняется синхронно и принимает в качестве параметра keySlot объект KeySlot::Sptr, содержащий SymmetricKey[SWS_CRYPT_50043]. Возвращаемым значением является ara::core::Result<void>, которое сигнализирует об успехе или передает код ошибки в случае сбоя [SWS_CRYPT_50043]. Конфигурация приводит к тому, что сохраненный в слоте ключ задействуется только в момент запуска непосредственного шифрования или расшифрования [SWS_CRYPT_50043].
Обработка ошибок
В случае ошибки исключение не генерируется (метод специфицирован как noexcept и exception safe), а возвращается код ошибки с семантикой отката [SWS_CRYPT_50043]:
ara::crypto::CryptoErrc::kIncompatibleObject: переданный KeySlot несовместим с контекстом шифрования [SWS_CRYPT_50043].
ara::crypto::CryptoErrc::kUnsupported: реализация контекста поддерживает исключительно установку прямого ключа (такого как SymmetricKey) и не поддерживает назначение через KeySlot[SWS_CRYPT_50043].
Параллелизм и взаимодействие
Метод обозначен как thread-safe[SWS_CRYPT_50043]. Интерпретация: фактическое считывание материала ключа, вероятно, происходит только при запуске шифрования или расшифрования, поэтому слот должен оставаться согласованным до начала преобразования. Вопрос Q-799125800ab0f93c (открытый) Концепция конфигурирования контекстов через KeySlot::Sptr вместо прямых объектов ключей соответствует единообразному шаблону родственных криптографических контекстов, включая KeyDerivationFunctionCtx[SWS_CRYPT_50010], MessageAuthnCodeCtx[SWS_CRYPT_50026], SymmetricKeyWrapperCtx[SWS_CRYPT_50034], а также VerifierPublicCtx[SWS_CRYPT_50018].
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR Adaptive R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
Configure the context to use the provided symmetric key.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 7e5086bb8751Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Метод SetKey служит для того, чтобы сконфигурировать экземпляр ara::crypto::cryp::SymmetricCipherCtx для использования переданного симметричного ключа [SWS_CRYPT_50138]. В качестве входного параметра функция принимает используемый ключ в виде умного указателя key типа SymmetricKey::Sptr. Вызов выполняется синхронно и возвращает ara::core::Result<void>, которое при успешном назначении пусто или в случае ошибки предоставляет код ошибки [SWS_CRYPT_50138]. Объявление подключено через заголовочный файл ara/crypto/cryp/symmetric_cipher_ctx.h.
Обработка ошибок
Обработка ошибок гарантирует семантику отката, благодаря чему контекст при неудачном завершении назначения остается в своем прежнем состоянии [SWS_CRYPT_50138]. Определены две специфические ошибки:
ara::crypto::CryptoErrc::kUnsupported: возникает, если контекст поддерживает назначение ключа исключительно через KeySlot[SWS_CRYPT_50138].
ara::crypto::CryptoErrc::kIncompatibleObject: возвращается, если переданный объект ключа несовместим с контекстом [SWS_CRYPT_50138].
Параллелизм и взаимодействие
Виртуальная функция определена как noexcept, считается Exception-safe и в соответствии со спецификацией выполнена thread-safe [SWS_CRYPT_50138]. Схожие интерфейсы для назначения SymmetricKey::Sptr встречаются в родственных криптографических контекстах, таких как AuthCipherCtx[SWS_CRYPT_23911], а также SymmetricKeyWrapperCtx[SWS_CRYPT_24018]. Взаимодействие с контейнерами ключей также иллюстрируют классы контекстов, альтернативно принимающие KeySlot::Sptr[SWS_CRYPT_50034].
Это указание по использованию сгенерировано автоматически на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
Initialize the context for a new encryption or decryption and set the IV used by the context.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 33beff56357bПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Метод Start инициализирует контекст ara::crypto::cryp::SymmetricCipherCtx для новой синхронной операции шифрования или расшифрования и устанавливает соответствующий вектор инициализации (IV) или значение nonce [SWS_CRYPT_23625]. Через параметр transformDirection задается направление трансформации, в то время как iv предоставляет вектор инициализации в виде ReadOnlyMemRegion[SWS_CRYPT_23625]. Допустимый размер буфера можно предварительно запросить через методы GetMinimumInputIvSize() и GetMaximumInputIvSize()[SWS_CRYPT_23625]. Вызов возвращает ara::core::Result<void>, объявлен как noexcept и считается безопасным к исключениям (exception safe) [SWS_CRYPT_23625].
Обработка ошибок
В случае ошибки возвращается код ошибки с семантикой отката [SWS_CRYPT_23625]:
ara::crypto::CryptoErrc::kUninitializedContext: Контекст не был предварительно инициализирован назначением ключа [SWS_CRYPT_23625].
ara::crypto::CryptoErrc::kInvalidInputSize: Переданный размер IV не поддерживается [SWS_CRYPT_23625].
ara::crypto::CryptoErrc::kUnsupported: Установка IV в указанном направлении трансформации или потоковая обработка не поддерживается контекстом [SWS_CRYPT_23625].
ara::crypto::CryptoErrc::kEmptyKeySlot: Сконфигурированный KeySlot в данный момент пуст [SWS_CRYPT_23625].
ara::crypto::CryptoErrc::kUsageViolation: Допустимое использование ключа не охватывает kAllowDataEncryption для шифрования или kAllowDataDecryption для расшифрования [SWS_CRYPT_23625].
ara::crypto::CryptoErrc::kIncompatibleObject: Тип ключа несовместим с трансформацией или направлением трансформации [SWS_CRYPT_23625].
Функция специфицирована как потокобезопасная (thread-safe) [SWS_CRYPT_23625]. В процессе потоковой обработки Start выступает в качестве инициирующего шага, за которым следуют, например, операции позиционирования через Seek[SWS_CRYPT_23613] или финализация через FinishEncrypt[SWS_CRYPT_23618].
Этот текст был сгенерирован системой ИИ на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
the transformation direction, i.e., encryption or decryption
iv
an Initialization Vector (IV) or "nonce" value. The allowed size of the IV can be queried using the functions GetMinimumInputIvSize() and GetMaximumInputIvSize().
rollback_semantics if the context does not support setting an IV in the given transform Direction or if stream processing is not supported by the context
rollback_semantics if the allowed usage of the key does not include kAllowData Encryption for encryption, or kAllowDataDecryption for decryption, respectively
Initialize the context for a new encryption or decryption. An IV is either not required for this context in this transformation direction, or set by the context itself.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 09affb4844e4Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Метод Start синхронно инициализирует экземпляр ara::crypto::cryp::SymmetricCipherCtx для предстоящего шифрования или дешифрования ([SWS_CRYPT_50044]). Он применяется, когда для направления преобразования, заданного через параметр transformDirection, вектор инициализации (IV) не требуется или контекст генерирует его самостоятельно ([SWS_CRYPT_50044]). Если же в выбранном направлении контекст требует явного IV, необходимо вызывать перегрузку с параметром IV ([SWS_CRYPT_23625]).
Обработка ошибок и параллелизм
Операция специфицирована как потокобезопасная и безопасная к исключениям ([SWS_CRYPT_50044]). При ошибке функция возвращает ara::core::Result<void> с семантикой отката ([SWS_CRYPT_50044]). Соответствующими причинами ошибок являются:
ara::crypto::CryptoErrc::kUninitializedContext: Контексту предварительно не был назначен ключ ([SWS_CRYPT_50044]).
ara::crypto::CryptoErrc::kUnsupported: потоковая обработка не поддерживается или операция в этом направлении строго требует установки IV ([SWS_CRYPT_50044]).
ara::crypto::CryptoErrc::kUsageViolation: ключ не обладает необходимыми правами kAllowDataEncryption или kAllowDataDecryption ([SWS_CRYPT_50044]).
ara::crypto::CryptoErrc::kIncompatibleObject или ara::crypto::CryptoErrc::kEmptyKeySlot: тип ключа не подходит для преобразования либо сконфигурированный слот ключа пуст ([SWS_CRYPT_50044]).
ara::crypto::CryptoErrc::kBusyResource: требуемый ресурс в данный момент занят ([SWS_CRYPT_50044]).
Взаимодействие
После успешной инициализации поток данных при необходимости может быть позиционирован с помощью Seek ([SWS_CRYPT_23613]). Если IV был определен самим контекстом, он передается вызывающей стороне в конце шифрования через FinishEncrypt ([SWS_CRYPT_23618]).
Это указание по использованию было создано автоматически на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
rollback_semantics if the allowed usage of the key does not include kAllowData Encryption for encryption, or kAllowDataDecryption for decryption, respectively
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 5cb4a9bba31dПроисхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Синхронный метод Update() служит в ara::crypto::cryp::SymmetricCipherCtx для пошагового шифрования или расшифрования частей потоков данных [SWS_CRYPT_50139]. Он обрабатывает входной буфер in (тип ReadOnlyMemRegion) с открытым или зашифрованным текстом и записывает преобразованные данные в выходной буфер out (тип ReadWriteMemRegion) [SWS_CRYPT_50139]. Возвращаемое значение ara::core::Result<std::size_t> в случае успеха предоставляет точное количество байтов, фактически записанных в out, которое может быть меньше общей емкости целевого буфера [SWS_CRYPT_50139].
Для вызова действуют установленные предварительные условия и правила работы с буферами:
Порядок выполнения: обработка данных должна быть предварительно обязательно инициирована с помощью метода Start(); в противном случае вызов завершается с ошибкой ara::crypto::CryptoErrc::kProcessingNotStarted[SWS_CRYPT_50139].
Определение размера буфера: максимально допустимый размер входных данных на один вызов может быть определен через GetMaximumChunkSize()[SWS_CRYPT_50050]; некорректные размеры буфера метод квитирует с ara::crypto::CryptoErrc::kInvalidInputSize[SWS_CRYPT_50139]. Требуемый выходной буфер можно запросить через GetRequiredOutputBufferSize()[SWS_CRYPT_50139]; слишком малый размер буфера приводит к ara::crypto::CryptoErrc::kInsufficientCapacity[SWS_CRYPT_50139].
Поддержка потоковой обработки: если конкретный контекст не поддерживает непрерывную потоковую обработку (stream processing), вызов завершается с ошибкой ara::crypto::CryptoErrc::kUnsupported[SWS_CRYPT_50139].
Интерфейс специфицирован как thread-safe, а также exception safe и гарантирует семантику отката при любой ошибке [SWS_CRYPT_50139]. В цикле обработки он взаимодействует с GetMaximumChunkSize(), а также с завершающими операциями, такими как Finish() или FinishEncrypt()[SWS_CRYPT_50050].
Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR R25-11.
an input data buffer containing a part of the ciphertext or plaintext
Parameter (out)
Parameter
Beschreibung
out
an output data buffer that the encrypted or decrypted data will be written into. The required size of this buffer can be queried using GetRequiredOutputBufferSize()
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал