Disponibiliza uma interface base para contextos criptográficos mutáveis para a consulta thread-safe do ID do algoritmo.
Contexto
A interface ara::crypto::cryp::CryptoContext define a abstração fundamental para contextos criptográficos mutáveis (mutable cryptographic contexts) no âmbito do módulo de criptografia da AUTOSAR Adaptive Platform. Ao contrário de objetos criptográficos estáticos, esse contexto não está rigidamente vinculado a um único objeto criptográfico. Serve, antes, como classe base comum para diversos contextos de processamento criptográfico, cujo estado interno se pode alterar durante a execução de operações criptográficas.
A função-membro puramente virtual GetAlgId() atua como elemento central desta interface base. Permite que parceiros de interação consultem o identificador do algoritmo criptográfico atualmente configurado no contexto [SWS_CRYPT_20411]. Contextos concretos de cálculo e transformação criptográfica, como por exemplo para serviços de hash, assinatura ou encriptação, deverão ser derivados de CryptoContext no sistema para disponibilizar funcionalidades específicas de algoritmos. Pergunta Q-203d40209cd355fa (aberta)
Ciclo de vida
O ciclo de vida de CryptoContext é marcado por uma identidade exclusiva e por relações de posse estritas. Para evitar a duplicação descontrolada ou transferências inconsistentes de estados de contexto no momento da compilação, as operações semânticas de cópia estão totalmente proibidas. Tanto o construtor de cópia [SWS_CRYPT_41003] como o operador de atribuição por cópia [SWS_CRYPT_30214] estão explicitamente declarados como eliminados (=delete).
De igual modo, a definição da interface impede a movimentação de contextos: tanto o construtor de movimentação [SWS_CRYPT_41004] como o operador de atribuição por movimentação [SWS_CRYPT_30215] estão eliminados (=delete). As instâncias de classes derivadas permanecem, por conseguinte, permanentemente na sua localização de memória original. A destruição e a libertação de recursos ocorrem de forma determinística através do destrutor virtual, que está definido como default e noexcept [SWS_CRYPT_20401]. Isto assegura que objetos de contexto derivados possam ser libertados com segurança e sem fugas de recursos através de ponteiros para a interface base.
Relativamente à concorrência, o requisito para GetAlgId() especifica expressamente segurança de threads [SWS_CRYPT_20411]. Múltiplas threads podem, portanto, ler simultaneamente e sem sincronização externa o identificador do algoritmo do mesmo contexto.
Caminho de utilização
Como CryptoContext é uma interface puramente virtual, os programadores de aplicações não podem criar instâncias diretas. As instâncias de classes de contexto especializadas deverão tipicamente ser instanciadas através de funções factory ou de componentes de fornecedor da pilha de criptografia, sendo disponibilizadas ao chamador através de ponteiros ou referências. Pergunta Q-728a7b6dd526eb64 (aberta) O fluxo de utilização típico ao nível da interface base abrange as seguintes fases:
- Disponibilização: um chamador recebe uma referência ou um ponteiro para um contexto configurado a partir de um fornecedor de criptografia.
- Verificação do algoritmo: através da chamada a
GetAlgId(), o identificador do algoritmo é consultado e avaliado [SWS_CRYPT_20411] para assegurar que o contexto satisfaz as especificações exigidas.
- Operação e limpeza: após a realização das operações específicas do algoritmo através da interface derivada, o contexto é automaticamente libertado através do destrutor virtual [SWS_CRYPT_20401].
Cenários de erro
O conceito de tratamento de erros de CryptoContext segue o design geral tolerante a falhas da AUTOSAR Adaptive Platform e prescinde de exceções de C++. O método GetAlgId() está especificado como seguro para exceções (exception safe) e retorna o seu resultado num ara::core::Result<ara::crypto::AlgIdString> [SWS_CRYPT_20411]. Se ocorrer um erro durante a determinação do ID do algoritmo, este é transportado no canal de erro do objeto Result.
Em conformidade com a especificação, GetAlgId() não define códigos de erro padronizados [SWS_CRYPT_20411]. Os chamadores devem, por isso, verificar primariamente se o Result contém um valor válido antes de acederem à cadeia de caracteres do ID do algoritmo. Na desalocação do objeto, o destrutor virtual declarado com noexcept garante que nenhuma exceção é propagada durante a destruição e que a limpeza é sempre concluída de forma fiável [SWS_CRYPT_20401].
Este guia baseia-se na especificação AUTOSAR Adaptive R25-11 e foi gerado por um assistente de curadoria de IA.
gemini-3.8-flash-low· 2026-10-13 · Original em alemão