DEENESPTFRRUARHIKOZHNL

classe 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

Guide utilisateurGÉNÉRÉ PAR IA

Définit l’interface pour la détermination de la taille et la sérialisation publique d’objets cryptographiques.
GÉNÉRÉ PAR IA non vérifié Modèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : dacacac17ff9 Provenance Questions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

Définit l’interface pour la détermination de la taille et la sérialisation publique d’objets cryptographiques.

L’interface ara::crypto::Serializable définit le standard uniforme pour l’exportation publique d’objets cryptographiques vers des séquences d’octets spécifiques à un format. Les applications déterminent préalablement via GetExportSize() la taille de tampon requise et exécutent ensuite la sérialisation proprement dite via ExportPublicly() dans un tampon mis à disposition [SWS_CRYPT_10711]. Toutes les opérations sont sécurisées vis-à-vis des exceptions ainsi que sûres du point de vue des threads, l’exportation de clés nécessitant obligatoirement l’autorisation kAllowPlaintextExport et les erreurs étant toujours soumises à une sémantique de rollback [SWS_CRYPT_50006].

Contexte

L’interface ara::crypto::Serializable définit le contrat abstrait pour les objets cryptographiques du module crypto pouvant être convertis en une représentation d’octets standardisée. En tant que pure interface, elle encapsule la capacité de sérialiser un objet dans un format de sortie spécifié par un identifiant de format (FormatId) [SWS_CRYPT_10711]. Parmi les partenaires d’interaction typiques figurent des composants d’application ou de plateforme qui doivent stocker de manière persistante des artefacts cryptographiques tels que des clés ou des certificats, les transmettre sur des canaux de communication ou les échanger en texte clair. L’interface garantit que l’exportation a lieu de manière contrôlée et en tenant compte des formats ainsi que des restrictions de sécurité.

Cycle de vie

Comme ara::crypto::Serializable représente une interface purement virtuelle avec des méthodes purement virtuelles, la classe ne dispose d’aucune logique d’instanciation propre. La durée de vie et la création dépendent entièrement des classes cryptographiques concrètes dérivées qui implémentent l’interface. Les deux méthodes spécifiées de l’interface, GetExportSize() [SWS_CRYPT_50006] ainsi que ExportPublicly() [SWS_CRYPT_10711], sont déclarées comme const et ne modifient pas l’état interne de l’objet lors de la sérialisation. Conformément à la spécification, les opérations sont conçues pour être sûres vis-à-vis des exceptions (exception safe) et sûres du point de vue des threads (thread-safe) [SWS_CRYPT_10711], [SWS_CRYPT_50006], de sorte que les accès concurrents en lecture sur la même instance d’objet sont autorisés.

Parcours d'utilisation

Le déroulement régulier d’une exportation se divise en une séquence à deux étapes composée de la détermination de la taille et de la sérialisation proprement dite. Afin d’éviter les dépassements de tampon ou les échecs d’allocation, l’appelant demande préalablement, via la méthode GetExportSize(), la taille exacte de tampon requise en octets pour le format cible souhaité [SWS_CRYPT_50006]. Après un retour positif, l’appelant met à disposition une zone mémoire inscriptible du type ReadWriteMemRegion. Cette zone mémoire est probablement allouée dynamiquement dans la plupart des implémentations en fonction du nombre d’octets déterminé ou mise à disposition à partir d’un pool de mémoire préalablement réservé. Question Q-0c04ba0a352f0a37 (ouverte)

À l’étape suivante, l’application appelle ExportPublicly() et transmet aussi bien le tampon mis à disposition que la FormatId [SWS_CRYPT_10711] préalablement choisie. L’objet sérialise ses données utiles dans la zone mémoire transmise et renvoie, en cas de succès, le nombre d’octets réellement écrits au sein du type de retour ara::core::Result<std::size_t> [SWS_CRYPT_10711].

Déroulement de la sérialisation via ara::crypto::SerializableApplicationSerializableGetExportSize(format)Result<std::size_t> (taille du tampon)Bereitstellung ReadWriteMemRegionExportPublicly(out, format)Result<std::size_t> (geschriebene Bytes)

Diagramme de séquence : ordre d’appel typique pour la sérialisation d’un objet via l’interrogation de la taille et l’exportation consécutive. Sources : [SWS_CRYPT_50006], [SWS_CRYPT_10711]

Scénarios d'erreur

Les opérations de l’interface signalent les états d’erreur via le type de retour ara::core::Result, toutes les erreurs spécifiées garantissant une sémantique stricte de rollback (rollback_semantics) [SWS_CRYPT_10711], [SWS_CRYPT_50006]. En cas d’échec d’un appel, le système global demeure dans un état cohérent. Les cas d’erreur suivants sont définis :

  • ara::crypto::CryptoErrc::kUnsupportedFormat : renvoyé aussi bien par GetExportSize() [SWS_CRYPT_50006] que par ExportPublicly() [SWS_CRYPT_10711] lorsque la FormatId indiquée n’est pas prise en charge pour le type d’objet concret.
  • ara::crypto::CryptoErrc::kInsufficientCapacity : survient dans ExportPublicly() lorsque la capacité du tampon ReadWriteMemRegion transmis n’est pas suffisante pour les données sérialisées [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUnsupported : signalé par ExportPublicly() dans le cas où l’exportation n’est par principe pas prise en charge pour l’objet spécifique [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUsageViolation : survient lors de ExportPublicly() lorsqu’il s’agit, pour l’objet, d’une clé dont les règles d’utilisation n’autorisent pas une exportation en texte clair (l’utilisation autorisée n’inclut pas kAllowPlaintextExport) [SWS_CRYPT_10711].

Ce guide se base sur la spécification AUTOSAR R25-11.

Diagramme de classes 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

Méthodes

Serialize object using the provided format.

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

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;

Documentation des méthodes

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

GÉNÉRÉ PAR IA non vérifié Modèle : gemini-3.8-flash-medium · Effort : medium · Température : non réglable · Prompt : 499fb38eb87a Provenance Questions ouvertes (1)
traduit du guide allemandgemini-3.8-flash-low · 2026-10-13 · Original allemand

Utilisation

La fonction membre synchrone ExportPublicly de l'interface ara::crypto::Serializable sérialise l'objet dans le format de sortie spécifié [SWS_CRYPT_10711]. Les paramètres transmis sont l'identifiant de format format (type FormatId) ainsi que la zone mémoire de destination out (type ReadWriteMem Region). En cas de déroulement réussi, la fonction renvoie le nombre réel d'octets écrits dans un ara::core::Result<std::size_t> [SWS_CRYPT_10711].

Interaction avec des fonctions apparentées

La fonction est en relation directe avec GetExportSize [SWS_CRYPT_50006], ce qui permet de déterminer la taille en octets requise pour un format donné. Les appelants devraient typiquement interroger GetExportSize avant de fournir le tampon de sortie out afin de garantir une capacité de tampon suffisante. Question Q-394ae08d9d7e6fa7 (ouverte)

Gestion des erreurs

En cas d'erreur, des sémantiques de rollback s'appliquent et un code d'erreur correspondant est renvoyé [SWS_CRYPT_10711] :

  • ara::crypto::CryptoErrc::kInsufficientCapacity : le tampon de sortie transmis out est dimensionné trop petit [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUnsupportedFormat : l'identifiant de format transmis n'est pas pris en charge pour ce type d'objet [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUnsupported : l'exportation de l'objet n'est généralement pas prise en charge [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUsageViolation : l'objet à exporter est une clé dont les règles d'utilisation n'autorisent pas l'exportation en texte clair (kAllowPlaintextExport) [SWS_CRYPT_10711].

Concurrence et contraintes

La méthode est spécifiée comme const, noexcept, thread-safe (« thread-safe ») et sûre vis-à-vis des exceptions (« exception safe ») [SWS_CRYPT_10711]. Elle peut par conséquent être exécutée de manière concurrente et ne lève aucune exception C++.

Cette note d'utilisation a été générée par une IA sur la base de la spécification AUTOSAR R25-11.

Guide de l'implémenteur à venir (complexité 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#aa9fa489
Content hash
aa9fa489
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

fonction 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#e179dac1
Content hash
e179dac1
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