DEENESPTFRRUARHIKOZHNL

clase 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

Guía del usuarioGENERADO POR IA

Define la interfaz para la determinación del tamaño y para la serialización pública de objetos criptográficos.
GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: dacacac17ff9 Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

Define la interfaz para la determinación del tamaño y para la serialización pública de objetos criptográficos.

La interfaz ara::crypto::Serializable define el estándar uniforme para la exportación pública de objetos criptográficos en secuencias de bytes específicas del formato. Las aplicaciones determinan previamente a través de GetExportSize() el tamaño de búfer requerido y ejecutan a continuación la serialización propiamente dicha mediante ExportPublicly() en un búfer provisto [SWS_CRYPT_10711]. Todas las operaciones son seguras frente a excepciones y thread-safe, requiriendo la exportación de claves obligatoriamente el permiso kAllowPlaintextExport y estando los errores siempre sujetos a una semántica de reversión (rollback_semantics) [SWS_CRYPT_50006].

Contexto

La interfaz ara::crypto::Serializable define el contrato abstracto para objetos criptográficos en el módulo crypto que pueden transformarse en una representación de bytes estandarizada. Como interfaz pura, encapsula la capacidad de serializar un objeto en un formato de salida especificado por un identificador de formato (FormatId) [SWS_CRYPT_10711]. Entre los participantes de interacción típicos se encuentran componentes de aplicación o de plataforma que deben almacenar de forma persistente artefactos criptográficos como claves o certificados, transmitirlos a través de canales de comunicación o intercambiarlos en texto claro. La interfaz garantiza que la exportación se lleve a cabo de manera controlada y teniendo en cuenta tanto los formatos como las restricciones de seguridad.

Ciclo de vida

Dado que ara::crypto::Serializable representa una interfaz puramente virtual con métodos puramente virtuales, la clase no dispone de lógica de instanciación propia. La vida útil y la creación dependen por completo de las clases criptográficas concretas derivadas que implementan la interfaz. Ambos métodos especificados de la interfaz, GetExportSize() [SWS_CRYPT_50006] y ExportPublicly() [SWS_CRYPT_10711], están declarados como const y no modifican el estado interno del objeto durante la serialización. Conforme a la especificación, las operaciones están diseñadas como seguras frente a excepciones (exception safe) y seguras para concurrencia (thread-safe) [SWS_CRYPT_10711], [SWS_CRYPT_50006], de modo que se permiten accesos de lectura paralelos a la misma instancia de objeto.

Ruta de uso

El flujo regular de una exportación se estructura en una secuencia de dos pasos que consta de la determinación del tamaño y la serialización propiamente dicha. Para evitar desbordamientos de búfer o asignaciones fallidas, el invocador consulta previamente mediante el método GetExportSize() el tamaño exacto de búfer necesario en bytes para el formato de destino deseado [SWS_CRYPT_50006]. Tras una respuesta satisfactoria, el invocador proporciona una zona de memoria escribible del tipo ReadWriteMemRegion. Es de suponer que en la mayoría de las implementaciones esta zona de memoria se asigne dinámicamente según el número de bytes determinado o se proporcione a partir de un pool de memoria reservado previamente. Pregunta Q-0c04ba0a352f0a37 (abierta)

En el paso siguiente, la aplicación invoca ExportPublicly() y transfiere tanto el búfer provisto como el FormatId [SWS_CRYPT_10711] seleccionado previamente. El objeto serializa sus datos útiles en la zona de memoria transferida y, en caso de éxito, devuelve dentro del tipo de retorno ara::core::Result<std::size_t> el número de bytes efectivamente escritos [SWS_CRYPT_10711].

Flujo de serialización mediante ara::crypto::SerializableAplicaciónSerializableGetExportSize(format)Result<std::size_t> (tamaño del búfer)Bereitstellung ReadWriteMemRegionExportPublicly(out, format)Result<std::size_t> (geschriebene Bytes)

Diagrama de secuencia: orden típico de invocación para la serialización de un objeto mediante consulta de tamaño y posterior exportación. Fuentes: [SWS_CRYPT_50006], [SWS_CRYPT_10711]

Escenarios de error

Las operaciones de la interfaz señalan estados de error a través del tipo de retorno ara::core::Result, garantizando todos los errores especificados una estricta semántica de reversión (rollback_semantics) [SWS_CRYPT_10711], [SWS_CRYPT_50006]. Si una invocación falla, el sistema completo permanece en un estado consistente. Se definen los siguientes casos de error:

  • ara::crypto::CryptoErrc::kUnsupportedFormat: se devuelve tanto por GetExportSize() [SWS_CRYPT_50006] como por ExportPublicly() [SWS_CRYPT_10711] si el FormatId indicado no es compatible con el tipo de objeto concreto.
  • ara::crypto::CryptoErrc::kInsufficientCapacity: se produce en ExportPublicly() si la capacidad del búfer ReadWriteMemRegion transferido no es suficiente para los datos serializados [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUnsupported: es notificado por ExportPublicly() en caso de que la exportación no sea compatible por principio para el objeto específico [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUsageViolation: se produce en ExportPublicly() cuando el objeto es una clave cuyas reglas de uso no permiten una exportación en texto claro (el uso permitido no incluye kAllowPlaintextExport) [SWS_CRYPT_10711].

Esta guía se basa en la especificación AUTOSAR R25-11.

Diagrama de clases 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étodos

Serialize object using the provided format.

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

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;

Documentación de los métodos

función 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.

GENERADO POR IA no revisado Modelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 499fb38eb87a Procedencia Preguntas abiertas (1)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán

usar

La función miembro síncrona ExportPublicly de la interfaz ara::crypto::Serializable serializa el objeto en el formato de salida especificado [SWS_CRYPT_10711]. Como parámetros se pasan el identificador de formato format (tipo FormatId) y la zona de memoria de destino out (tipo ReadWriteMem Region). En caso de ejecución correcta, la función devuelve el número real de bytes escritos en un ara::core::Result<std::size_t> [SWS_CRYPT_10711].

Interacción con funciones relacionadas

La función está en relación directa con GetExportSize [SWS_CRYPT_50006], con la cual puede determinarse el tamaño en bytes necesario para un formato determinado. Los llamadores suelen consultar primero GetExportSize antes de proporcionar el búfer de salida out para asegurar una capacidad suficiente del búfer. Pregunta Q-394ae08d9d7e6fa7 (abierta)

Manejo de errores

En caso de error, se aplican semánticas de reversión y se devuelve el código de error correspondiente [SWS_CRYPT_10711]:

  • ara::crypto::CryptoErrc::kInsufficientCapacity: el búfer de salida proporcionado out tiene un tamaño insuficiente [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUnsupportedFormat: el identificador de formato proporcionado no es compatible con este tipo de objeto [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUnsupported: la exportación del objeto no se admite de forma general [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUsageViolation: el objeto que se va a exportar es una clave cuyas reglas de uso no permiten la exportación en texto claro (kAllowPlaintextExport) [SWS_CRYPT_10711].

Concurrencia y condiciones de contorno

El método está especificado como const, noexcept, seguro para subprocesos («thread-safe») y seguro frente a excepciones («exception safe») [SWS_CRYPT_10711]. En consecuencia, puede ejecutarse de forma concurrente y no lanza excepciones de C++.

Esta nota de uso fue generada por una IA sobre la base de la especificación AUTOSAR R25-11.

Guía del implementador pendiente (complejidad 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#f95b6d00
Content hash
f95b6d00
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

función 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#72170939
Content hash
72170939
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