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

Guia do utilizadorGERADO POR IA

Define a interface para a determinação de tamanho e para a serialização pública de objetos criptográficos.
GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: dacacac17ff9 Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

Define a interface para a determinação de tamanho e para a serialização pública de objetos criptográficos.

A interface ara::crypto::Serializable define o padrão uniforme para exportação pública de objetos criptográficos em sequências de bytes específicas de formato. As aplicações determinam previamente por meio de GetExportSize() o tamanho de buffer necessário e, em seguida, executam a serialização real por meio de ExportPublicly() em um buffer disponibilizado [SWS_CRYPT_10711]. Todas as operações são seguras contra exceções, bem como thread-safe, sendo que a exportação de chaves pressupõe obrigatoriamente a permissão kAllowPlaintextExport e os erros estão sempre sujeitos a uma semântica de rollback [SWS_CRYPT_50006].

Contexto

A interface ara::crypto::Serializable define o contrato abstrato para objetos criptográficos no módulo crypto que podem ser convertidos em uma representação padronizada de bytes. Como interface pura, ela encapsula a capacidade de serializar um objeto em um formato de saída especificado por um identificador de formato (FormatId) [SWS_CRYPT_10711]. Entre os parceiros típicos de interação estão componentes de aplicação ou de plataforma que precisam armazenar persistentemente artefatos criptográficos, como chaves ou certificados, transmiti-los por canais de comunicação ou trocá-los em texto simples. A interface assegura que a exportação ocorra de maneira controlada e considerando formatos, bem como restrições de segurança.

Ciclo de vida

Como ara::crypto::Serializable representa uma interface puramente virtual com métodos puramente virtuais, a classe não possui lógica própria de instanciação. O tempo de vida e a criação dependem inteiramente das classes criptográficas concretas derivadas que implementam a interface. Ambos os métodos especificados da interface, GetExportSize() [SWS_CRYPT_50006] e ExportPublicly() [SWS_CRYPT_10711], são declarados como const e não alteram o estado interno do objeto durante a serialização. Conforme a especificação, as operações são projetadas para serem seguras contra exceções (exception safe) e seguras para concorrência (thread-safe) [SWS_CRYPT_10711], [SWS_CRYPT_50006], de modo que acessos paralelos de leitura à mesma instância de objeto são permitidos.

Caminho de utilização

O fluxo regular de uma exportação divide-se em uma sequência de duas etapas composta por determinação do tamanho e a serialização real. Para evitar estouros de buffer ou alocações com falha, o chamador consulta previamente, por meio do método GetExportSize(), o tamanho de buffer exatamente necessário em bytes para o formato de destino desejado [SWS_CRYPT_50006]. Após o retorno bem-sucedido, o chamador disponibiliza uma área de memória gravável do tipo ReadWriteMemRegion. Presumivelmente, na maioria das implementações, essa área de memória é alocada dinamicamente com base na contagem de bytes apurada ou disponibilizada a partir de um pool de memória reservado previamente. Pergunta Q-0c04ba0a352f0a37 (aberta)

Na etapa seguinte, a aplicação chama ExportPublicly() e passa tanto o buffer disponibilizado quanto o FormatId [SWS_CRYPT_10711] previamente selecionado. O objeto serializa seus dados úteis na área de memória passada e, em caso de sucesso, retorna a quantidade de bytes efetivamente gravada dentro do tipo de retorno ara::core::Result<std::size_t> [SWS_CRYPT_10711].

Fluxo de serialização através de ara::crypto::SerializableAplicaçãoSerializableGetExportSize(format)Result<std::size_t> (tamanho do buffer)Bereitstellung ReadWriteMemRegionExportPublicly(out, format)Result<std::size_t> (geschriebene Bytes)

Diagrama de sequência: ordem típica de chamadas para serialização de um objeto por meio de consulta de tamanho e exportação subsequente. Fontes: [SWS_CRYPT_50006], [SWS_CRYPT_10711]

Cenários de erro

As operações da interface sinalizam estados de erro por meio do tipo de retorno ara::core::Result, sendo que todos os erros especificados garantem uma estrita semântica de rollback (rollback_semantics) [SWS_CRYPT_10711], [SWS_CRYPT_50006]. Se uma chamada falhar, o sistema como um todo permanece em um estado consistente. Estão definidos os seguintes casos de erro:

  • ara::crypto::CryptoErrc::kUnsupportedFormat: é retornado tanto por GetExportSize() [SWS_CRYPT_50006] quanto por ExportPublicly() [SWS_CRYPT_10711] se o FormatId indicado não for suportado para o tipo concreto de objeto.
  • ara::crypto::CryptoErrc::kInsufficientCapacity: ocorre em ExportPublicly() se a capacidade do buffer ReadWriteMemRegion passado não for suficiente para os dados serializados [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUnsupported: é reportado por ExportPublicly() caso a exportação para o objeto específico não seja suportada em princípio [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUsageViolation: ocorre em ExportPublicly() se o objeto for uma chave cujas regras de uso não permitam uma exportação em texto simples (o uso permitido não inclui kAllowPlaintextExport) [SWS_CRYPT_10711].

Este guia baseia-se na especificação AUTOSAR R25-11.

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

Serialize object using the provided format.

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

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;

Documentação dos métodos

função 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.

GERADO POR IA não revisado Modelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 499fb38eb87a Procedência Perguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão

usar

A função membro síncrona ExportPublicly da interface ara::crypto::Serializable serializa o objeto no formato de saída especificado [SWS_CRYPT_10711]. Como parâmetros, são passados o identificador de formato format (tipo FormatId) e a região de memória de destino out (tipo ReadWriteMem Region). Em caso de execução bem-sucedida, a função retorna a quantidade real de bytes gravados em um ara::core::Result<std::size_t> [SWS_CRYPT_10711].

Interação com funções relacionadas

A função tem relação direta com GetExportSize [SWS_CRYPT_50006], com a qual pode ser determinado o tamanho em bytes necessário para um determinado formato. Os chamadores tipicamente consultam GetExportSize antes de fornecer o buffer de saída out, a fim de assegurar capacidade de buffer suficiente. Pergunta Q-394ae08d9d7e6fa7 (aberta)

Tratamento de erros

Em caso de erro, aplicam-se semânticas de rollback e é retornado um código de erro correspondente [SWS_CRYPT_10711]:

  • ara::crypto::CryptoErrc::kInsufficientCapacity: O buffer de saída fornecido out é dimensionado de forma muito pequena [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUnsupportedFormat: O identificador de formato transmitido não é suportado para este tipo de objeto [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUnsupported: A exportação do objeto não é suportada de modo geral [SWS_CRYPT_10711].
  • ara::crypto::CryptoErrc::kUsageViolation: O objeto a ser exportado é uma chave cujas regras de utilização não permitem a exportação em texto simples (kAllowPlaintextExport) [SWS_CRYPT_10711].

Simultaneidade e condições marginais

O método é especificado como const, noexcept, seguro para threads («thread-safe») e seguro contra exceções («exception safe») [SWS_CRYPT_10711]. Consequentemente, ele pode ser executado de forma concorrente e não lança exceções C++.

Esta nota de utilização foi gerada por uma IA com base na especificação AUTOSAR R25-11.

Guia do implementador em breve (complexidade 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#dca830aa
Content hash
dca830aa
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

função 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#f2b98465
Content hash
f2b98465
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