Служит общим интерфейсом для потокобезопасной инспекции и персистентного сохранения криптографических объектов.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 156a618ba987ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Служит общим интерфейсом для потокобезопасной инспекции и персистентного сохранения криптографических объектов.
Интерфейс ara::crypto::cryp::CryptoObject определяет общую абстракцию для всех криптографических объектов в стеке Adaptive Crypto и управляет их жизненным циклом через Sptr[SWS_CRYPT_20501]. Он обеспечивает потокобезопасное считывание идентификаторов алгоритмов, а также флагов использования и поддерживает постоянную перезапись ключевого материала в WriteableKeySlot[SWS_CRYPT_20505], [SWS_CRYPT_20517]. При операции сохранения определенные коды ошибок с семантикой отката гарантируют целостность данных базового слота хранения [SWS_CRYPT_20517].
Контекст
Интерфейс ara::crypto::cryp::CryptoObject образует общую абстракцию для всех криптографических объектов, которые могут распознаваться и администрироваться криптопровайдером. Класс расширяет ara::crypto::Serializable и определяет базовые свойства, такие как идентификация алгоритма, ограничения использования, а также механизмы персистентного сохранения. Типичными партнерами по взаимодействию являются вызывающие приложения, предоставляющий криптопровайдер, а также целевое хранилище в виде экземпляров WriteableKeySlot.
Жизненный цикл
Криптографические объекты администрируются внутри платформы главным образом через разделяемое владение. Для этого класс определяет канонический псевдоним интеллектуального указателя ara::crypto::cryp::CryptoObject::Sptr как std::shared_ptr<CryptoObject>[SWS_CRYPT_20501]. Конкретные экземпляры, по-видимому, инстанцируются специализированными процедурами фабрики и загрузки криптопровайдера и предоставляются вызывающей стороне через этот тип указателя. Вопрос Q-36e2bd12d7dc8b98 (открытый) Все объявленные методы интерфейса специфицированы как thread-safe и безопасные относительно исключений (exception safe, noexcept), благодаря чему обеспечивается безопасный параллельный доступ на чтение и сохранение из нескольких потоков [SWS_CRYPT_20505], [SWS_CRYPT_50092], [SWS_CRYPT_20517]. Освобождение объекта и соответствующего ключевого материала происходит автоматически, как только перестает существовать последняя ссылка Sptr.
Путь использования
Типичный путь использования включает идентификацию криптографических свойств объекта и его последующее персистентное сохранение. Сначала приложение опрашивает через GetAlgId() идентификатор алгоритма объекта как ara::crypto::AlgIdString[SWS_CRYPT_20505]. Затем через GetAllowedUsage() определяются допустимые флаги использования (AllowedUsageFlags) [SWS_CRYPT_50092], чтобы убедиться, что объект авторизован для предполагаемой операции. Для долговременного сохранения приложение передает доступный для записи слот ключа в метод Save()[SWS_CRYPT_20517]. После этого ключевой материал и сопутствующие метаданные сохраняются в целевом слоте, при этом ранее присутствовавшие данные в слоте перезаписываются [SWS_CRYPT_20517].
В то время как GetAlgId()[SWS_CRYPT_20505] и GetAllowedUsage()[SWS_CRYPT_50092] не содержат стандартизированных кодов ошибок и в случае успеха возвращают соответствующий результат в ara::core::Result, операция персистирования Save() определяет специфические условия ошибок с обязательной семантикой отката [SWS_CRYPT_20517]:
ara::crypto::CryptoErrc::kIncompatibleObject: возникает, если объект несовместим с переданным WriteableKeySlot, например, из-за несовпадения идентификаторов алгоритмов (AlgId) или принадлежности KeySlot к другому криптопровайдеру [SWS_CRYPT_20517].
ara::crypto::CryptoErrc::kUsageViolation: сигнализирует о недопустимом использовании, если объявленные через GetAllowedUsage() флаги использования ключа не содержат права на персистирование (kAllowPersist) [SWS_CRYPT_50092], [SWS_CRYPT_20517].
ara::crypto::CryptoErrc::kBusyResource: возвращается, если базовый ресурс хранения временно занят и операция не может быть выполнена немедленно [SWS_CRYPT_20517].
Благодаря семантике отката состояние WriteableKeySlot при каждой из этих ошибок остается неповрежденным, исключая сохранение в памяти частично записанных или поврежденных данных ключа [SWS_CRYPT_20517].
Настоящее руководство основано на спецификации AUTOSAR Adaptive R25-11 и обобщает требования к интерфейсу ara::crypto::cryp::CryptoObject.
The interface shall persistently store the key-material and its meta-data in the provided WriteableKeySlot. Data previously stored in keyslot shall be overwritten.
The interface shall persistently store the key-material and its meta-data in the provided WriteableKeySlot. Data previously stored in keyslot shall be overwritten.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 0aae854cf6a9Происхождение
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Метод Save интерфейса ara::crypto::cryp::CryptoObject служит для персистентного сохранения ключевого материала вместе с соответствующими метаданными в предоставленном WriteableKeySlot ([SWS_CRYPT_20517]). Ранее сохраненные в целевом KeySlot данные перезаписываются при выполнении ([SWS_CRYPT_20517]).
В качестве параметра передается keyslot типа WriteableKeySlot::Sptr, который представляет базовое место хранения ([SWS_CRYPT_20517]). Функция специфицирована как noexcept, а также exception safe и возвращает в качестве возвращаемого значения ara::core::Result<void>, которое в случае успеха является пустым ([SWS_CRYPT_20517]).
В случае ошибки действует семантика отката ([SWS_CRYPT_20517]). В частности, возвращаются следующие коды ошибок:
ara::crypto::CryptoErrc::kIncompatibleObject: ключ несовместим с KeySlot, например, из-за несовпадающего AlgId или привязки к другому CryptoProvider ([SWS_CRYPT_20517]).
ara::crypto::CryptoErrc::kUsageViolation: допустимое использование ключа не включает право kAllowPersist ([SWS_CRYPT_20517]).
ara::crypto::CryptoErrc::kBusyResource: операция временно не может быть выполнена ([SWS_CRYPT_20517]).
Что касается параллелизма, метод объявлен как thread-safe ([SWS_CRYPT_20517]).
Данное указание по использованию было сгенерировано ИИ на основе спецификации AUTOSAR R25-11.
Руководство разработчика реализации в подготовке (сложность I1)
rollback_semantics if the key is incompatible to the KeySlot, e.g., because the AlgId of the KeySlot is incompatible to the AlgId of the key or because the KeySlot belongs to a different CryptoProvider
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал