DEENESPTFRRUARHIKOZHNL

class 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

User GuideKI-GENERIERT

Definiert die Schnittstelle zur Größenermittlung und zum öffentlichen Serialisieren von kryptografischen Objekten.
KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: dacacac17ff9 Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Definiert die Schnittstelle zur Größenermittlung und zum öffentlichen Serialisieren von kryptografischen Objekten.

Die Schnittstelle ara::crypto::Serializable definiert den einheitlichen Standard zum öffentlichen Exportieren kryptografischer Objekte in formatspezifische Byte-Sequenzen. Anwendungen ermitteln vorab über GetExportSize() die benötigte Puffergröße und führen die eigentliche Serialisierung anschließend über ExportPublicly() in einen bereitgestellten Puffer aus [SWS_CRYPT_10711]. Alle Operationen sind ausnahmesicher sowie thread-safe, wobei der Export von Schlüsseln zwingend die Berechtigung kAllowPlaintextExport voraussetzt und Fehler stets einer Rollback-Semantik unterliegen [SWS_CRYPT_50006].

Kontext

Die Schnittstelle ara::crypto::Serializable definiert den abstrakten Vertrag für kryptografische Objekte im Modul crypto, die in eine standardisierte Byte-Repräsentation überführt werden können. Als reine Schnittstelle kapselt sie die Fähigkeit, ein Objekt in ein durch einen Formatbezeichner (FormatId) spezifiziertes Ausgabeformat zu serialisieren [SWS_CRYPT_10711]. Zu den typischen Interaktionspartnern gehören Anwendungs- oder Plattformkomponenten, die kryptografische Artefakte wie Schlüssel oder Zertifikate persistent speichern, über Kommunikationskanäle übertragen oder im Klartext austauschen müssen. Die Schnittstelle stellt sicher, dass der Export kontrolliert und unter Berücksichtigung von Formaten sowie Sicherheitsbeschränkungen erfolgt.

Lebenszyklus

Da ara::crypto::Serializable ein rein virtuelles Interface mit rein virtuellen Methoden darstellt, verfügt die Klasse über keine eigene Instanziierungslogik. Die Lebensdauer und die Erzeugung hängen vollständig von den ableitenden konkreten Krypto-Klassen ab, welche die Schnittstelle implementieren. Beide spezifizierten Methoden der Schnittstelle, GetExportSize() [SWS_CRYPT_50006] sowie ExportPublicly() [SWS_CRYPT_10711], sind als const deklariert und verändern den internen Zustand des Objekts bei der Serialisierung nicht. Gemäß Spezifikation sind die Operationen ausnahmesicher (exception safe) und nebenläufigkeitssicher (thread-safe) ausgelegt [SWS_CRYPT_10711], [SWS_CRYPT_50006], sodass parallele Lesezugriffe auf dieselbe Objektinstanz zulässig sind.

Nutzungspfad

Der reguläre Ablauf eines Exports gliedert sich in eine zweistufige Sequenz aus Größenermittlung und eigentlicher Serialisierung. Um Pufferüberläufe oder fehlschlagende Allokationen zu vermeiden, fragt der Aufrufer vorab über die Methode GetExportSize() die exakt benötigte Puffergröße in Bytes für das gewünschte Zielformat ab [SWS_CRYPT_50006]. Nach erfolgreicher Rückmeldung stellt der Aufrufer einen beschreibbaren Speicherbereich vom Typ ReadWriteMemRegion bereit. Vermutlich wird dieser Speicherbereich in den meisten Implementierungen dynamisch anhand der ermittelten Bytezahl alloziert oder aus einem vorab reservierten Speicherpool bereitgestellt. Frage Q-0c04ba0a352f0a37 (offen)

Im anschließenden Schritt ruft die Anwendung ExportPublicly() auf und übergibt sowohl den bereitgestellten Puffer als auch die zuvor gewählte FormatId [SWS_CRYPT_10711]. Das Objekt serialisiert seine Nutzdaten in den übergebenen Speicherbereich und liefert im Erfolgsfall innerhalb des Rückgabetyps ara::core::Result<std::size_t> die tatsächlich geschriebene Anzahl an Bytes zurück [SWS_CRYPT_10711].

Serialisierungsablauf über ara::crypto::SerializableAnwendungSerializableGetExportSize(format)Result<std::size_t> (Puffergröße)Bereitstellung ReadWriteMemRegionExportPublicly(out, format)Result<std::size_t> (geschriebene Bytes)

Sequenzdiagramm: Typische Aufrufreihenfolge zur Serialisierung eines Objekts über Größenabfrage und anschließenden Export. Quellen: [SWS_CRYPT_50006], [SWS_CRYPT_10711]

Fehlerszenarien

Die Operationen der Schnittstelle signalisieren Fehlerzustände über den Rückgabetyp ara::core::Result, wobei alle spezifizierten Fehler eine strikte Rollback-Semantik (rollback_semantics) garantieren [SWS_CRYPT_10711], [SWS_CRYPT_50006]. Scheitert ein Aufruf, verbleibt das Gesamtsystem in einem konsistenten Zustand. Folgende Fehlerfälle sind definiert:

  • ara::crypto::CryptoErrc::kUnsupportedFormat: Wird sowohl von GetExportSize() [SWS_CRYPT_50006] als auch von ExportPublicly() [SWS_CRYPT_10711] zurückgegeben, wenn die angegebene FormatId für den konkreten Objekttyp nicht unterstützt wird.
  • ara::crypto::CryptoErrc::kInsufficientCapacity: Tritt in ExportPublicly() auf, wenn die Kapazität des übergebenen ReadWriteMemRegion-Puffers für die serialisierten Daten nicht ausreicht [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUnsupported: Wird von ExportPublicly() gemeldet, falls der Export für das spezifische Objekt prinzipiell nicht unterstützt wird [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUsageViolation: Tritt bei ExportPublicly() auf, wenn es sich bei dem Objekt um einen Schlüssel handelt, dessen Verwendungsregeln einen Klartextexport nicht gestatten (die erlaubte Verwendung beinhaltet nicht kAllowPlaintextExport) [SWS_CRYPT_10711].

Dieser Leitfaden basiert auf der Spezifikation AUTOSAR R25-11.

UML-Klassendiagramm

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

Methoden

Serialize object using the provided format.

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

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;

Dokumentation der Methoden

function 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.

KI-GENERIERT ungeprüft Modell: gemini-3.8-flash-medium · Aufwand: medium · Temperatur: nicht steuerbar · Prompt: 499fb38eb87a Herkunft Offene Fragen (1)
KI-generiertgemini-3.8-flash-medium · 2026-10-13

Verwendung

Die synchrone Elementfunktion ExportPublicly der Schnittstelle ara::crypto::Serializable serialisiert das Objekt im spezifizierten Ausgabeformat [SWS_CRYPT_10711]. Als Parameter werden die Formatkennung format (Typ FormatId) sowie der Zielspeicherbereich out (Typ ReadWriteMem Region) übergeben. Bei erfolgreichem Ablauf gibt die Funktion die tatsächliche Anzahl der geschriebenen Bytes in einem ara::core::Result<std::size_t> zurück [SWS_CRYPT_10711].

Zusammenspiel mit verwandten Funktionen

Die Funktion steht in direktem Bezug zu GetExportSize [SWS_CRYPT_50006], womit die für ein bestimmtes Format benötigte Bytegröße ermittelt werden kann. Aufrufer dürften typischerweise vor der Bereitstellung des Ausgabepuffers out zunächst GetExportSize abfragen, um eine ausreichende Pufferkapazität sicherzustellen. Frage Q-394ae08d9d7e6fa7 (offen)

Fehlerbehandlung

Im Fehlerfall greifen Rollback-Semantiken und es wird ein entsprechender Fehlercode zurückgegeben [SWS_CRYPT_10711]:

  • ara::crypto::CryptoErrc::kInsufficientCapacity: Der übergebene Ausgabepuffer out ist zu klein bemessen [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUnsupportedFormat: Die übergebene Formatkennung wird für diesen Objekttyp nicht unterstützt [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUnsupported: Das Exportieren des Objekts wird generell nicht unterstützt [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUsageViolation: Das zu exportierende Objekt ist ein Schlüssel, dessen Nutzungsregeln keinen Klartextexport (kAllowPlaintextExport) zulassen [SWS_CRYPT_10711].

Nebenläufigkeit und Randbedingungen

Die Methode ist als const, noexcept, thread-sicher („thread-safe“) und exception-sicher („exception safe“) spezifiziert [SWS_CRYPT_10711]. Sie kann folglich nebenläufig ausgeführt werden und wirft keine C++-Ausnahmen.

Dieser Nutzungshinweis wurde von einer KI auf Basis der AUTOSAR-Spezifikation R25-11 generiert.

Implementer's Guide folgt (Komplexität 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#6e8a805e
Content hash
6e8a805e
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

function 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#6c5e92f9
Content hash
6c5e92f9
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