Serve como interface comum para a inspeção thread-safe e o armazenamento persistente de objetos criptográficos.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 156a618ba987ProcedênciaPerguntas em aberto (2)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Serve como interface comum para a inspeção thread-safe e o armazenamento persistente de objetos criptográficos.
A interface ara::crypto::cryp::CryptoObject define a abstração comum para todos os objetos criptográficos na pilha Adaptive Crypto e regula o respetivo ciclo de vida através de Sptr[SWS_CRYPT_20501]. Permite a leitura thread-safe de identificadores de algoritmos, bem como de flags de utilização, e suporta a substituição permanente de material de chave num WriteableKeySlot[SWS_CRYPT_20505], [SWS_CRYPT_20517]. Durante o processo de armazenamento, códigos de erro definidos com semântica de rollback garantem a integridade dos dados do slot de memória subjacente [SWS_CRYPT_20517].
Contexto
A interface ara::crypto::cryp::CryptoObject constitui a abstração comum para todos os objetos criptográficos que podem ser reconhecidos e geridos por um provedor criptográfico. A classe expande ara::crypto::Serializable e define propriedades fundamentais, tais como identificação de algoritmo, restrições de utilização e mecanismos de armazenamento persistente. Os parceiros de interação típicos são aplicações chamadoras, o provedor criptográfico fornecedor e memórias de destino sob a forma de instâncias de WriteableKeySlot.
Ciclo de vida
Os objetos criptográficos são geridos na plataforma primariamente através de posse partilhada. Para este efeito, a classe define o alias de smart pointer canónico ara::crypto::cryp::CryptoObject::Sptr como std::shared_ptr<CryptoObject>[SWS_CRYPT_20501]. Instâncias concretas deverão ser instanciadas pelas rotinas de fábrica e de carregamento especializadas de um provedor criptográfico e disponibilizadas ao chamador através deste tipo de ponteiro. Pergunta Q-36e2bd12d7dc8b98 (aberta) Todos os métodos declarados da interface estão especificados como thread-safe e seguros contra exceções (exception safe, noexcept), assegurando um acesso simultâneo seguro de leitura e armazenamento através de múltiplas threads [SWS_CRYPT_20505], [SWS_CRYPT_50092], [SWS_CRYPT_20517]. A libertação do objeto e do respetivo material de chave ocorre automaticamente assim que a última referência Sptr expirar.
Caminho de utilização
Um fluxo típico de utilização abrange a identificação das propriedades criptográficas de um objeto e o seu armazenamento persistente subsequente. Inicialmente, a aplicação consulta o identificador de algoritmo do objeto como ara::crypto::AlgIdString através de GetAlgId()[SWS_CRYPT_20505]. Em seguida, são determinadas as flags de utilização permitidas (AllowedUsageFlags) através de GetAllowedUsage()[SWS_CRYPT_50092], de modo a garantir que o objeto está autorizado para a operação pretendida. Para o armazenamento permanente, a aplicação passa um slot de chave gravável para o método Save()[SWS_CRYPT_20517]. O material de chave e os metadados associados são então guardados no slot de destino, substituindo os dados previamente existentes no slot [SWS_CRYPT_20517].
Enquanto GetAlgId()[SWS_CRYPT_20505] e GetAllowedUsage()[SWS_CRYPT_50092] não apresentam códigos de erro normalizados e devolvem o respetivo resultado num ara::core::Result em caso de sucesso, a operação de persistência Save() define condições de erro específicas com semântica de rollback vinculativa [SWS_CRYPT_20517]:
ara::crypto::CryptoErrc::kIncompatibleObject: ocorre quando o objeto é incompatível com o WriteableKeySlot transmitido, por exemplo, porque os identificadores de algoritmo (AlgId) divergem entre si ou o slot de chave pertence a um provedor criptográfico diferente [SWS_CRYPT_20517].
ara::crypto::CryptoErrc::kUsageViolation: sinaliza uma utilização indevida caso as flags de utilização da chave declaradas através de GetAllowedUsage() não incluam o direito de persistência (kAllowPersist) [SWS_CRYPT_50092], [SWS_CRYPT_20517].
ara::crypto::CryptoErrc::kBusyResource: é devolvido quando o recurso de memória subjacente está temporariamente ocupado e a operação não pode ser executada de imediato [SWS_CRYPT_20517].
Graças à semântica de rollback, o estado do WriteableKeySlot permanece intacto em cada um destes erros, de modo que nenhum dado de chave parcialmente gravado ou corrompido permaneça na memória [SWS_CRYPT_20517].
Este guia baseia-se na especificação AUTOSAR Adaptive R25-11 e resume os requisitos da interface ara::crypto::cryp::CryptoObject.
The interface shall persistently store the key-material and its meta-data in the provided WriteableKeySlot. Data previously stored in keyslot shall be overwritten.
The interface shall persistently store the key-material and its meta-data in the provided WriteableKeySlot. Data previously stored in keyslot shall be overwritten.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 0aae854cf6a9Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método Save da interface ara::crypto::cryp::CryptoObject serve para o armazenamento persistente de material de chave juntamente com os respectivos metadados em um WriteableKeySlot fornecido ([SWS_CRYPT_20517]). Dados previamente armazenados no KeySlot de destino são sobrescritos durante a execução ([SWS_CRYPT_20517]).
Como parâmetro, é transmitido keyslot do tipo WriteableKeySlot::Sptr, que representa o espaço de armazenamento subjacente ([SWS_CRYPT_20517]). A função é especificada como noexcept e exception safe e retorna como valor de retorno um ara::core::Result<void>, que está vazio em caso de sucesso ([SWS_CRYPT_20517]).
Em caso de falha, aplica-se uma semântica de rollback ([SWS_CRYPT_20517]). Especificamente, são retornados os seguintes códigos de erro:
ara::crypto::CryptoErrc::kIncompatibleObject: A chave é incompatível com o KeySlot, por exemplo, devido a um AlgId divergente ou à associação a outro CryptoProvider ([SWS_CRYPT_20517]).
ara::crypto::CryptoErrc::kUsageViolation: O uso permitido da chave não inclui o direito kAllowPersist ([SWS_CRYPT_20517]).
ara::crypto::CryptoErrc::kBusyResource: A operação não pode ser executada temporariamente ([SWS_CRYPT_20517]).
Em relação à concorrência, o método é declarado como thread-safe ([SWS_CRYPT_20517]).
Esta nota de utilização foi gerada por uma IA com base na especificação AUTOSAR R25-11.
rollback_semantics if the key is incompatible to the KeySlot, e.g., because the AlgId of the KeySlot is incompatible to the AlgId of the key or because the KeySlot belongs to a different CryptoProvider
gemini-3.8-flash-low· 2026-10-13 · Original em alemão