DEENESPTFRRUARHIKOZHNL

класс ara::crypto::Serializable

[SWS_CRYPT_10700] Upstream: RS_CRYPTO_02105

class Serializable {...};

Serializable object interface.

Header-Datei#include "ara/crypto/common/serializable.h"
Forwarding-Header#include "ara/crypto/crypto_fwd.h"
Scopenamespace ara::crypto

Руководство пользователяСОЗДАНО ИИ

Определяет интерфейс для определения размера и открытой сериализации криптографических объектов.
СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: dacacac17ff9 Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Определяет интерфейс для определения размера и открытой сериализации криптографических объектов.

Интерфейс ara::crypto::Serializable определяет единый стандарт для открытого экспорта криптографических объектов в байтовые последовательности специфического формата. Приложения предварительно определяют требуемый размер буфера с помощью GetExportSize() и затем выполняют фактическую сериализацию через ExportPublicly() в предоставленный буфер [SWS_CRYPT_10711]. Все операции являются безопасными относительно исключений, а также потокобезопасными, причем экспорт ключей обязательно требует полномочия kAllowPlaintextExport, а ошибки всегда подчиняются семантике отката [SWS_CRYPT_50006].

Контекст

Интерфейс ara::crypto::Serializable определяет абстрактный контракт для криптографических объектов в модуле crypto, которые могут быть преобразованы в стандартизированное байтовое представление. Являясь чистым интерфейсом, он инкапсулирует возможность сериализации объекта в формат вывода, заданный идентификатором формата (FormatId) [SWS_CRYPT_10711]. К типичным партнерам по взаимодействию относятся компоненты приложений или платформы, которым требуется постоянно сохранять криптографические артефакты, такие как ключи или сертификаты, передавать их по каналам связи или обмениваться ими в открытом виде. Интерфейс гарантирует, что экспорт выполняется контролируемо и с учетом форматов, а также ограничений безопасности.

Жизненный цикл

Поскольку ara::crypto::Serializable представляет собой чисто виртуальный интерфейс с чисто виртуальными методами, класс не содержит собственной логики создания экземпляров. Время жизни и создание полностью зависят от производных конкретных криптографических классов, реализующих интерфейс. Оба специфицированных метода интерфейса, GetExportSize() [SWS_CRYPT_50006] и ExportPublicly() [SWS_CRYPT_10711], объявлены как const и не изменяют внутреннее состояние объекта при сериализации. Согласно спецификации, операции спроектированы как безопасные относительно исключений (exception safe) и потокобезопасные (thread-safe) [SWS_CRYPT_10711], [SWS_CRYPT_50006], благодаря чему параллельный доступ на чтение к одному и тому же экземпляру объекта является допустимым.

Путь использования

Регулярный процесс экспорта делится на двухэтапную последовательность из определения размера и фактической сериализации. Чтобы избежать переполнения буфера или неудачных выделений памяти, вызывающая сторона предварительно запрашивает через метод GetExportSize() точно требуемый размер буфера в байтах для нужного целевого формата [SWS_CRYPT_50006]. После успешного ответа вызывающая сторона предоставляет доступную для записи область памяти типа ReadWriteMemRegion. Предположительно, в большинстве реализаций эта область памяти выделяется динамически на основе определенного количества байтов или предоставляется из предварительно зарезервированного пула памяти. Вопрос Q-0c04ba0a352f0a37 (открытый)

На последующем шаге приложение вызывает ExportPublicly() и передает как предоставленный буфер, так и ранее выбранный FormatId [SWS_CRYPT_10711]. Объект сериализует свои полезные данные в переданную область памяти и в случае успеха возвращает фактически записанное количество байтов внутри типа возвращаемого значения ara::core::Result<std::size_t> [SWS_CRYPT_10711].

Процесс сериализации через ara::crypto::SerializableПриложениеSerializableGetExportSize(format)Result<std::size_t> (размер буфера)Bereitstellung ReadWriteMemRegionExportPublicly(out, format)Result<std::size_t> (geschriebene Bytes)

Диаграмма последовательности: типичная последовательность вызовов для сериализации объекта через запрос размера и последующий экспорт. Источники: [SWS_CRYPT_50006], [SWS_CRYPT_10711]

Сценарии ошибок

Операции интерфейса сигнализируют о состояниях ошибок через тип возвращаемого значения ara::core::Result, при этом все специфицированные ошибки гарантируют строгую семантику отката (rollback_semantics) [SWS_CRYPT_10711], [SWS_CRYPT_50006]. В случае сбоя вызова вся система остается в согласованном состоянии. Определены следующие случаи ошибок:

  • ara::crypto::CryptoErrc::kUnsupportedFormat: возвращается как методом GetExportSize() [SWS_CRYPT_50006], так и ExportPublicly() [SWS_CRYPT_10711], если указанный FormatId не поддерживается для конкретного типа объекта.
  • ara::crypto::CryptoErrc::kInsufficientCapacity: возникает в ExportPublicly(), если емкости переданного буфера ReadWriteMemRegion недостаточно для сериализованных данных [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUnsupported: сообщается методом ExportPublicly(), если экспорт для данного конкретного объекта принципиально не поддерживается [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUsageViolation: возникает при ExportPublicly(), если объект представляет собой ключ, правила использования которого не разрешают экспорт в открытом виде (разрешенное использование не включает kAllowPlaintextExport) [SWS_CRYPT_10711].

Настоящее руководство основано на спецификации AUTOSAR R25-11.

UML-диаграмма классов

Hohle Dreieckspfeile = Vererbung (zeigt zur Basisklasse); Klicken öffnet die jeweilige Klassenseite.

G nara__crypto__Serializable855 Serializable + ExportPublicly() + GetExportSize() nara__crypto__cryp__CryptoObject679 CryptoObject nara__crypto__cryp__CryptoObject679->nara__crypto__Serializable855 nara__crypto__x509__CertSignRequest934 CertSignRequest nara__crypto__x509__CertSignRequest934->nara__crypto__Serializable855 nara__crypto__x509__Certificate240 Certificate nara__crypto__x509__Certificate240->nara__crypto__Serializable855 nara__crypto__x509__X509DN930 X509DN nara__crypto__x509__X509DN930->nara__crypto__Serializable855

Методы

ExportPublicly функция

Serialize object using the provided format.

virtual ara::core::Result< std::size_t > ExportPublicly (ReadWriteMem Region out, FormatId format) const noexcept=0;
GetExportSize функция

Get the size in bytes of the object when serialized in the provided format using ExportPublicly()

virtual ara::core::Result< std::size_t > GetExportSize (FormatId format) const noexcept=0;

Документация методов

функция ExportPublicly [SWS_CRYPT_10711] Upstream: RS_CRYPTO_02112

virtual ara::core::Result< std::size_t > ExportPublicly (ReadWriteMem Region out, FormatId format) const noexcept=0;

Serialize object using the provided format.

СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 499fb38eb87a Происхождение Открытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Использование

Синхронная функция-член ExportPublicly интерфейса ara::crypto::Serializable сериализует объект в указанном формате вывода [SWS_CRYPT_10711]. В качестве параметров передаются идентификатор формата format (тип FormatId), а также целевая область памяти out (тип ReadWriteMem Region). При успешном выполнении функция возвращает фактическое количество записанных байтов в ara::core::Result<std::size_t> [SWS_CRYPT_10711].

Взаимодействие со связанными функциями

Функция напрямую связана с GetExportSize [SWS_CRYPT_50006], с помощью которой можно определить размер в байтах, необходимый для определенного формата. Вызывающие стороны обычно перед предоставлением выходного буфера out сначала запрашивают GetExportSize, чтобы обеспечить достаточную емкость буфера. Вопрос Q-394ae08d9d7e6fa7 (открытый)

Обработка ошибок

В случае ошибки действует семантика отката и возвращается соответствующий код ошибки [SWS_CRYPT_10711]:

  • ara::crypto::CryptoErrc::kInsufficientCapacity: переданный выходной буфер out имеет слишком малый размер [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUnsupportedFormat: переданный идентификатор формата не поддерживается для этого типа объектов [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUnsupported: экспорт объекта в целом не поддерживается [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUsageViolation: экспортируемый объект является ключом, правила использования которого не допускают экспорт в открытом виде (kAllowPlaintextExport) [SWS_CRYPT_10711].

Параллелизм и граничные условия

Метод специфицирован как const, noexcept, потокобезопасный («thread-safe») и безопасный относительно исключений («exception safe») [SWS_CRYPT_10711]. Следовательно, он может выполняться параллельно и не генерирует исключений C++.

Это указание по использованию было сгенерировано ИИ на основе спецификации AUTOSAR R25-11.

Руководство разработчика реализации в подготовке (сложность I1)

Header-Datei#include "ara/crypto/common/serializable.h"
Scopeclass ara::crypto::Serializable
Exception-Sicherheitexception safe
Thread-Sicherheitthread-safe

Parameter (in)

ParameterBeschreibung
formatidentifier of the output format

Parameter (out)

ParameterBeschreibung
outan output buffer that the serialized object will be written to

Rückgabewert

TypBeschreibung
ara::core::Result<std::size_t >A result containing the size in bytes of the serialized object or an error.

Fehler

FehlercodeBeschreibung
ara::crypto::CryptoErrc::kInsufficientCapacityrollback_semantics if the output buffer is too small
ara::crypto::CryptoErrc::kUnsupportedFormatrollback_semantics if the specified format ID is not supported for this object type
ara::crypto::CryptoErrc::kUnsupportedrollback_semantics if exporting the object is not supported
ara::crypto::CryptoErrc::kUsageViolationrollback_semantics if the object to be exported is a key and the allowed usage of the key does not include kAllowPlaintextExport

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_CRYPT_10711
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_CRYPT_10711@rel:R25-11#a92e23eb
Content hash
a92e23eb
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Cryptography.pdf#nameddest=SWS_CRYPT_10711
Status: valid/unmigrated Version: rel:R25-11#c8dd72d0 Versionshistorie & Revisions (1 transition, 8 revision)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_CRYPT_10711@rel:R25-11#c8dd72d0
Point-in-Time History:
Recorded Revisions (8):
  • R25-11rel:R25-11#6e8a805e2026-09-30
  • R19-11rel:R19-11#fe62960e2026-10-14
  • R20-11rel:R20-11#4cac78d62026-10-14
  • R21-11rel:R21-11#13d51a182026-10-14
  • R22-11rel:R22-11#3bb1942d2026-10-14
  • R23-11rel:R23-11#ee143e792026-10-14
  • R24-11rel:R24-11#761192782026-10-14
  • R25-11rel:R25-11#c8dd72d02026-10-14 active
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill

функция GetExportSize [SWS_CRYPT_50006] Upstream: RS_CRYPTO_02112

virtual ara::core::Result< std::size_t > GetExportSize (FormatId format) const noexcept=0;

Get the size in bytes of the object when serialized in the provided format using ExportPublicly()

Header-Datei#include "ara/crypto/common/serializable.h"
Scopeclass ara::crypto::Serializable
Exception-Sicherheitexception safe
Thread-Sicherheitthread-safe

Parameter (in)

ParameterBeschreibung
formatidentifier of the output format

Rückgabewert

TypBeschreibung
ara::core::Result<std::size_t >A result containing the size in bytes of the serialized object or an error.

Fehler

FehlercodeBeschreibung
ara::crypto::CryptoErrc::kUnsupportedFormatrollback_semantics if the specified format ID is not supported for this object type

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/SWS_CRYPT_50006
Status
valid/unmigrated
Version
AUTOSAR/AP/record/SWS_CRYPT_50006@rel:R25-11#21e20c28
Content hash
21e20c28
Source
https://www.autosar.org/fileadmin/standards/R25-11/AP/AUTOSAR_AP_SWS_Cryptography.pdf#nameddest=SWS_CRYPT_50006
Status: valid/unmigrated Version: rel:R25-11#6c5e92f9 Versionshistorie & Revisions (1 transition)
Current State
valid/unmigrated
Reason
mechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record
Campaign
2026-08-13-status-backfill
Active Version
AUTOSAR/AP/record/SWS_CRYPT_50006@rel:R25-11#6c5e92f9
Point-in-Time History:
DateActorTransitionReason / RationaleCampaign
2026-08-13toolnone → valid/unmigratedmechanically backfilled by migriere_status_backfill.py -- no per-field curation history exists yet for this record2026-08-13-status-backfill