Sirve como interfaz común para la inspección segura para subprocesos y el almacenamiento persistente de objetos criptográficos.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 156a618ba987ProcedenciaPreguntas abiertas (2)
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
Sirve como interfaz común para la inspección segura para subprocesos y el almacenamiento persistente de objetos criptográficos.
La interfaz ara::crypto::cryp::CryptoObject define la abstracción común para todos los objetos criptográficos en la pila criptográfica de Adaptive y regula su ciclo de vida mediante Sptr[SWS_CRYPT_20501]. Permite la lectura segura para subprocesos de identificadores de algoritmos e indicadores de uso, y admite la sobreescritura permanente de material de clave en un WriteableKeySlot[SWS_CRYPT_20505], [SWS_CRYPT_20517]. Durante el proceso de almacenamiento, los códigos de error definidos con semántica de reversión garantizan la integridad de los datos de la ranura de memoria subyacente [SWS_CRYPT_20517].
Contexto
La interfaz ara::crypto::cryp::CryptoObject constituye la abstracción común para todos los objetos criptográficos que pueden ser reconocidos y gestionados por un proveedor de criptografía. La clase extiende ara::crypto::Serializable y define propiedades fundamentales como la identificación de algoritmos, las restricciones de uso y los mecanismos para el almacenamiento persistente. Los interlocutores típicos son las aplicaciones llamantes, el proveedor de criptografía suministrador y las memorias de destino en forma de instancias de WriteableKeySlot.
Ciclo de vida
Los objetos criptográficos se gestionan dentro de la plataforma principalmente mediante propiedad compartida. Para ello, la clase define el alias canónico de puntero inteligente ara::crypto::cryp::CryptoObject::Sptr como std::shared_ptr<CryptoObject>[SWS_CRYPT_20501]. Las instancias concretas deberían ser instanciadas por las rutinas especializadas de fábrica y de carga de un proveedor de criptografía y puestas a disposición del llamante mediante este tipo de puntero. Pregunta Q-36e2bd12d7dc8b98 (abierta) Todos los métodos declarados de la interfaz están especificados como seguros para subprocesos y seguros frente a excepciones (exception safe, noexcept), lo que garantiza un acceso concurrente seguro de lectura y almacenamiento a través de múltiples subprocesos [SWS_CRYPT_20505], [SWS_CRYPT_50092], [SWS_CRYPT_20517]. La liberación del objeto y del material de clave asociado se produce automáticamente tan pronto como se extingue la última referencia de Sptr.
Ruta de uso
Una ruta de uso típica incluye la identificación de las propiedades criptográficas de un objeto y su posterior almacenamiento persistente. En primer lugar, la aplicación consulta a través de GetAlgId() el identificador de algoritmo del objeto como ara::crypto::AlgIdString[SWS_CRYPT_20505]. A continuación, se determinan los indicadores de uso permitidos (AllowedUsageFlags) mediante GetAllowedUsage()[SWS_CRYPT_50092], para asegurar que el objeto esté autorizado para la operación prevista. Para el resguardo permanente, la aplicación pasa una ranura de clave con permisos de escritura al método Save()[SWS_CRYPT_20517]. El material de clave, así como los metadatos correspondientes, se almacenan seguidamente en la ranura de destino, sobrescribiéndose los datos previamente existentes en la ranura [SWS_CRYPT_20517].
Mientras que GetAlgId()[SWS_CRYPT_20505] y GetAllowedUsage()[SWS_CRYPT_50092] no muestran códigos de error estandarizados y, en caso de éxito, devuelven el resultado respectivo en un ara::core::Result, la operación de persistencia Save() define condiciones de error específicas con semántica de reversión vinculante [SWS_CRYPT_20517]:
ara::crypto::CryptoErrc::kIncompatibleObject: Se produce cuando el objeto es incompatible con el WriteableKeySlot proporcionado, por ejemplo, porque los identificadores de algoritmo (AlgId) difieren entre sí o la ranura de clave pertenece a un proveedor de criptografía diferente [SWS_CRYPT_20517].
ara::crypto::CryptoErrc::kUsageViolation: Señaliza un uso no permitido si los indicadores de uso de la clave declarados mediante GetAllowedUsage() no contienen el derecho de persistencia (kAllowPersist) [SWS_CRYPT_50092], [SWS_CRYPT_20517].
ara::crypto::CryptoErrc::kBusyResource: Se devuelve cuando el recurso de memoria subyacente está temporalmente ocupado y la operación no puede ejecutarse de forma inmediata [SWS_CRYPT_20517].
Gracias a la semántica de reversión, el estado del WriteableKeySlot permanece intacto ante cualquiera de estos errores, de modo que no quedan datos de clave parcialmente escritos o corrompidos en la memoria [SWS_CRYPT_20517].
Esta guía se basa en la especificación AUTOSAR Adaptive R25-11 y resume los requisitos para la interfaz 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.
GENERADO POR IAno revisadoModelo: gemini-3.8-flash-medium · Esfuerzo: medium · Temperatura: no controlable · Prompt: 0aae854cf6a9Procedencia
traducido de la guía alemanagemini-3.8-flash-low · 2026-10-13 · Original en alemán
El método Save de la interfaz ara::crypto::cryp::CryptoObject sirve para almacenar de forma persistente material de clave junto con los metadatos correspondientes en un WriteableKeySlot proporcionado ([SWS_CRYPT_20517]). Los datos previamente almacenados en el KeySlot de destino se sobrescriben durante la ejecución ([SWS_CRYPT_20517]).
Como parámetro se pasa keyslot del tipo WriteableKeySlot::Sptr, que representa el espacio de memoria subyacente ([SWS_CRYPT_20517]). La función está especificada como noexcept y exception safe, y entrega como valor devuelto un ara::core::Result<void>, el cual está vacío en caso de éxito ([SWS_CRYPT_20517]).
En caso de error, se aplica una semántica de reversión ([SWS_CRYPT_20517]). Específicamente, se devuelven los siguientes códigos de error:
ara::crypto::CryptoErrc::kIncompatibleObject: la clave es incompatible con el KeySlot, por ejemplo debido a una AlgId discrepante o a la asignación a otro CryptoProvider ([SWS_CRYPT_20517]).
ara::crypto::CryptoErrc::kUsageViolation: el uso permitido de la clave no incluye el permiso kAllowPersist ([SWS_CRYPT_20517]).
ara::crypto::CryptoErrc::kBusyResource: la operación no se puede ejecutar temporalmente ([SWS_CRYPT_20517]).
Con respecto a la concurrencia, el método está declarado como thread-safe ([SWS_CRYPT_20517]).
Esta nota de uso fue generada por una IA a partir de la especificación 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 en alemán