Шифрует данные асимметрично за один шаг или с помощью составной потоковой операции.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 9ba841f18186ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Шифрует данные асимметрично за один шаг или с помощью составной потоковой операции.
Интерфейс служит для асимметричного шифрования открытых данных на AUTOSAR Adaptive Platform и управляется через предоставляемый умный указатель [SWS_CRYPT_50174]. После назначения подходящего открытого ключа сообщения могут преобразовываться либо компактно за один проход, либо непрерывно в рамках составного сеанса потоковой передачи [SWS_CRYPT_50090]. Для корректного выполнения размеры буферов должны рассчитываться предварительно, при этом все операции контекста специфицированы как исключениебезопасные и потокобезопасные.
Контекст
Класс C++ ara::crypto::cryp::EncryptorPublicCtx предоставляет стандартизированный интерфейс для асимметричного шифрования данных в AUTOSAR Adaptive Platform. Он служит клиентским приложениям для шифрования открытых данных с использованием асимметричного открытого ключа. При этом конфигурация криптографического ключа может выполняться либо напрямую через ключевой объект ([SWS_CRYPT_50175]), либо через ссылку на место хранения ключа (KeySlot, [SWS_CRYPT_50086]). Передача данных осуществляется через эффективные по использованию памяти буферные области (ReadOnlyMemRegion для открытых данных и ReadWriteMemRegion для вывода шифротекста).
Жизненный цикл
Экземпляры контекста управляются через shared-указатель std::shared_ptr<EncryptorPublicCtx>, определенный в псевдониме типа Sptr ([SWS_CRYPT_50174]). Само создание не является частью данного определения интерфейса; вероятно, инстанцирование выполняется вышестоящим фабричным компонентом криптоархитектуры. Вопрос Q-5b7490ba113bb861 (открытый) В течение своего жизненного цикла объект проходит четко определенные состояния:
Не инициализирован: после инстанцирования контекст еще не имеет ключа. Операции обработки данных в этом состоянии недопустимы.
Сконфигурирован (готов): при вызове SetKey() с PublicKey ([SWS_CRYPT_50175]) или KeySlot ([SWS_CRYPT_50086]) контекст становится готов к использованию. Из этого состояния можно либо выполнить одношаговое шифрование, либо запустить сеанс потоковой передачи.
Потоковая передача активна: вызов Start() ([SWS_CRYPT_50087]) переводит контекст в состояние потоковой передачи. Последовательные блоки данных обрабатываются через Update() ([SWS_CRYPT_50176]). Сеанс либо завершается с помощью Finish() ([SWS_CRYPT_50088]), либо прерывается с помощью Cancel() ([SWS_CRYPT_50089]), в результате чего контекст возвращается в состояние Сконфигурирован.
Все методы класса специфицированы как исключениебезопасные (exception safe) и потокобезопасные (thread-safe). Если контекст уничтожается в то время, когда потоковая операция еще не была завершена, базовая реализация, вероятно, очищает выделенные буферы и неявно сбрасывает сеанс. Вопрос Q-3eadc946a0bdbdfd (открытый)
Класс поддерживает два режима обработки: одношаговую обработку для полных наборов данных и многошаговую потоковую передачу для сегментированных потоков данных. Перед выполнением операций шифрования приложения должны учитывать границы буферов:
С помощью GetMinimumChunkSize()` (<a class="spec-record-ref" data-req="SWS_CRYPT_50178">[SWS_CRYPT_50178]</a>) und <code>GetMaximumChunkSize() ([SWS_CRYPT_50091]) можно определить минимально и максимально поддерживаемые размеры входных данных для отдельных вызовов.
Необходимая емкость выходного буфера должна быть предварительно запрошена с помощью GetRequiredOutputBufferSize() ([SWS_CRYPT_50177]). Параметр isFinal управляет тем, выполняется ли расчет для промежуточных шагов (false) или для финальных вызовов либо однократных шагов (true).
Типичный процесс потокового шифрования делится на следующие шаги:
Назначение ключа через SetKey() с действительным PublicKey ([SWS_CRYPT_50175]).
Инициализация сеанса потоковой передачи путем вызова Start() ([SWS_CRYPT_50087]).
Расчет требуемого размера выходного буфера для промежуточных блоков с помощью GetRequiredOutputBufferSize(inputSize, false) ([SWS_CRYPT_50177]).
Повторное преобразование блоков данных через Update() ([SWS_CRYPT_50176]).
Определение размера буфера для последнего блока (isFinal = true) и финализация операции через Finish() ([SWS_CRYPT_50088]).
Для компактных данных, которые могут быть обработаны за один проход, Encrypt() ([SWS_CRYPT_50090]) предоставляет прямой одношаговый вызов без разделения на фазы Start, Update и Finish.
Все методы используют ara::core::Result для сигнализации об ошибках и гарантируют семантику отката в случае сбоя:
Ошибки состояния: вызов Start(), Encrypt() или GetRequiredOutputBufferSize() для неинициализированного контекста приводит к ara::crypto::CryptoErrc::kUninitializedContext ([SWS_CRYPT_50087], [SWS_CRYPT_50090], [SWS_CRYPT_50177]). Если Update(), Finish() или Cancel() вызываются без предварительного выполнения Start(), операция завершается с ошибкой ara::crypto::CryptoErrc::kProcessingNotStarted ([SWS_CRYPT_50176], [SWS_CRYPT_50088], [SWS_CRYPT_50089]).
Ошибки буфера и данных: если переданный выходной буфер имеет недостаточный размер, Encrypt(), Update() и Finish() отвечают ara::crypto::CryptoErrc::kInsufficientCapacity ([SWS_CRYPT_50090], [SWS_CRYPT_50176], [SWS_CRYPT_50088]). Отклонения от допустимых размеров фрагментов приводят к ara::crypto::CryptoErrc::kInvalidInputSize, недопустимые входные данные — к ara::crypto::CryptoErrc::kInvalidArgument.
Данное руководство основано на требованиях AUTOSAR Adaptive Platform Release R25-11 и обобщает спецификацию класса ara::crypto::cryp::EncryptorPublicCtx.
Cancel the ongoing streaming operation that has been initiated by Start() and has not yet been finished.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: c2111af75063ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод Cancel() прерывает активную операцию потоковой передачи в контексте ara::crypto::cryp::EncryptorPublicCtx, которая ранее была инициирована с помощью Start() и еще не завершена [SWS_CRYPT_50089]. Он не принимает входных параметров и возвращает ara::core::Result<void>, который в случае успеха пуст [SWS_CRYPT_50089]. Поскольку сигнатура сразу возвращает Result, а не Future, прерывание, вероятно, выполняется синхронно. Вопрос Q-cd18e56d693fe1a4 (открытый)
Обработка ошибок и параллелизм
Если обработка данных не была предварительно запущена через Start(), операция завершается сбоем с кодом ошибки ara::crypto::CryptoErrc::kProcessingNotStarted с соблюдением семантики отката [SWS_CRYPT_50089]. Согласно спецификации интерфейс объявлен с noexcept, является безопасным относительно исключений (exception safe) и для параллельного доступа классифицирован как потокобезопасный (thread-safe) [SWS_CRYPT_50089].
Взаимодействие в криптографическом стеке
Поведение прерывания, реализованное с помощью Cancel(), следует единому шаблону проектирования для потоковых операций с сохранением состояния в криптографическом модуле. Аналогичные интерфейсы с идентичной семантикой ошибок существуют для:
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 523fe4336ba2Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Синхронный метод Encrypt служит для шифрования данных открытого текста за один вызов ([SWS_CRYPT_50090]). Он принимает входные данные из буфера in (ReadOnlyMemRegion) и записывает шифротекст в выходной буфер out (ReadWriteMemRegion) ([SWS_CRYPT_50090]). Возвращаемое значение ara::core::Result<std::size_t> в случае успеха предоставляет размер фактически записанных выходных данных, который может быть меньше общей емкости out ([SWS_CRYPT_50090]).
Что касается параллелизма, функция специфицирована как потокобезопасная (thread-safe), а также безисключительная (exception safe) ([SWS_CRYPT_50090]).
Во взаимодействии с контекстом EncryptorPublicCtx перед вызовом необходимо учитывать следующие границы буфера:
Размер входных данных должен находиться в пределах ограничений, заданных [SWS_CRYPT_50178] (GetMinimumChunkSize) и [SWS_CRYPT_50091] (GetMaximumChunkSize).
Максимально требуемую емкость выходного буфера out можно предварительно рассчитать через GetRequiredOutputBufferSize с параметром isFinal = true ([SWS_CRYPT_50177]).
Все случаи ошибок обладают семантикой отката ([SWS_CRYPT_50090]). К определенным ошибкам из ara::crypto::CryptoErrc относятся:
kUninitializedContext: контекст не был инициализирован предоставлением ключа ([SWS_CRYPT_50090]).
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: ef643cd9b744Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Метод Finish завершает операцию асимметричного шифрования в контексте ara::crypto::cryp::EncryptorPublicCtx[SWS_CRYPT_50088]. Вызов выполняется синхронно и специфицирован как noexcept, exception-safe, а также thread-safe. В качестве параметров функция принимает через in (ReadOnlyMemRegion) заключительный фрагмент открытого текста и записывает результирующие данные шифротекста в выходной буфер out (ReadWriteMemRegion). Требуемый размер буфера для out можно предварительно определить через GetRequiredOutputBufferSize(). Возвращаемое значение ara::core::Result<std::size_t> в случае успеха передает фактически записанное количество байтов, которое может оказаться меньше общей емкости выходного буфера [SWS_CRYPT_50088].
Обработка ошибок и параллелизм
Все случаи ошибок обладают семантикой отката, благодаря чему состояние контекста при сбое остается согласованным [SWS_CRYPT_50088]. Метод сообщает о следующих специфических кодах ошибок из ara::crypto::CryptoErrc:
kProcessingNotStarted: обработка данных предварительно не была инициирована вызовом Start().
kInsufficientCapacity: предоставленный выходной буфер out имеет слишком малый размер.
kInvalidInputSize: размер буфера in не может быть обработан контекстом.
kInvalidArgument: переданные входные данные содержат недопустимые значения.
kUnsupported: потоковая обработка не поддерживается конкретным контекстом.
Взаимодействие
Финализация завершает криптографический процесс обработки [SWS_CRYPT_50088]. В качестве комплементарного аналога для расшифрования выступает DecryptorPrivateCtx::Finish[SWS_CRYPT_50068], тогда как в области симметричного шифрования сравнимую схему последовательности действий предоставляет SymmetricCipherCtx::Finish[SWS_CRYPT_50045].
Этот текст был сгенерирован процедурой ИИ на основе спецификации.
Configure the context to use the key stored in the provided KeySlot at the time the encryption is started.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: e68fdee554baПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование и контекст вызова
Чисто виртуальный метод SetKey интерфейса ara::crypto::cryp::EncryptorPublicCtx (заголовочный файл ara/crypto/cryp/encryptor_public_ctx.h) служит для назначения ключа для асимметричных операций шифрования [SWS_CRYPT_50086]. В качестве параметра передается умный указатель keySlot типа KeySlot::Sptr, который должен содержать PublicKey[SWS_CRYPT_50086]. Вызов выполняется синхронно и сигнализирует об успехе через пустой ara::core::Result<void>. Существенным для семантики является то, что сохраненный в слоте ключ задействуется лишь в тот момент, когда запускается шифрование [SWS_CRYPT_50086]. (Интерпретация: поскольку разрешение ключа происходит только с фактическим запуском шифрования, обновления содержимого слота до этого момента запуска должны еще иметь силу.) Вопрос Q-25c5d462aafde8a1 (открытый)
Обработка ошибок
Если конфигурация завершается неудачно, в объекте Result возвращается код ошибки с семантикой отката [SWS_CRYPT_50086]:
ara::crypto::CryptoErrc::kIncompatibleObject: сообщается, если предоставленный keySlot несовместим с этим контекстом [SWS_CRYPT_50086].
ara::crypto::CryptoErrc::kUnsupported: возникает, если конкретная реализация контекста поддерживает исключительно прямую установку PublicKey и не допускает привязку ключа через KeySlot[SWS_CRYPT_50086].
Параллелизм и взаимодействие
Операция объявлена как noexcept, специфицирована как безисключительная (exception safe) и для параллельного использования как потокобезопасная (thread-safe) [SWS_CRYPT_50086].
Концепция косвенной адресации ключей через KeySlot аналогичным образом встречается и в других асимметричных контекстах, таких как VerifierPublicCtx::SetKey[SWS_CRYPT_50018] и KeyEncapsulatorPublicCtx::SetKey[SWS_CRYPT_50012]. Она отличается от методов, принимающих объекты ключей напрямую, как, например, в [SWS_CRYPT_24115] или [SWS_CRYPT_21815].
Это указание по использованию было сгенерировано ИИ на основе спецификации AUTOSAR.
Руководство разработчика реализации в подготовке (сложность I2)
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 09de2ed1c4fcПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Виртуальный метод SetKey класса ara::crypto::cryp::EncryptorPublicCtx конфигурирует контекст для использования предоставленного открытого ключа [SWS_CRYPT_50175].
Через параметр key (типа PublicKey::Sptr) передается объект ключа, используемый для шифрования [SWS_CRYPT_50175].
Выполнение происходит синхронно и возвращает ara::core::Result<void>, которое в случае успеха не содержит значения [SWS_CRYPT_50175].
Обработка ошибок
Если при конфигурации возникает ошибка, возвращается соответствующий код ошибки с определенной семантикой отката [SWS_CRYPT_50175]:
ara::crypto::CryptoErrc::kUsageViolation: допустимое использование ключа не разрешает шифрование данных (kAllowDataEncryption) [SWS_CRYPT_50175].
ara::crypto::CryptoErrc::kIncompatibleObject: переданный объект ключа несовместим с данным контекстом шифрования [SWS_CRYPT_50175].
ara::crypto::CryptoErrc::kUnsupported: конкретная реализация контекста поддерживает исключительно привязку через KeySlot[SWS_CRYPT_50175].
Параллелизм и ограничения
Интерфейс определен как noexcept и специфицирует поведение, являющееся как thread-safe, так и exception safe[SWS_CRYPT_50175].
Благодаря семантике отката контекст в случае ошибки остается в своем предыдущем состоянии.
Интерпретация: успешный вызов, вероятно, является обязательным условием для последующих операций шифрования, поскольку без назначенного ключа контекст не может выполнять операции. Вопрос Q-ab4779cac18793fa (открытый)
Взаимодействие
Этот подход следует общемодульному шаблону асимметричных контекстов, который также используется в VerifierPublicCtx::SetKey[SWS_CRYPT_24115] и KeyEncapsulatorPublicCtx::SetKey[SWS_CRYPT_21815] для привязки ключа.
В качестве альтернативы родственные интерфейсы для конфигурации предусматривают также варианты KeySlot, как, например, в VerifierPublicCtx[SWS_CRYPT_50018] или KeyEncapsulatorPublicCtx[SWS_CRYPT_50012].
Этот текст был сгенерирован ИИ-системой на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I2)
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 50b972147b28ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование и семантика
Чисто виртуальный метод Start класса ara::crypto::cryp::EncryptorPublicCtx служит для инициализации контекста для нового шифрования [SWS_CRYPT_50087]. Он не принимает входных параметров и выполняется синхронно. В качестве возвращаемого значения функция передает ara::core::Result<void>, которое либо подтверждает успешную инициализацию, либо передает возникший код ошибки [SWS_CRYPT_50087].
Обработка ошибок и поведение при откате
Если требуемые предварительные условия для операции шифрования не выполнены, вызов завершается неудачно. Спецификация гарантирует семантику отката для случаев ошибок и определяет следующие причины ошибок [SWS_CRYPT_50087]:
UninitializedContext: контексту предварительно не был назначен ключ.
ara::crypto::CryptoErrc::kEmptyKeySlot: сконфигурированный KeySlot в данный момент не занят.
ara::crypto::CryptoErrc::kUsageViolation: права доступа ключа не содержат флаг использования kAllowDataEncryption.
ara::crypto::CryptoErrc::kIncompatibleObject: назначенный тип ключа несовместим с требуемым преобразованием.
ara::crypto::CryptoErrc::kBusyResource: ресурс, необходимый для инициализации, занят.
ara::crypto::CryptoErrc::kUnsupported: потоковая обработка не поддерживается конкретным контекстом.
Параллелизм и взаимодействие
Метод специфицирован как thread-safe и exception safe[SWS_CRYPT_50087]. Предоставление подходящего ключа в контексте является обязательным предварительным условием успеха. Концептуально функция встраивается в стандартизированные жизненные циклы криптографических контекстов, в которых операции подготавливаются вызовами без параметров — сравнимо с проверками подписи [SWS_CRYPT_50019], формированиями подписи [SWS_CRYPT_50037] или вычислениями MAC [SWS_CRYPT_22111]. Вызов, по-видимому, представляет собой обязательную отправную точку перед фактическим выполнением потокового шифрования. Вопрос Q-db262c3914e6b4cf (открытый)
Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 01cf25c1d489ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Синхронный метод Update класса ara::crypto::cryp::EncryptorPublicCtx служит для пошагового шифрования блоков открытого текста [SWS_CRYPT_50176]. Через параметр in (ReadOnlyMemRegion) передается часть открытого текста, тогда как зашифрованные данные записываются в выходной буфер out (ReadWriteMemRegion) [SWS_CRYPT_50176]. В качестве возвращаемого значения функция передает через ara::core::Result<std::size_t> фактическое количество записанных байтов, которое может быть меньше предоставленной емкости out[SWS_CRYPT_50176].
Порядок выполнения и взаимодействие
Перед первым вызовом Update обработка данных обязательно должна быть инициирована с помощью Start()[SWS_CRYPT_50176]. Максимально допустимый размер входных данных для отдельных вызовов можно запросить через метод GetMaximumChunkSize()[SWS_CRYPT_50091]. Минимальный размер, требуемый для out, также может быть вычислен через GetRequiredOutputBufferSize()[SWS_CRYPT_50176].
Обработка ошибок и параллелизм
Если во время выполнения возникает ошибка, о ней сообщается с семантикой отката [SWS_CRYPT_50176]:
ara::crypto::CryptoErrc::kProcessingNotStarted: обработка данных не была предварительно начата с помощью Start()[SWS_CRYPT_50176].
ara::crypto::CryptoErrc::kInsufficientCapacity: емкости буфера out недостаточно для результата [SWS_CRYPT_50176].
ara::crypto::CryptoErrc::kInvalidInputSize: размер буфера in некорректен [SWS_CRYPT_50176].
ara::crypto::CryptoErrc::kUnsupported: потоковая обработка не поддерживается текущим контекстом [SWS_CRYPT_50176].
Метод объявлен как исключениебезопасный и потокобезопасный [SWS_CRYPT_50176]. Тем не менее параллельный вызов нескольких операций для одного и того же объекта контекста, предположительно, требует внешней синхронизации, чтобы гарантировать детерминированный порядок зашифрованных фрагментов данных. Вопрос Q-b22ffe505b583b25 (открытый)
Этот текст создан ИИ и служит для ознакомления. Обязательной является спецификация.
an input data buffer containing a part of the plaintext
Parameter (out)
Parameter
Beschreibung
out
an output data buffer that the encrypted data will be written into. The required size of this buffer can be queried using GetRequired OutputBufferSize()
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал