Permite o empacotamento e desempacotamento seguro de chaves por meio de criptografia de chave simétrica.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 16126e8d9692ProcedênciaPerguntas em aberto (1)
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Permite o empacotamento e desempacotamento seguro de chaves por meio de criptografia de chave simétrica.
O contexto SymmetricKeyWrapperCtx serve para o empacotamento e desempacotamento criptográfico de chaves mediante algoritmos simétricos. Antes da execução de Wrap ou UnwrapSymmetricKey, o contexto deve ser configurado por meio de SetKey com uma chave de criptografia de chave (KEK) compatível [SWS_CRYPT_24018]. Todas as operações pressupõem as permissões de uso correspondentes dos objetos de chave envolvidos e reportam erros via ara::core::Result com semântica de rollback [SWS_CRYPT_24014]. A interface é exception-safe e especificada como thread-safe para operação concorrente.
Contexto
A classe SymmetricKeyWrapperCtx define a interface padronizada para algoritmos de envelopamento simétrico de chaves (Key Wrapping) na AUTOSAR Adaptive Platform. Sua responsabilidade central consiste na proteção criptográfica de chaves durante a exportação e na recuperação de chaves empacotadas para uso interno. Nesse processo, a classe interage primariamente com chaves de criptografia de chave (Key Encryption Keys, KEK), fornecidas como objeto de chave volátil do tipo SymmetricKey ou de forma persistente através de um KeySlot[SWS_CRYPT_24018], [SWS_CRYPT_50034]. No empacotamento, o contexto recebe um CryptoObject genérico [SWS_CRYPT_24014], enquanto a operação de desempacotamento gera e retorna um novo objeto SymmetricKey pronto para uso [SWS_CRYPT_24016].
Ciclo de vida
Instâncias de SymmetricKeyWrapperCtx são gerenciadas pelo ponteiro inteligente tipado Sptr (um alias para std::shared_ptr<SymmetricKeyWrapperCtx>) [SWS_CRYPT_24001]. A criação efetiva do objeto deve ocorrer por meio de uma factory de provedor competente, pois a classe representa uma interface abstrata com métodos puramente virtuais. Pergunta Q-7b9a1007da43ddcd (aberta) Todas as funções-membro da interface são especificadas como exception-safe e thread-safe, permitindo o uso seguro em componentes de software concorrentes [SWS_CRYPT_24014], [SWS_CRYPT_24016].
Em seu ciclo de vida, o contexto passa por duas fases essenciais: imediatamente após a instanciação, ele se encontra em estado não inicializado. Nessa fase, operações criptográficas e cálculos de buffer falham com o erro kUninitializedContext[SWS_CRYPT_50035], [SWS_CRYPT_24014]. Somente através da chamada bem-sucedida de SetKey com uma KEK ou KeySlot compatível o contexto transita para o estado operacional, no qual chaves podem ser empacotadas ou desempacotadas com segurança [SWS_CRYPT_24018], [SWS_CRYPT_50034].
Caminho de utilização
O fluxo regular para o empacotamento de uma chave requer uma sequência coordenada de configuração, verificação de buffer e execução. Inicialmente, a aplicação configura o contexto via SetKey com o objeto KEK desejado [SWS_CRYPT_24018] ou vincula um KeySlot correspondente [SWS_CRYPT_50034]. Na segunda etapa, a aplicação determina por meio de GetRequiredWrappedKeyBufferSize o tamanho máximo de buffer de saída necessário para o objeto de destino a ser empacotado [SWS_CRYPT_50035]. Após a disponibilização de uma área de memória adequadamente dimensionada (ReadWriteMemRegion), ocorre a chamada de Wrap, que grava os dados serializados e criptografados da chave no buffer e retorna o número exato de bytes [SWS_CRYPT_24014].
Para o processo complementar de desempacotamento, a aplicação, após a configuração mediante SetKey, passa o buffer de entrada com os dados empacotados para UnwrapSymmetricKey[SWS_CRYPT_24016]. Nesse procedimento, o identificador do algoritmo de destino (targetAlgId) e as flags de uso permitidas (allowedUsage) para a nova chave simétrica a ser gerada devem ser definidos explicitamente [SWS_CRYPT_24016].
Cenários de erro
Métodos da classe sinalizam erros por meio do tipo de retorno ara::core::Result com semântica de rollback. Os cenários centrais de erro incluem:
Inicialização ausente: se GetRequiredWrappedKeyBufferSize, Wrap ou UnwrapSymmetricKey forem chamados antes de uma atribuição de chave bem-sucedida, eles retornam ara::crypto::CryptoErrc::kUninitializedContext[SWS_CRYPT_50035], [SWS_CRYPT_24014], [SWS_CRYPT_24016].
Violação de direitos de uso: ao definir a KEK, ela deve possuir pelo menos a permissão kAllowKeyWrapping ou kAllowKeyUnwrapping; caso contrário, SetKey falha com ara::crypto::CryptoErrc::kUsageViolation[SWS_CRYPT_24018]. Em Wrap, a ausência de kAllowKeyWrapping na KEK ou a ausência de kAllowSecuredExport no objeto a ser empacotado também resulta em kUsageViolation[SWS_CRYPT_24014]. No desempacotamento, verifica-se se a KEK permite kAllowKeyUnwrapping[SWS_CRYPT_24016].
Incompatibilidades e erros de buffer: se o buffer de destino para Wrap for muito pequeno, ara::crypto::CryptoErrc::kInsufficientCapacity é reportado [SWS_CRYPT_24014]. Formatos de chave incorretos ou tipos incompatíveis resultam em ara::crypto::CryptoErrc::kInvalidArgument[SWS_CRYPT_24014], [SWS_CRYPT_24016]. Se o contexto suportar apenas slots ou apenas objetos de chave, SetKey reporta o erro kUnsupported[SWS_CRYPT_24018], [SWS_CRYPT_50034].
Conflitos de recursos e slots vazios: se a operação acessar um recurso ocupado, ara::crypto::CryptoErrc::kBusyResource é retornado; se o KeySlot referenciado estiver vazio, isso resulta em ara::crypto::CryptoErrc::kEmptyKeySlot[SWS_CRYPT_24014], [SWS_CRYPT_24016].
Este guia foi elaborado por uma IA e baseia-se exclusivamente na especificação AUTOSAR.
Configure the context to use the provided key as key encryption key.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: d0a83598653dProcedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
Utilização e semântica
A função-membro síncrona SetKey configura uma instância de ara::crypto::cryp::SymmetricKeyWrapperCtx de modo que o objeto SymmetricKey::Sptr passado seja utilizado como Key Encryption Key (KEK) para operações de chave subsequentes [SWS_CRYPT_24018]. A função é especificada como um método virtual puro com noexcept e retorna um ara::core::Result<void> vazio, desde que a atribuição tenha sido bem-sucedida [SWS_CRYPT_24018].
Tratamento de erros e rollback
Se ocorrer um erro durante a configuração, aplica-se uma semântica de rollback obrigatória, de modo que o estado do contexto permaneça inalterado [SWS_CRYPT_24018]. As possíveis causas de erro são mapeadas por meio de códigos de erro de ara::crypto::CryptoErrc:
kIncompatibleObject: o objeto de chave fornecido é incompatível com o contexto simétrico [SWS_CRYPT_24018].
kUsageViolation: o uso permitido da chave não inclui nem kAllowKeyWrapping nem kAllowKeyUnwrapping[SWS_CRYPT_24018].
kUnsupported: a implementação do contexto suporta exclusivamente a definição de uma chave por meio de um KeySlot[SWS_CRYPT_24018].
Concorrência e interação
O método é especificado como thread-safe e seguro contra exceções (exception safe) [SWS_CRYPT_24018]. Caso as chaves sejam gerenciadas por meio de slots ou o contexto suporte exclusivamente KeySlots, existe para o mesmo contexto de wrapper a sobrecarga alternativa SetKey com KeySlot::Sptr[SWS_CRYPT_50034]. Esta configura o contexto para carregar a chave armazenada no slot no momento da execução do key wrapping [SWS_CRYPT_50034].
Esta nota de uso baseia-se na especificação AUTOSAR Adaptive Platform Release R25-11.
Configure the context to use the key stored in the provided KeySlot at the time the key wrapping is performed.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 30d79040bb46Procedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
O método virtual SetKey configura o contexto ara::crypto::cryp::SymmetricKeyWrapperCtx de modo a que a chave armazenada no KeySlot fornecido seja utilizada assim que o key wrapping for executado [SWS_CRYPT_50034]. A chamada espera como parâmetro keySlot um KeySlot::Sptr que contém uma chave simétrica [SWS_CRYPT_50034]. A função é chamada de forma síncrona, está declarada com noexcept e retorna um ara::core::Result<void>[SWS_CRYPT_50034].
Tratamento de erros
Em caso de erro, o método assegura uma semântica de reversão e retorna um dos seguintes resultados de erro [SWS_CRYPT_50034]:
ara::crypto::CryptoErrc::kIncompatibleObject: o keySlot fornecido é incompatível com este contexto [SWS_CRYPT_50034].
ara::crypto::CryptoErrc::kUnsupported: o contexto suporta exclusivamente a definição de um SymmetricKey direto [SWS_CRYPT_50034].
simultaneidade
A operação é segura para threads (thread-safe) e oferece segurança garantida contra exceções (exception safe) [SWS_CRYPT_50034].
Interação
A interface representa, dentro de SymmetricKeyWrapperCtx, o equivalente baseado em slot à sobrecarga SetKey com SymmetricKey::Sptr, que vincula diretamente uma chave como Key Encryption Key (KEK) [SWS_CRYPT_24018]. Funções de configuração análogas baseadas em slot também são utilizadas em contextos criptográficos relacionados, como KeyDerivationFunctionCtx[SWS_CRYPT_50010], KeyEncapsulatorPublicCtx[SWS_CRYPT_50012], VerifierPublicCtx[SWS_CRYPT_50018], MessageAuthnCodeCtx[SWS_CRYPT_50026] e SignerPrivateCtx[SWS_CRYPT_50036].
Esta nota de uso foi gerada automaticamente com base na especificação do AUTOSAR Adaptive R25-11.
Unwrap a wrapped key using the previously set key encryption key and return an SymmetricKey.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: fe87df5f5eaeProcedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
O método UnwrapSymmetricKey da interface ara::crypto::cryp::SymmetricKeyWrapperCtx descriptografa uma chave empacotada utilizando a Key Encryption Key (KEK) previamente definida e retorna um novo objeto SymmetricKey[SWS_CRYPT_24016]. Como parâmetros, a função síncrona recebe o buffer de entrada com os dados protegidos da chave (wrappedKey), o identificador de algoritmo para a chave de destino (targetAlgId), bem como sinalizadores de bits para os tipos de transformação permitidos desta (allowedUsage) [SWS_CRYPT_24016].
O valor de retorno ara::core::Result<SymmetricKey::Sptr> contém, em caso de execução bem-sucedida, um smart pointer para a chave gerada ou sinaliza um erro com semântica de rollback [SWS_CRYPT_24016]. Possíveis causas de erro são:
InvalidArgument: os dados de chave passados em wrappedKey não podem ser desempacotados, por exemplo, devido a um formato inválido ou a um tamanho incorreto de buffer [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kUninitializedContext: o contexto de empacotamento ainda não foi inicializado com uma KEK compatível [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kUsageViolation: as restrições de uso da KEK proíbem o desempacotamento (ausência de kAllowKeyUnwrapping) [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kUnknownIdentifier: o valor passado para targetAlgId não é conhecido ou não é suportado [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kIncompatibleArguments: os sinalizadores allowedUsage especificados são incompatíveis com targetAlgId ou com o tipo de chave [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kBusyResource: um recurso do sistema necessário para a operação está ocupado no momento [SWS_CRYPT_24016].
ara::crypto::CryptoErrc::kEmptyKeySlot: um KeySlot configurado para a operação está vazio [SWS_CRYPT_24016].
O método é declarado como const bem como noexcept, garante segurança de exceções e, de acordo com a especificação, é thread-safe para chamadas simultâneas [SWS_CRYPT_24016].
Este texto foi criado por uma IA e serve como orientação. O documento determinante é a especificação.
Wrap the provided key using the previously set key encryption key.
GERADO POR IAnão revisadoModelo: gemini-3.8-flash-medium · Esforço: medium · Temperatura: não controlável · Prompt: 8e6ff8198c9dProcedência
traduzido do guia alemãogemini-3.8-flash-low · 2026-10-13 · Original em alemão
usar
O método Wrap da classe ara::crypto::cryp::SymmetricKeyWrapperCtx (arquivo de cabeçalho ara/crypto/cryp/symmetric_key_wrapper_ctx.h) empacota uma chave fornecida utilizando a chave de criptografia de chave (Key Encryption Key) previamente definida [SWS_CRYPT_24014].
key (CryptoObject::Sptr): a chave a ser empacotada.
wrappedKey (ReadWriteMemRegion): um buffer de saída no qual a chave empacotada é gravada.
Como valor de retorno, a operação fornece um ara::core::Result<std::size_t> que, em caso de sucesso, contém o número de bytes da chave empacotada gravados no buffer [SWS_CRYPT_24014].
Tratamento de erros e semântica
O método é definido como exception safe e implementa uma semântica de rollback estrita para casos de erro [SWS_CRYPT_24014]. Os seguintes estados de erro podem ser reportados [SWS_CRYPT_24014]:
InvalidArgument: o objeto de chave não pode ser empacotado (por ex., devido a tamanho inválido ou tipo incorreto).
ara::crypto::CryptoErrc::kUninitializedContext: o contexto ainda não foi inicializado com um valor de chave.
ara::crypto::CryptoErrc::kUsageViolation: o uso permitido da KEK não abrange kAllowKeyWrapping ou o do objeto não abrange kAllowSecuredExport.
ara::crypto::CryptoErrc::kInsufficientCapacity: o buffer de saída wrappedKey é pequeno demais.
ara::crypto::CryptoErrc::kBusyResource: um recurso necessário está ocupado.
ara::crypto::CryptoErrc::kEmptyKeySlot: Um KeySlot configurado está atualmente vazio.
Simultaneidade e restrições
A interface é especificada como thread-safe[SWS_CRYPT_24014]. Pré-requisito para a execução é um contexto previamente inicializado, bem como atributos de uso compatíveis das chaves envolvidas [SWS_CRYPT_24014].
Esta nota de utilização foi gerada automaticamente com base na especificação da AUTOSAR Adaptive R25-11.
rollback_semantics if the allowed usage of the KEK does not include kAllowKey Wrapping or the allowed usage of the object does not include k AllowSecuredExport
gemini-3.8-flash-low· 2026-10-13 · Original em alemão