Crypto Driver (Crypto)
Low-level driver executing cryptographic primitives on hardware security modules (HSM) or software libraries.
Funktionen — Übersicht
void Crypto_Init (const Crypto_ConfigType* configPtr);Initializes the Crypto Driver.void Crypto_GetVersionInfo (Std_VersionInfoType* versioninfo);Returns the version information of this module.Std_ReturnType Crypto_ProcessJob (uint32 objectId, Crypto_JobType* job);Service Crypto_ProcessJob.Std_ReturnType Crypto_CancelJob (uint32 objectId, Crypto_JobType* job);This interface removes the provided job from the queue and cancels the processing of the job if possible.Std_ReturnType Crypto_KeyElementSet (uint32 cryptoKeyId, uint32 keyElementId, const uint8* keyPtr, uint32 keyLength);Sets the given key element bytes to the key identified by crypto Key Id.Std_ReturnType Crypto_KeySetValid (uint32 cryptoKeyId);Sets the key state of the key identified by crypto Key Id to valid.Std_ReturnType Crypto_KeySetInvalid (uint32 cryptoKeyId);Sets invalid for the status of the key identifi ed by crypto Key Id.Std_ReturnType Crypto_KeyElementGet (uint32 cryptoKeyId, uint32 keyElementId, uint8* resultPtr, uint32* resultLengthPtr);This interface shall be used to get a key element of the key identified by the cryptoStd_ReturnType Crypto_KeyGetStatus (uint32 cryptoKeyId, Crypto_KeyStatusType* keyStatusPtr);Returns the key state of the key identified by crypto Key Id.Std_ReturnType Crypto_KeyElementCopy (uint32 cryptoKeyId, uint32 keyElementId, uint32 targetCryptoKeyId, uint32 targetKeyElementId);Service Crypto_KeyElementCopy.Std_ReturnType Crypto_KeyElementCopyPartial (uint32 cryptoKeyId, uint32 keyElementId, uint32 keyElementSourceOffset, uint32 keyElementTargetOffset, uint32 keyElementCopyLength, uint32 targetCryptoKeyId, uint32 targetKeyElementId);Service Crypto_KeyElementCopyPartial.Std_ReturnType Crypto_KeyCopy (uint32 cryptoKeyId, uint32 targetCryptoKeyId);Copies a key with all its elements to another key in the same crypto driver.Std_ReturnType Crypto_KeyElementIdsGet (uint32 cryptoKeyId, uint32* keyElementIdsPtr, uint32* keyElementIdsLengthPtr);Used to retrieve information which key elements are available in a given key.Std_ReturnType Crypto_RandomSeed (uint32 cryptoKeyId, const uint8* seedPtr, uint32 seedLength);This function generates the internal seed state using the pro vided entropy source.Std_ReturnType Crypto_KeyGenerate (uint32 cryptoKeyId);Generates new key material store it in the key identified by crypto Key Id.Std_ReturnType Crypto_KeyDerive (uint32 cryptoKeyId, uint32 targetCryptoKeyId);Derives a new key by using the key elements in the given key identified by the crypto Key Id.Std_ReturnType Crypto_KeyExchangeCalcPubVal (uint32 cryptoKeyId, uint8* publicValuePtr, uint32* publicValueLengthPtr);Calculates the public value for the key exchange a nd stores the public key in the memory location pointed by the public value...Std_ReturnType Crypto_KeyExchangeCalcSecret (uint32 cryptoKeyId, const uint8* partnerPublicValuePtr, uint32 partnerPublicValueLength);Calculates the shared secret key for the key exchange with the key material of the key identified by the crypto Key Id and the...void Crypto_MainFunction (void);If asynchronous job processing is configured and there are job queues, the function is called cyclically to process queued jobs.
Typen — Übersicht
struct Crypto_ConfigTypeConfiguration data structure of Cry If module
Funktionen & Typen — Detailansicht
función Crypto_Init [SWS_Crypto_91000] 📄 PDF
void Crypto_Init (const Crypto_ConfigType* configPtr);
Initializes the Crypto Driver.
La función Crypto_Init sirve para inicializar el Crypto Driver de acuerdo con [SWS_Crypto_91000]. La interfaz está declarada en la cabecera Crypto.h y posee el Service-ID 0x00 [SWS_Crypto_91000].
Para la llamada y los parámetros de la interfaz se especifican las siguientes propiedades:
- Puntero de configuración: a través del parámetro de entrada
configPtrde tipoconst Crypto_ConfigType*se pasa un puntero a la estructura de configuración seleccionada [SWS_Crypto_91000]. - Valor de retorno: la función no posee ningún valor de retorno (
void); no existen parámetros de entrada/salida ni parámetros de salida independientes [SWS_Crypto_91000]. - Comportamiento de ejecución: la rutina de inicialización se ejecuta de forma síncrona (
Synchronous) [SWS_Crypto_91000]. - Reentrancia: la función está definida como no reentrante (
Non Reentrant) [SWS_Crypto_91000]. Las llamadas paralelas o solapadas no están permitidas.
Debido a su clasificación como no reentrante y dado que la especificación no devuelve códigos de error específicos, es probable que la llamada se realice típicamente de forma centralizada durante la fase de arranque de la unidad de control antes de cualquier otro acceso al controlador (interpretación). Pregunta Q-008bb5a45b823891 (abierta) Asimismo, es probable que la entidad que realiza la llamada sea responsable de que la estructura de configuración referenciada permanezca válida de forma permanente en la memoria (interpretación). Pregunta Q-6271a86fad440121 (abierta)
Esta nota de uso fue generada por una IA a partir de la especificación AUTOSAR CP R20-11.
Guía del implementador pendiente (complejidad I1)
función Crypto_GetVersionInfo [SWS_Crypto_91001] 📄 PDF
void Crypto_GetVersionInfo (Std_VersionInfoType* versioninfo);
Returns the version information of this module.
función Crypto_ProcessJob [SWS_Crypto_91003] 📄 PDF
Std_ReturnType Crypto_ProcessJob (uint32 objectId, Crypto_JobType* job);
Service Crypto_ProcessJob.
La función Crypto_ProcessJob ejecuta la primitiva criptográfica configurada en el parámetro job sobre el Crypto Driver Object referenciado por objectId [SWS_Crypto_91003]. La llamada es reentrante y opera de forma síncrona o asíncrona en función de la configuración del trabajo [SWS_Crypto_91003]. A través del puntero a Crypto_JobType se transfieren tanto datos de configuración para la primitiva como búferes para los datos de resultado [SWS_Crypto_91003].
Antes de la ejecución propiamente dicha de un trabajo, el controlador comprueba la validez de los identificadores de clave: si job->cryptoKeyId o, en su caso, job->targetCryptoKeyId se encuentran fuera del rango permitido, la función notifica el error CRYPTO_E_PARAM_HANDLE al DET y devuelve E_NOT_OK [SWS_Crypto_00217]. Esto también se aplica al servicio CRYPTO_KEYDERIVE (job->jobPrimitiveInfo->primitiveInfo->service) siempre que job->targetCryptoKeyId sea inválido [SWS_Crypto_00202].
Además de E_OK y E_NOT_OK, códigos de error específicos señalan el fallo de la solicitud [SWS_Crypto_91003]:
CRYPTO_E_BUSY, si el objeto del controlador está ocupado o su cola está llena [SWS_Crypto_91003],- errores relacionados con las claves como
CRYPTO_E_KEY_NOT_VALID,CRYPTO_E_KEY_SIZE_MISMATCH,CRYPTO_E_KEY_READ_FAIL,CRYPTO_E_KEY_WRITE_FAIL,CRYPTO_E_KEY_NOT_AVAILABLEoCRYPTO_E_KEY_EMPTY[SWS_Crypto_91003], CRYPTO_E_JOB_CANCELEDen caso de cancelación de un trabajo síncrono [SWS_Crypto_91003], así comoCRYPTO_E_ENTROPY_EXHAUSTEDen caso de entropía insuficiente de un generador de números aleatorios; en este caso, la función notifica adicionalmente el error de tiempo de ejecuciónCRYPTO_E_RE_ENTROPY_EXHAUSTED[SWS_Crypto_00141], [SWS_Crypto_91003].
Este texto fue generado por una IA a partir de datos de especificación de AUTOSAR R20-11.
Guía del implementador pendiente (complejidad I1)
función Crypto_CancelJob [SWS_Crypto_00122] 📄 PDF
Std_ReturnType Crypto_CancelJob (uint32 objectId, Crypto_JobType* job);
This interface removes the provided job from the queue and cancels the processing of the job if possible.
usar
La función síncrona Crypto_CancelJob elimina un trabajo transferido de la cola y cancela su procesamiento en la medida de lo posible [SWS_Crypto_00122]. Durante la llamada se transfieren el identificador del Crypto Driver Object (objectId), así como un puntero a la configuración del trabajo (job) [SWS_Crypto_00122].
Los valores de retorno señalan el resultado del intento de cancelación:
E_OK: La solicitud se realizó con éxito y el trabajo se eliminó [SWS_Crypto_00122]. Si no existe ningún error en el controlador y el trabajo no se está procesando actualmente, el servicio devuelve asimismoE_OKsin realizar más acciones [SWS_Crypto_00214].E_NOT_OK: la solicitud ha fallado, ya que el trabajo no se pudo eliminar [SWS_Crypto_00122].CRYPTO_E_JOB_CANCELED: El trabajo se canceló, pero continúa ejecutándose; no se devuelve ningún resultado a la aplicación [SWS_Crypto_00122]. Esto se aplica cuando el controlador funciona correctamente, pero no puede cancelar el trabajo (por ejemplo, debido a limitaciones de hardware) [SWS_Crypto_00183].
Concurrencia y restricciones
La interfaz es reentrante para instancias diferentes, pero no debe llamarse simultáneamente para el mismo Crypto Driver Object [SWS_Crypto_00122].
Esta nota de uso se generó automáticamente y se basa exclusivamente en los datos de especificación de AUTOSAR R20-11.
Guía del implementador pendiente (complejidad I1)
función Crypto_KeyElementSet [SWS_Crypto_91004] 📄 PDF
Std_ReturnType Crypto_KeyElementSet (uint32 cryptoKeyId, uint32 keyElementId, const uint8* keyPtr, uint32 keyLength);
Sets the given key element bytes to the key identified by crypto Key Id.
La función síncrona Crypto_KeyElementSet sirve para establecer en el controlador criptográfico los datos sin procesar de un determinado elemento de clave para una clave identificada a través de cryptoKeyId [SWS_Crypto_91004].
Parámetros y valores de retorno
A través de keyElementId se direcciona el elemento de clave de destino, mientras que keyPtr apunta al búfer de datos y keyLength a su tamaño en bytes [SWS_Crypto_91004]. Si la asignación tiene éxito, la interfaz devuelve E_OK [SWS_Crypto_91004].
Manejo de errores
Si se produce un error durante el procesamiento, la función proporciona valores de retorno específicos [SWS_Crypto_91004]:
CRYPTO_E_BUSY: El Crypto Driver Object correspondiente está ocupado.CRYPTO_E_KEY_WRITE_FAIL: Se denegó el acceso de escritura al elemento de clave.CRYPTO_E_KEY_NOT_AVAILABLE: El elemento de clave solicitado o la clave no están disponibles.CRYPTO_E_KEY_SIZE_MISMATCH: La longitud de datos transferida no coincide con el tamaño del elemento de clave.E_NOT_OK: La solicitud ha fallado por otros motivos.
concurrencia
La función está especificada como no reentrante (Non Reentrant) [SWS_Crypto_91004]. Interpretación: es probable que las entidades que realizan la llamada sean responsables de sincronizar las llamadas paralelas entre sí para evitar incoherencias de datos en el controlador. Pregunta Q-d7ef7a774052a212 (abierta)
Esta nota de uso se ha generado automáticamente sobre la base de la especificación SWS_Crypto_91004 (R20-11).
Guía del implementador pendiente (complejidad I1)
función Crypto_KeySetValid [SWS_Crypto_91014] 📄 PDF
Std_ReturnType Crypto_KeySetValid (uint32 cryptoKeyId);
Sets the key state of the key identified by crypto Key Id to valid.
La función síncrona Crypto_KeySetValid sirve para establecer en válido ([SWS_Crypto_91014]) el estado de una clave especificada a través del identificador cryptoKeyId. La interfaz está disponible mediante el archivo de cabecera Crypto.h y posee el Service ID 0x05 ([SWS_Crypto_91014]).
Al utilizarla, se definen los siguientes parámetros y valores de retorno ([SWS_Crypto_91014]):
- Parámetro de entrada: Mediante
cryptoKeyId(tipouint32) se pasa el identificador de la clave cuyo estado debe establecerse en válido ([SWS_Crypto_91014]). No existen parámetros de entrada o de salida adicionales ([SWS_Crypto_91014]). - Valor de retorno: Un código de estado de tipo
Std_ReturnTypeinforma sobre el resultado de la solicitud ([SWS_Crypto_91014]):E_OK: La solicitud se realizó con éxito ([SWS_Crypto_91014]).E_NOT_OK: La solicitud ha fallado ([SWS_Crypto_91014]).CRYPTO_E_BUSY: La ejecución falló porque el Crypto Driver Object correspondiente está ocupado ([SWS_Crypto_91014]).
En cuanto a la concurrencia, la función está especificada como no reentrante («Non Reentrant») ([SWS_Crypto_91014]). Interpretación: Es de suponer que las entidades llamantes deban coordinar externamente las llamadas paralelas entre diferentes tareas para evitar conflictos, y deberían prever una repetición de la llamada en un momento posterior en caso de recibir CRYPTO_E_BUSY. Pregunta Q-32d775a9e61e5731 (abierta)
Este texto fue creado por una IA y se basa en la versión de especificación AUTOSAR R20-11.
Guía del implementador pendiente (complejidad I1)
función Crypto_KeySetInvalid [SWS_Crypto_91020] 📄 PDF
Std_ReturnType Crypto_KeySetInvalid (uint32 cryptoKeyId);
Sets invalid for the status of the key identifi ed by crypto Key Id.
Uso y semántica
La función síncrona Crypto_KeySetInvalid establece el estado de una clave identificada mediante cryptoKeyId en no válido [SWS_Crypto_91020]. La función está definida en el archivo de cabecera Crypto.h y se accede a ella mediante el Service ID 0x15 [SWS_Crypto_91020]. Como único parámetro de transferencia sirve el valor de entrada cryptoKeyId (tipo uint32), el cual contiene el identificador unívoco de la clave de destino; no existen parámetros de entrada/salida ni de salida [SWS_Crypto_91020].
Tratamiento de errores y valores de retorno
El resultado de la ejecución de la función se señaliza a través del valor de retorno de tipo Std_ReturnType [SWS_Crypto_91020]:
E_OK: La solicitud fue exitosa y el estado de la clave se estableció en no válido [SWS_Crypto_91020].E_NOT_OK: La ejecución de la solicitud ha fallado [SWS_Crypto_91020].CRYPTO_E_BUSY: La solicitud falló porque el objeto de controlador criptográfico (Crypto Driver Object) correspondiente está ocupado actualmente [SWS_Crypto_91020].
Concurrencia y restricciones
La interfaz está especificada como no reentrante (Non Reentrant) [SWS_Crypto_91020]. Por tanto, una llamada concurrente o de interrupción es inadmisible. Dado que la función se ejecuta de forma síncrona, solo regresa al llamante tras finalizar el cambio de estado o tras constatar el error [SWS_Crypto_91020].
Esta nota de uso fue generada automáticamente sobre la base de la especificación.
Guía del implementador pendiente (complejidad I1)
función Crypto_KeyElementGet [SWS_Crypto_91006] 📄 PDF
Std_ReturnType Crypto_KeyElementGet (uint32 cryptoKeyId, uint32 keyElementId, uint8* resultPtr, uint32* resultLengthPtr);
This interface shall be used to get a key element of the key identified by the crypto
La función síncrona y reentrante Crypto_KeyElementGet sirve para leer un elemento de clave identificado mediante keyElementId de la clave cryptoKeyId y almacenarlo en el área de memoria resultPtr [SWS_Crypto_91006]. La interfaz se proporciona a través de la cabecera Crypto.h y posee el Service-ID 0x06 [SWS_Crypto_91006]. En el momento de la llamada, la entidad que realiza la llamada transfiere a través del parámetro de entrada/salida resultLengthPtr el tamaño del búfer o, en caso de acceso parcial configurado, el tamaño de lectura deseado; una vez finalizada la ejecución, el controlador deposita allí la cantidad de datos realmente copiada [SWS_Crypto_91006].
En caso de éxito, la función devuelve E_OK [SWS_Crypto_91006]. Si la operación falla, lo señala mediante códigos de error específicos: CRYPTO_E_BUSY si el objeto del controlador criptográfico está ocupado, CRYPTO_E_KEY_NOT_AVAILABLE si el elemento de clave no está disponible, CRYPTO_E_KEY_READ_FAIL en caso de acceso de lectura denegado, CRYPTO_E_KEY_EMPTY en el caso de un elemento de origen no inicializado, así como de forma genérica E_NOT_OK [SWS_Crypto_91006].
Aunque la interfaz está especificada como reentrante, la especificación señala que, en caso de mapeo directo del elemento de clave en la memoria flash, pueden producirse latencias apreciables durante la ejecución síncrona [SWS_Crypto_91006]. Interpretación: debido a estos posibles retrasos, es probable que la llamada resulte adecuada principalmente en el contexto de tarea y no dentro de rutinas de servicio de interrupción críticas en el tiempo. Pregunta Q-ff4e2843b9aad46d (abierta)
Esta nota de uso se ha generado automáticamente y se basa en el estado de especificación de AUTOSAR Classic R20-11.
Guía del implementador pendiente (complejidad I1)
función Crypto_KeyGetStatus [SWS_Crypto_91019] 📄 PDF
Std_ReturnType Crypto_KeyGetStatus (uint32 cryptoKeyId, Crypto_KeyStatusType* keyStatusPtr);
Returns the key state of the key identified by crypto Key Id.
La función síncrona Crypto_KeyGetStatus sirve para consultar el estado actual de una clave específica dentro del controlador criptográfico [SWS_Crypto_91019]. Se proporciona a través de la cabecera Crypto.h y tiene el Service-ID 0x14 [SWS_Crypto_91019].
Uso y parámetros
La llamada se realiza de forma síncrona y espera dos parámetros [SWS_Crypto_91019]:
cryptoKeyId: El identificador de la clave cuyo estado se va a determinar.keyStatusPtr: Puntero al área de memoria del tipoCrypto_KeyStatusTypea la que se devuelve el estado.
Como valor de retorno, la interfaz devuelve Std_ReturnType. En caso de ejecución correcta, se notifica E_OK, mientras que en caso de error se devuelve E_NOT_OK [SWS_Crypto_91019].
Concurrencia y restricciones
La función está declarada como no reentrante (Non Reentrant) [SWS_Crypto_91019]. Por tanto, los llamadores deben asegurarse de evitar llamadas concurrentes mediante mecanismos de sincronización de nivel superior. No se enumeran mensajes de error de DET específicos; presumiblemente, una llamada errónea, como un puntero no válido o un ID no válido, conduce directamente a la devolución de E_NOT_OK [SWS_Crypto_91019]. Pregunta Q-5703fab02905e91a (abierta)
Este texto ha sido elaborado por una IA y se basa en la especificación de AUTOSAR R20-11.
Guía del implementador pendiente (complejidad I1)
función Crypto_KeyElementCopy [SWS_Crypto_00148] 📄 PDF
Std_ReturnType Crypto_KeyElementCopy (uint32 cryptoKeyId, uint32 keyElementId, uint32 targetCryptoKeyId, uint32 targetKeyElementId);
Service Crypto_KeyElementCopy.
La función síncrona Crypto_KeyElementCopy sirve para copiar un elemento de clave a otro elemento de clave dentro del mismo controlador criptográfico [SWS_Crypto_00148]. Se transfieren los identificadores de la clave de origen (cryptoKeyId) y del elemento de clave de origen (keyElementId), así como de la clave de destino (targetCryptoKeyId) y del elemento de clave de destino (targetKeyElementId) [SWS_Crypto_00148].
En cuanto al comportamiento temporal, debe tenerse en cuenta que, en el caso de elementos de clave mapeados directamente en memoria flash, debido a la ejecución síncrona pueden producirse mayores retardos en la llamada a la función [SWS_Crypto_00148]. Por tanto, el comportamiento en tiempo de ejecución debe considerarse especialmente en contextos de tiempo crítico.
La función está diseñada como reentrante, aunque explícitamente no para el mismo cryptoKeyId [SWS_Crypto_00148]. Por consiguiente, las llamadas simultáneas con una clave de origen idéntica deben sincronizarse o excluirse por parte del llamador.
En caso de éxito, la función devuelve E_OK [SWS_Crypto_00148]. En caso de error, el valor de retorno indica la causa específica [SWS_Crypto_00148]:
CRYPTO_E_BUSY: El objeto de controlador criptográfico está ocupado [SWS_Crypto_00148].CRYPTO_E_KEY_NOT_AVAILABLE: El elemento de clave solicitado de al menos una clave no está disponible [SWS_Crypto_00148].CRYPTO_E_KEY_READ_FAILoCRYPTO_E_KEY_WRITE_FAIL: No está permitida la lectura del elemento de origen o la escritura del elemento de destino [SWS_Crypto_00148].CRYPTO_E_KEY_SIZE_MISMATCH: Los tamaños de los elementos de clave no son compatibles entre sí [SWS_Crypto_00148].CRYPTO_E_KEY_EMPTY: el elemento de clave de origen no está inicializado [SWS_Crypto_00148].E_NOT_OK: la solicitud ha fallado de forma general [SWS_Crypto_00148].
Esta nota de uso ha sido generada de forma automatizada sobre la base de la especificación de AUTOSAR Classic R20-11.
Guía del implementador pendiente (complejidad I1)
función Crypto_KeyElementCopyPartial [SWS_Crypto_91015] 📄 PDF
Std_ReturnType Crypto_KeyElementCopyPartial (uint32 cryptoKeyId, uint32 keyElementId, uint32 keyElementSourceOffset, uint32 keyElementTargetOffset, uint32 keyElementCopyLength, uint32 targetCryptoKeyId, uint32 targetKeyElementId);
Service Crypto_KeyElementCopyPartial.
La función síncrona Crypto_KeyElementCopyPartial sirve para la copia parcial de datos desde un elemento de clave de origen a un elemento de clave de destino dentro del mismo controlador criptográfico [SWS_Crypto_91015]. Mediante los parámetros keyElementSourceOffset y keyElementCopyLength se define el fragmento a copiar del elemento de origen (cryptoKeyId, keyElementId), mientras que keyElementTargetOffset determina la posición inicial en el elemento de destino (targetCryptoKeyId, targetKeyElementId). En caso de verificación sin errores, el controlador realiza la operación de copia de forma síncrona y devuelve E_OK [SWS_Crypto_00209].
Antes de la ejecución, el controlador valida los estados de los búferes y del controlador:
- Si el controlador criptográfico no está inicializado y el control de desarrollo está activado, la función reporta
CRYPTO_E_UNINITal DET y devuelveE_NOT_OK[SWS_Crypto_00205]. - Si la longitud total del elemento de clave de origen es menor que
keyElementSourceOffset + keyElementCopyLength, la llamada falla conCRYPTO_E_KEY_SIZE_MISMATCH[SWS_Crypto_00207]. - Si el búfer máximo del elemento de clave de destino ofrece menos espacio que
keyElementTargetOffset + keyElementCopyLength, también se notificaCRYPTO_E_KEY_SIZE_MISMATCH[SWS_Crypto_00208]. - Otros valores de error especificados son, entre otros,
CRYPTO_E_BUSY(objeto de controlador ocupado),CRYPTO_E_KEY_EMPTY(elemento de origen no inicializado),CRYPTO_E_KEY_NOT_AVAILABLE, así como errores de acceso de lectura o escritura (CRYPTO_E_KEY_READ_FAIL,CRYPTO_E_KEY_WRITE_FAIL) [SWS_Crypto_91015].
La función es reentrante, pero no debe llamarse simultáneamente para el mismo ID de clave cryptoKeyId [SWS_Crypto_91015]. Si un elemento de clave está almacenado directamente en la memoria Flash, la ejecución síncrona puede provocar retardos perceptibles [SWS_Crypto_91015].
Esta nota de uso se generó de forma automatizada sobre la base de la especificación AUTOSAR R20-11.
Guía del implementador pendiente (complejidad I2)
función Crypto_KeyCopy [SWS_Crypto_00155] 📄 PDF
Std_ReturnType Crypto_KeyCopy (uint32 cryptoKeyId, uint32 targetCryptoKeyId);
Copies a key with all its elements to another key in the same crypto driver. Note: If the actual key element is directly mapped to flash memory, there could be a bigger delay when calling this function (synchronous operation)
usar
La función síncrona Crypto_KeyCopy copia una clave junto con todos sus elementos de clave a una clave de destino dentro del mismo Crypto Driver [SWS_Crypto_00155]. La asignación se realiza mediante los parámetros de entrada cryptoKeyId para la clave de origen y targetCryptoKeyId para la clave de destino [SWS_Crypto_00155]. Una operación de copia exitosa se confirma con E_OK [SWS_Crypto_00155].
Concurrencia y comportamiento en tiempo de ejecución
La interfaz está diseñada como reentrante, pero no debe ejecutarse simultáneamente para el mismo cryptoKeyId [SWS_Crypto_00155]. Dado que la ejecución se realiza de forma síncrona, en el caso de elementos de clave almacenados directamente en la memoria Flash pueden producirse retardos perceptibles durante la llamada [SWS_Crypto_00155].
Manejo de errores
En caso de error, la función devuelve valores de retorno específicos de tipo Std_ReturnType [SWS_Crypto_00155]:
CRYPTO_E_BUSY: El Crypto Driver Object asociado está ocupado [SWS_Crypto_00155].CRYPTO_E_KEY_NOT_AVAILABLE: Al menos una de las claves solicitadas no está disponible [SWS_Crypto_00155].CRYPTO_E_KEY_READ_FAIL: No está permitida la lectura del elemento de clave de origen [SWS_Crypto_00155].CRYPTO_E_KEY_WRITE_FAIL: No está permitida la escritura en el elemento de clave de destino [SWS_Crypto_00155].CRYPTO_E_KEY_SIZE_MISMATCH: Los tamaños de los elementos de clave no son compatibles entre sí [SWS_Crypto_00155].CRYPTO_E_KEY_EMPTY: El elemento de clave de la clave de origen no está inicializado [SWS_Crypto_00155].E_NOT_OK: La ejecución de la solicitud ha fallado [SWS_Crypto_00155].
Esta nota de uso fue generada por una IA a partir de la especificación AUTOSAR CP R20-11.
función Crypto_KeyElementIdsGet [SWS_Crypto_00160] 📄 PDF
Std_ReturnType Crypto_KeyElementIdsGet (uint32 cryptoKeyId, uint32* keyElementIdsPtr, uint32* keyElementIdsLengthPtr);
Used to retrieve information which key elements are available in a given key.
La función síncrona Crypto_KeyElementIdsGet sirve para consultar información sobre qué elementos de clave están disponibles en una clave dada [SWS_Crypto_00160]. A través del parámetro de entrada cryptoKeyId se pasa el identificador de la clave cuyos IDs de elementos disponibles deben exportarse [SWS_Crypto_00160]. Los identificadores determinados se almacenan en el array referenciado por el puntero keyElementIdsPtr [SWS_Crypto_00160].
La gestión del tamaño del búfer se realiza mediante el parámetro de entrada y salida keyElementIdsLengthPtr: en el momento de la llamada, este parámetro debe contener el tamaño proporcionado del búfer keyElementIdsPtr [SWS_Crypto_00160]. Una vez finalizada la operación, allí se deposita la cantidad real de elementos de clave presentes [SWS_Crypto_00160].
Como valor de retorno, el servicio devuelve E_OK en caso de consulta exitosa o E_NOT_OK si la solicitud ha fallado [SWS_Crypto_00160]. Si el objeto del controlador criptográfico competente está ocupado en el momento de la llamada, se devuelve el código de error CRYPTO_E_BUSY [SWS_Crypto_00160].
En lo que respecta a la concurrencia, la función es reentrante, pero no debe llamarse simultáneamente para el mismo cryptoKeyId [SWS_Crypto_00160]. La declaración está disponible a través de la cabecera Crypto.h [SWS_Crypto_00160].
Este texto ha sido generado por una IA a partir de la especificación de AUTOSAR.
Guía del implementador pendiente (complejidad I1)
función Crypto_RandomSeed [SWS_Crypto_91013] 📄 PDF
Std_ReturnType Crypto_RandomSeed (uint32 cryptoKeyId, const uint8* seedPtr, uint32 seedLength);
This function generates the internal seed state using the pro vided entropy source. Furthermore, this function can be used to update the seed state with new entropy
La función síncrona Crypto_RandomSeed (Service-ID 0x0d) sirve, según [SWS_Crypto_91013], para la generación y actualización del estado interno de la semilla de una clave utilizando una fuente de entropía proporcionada. La declaración de la función está contenida en el archivo de cabecera Crypto.h.
Uso y parámetros de llamada
Además de la generación inicial, la función también puede utilizarse, según [SWS_Crypto_91013], para actualizar el estado de la semilla con nueva entropía. La llamada síncrona requiere tres parámetros de entrada:
cryptoKeyId: Transfiere el identificador de la clave para la que se generará una nueva semilla.seedPtr: Contiene un puntero al área de memoria con los datos para alimentar la semilla.seedLength: Define la longitud en bytes de los datos de semilla transferidos.
Valores de retorno y tratamiento de errores
Como valor de retorno, Crypto_RandomSeed notifica un estado del tipo Std_ReturnType según [SWS_Crypto_91013]:
E_OK: la solicitud se ejecutó con éxito.E_NOT_OK: La solicitud ha fallado.CRYPTO_E_KEY_NOT_VALID: La ejecución falla porque el estado de la clave identificada mediantecryptoKeyIdse encuentra en el estado «invalid».
Concurrencia y restricciones
Según [SWS_Crypto_91013], la función está especificada como reentrante, pero expresamente no para la misma cryptoKeyId. Por lo tanto, las llamadas paralelas para la misma clave deben evitarse del lado del llamador.
Este texto ha sido generado por una IA y se basa exclusivamente en los datos de especificación del payload.
Guía del implementador pendiente (complejidad I1)
función Crypto_KeyGenerate [SWS_Crypto_91007] 📄 PDF
Std_ReturnType Crypto_KeyGenerate (uint32 cryptoKeyId);
Generates new key material store it in the key identified by crypto Key Id.
usar
La función Crypto_KeyGenerate, proporcionada a través del archivo de cabecera Crypto.h, genera nuevo material de clave y actualiza la clave direccionada mediante el identificador cryptoKeyId [SWS_Crypto_91007]. La función opera de forma totalmente síncrona y está definida con el Service-ID 0x07 [SWS_Crypto_91007]. Aparte del identificador de clave, no existen otros parámetros [SWS_Crypto_91007].
Concurrencia y restricciones
Con respecto a la concurrencia, Crypto_KeyGenerate está especificada como reentrante, pero expresamente con la restricción de que esto no se aplica para el mismo cryptoKeyId [SWS_Crypto_91007]. Si se realizan varias solicitudes para la misma clave, estas deben sincronizarse por parte del emisor de la llamada para evitar conflictos en el controlador.
Valores de retorno y tratamiento de errores
A través del valor de retorno del tipo básico Std_ReturnType, la entidad que realiza la llamada recibe información detallada sobre el éxito o las causas de error específicas de la operación [SWS_Crypto_91007]:
E_OK: La generación de la clave se ejecutó con éxito [SWS_Crypto_91007].CRYPTO_E_BUSY: La solicitud falló porque el Crypto Driver Object competente está ocupado actualmente [SWS_Crypto_91007].CRYPTO_E_KEY_EMPTY: La generación falló porque un elemento de clave de origen requerido no está inicializado [SWS_Crypto_91007].CRYPTO_E_KEY_NOT_VALID: La operación fracasó porque el estado de la clave referenciada mediantecryptoKeyIdestá marcado como no válido [SWS_Crypto_91007].E_NOT_OK: La solicitud de generación de clave ha fallado por otros motivos [SWS_Crypto_91007].
Esta nota de uso ha sido generada de forma automatizada sobre la base de la especificación de AUTOSAR Classic R20-11.
función Crypto_KeyDerive [SWS_Crypto_91008] 📄 PDF
Std_ReturnType Crypto_KeyDerive (uint32 cryptoKeyId, uint32 targetCryptoKeyId);
Derives a new key by using the key elements in the given key identified by the crypto Key Id. The given key contains the key elements for the password, salt. The derived key is stored in the key element with the id 1 of the key identified by target Crypto Key Id. The number of iterations is given in the key element CRYPTO_ KE_ KEYDERIVATION_ ITERATIONS.
La función síncrona Crypto_KeyDerive deriva una nueva clave criptográfica a partir de los elementos de clave de una clave de origen (cryptoKeyId) y la almacena en el elemento de clave con el ID 1 de la clave de destino (targetCryptoKeyId) [SWS_Crypto_91008]. La clave de origen debe contener los elementos de clave necesarios para la contraseña y el salt; el número de iteraciones se especifica a través del elemento de clave CRYPTO_KE_KEYDERIVATION_ITERATIONS [SWS_Crypto_91008].
Llamada y concurrencia
La interfaz es reentrante, pero no debe llamarse simultáneamente para el mismo cryptoKeyId [SWS_Crypto_91008]. Por lo tanto, los emisores de llamadas deben asegurarse de que los procesos de derivación paralelos operen sobre claves de origen diferentes.
Valores de retorno y tratamiento de errores
La función señala el resultado mediante valores de retorno definidos del tipo Std_ReturnType [SWS_Crypto_91008]:
E_OK: Derivación de clave realizada con éxito.E_NOT_OK: Derivación fallida. Si el parámetrotargetCryptoKeyIdse encuentra fuera del rango válido, la función notifica ademásCRYPTO_E_PARAM_HANDLEal DET si la detección de desarrollo está activada [SWS_Crypto_00180].CRYPTO_E_BUSY: el Crypto Driver Object responsable está ocupado [SWS_Crypto_91008].CRYPTO_E_KEY_EMPTY: Un elemento de clave de origen requerido no está inicializado [SWS_Crypto_91008].CRYPTO_E_KEY_NOT_VALID: El estado de la clave referenciada porcryptoKeyIdes inválido [SWS_Crypto_91008].
Esta nota de uso se generó de forma automatizada sobre la base de la especificación.
Guía del implementador pendiente (complejidad I1)
función Crypto_KeyExchangeCalcPubVal [SWS_Crypto_91009] 📄 PDF
Std_ReturnType Crypto_KeyExchangeCalcPubVal (uint32 cryptoKeyId, uint8* publicValuePtr, uint32* publicValueLengthPtr);
Calculates the public value for the key exchange a nd stores the public key in the memory location pointed by the public value pointer.
usar
La función síncrona Crypto_KeyExchangeCalcPubVal calcula el valor público para un protocolo de intercambio de claves y lo almacena en la ubicación de memoria de publicValuePtr ([SWS_Crypto_91009]). La entidad que realiza la llamada transfiere mediante cryptoKeyId el identificador de la clave que se utilizará para el protocolo. A través del parámetro de entrada y salida publicValueLengthPtr debe transferirse en la llamada el tamaño de búfer de la memoria proporcionada; una vez concluida la ejecución, allí se deposita la longitud real del valor público calculado ([SWS_Crypto_91009]).
Tratamiento de errores y valores de retorno
La función devuelve E_OK en caso de ejecución exitosa. Si se produce un error, se devuelve E_NOT_OK o un código de error específico ([SWS_Crypto_91009]):
CRYPTO_E_BUSY: La solicitud falla porque el Crypto Driver Object está ocupado.CRYPTO_E_KEY_EMPTY: La solicitud falla porque el elemento de clave de origen no está inicializado.CRYPTO_E_KEY_NOT_VALID: La solicitud falla porque el estado de la clave referenciada mediantecryptoKeyIdes inválido.
Concurrencia e integración en el sistema
Conforme a [SWS_Crypto_91009], la función es reentrante, pero no para el mismo cryptoKeyId. Si el controlador criptográfico requiere servicios de un generador de números aleatorios (RNG) para fines internos como Crypto_KeyExchangeCalcPubVal, el primer Crypto Driver Object (número de objeto 0) debe estar configurado para este fin ([SWS_Crypto_00224]).
Este texto fue generado por una IA. Todos los datos se basan en la especificación AUTOSAR Classic R20-11.
Guía del implementador pendiente (complejidad I1)
función Crypto_KeyExchangeCalcSecret [SWS_Crypto_91010] 📄 PDF
Std_ReturnType Crypto_KeyExchangeCalcSecret (uint32 cryptoKeyId, const uint8* partnerPublicValuePtr, uint32 partnerPublicValueLength);
Calculates the shared secret key for the key exchange with the key material of the key identified by the crypto Key Id and the partner public key. The shared secret key is stored as a key element in the same key.
La función síncrona Crypto_KeyExchangeCalcSecret sirve para el cálculo de un secreto compartido (Shared Secret Key) para un protocolo de intercambio de claves [SWS_Crypto_91010]. Procesa el material de clave de la clave especificada mediante cryptoKeyId junto con el valor público del interlocutor transmitido a través de partnerPublicValuePtr, cuyo número de bytes se indica mediante partnerPublicValueLength [SWS_Crypto_91010]. El secreto compartido calculado se almacena directamente como elemento de clave dentro de la misma clave [SWS_Crypto_91010].
Como valor de retorno, la función proporciona el estado a través de Std_ReturnType [SWS_Crypto_91010]:
E_OK: El cálculo y el almacenamiento del secreto se completaron con éxito [SWS_Crypto_91010].E_NOT_OK: la solicitud ha fallado [SWS_Crypto_91010].CRYPTO_E_BUSY: La ejecución fracasó porque el Crypto Driver Object competente está ocupado [SWS_Crypto_91010].CRYPTO_E_KEY_EMPTY: el elemento de clave de origen no está inicializado [SWS_Crypto_91010].CRYPTO_E_KEY_NOT_VALID: El estado de la clave referenciada porcryptoKeyIdes inválido [SWS_Crypto_91010].
La interfaz está implementada como reentrante, pero no debe llamarse de forma concurrente para el mismo cryptoKeyId [SWS_Crypto_91010]. Por lo tanto, los emisores de llamadas deben asegurarse de evitar llamadas simultáneas con un ID de clave idéntico y de que el material de clave referenciado esté previamente inicializado y en un estado válido para prevenir estados de error [SWS_Crypto_91010].
Esta nota de uso se ha generado automáticamente sobre la base de la especificación de SWS_Crypto_91010.
función Crypto_MainFunction [SWS_Crypto_91012] 📄 PDF
void Crypto_MainFunction (void);
If asynchronous job processing is configured and there are job queues, the function is called cyclically to process queued jobs. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_CryptoDriver
La función Crypto_MainFunction sirve para el procesamiento cíclico de órdenes criptográficas encoladas en las colas de trabajos del controlador criptográfico [SWS_Crypto_91012]. Un requisito previo para su uso es que en el módulo se haya configurado el procesamiento asíncrono de órdenes y existan las correspondientes colas de órdenes [SWS_Crypto_91012].
Invocación y semántica
La función posee la firma void Crypto_MainFunction(void) y está especificada con el Service-ID 0x0c [SWS_Crypto_91012]. No recibe ningún parámetro de entrada ni devuelve ningún valor de retorno. La interfaz se proporciona a través de la cabecera SchM_Crypto.h [SWS_Crypto_91012]. Esto da pie a la interpretación de que la llamada cíclica se inicia según lo previsto por el planificador de BSW (Schedule Manager) en el contexto de una tarea periódica del sistema operativo.
Concurrencia y restricciones
La llamada está estrictamente vinculada a la configuración de colas de trabajos asíncronas [SWS_Crypto_91012]. Puesto que la especificación no indica reentrancia para Crypto_MainFunction, es de suponer que la función debe tratarse como no reentrante; por lo tanto, deben evitarse las llamadas paralelas desde múltiples hilos o tareas. Pregunta Q-038d384305c8c5c3 (abierta)
Manejo de errores
En la especificación no se han definido códigos de error específicos ni entradas de DET para esta función [SWS_Crypto_91012]. Dado que la función no proporciona valores de retorno, los posibles errores durante el procesamiento asíncrono presumiblemente se transmiten a las capas superiores a través de consultas de estado o de los canales de respuesta de los trabajos respectivos. Pregunta (abierta)
Esta nota de uso fue generada por una IA a partir de la especificación AUTOSAR CP R20-11.
tipo Crypto_ConfigType [SWS_Crypto_91016] 📄 PDF
Configuration data structure of Cry If module
Request a governed re-review of this record. The record is not changed immediately.
- Record
AUTOSAR/AP/record/CP_MOD_Crypto- Status
- unspecified
- Version
AUTOSAR/AP/record/CP_MOD_Crypto@rel:R20-11#b19a11dd- Content hash
b19a11dd- Source
- https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_CryptoDriver.pdf#nameddest=SWS_Crypto_91000
gemini-3.8-flash-low· 2026-10-13 · Original en alemán