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
функция Crypto_Init [SWS_Crypto_91000] 📄 PDF
void Crypto_Init (const Crypto_ConfigType* configPtr);
Initializes the Crypto Driver.
Функция Crypto_Init служит для инициализации Crypto Driver согласно [SWS_Crypto_91000]. Интерфейс объявлен в заголовочном файле Crypto.h и имеет идентификатор службы 0x00 [SWS_Crypto_91000].
Для вызова и параметров интерфейса специфицированы следующие свойства:
- Указатель конфигурации: Через входной параметр
configPtrтипаconst Crypto_ConfigType*передается указатель на выбранную структуру конфигурации [SWS_Crypto_91000]. - Возвращаемое значение: Функция не имеет возвращаемого значения (
void); не существует ни входно-выходных параметров, ни отдельных выходных параметров [SWS_Crypto_91000]. - Поведение при выполнении: Подпрограмма инициализации выполняется синхронно (
Synchronous) [SWS_Crypto_91000]. - Реентерабельность: Функция определена как нереентерабельная (
Non Reentrant) [SWS_Crypto_91000]. Параллельные или перекрывающиеся вызовы недопустимы.
Из-за классификации как нереентерабельной и поскольку спецификация не возвращает конкретных кодов ошибок, вызов, вероятно, обычно выполняется централизованно на этапе запуска электронного блока управления перед всеми другими обращениями к драйверу (интерпретация). Вопрос Q-008bb5a45b823891 (открытый) Вызывающая сторона также, вероятно, отвечает за то, чтобы адресуемая структура конфигурации оставалась постоянно валидной в памяти (интерпретация). Вопрос Q-6271a86fad440121 (открытый)
Это указание по использованию было сгенерировано ИИ на основе спецификации AUTOSAR CP R20-11.
Руководство разработчика реализации в подготовке (сложность I1)
функция Crypto_GetVersionInfo [SWS_Crypto_91001] 📄 PDF
void Crypto_GetVersionInfo (Std_VersionInfoType* versioninfo);
Returns the version information of this module.
функция Crypto_ProcessJob [SWS_Crypto_91003] 📄 PDF
Std_ReturnType Crypto_ProcessJob (uint32 objectId, Crypto_JobType* job);
Service Crypto_ProcessJob.
Функция Crypto_ProcessJob выполняет криптографический примитив, настроенный в параметре job, на Crypto Driver Object, на который ссылается objectId [SWS_Crypto_91003]. Вызов является реентерабельным и работает синхронно или асинхронно в зависимости от конфигурации задания [SWS_Crypto_91003]. Через указатель на Crypto_JobType передаются как данные конфигурации для примитива, так и буферы для результирующих данных [SWS_Crypto_91003].
Перед фактическим выполнением задания драйвер проверяет идентификаторы ключей на валидность: если job->cryptoKeyId или, при необходимости, job->targetCryptoKeyId находятся вне допустимого диапазона, функция сообщает об ошибке CRYPTO_E_PARAM_HANDLE в DET и возвращает E_NOT_OK [SWS_Crypto_00217]. Это также применимо к службе CRYPTO_KEYDERIVE (job->jobPrimitiveInfo->primitiveInfo->service), если job->targetCryptoKeyId недействителен [SWS_Crypto_00202].
Помимо E_OK и E_NOT_OK, конкретные коды ошибок сигнализируют о сбое запроса [SWS_Crypto_91003]:
CRYPTO_E_BUSY, если объект драйвера занят или его очередь заполнена [SWS_Crypto_91003],- связанные с ключами ошибки, такие как
CRYPTO_E_KEY_NOT_VALID,CRYPTO_E_KEY_SIZE_MISMATCH,CRYPTO_E_KEY_READ_FAIL,CRYPTO_E_KEY_WRITE_FAIL,CRYPTO_E_KEY_NOT_AVAILABLEилиCRYPTO_E_KEY_EMPTY[SWS_Crypto_91003], CRYPTO_E_JOB_CANCELEDпри отмене синхронного задания [SWS_Crypto_91003], а такжеCRYPTO_E_ENTROPY_EXHAUSTEDпри недостаточной энтропии генератора случайных чисел; при этом функция дополнительно сообщает об ошибке времени выполненияCRYPTO_E_RE_ENTROPY_EXHAUSTED[SWS_Crypto_00141], [SWS_Crypto_91003].
Этот текст был создан ИИ на основе данных спецификации AUTOSAR R20-11.
Руководство разработчика реализации в подготовке (сложность I1)
функция 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.
Использование
Синхронная функция Crypto_CancelJob удаляет переданное задание из очереди и по возможности прерывает его обработку [SWS_Crypto_00122]. При вызове передаются идентификатор Crypto Driver Object (objectId), а также указатель на конфигурацию задания (job) [SWS_Crypto_00122].
Возвращаемые значения сигнализируют о результате попытки отмены:
E_OK: Запрос выполнен успешно, и задание удалено [SWS_Crypto_00122]. Если в драйвере нет ошибок и задание в данный момент не обрабатывается, служба также возвращаетE_OKбез дальнейших действий [SWS_Crypto_00214].E_NOT_OK: запрос завершился неудачно, так как задание не удалось удалить [SWS_Crypto_00122].CRYPTO_E_JOB_CANCELED: Задание отменено, однако продолжает выполняться; результаты приложению не возвращаются [SWS_Crypto_00122]. Это применимо, если драйвер работает безошибочно, но не может отменить задание (например, из-за аппаратных ограничений) [SWS_Crypto_00183].
Параллелизм и ограничения
Интерфейс реентерабелен для различных экземпляров, но не должен вызываться одновременно для одного и того же Crypto Driver Object [SWS_Crypto_00122].
Данное указание по использованию было создано автоматически и основано исключительно на данных спецификации AUTOSAR R20-11.
Руководство разработчика реализации в подготовке (сложность I1)
функция 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.
Синхронная функция Crypto_KeyElementSet служит для установки необработанных данных определенного ключевого элемента для ключа, идентифицированного через cryptoKeyId, в криптодрайвере [SWS_Crypto_91004].
Параметры и возвращаемые значения
Через keyElementId адресуется целевой ключевой элемент, тогда как keyPtr указывает на буфер данных, а keyLength — на его размер в байтах [SWS_Crypto_91004]. При успешном присвоении интерфейс возвращает E_OK [SWS_Crypto_91004].
Обработка ошибок
При возникновении ошибки во время обработки функция возвращает определенные возвращаемые значения [SWS_Crypto_91004]:
CRYPTO_E_BUSY: Соответствующий объект криптодрайвера занят.CRYPTO_E_KEY_WRITE_FAIL: доступ на запись к элементу ключа отклонен.CRYPTO_E_KEY_NOT_AVAILABLE: Запрошенный ключевой элемент или ключ недоступен.CRYPTO_E_KEY_SIZE_MISMATCH: Переданная длина данных не совпадает с размером ключевого элемента.E_NOT_OK: Запрос завершился неудачей по иным причинам.
Параллелизм
Функция специфицирована как нереентерабельная (Non Reentrant) [SWS_Crypto_91004]. Интерпретация: вызывающие стороны, вероятно, должны синхронизировать параллельные вызовы между собой, чтобы предотвратить несогласованность данных в драйвере. Вопрос Q-d7ef7a774052a212 (открытый)
Данное указание по использованию было создано автоматически на основе спецификации SWS_Crypto_91004 (R20-11).
Руководство разработчика реализации в подготовке (сложность I1)
функция 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.
Синхронная функция Crypto_KeySetValid служит для того, чтобы установить состояние ключа, специфицированного через идентификатор cryptoKeyId, в значение «действителен» ([SWS_Crypto_91014]). Интерфейс доступен через заголовочный файл Crypto.h и имеет Service-ID 0x05 ([SWS_Crypto_91014]).
При использовании определены следующие параметры и возвращаемые значения ([SWS_Crypto_91014]):
- Входной параметр: через
cryptoKeyId(типuint32) передается идентификатор ключа, состояние которого должно быть установлено в значение «действителен» ([SWS_Crypto_91014]). Дополнительные входные или выходные параметры отсутствуют ([SWS_Crypto_91014]). - Возвращаемое значение: код состояния типа
Std_ReturnTypeинформирует о результате запроса ([SWS_Crypto_91014]):E_OK: запрос был успешен ([SWS_Crypto_91014]).E_NOT_OK: запрос завершился сбоем ([SWS_Crypto_91014]).CRYPTO_E_BUSY: выполнение не удалось, так как ответственный Crypto-Driver-объект занят ([SWS_Crypto_91014]).
Что касается параллельности, функция специфицирована как неревходабельная («Non Reentrant») ([SWS_Crypto_91014]). Интерпретация: вызывающим сторонам, вероятно, придется координировать параллельные вызовы между задачами извне во избежание конфликтов, а при получении CRYPTO_E_BUSY предусмотреть повторение вызова в более поздний момент времени. Вопрос Q-32d775a9e61e5731 (открытый)
Этот текст был создан ИИ и основан на версии спецификации AUTOSAR R20-11.
Руководство разработчика реализации в подготовке (сложность I1)
функция 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.
Использование и семантика
Синхронная функция Crypto_KeySetInvalid устанавливает статус ключа, идентифицированного через cryptoKeyId, в недействительный [SWS_Crypto_91020]. Функция определена в заголовочном файле Crypto.h и вызывается через Service-ID 0x15 [SWS_Crypto_91020]. Единственным передаваемым параметром служит входное значение cryptoKeyId (тип uint32), содержащее однозначный идентификатор целевого ключа; входные/выходные, а также выходные параметры отсутствуют [SWS_Crypto_91020].
Обработка ошибок и возвращаемые значения
Результат выполнения функции сигнализируется через возвращаемое значение типа Std_ReturnType [SWS_Crypto_91020]:
E_OK: запрос был успешным, и статус ключа был установлен в недействительный [SWS_Crypto_91020].E_NOT_OK: выполнение запроса завершилось неудачей [SWS_Crypto_91020].CRYPTO_E_BUSY: запрос завершился неудачей, так как ответственный объект криптографического драйвера (Crypto Driver Object) в настоящее время занят [SWS_Crypto_91020].
Параллелизм и ограничения
Интерфейс специфицирован как неревходабельный (Non Reentrant) [SWS_Crypto_91020]. Параллельный или прерывающий вызов поэтому недопустим. Так как функция выполняется синхронно, она возвращает управление вызывающей стороне только после завершения изменения статуса либо после обнаружения ошибки [SWS_Crypto_91020].
Это указание по использованию было сгенерировано автоматически на основе спецификации.
Руководство разработчика реализации в подготовке (сложность I1)
функция 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
Синхронная и реентерабельная функция Crypto_KeyElementGet служит для считывания ключевого элемента, идентифицированного через keyElementId, из ключа cryptoKeyId и его сохранения в области памяти resultPtr [SWS_Crypto_91006]. Интерфейс предоставляется через заголовочный файл Crypto.h и имеет идентификатор службы 0x06 [SWS_Crypto_91006]. При вызове вызывающая сторона передает через входно-выходной параметр resultLengthPtr размер буфера или, при настроенном частичном доступе, желаемый размер чтения; после завершения выполнения драйвер сохраняет там фактически скопированный объем данных [SWS_Crypto_91006].
В случае успеха функция возвращает E_OK [SWS_Crypto_91006]. В случае сбоя операции она сигнализирует об этом через определенные коды ошибок: CRYPTO_E_BUSY при занятом объекте криптодрайвера, CRYPTO_E_KEY_NOT_AVAILABLE если ключевой элемент недоступен, CRYPTO_E_KEY_READ_FAIL при отказе в доступе на чтение, CRYPTO_E_KEY_EMPTY при неинициализированном исходном элементе, а также в общем виде E_NOT_OK [SWS_Crypto_91006].
Хотя интерфейс специфицирован как реентерабельный, в спецификации отмечается, что при прямом отображении ключевого элемента во флэш-память могут возникать ощутимые задержки во время синхронного выполнения [SWS_Crypto_91006]. Интерпретация: из-за этих потенциальных задержек вызов, вероятно, целесообразен преимущественно в контексте задач, а не внутри критичных ко времени подпрограмм обработки прерываний. Вопрос Q-ff4e2843b9aad46d (открытый)
Данное указание по использованию было сгенерировано автоматически и основано на состоянии спецификации AUTOSAR Classic R20-11.
Руководство разработчика реализации в подготовке (сложность I1)
функция 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.
Синхронная функция Crypto_KeyGetStatus служит для запроса текущего состояния определенного ключа внутри криптодрайвера [SWS_Crypto_91019]. Она предоставляется через заголовочный файл Crypto.h и имеет идентификатор службы 0x14 [SWS_Crypto_91019].
Использование и параметры
Вызов выполняется синхронно и ожидает два параметра [SWS_Crypto_91019]:
cryptoKeyId: Идентификатор ключа, статус которого необходимо определить.keyStatusPtr: Указатель на область памяти типаCrypto_KeyStatusType, в которую возвращается состояние.
В качестве возвращаемого значения интерфейс возвращает Std_ReturnType. При успешном выполнении сообщается E_OK, тогда как в случае ошибки возвращается E_NOT_OK [SWS_Crypto_91019].
Параллелизм и ограничения
Функция объявлена как нереентерабельная (Non Reentrant) [SWS_Crypto_91019]. Поэтому вызывающие стороны должны гарантировать, что параллельные вызовы предотвращаются с помощью вышестоящих механизмов синхронизации. Конкретные сообщения об ошибках DET не приведены; предположительно, некорректный вызов, такой как недействительный указатель или недействительный ID, напрямую приводит к возврату E_NOT_OK [SWS_Crypto_91019]. Вопрос Q-5703fab02905e91a (открытый)
Этот текст был создан ИИ и основан на спецификации AUTOSAR R20-11.
Руководство разработчика реализации в подготовке (сложность I1)
функция Crypto_KeyElementCopy [SWS_Crypto_00148] 📄 PDF
Std_ReturnType Crypto_KeyElementCopy (uint32 cryptoKeyId, uint32 keyElementId, uint32 targetCryptoKeyId, uint32 targetKeyElementId);
Service Crypto_KeyElementCopy.
Синхронная функция Crypto_KeyElementCopy служит для копирования ключевого элемента в другой ключевой элемент внутри того же криптодрайвера [SWS_Crypto_00148]. Передаются идентификаторы исходного ключа (cryptoKeyId) и исходного ключевого элемента (keyElementId), а также целевого ключа (targetCryptoKeyId) и целевого ключевого элемента (targetKeyElementId) [SWS_Crypto_00148].
Что касается временных характеристик, следует учитывать, что для ключевых элементов, отображенных непосредственно во флэш-памяти, из-за синхронного выполнения могут возникать значительные задержки при вызове функции [SWS_Crypto_00148]. Поэтому поведение во время выполнения необходимо учитывать особенно в критичных ко времени контекстах.
Функция разработана как реентерабельная, однако явно не для одной и той же cryptoKeyId [SWS_Crypto_00148]. Следовательно, одновременные вызовы с идентичным исходным ключом должны синхронизироваться или исключаться вызывающей стороной.
В случае успеха функция возвращает E_OK [SWS_Crypto_00148]. При ошибках возвращаемое значение указывает на конкретную причину [SWS_Crypto_00148]:
CRYPTO_E_BUSY: Объект криптодрайвера занят [SWS_Crypto_00148].CRYPTO_E_KEY_NOT_AVAILABLE: Запрошенный ключевой элемент по меньшей мере одного ключа недоступен [SWS_Crypto_00148].CRYPTO_E_KEY_READ_FAILилиCRYPTO_E_KEY_WRITE_FAIL: Чтение исходного или запись целевого элемента не разрешены [SWS_Crypto_00148].CRYPTO_E_KEY_SIZE_MISMATCH: Размеры ключевых элементов несовместимы друг с другом [SWS_Crypto_00148].CRYPTO_E_KEY_EMPTY: исходный ключевой элемент не инициализирован [SWS_Crypto_00148].E_NOT_OK: общий сбой запроса [SWS_Crypto_00148].
Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR Classic R20-11.
Руководство разработчика реализации в подготовке (сложность I1)
функция 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.
Синхронная функция Crypto_KeyElementCopyPartial служит для частичного копирования данных из исходного элемента ключа в целевой элемент ключа внутри того же криптографического драйвера [SWS_Crypto_91015]. Через параметры keyElementSourceOffset и keyElementCopyLength определяется копируемый фрагмент исходного элемента (cryptoKeyId, keyElementId), в то время как keyElementTargetOffset задает начальную позицию в целевом элементе (targetCryptoKeyId, targetKeyElementId). При безошибочной проверке драйвер выполняет операцию копирования синхронно и возвращает E_OK [SWS_Crypto_00209].
Перед выполнением драйвер валидирует состояния буфера и драйвера:
- Если криптографический драйвер не инициализирован и контроль разработки включен, функция сообщает
CRYPTO_E_UNINITв DET и возвращаетE_NOT_OK[SWS_Crypto_00205]. - Если общая длина исходного элемента ключа меньше
keyElementSourceOffset + keyElementCopyLength, вызов завершается неудачей сCRYPTO_E_KEY_SIZE_MISMATCH[SWS_Crypto_00207]. - Если максимальный буфер целевого элемента ключа предоставляет меньше места, чем
keyElementTargetOffset + keyElementCopyLength, также возвращаетсяCRYPTO_E_KEY_SIZE_MISMATCH[SWS_Crypto_00208]. - Другими специфицированными значениями ошибок являются, среди прочего,
CRYPTO_E_BUSY(объект драйвера занят),CRYPTO_E_KEY_EMPTY(неинициализированный исходный элемент),CRYPTO_E_KEY_NOT_AVAILABLE, а также ошибки доступа на чтение или запись (CRYPTO_E_KEY_READ_FAIL,CRYPTO_E_KEY_WRITE_FAIL) [SWS_Crypto_91015].
Функция является ревходабельной, однако не должна вызываться одновременно для одного и того же ID ключа cryptoKeyId [SWS_Crypto_91015]. Если элемент ключа расположен непосредственно во флеш-памяти, синхронное выполнение может приводить к ощутимым задержкам по времени [SWS_Crypto_91015].
Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR R20-11.
Руководство разработчика реализации в подготовке (сложность I2)
функция 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)
Использование
Синхронная функция Crypto_KeyCopy копирует ключ вместе со всеми его элементами ключа в целевой ключ внутри того же криптографического драйвера [SWS_Crypto_00155]. Сопоставление выполняется через входные параметры cryptoKeyId для исходного ключа и targetCryptoKeyId для целевого ключа [SWS_Crypto_00155]. Успешная операция копирования подтверждается значением E_OK [SWS_Crypto_00155].
Параллельность и поведение во время выполнения
Интерфейс спроектирован как ревходабельный, однако не должен выполняться одновременно для одного и того же cryptoKeyId [SWS_Crypto_00155]. Поскольку выполнение происходит синхронно, для элементов ключа, расположенных непосредственно во флеш-памяти, во время вызова могут возникать заметные задержки по времени [SWS_Crypto_00155].
Обработка ошибок
В случае ошибки функция возвращает специфические возвращаемые значения типа Std_ReturnType [SWS_Crypto_00155]:
CRYPTO_E_BUSY: соответствующий Crypto Driver Object занят [SWS_Crypto_00155].CRYPTO_E_KEY_NOT_AVAILABLE: по меньшей мере один из запрошенных ключей недоступен [SWS_Crypto_00155].CRYPTO_E_KEY_READ_FAIL: считывание исходного элемента ключа запрещено [SWS_Crypto_00155].CRYPTO_E_KEY_WRITE_FAIL: запись в целевой элемент ключа запрещена [SWS_Crypto_00155].CRYPTO_E_KEY_SIZE_MISMATCH: размеры элементов ключей несовместимы друг с другом [SWS_Crypto_00155].CRYPTO_E_KEY_EMPTY: элемент ключа исходного ключа не инициализирован [SWS_Crypto_00155].E_NOT_OK: выполнение запроса завершилось неудачей [SWS_Crypto_00155].
Это указание по использованию было сгенерировано ИИ на основе спецификации AUTOSAR CP R20-11.
функция 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.
Синхронная функция Crypto_KeyElementIdsGet служит для запроса информации о том, какие ключевые элементы доступны в данном ключе [SWS_Crypto_00160]. Через входной параметр cryptoKeyId передается идентификатор ключа, доступные ID элементов которого должны быть экспортированы [SWS_Crypto_00160]. Определенные идентификаторы сохраняются в массиве, на который ссылается указатель keyElementIdsPtr [SWS_Crypto_00160].
Управление размером буфера осуществляется через входно-выходной параметр keyElementIdsLengthPtr: при вызове этот параметр должен содержать предоставленный размер буфера keyElementIdsPtr [SWS_Crypto_00160]. После завершения операции в нем сохраняется фактическое количество имеющихся ключевых элементов [SWS_Crypto_00160].
В качестве возвращаемого значения служба возвращает E_OK при успешном запросе или E_NOT_OK, если запрос завершился неудачей [SWS_Crypto_00160]. Если соответствующий объект криптодрайвера занят в момент вызова, возвращается код ошибки CRYPTO_E_BUSY [SWS_Crypto_00160].
С точки зрения параллелизма функция является реентерабельной, однако не должна вызываться одновременно для одной и той же cryptoKeyId [SWS_Crypto_00160]. Объявление доступно через заголовочный файл Crypto.h [SWS_Crypto_00160].
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR.
Руководство разработчика реализации в подготовке (сложность I1)
функция 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
Синхронная функция Crypto_RandomSeed (идентификатор службы 0x0d) служит согласно [SWS_Crypto_91013] для генерации, а также обновления внутреннего состояния seed ключа с использованием предоставленного источника энтропии. Объявление функции содержится в заголовочном файле Crypto.h.
Использование и параметры вызова
Помимо начальной генерации, функция согласно [SWS_Crypto_91013] также может использоваться для обновления состояния seed новой энтропией. При этом для синхронного вызова требуются три входных параметра:
cryptoKeyId: Передает идентификатор ключа, для которого должен быть сгенерирован новый seed.seedPtr: Содержит указатель на область памяти с данными для заполнения seed.seedLength: Определяет длину переданных данных seed в байтах.
Возвращаемые значения и обработка ошибок
В качестве возвращаемого значения Crypto_RandomSeed сообщает статус типа Std_ReturnType согласно [SWS_Crypto_91013]:
E_OK: запрос успешно выполнен.E_NOT_OK: запрос завершился сбоем.CRYPTO_E_KEY_NOT_VALID: Выполнение завершается неудачей, так как состояние ключа, идентифицированного черезcryptoKeyId, находится в статусе «invalid».
Параллелизм и ограничения
Согласно [SWS_Crypto_91013] функция специфицирована как реентерабельная, однако явно не для одной и той же cryptoKeyId. Поэтому параллельные вызовы для одного и того же ключа должны предотвращаться на стороне вызывающего объекта.
Этот текст был сгенерирован ИИ и основан исключительно на данных спецификации из полезной нагрузки.
Руководство разработчика реализации в подготовке (сложность I1)
функция 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.
Использование
Функция Crypto_KeyGenerate, предоставляемая через заголовочный файл Crypto.h, генерирует новый ключевой материал и обновляет ключ, адресуемый через идентификатор cryptoKeyId [SWS_Crypto_91007]. Функция работает полностью синхронно и определена под идентификатором службы 0x07 [SWS_Crypto_91007]. Другие параметры, помимо идентификатора ключа, отсутствуют [SWS_Crypto_91007].
Параллелизм и ограничения
Что касается параллелизма, Crypto_KeyGenerate специфицирована как реентерабельная, однако явно с ограничением, что это не относится к одной и той же cryptoKeyId [SWS_Crypto_91007]. Если отправляется несколько запросов для одного и того же ключа, они должны синхронизироваться на стороне вызывающего объекта во избежание конфликтов драйвера.
Возвращаемые значения и обработка ошибок
Через возвращаемое значение базового типа Std_ReturnType вызывающая сторона получает подробную обратную связь об успехе или конкретных причинах ошибок операции [SWS_Crypto_91007]:
E_OK: Генерация ключа выполнена успешно [SWS_Crypto_91007].CRYPTO_E_BUSY: Запрос завершился неудачей, так как соответствующий Crypto Driver Object в данный момент занят [SWS_Crypto_91007].CRYPTO_E_KEY_EMPTY: Генерация не удалась, поскольку требуемый исходный ключевой элемент не инициализирован [SWS_Crypto_91007].CRYPTO_E_KEY_NOT_VALID: Операция завершилась сбоем, так как состояние ключа, на который ссылаетсяcryptoKeyId, помечено как недействительное [SWS_Crypto_91007].E_NOT_OK: Запрос на генерацию ключа завершился неудачей по иным причинам [SWS_Crypto_91007].
Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR Classic R20-11.
функция 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.
Синхронная функция Crypto_KeyDerive формирует из ключевых элементов исходного ключа (cryptoKeyId) новый криптографический ключ и сохраняет его в ключевом элементе с ID 1 целевого ключа (targetCryptoKeyId) [SWS_Crypto_91008]. Исходный ключ должен содержать необходимые ключевые элементы для пароля и соли; количество итераций задается через ключевой элемент CRYPTO_KE_KEYDERIVATION_ITERATIONS [SWS_Crypto_91008].
Вызов и параллельность
Интерфейс является реентерабельным, однако не должен вызываться одновременно для одной и той же cryptoKeyId [SWS_Crypto_91008]. Поэтому вызывающие стороны должны обеспечивать, чтобы параллельные процессы формирования выполнялись на разных исходных ключах.
Возвращаемые значения и обработка ошибок
Функция сигнализирует о результате через определенные возвращаемые значения типа Std_ReturnType [SWS_Crypto_91008]:
E_OK: Формирование ключа выполнено успешно.E_NOT_OK: Формирование завершилось неудачей. Если параметрtargetCryptoKeyIdвыходит за пределы допустимого диапазона, функция при активном обнаружении ошибок разработки также сообщаетCRYPTO_E_PARAM_HANDLEв DET [SWS_Crypto_00180].CRYPTO_E_BUSY: ответственный Crypto Driver Object занят [SWS_Crypto_91008].CRYPTO_E_KEY_EMPTY: Необходимый исходный ключевой элемент не инициализирован [SWS_Crypto_91008].CRYPTO_E_KEY_NOT_VALID: Состояние ключа, на который ссылаетсяcryptoKeyId, недействительно [SWS_Crypto_91008].
Это указание по использованию было сгенерировано автоматически на основе спецификации.
Руководство разработчика реализации в подготовке (сложность I1)
функция 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.
Использование
Синхронная функция Crypto_KeyExchangeCalcPubVal вычисляет открытое значение для протокола обмена ключами и сохраняет его в области памяти publicValuePtr ([SWS_Crypto_91009]). Вызывающая сторона через cryptoKeyId передает идентификатор ключа, который должен использоваться для протокола. Через входно-выходной параметр publicValueLengthPtr при вызове должен передаваться размер буфера предоставленной памяти; после завершения выполнения там сохраняется фактическая длина вычисленного открытого значения ([SWS_Crypto_91009]).
Обработка ошибок и возвращаемые значения
Функция возвращает E_OK при успешном выполнении. При возникновении ошибки возвращается E_NOT_OK или определенный код ошибки ([SWS_Crypto_91009]):
CRYPTO_E_BUSY: Запрос завершается неудачей, так как Crypto Driver Object занят.CRYPTO_E_KEY_EMPTY: Запрос завершается неудачей, поскольку исходный ключевой элемент не инициализирован.CRYPTO_E_KEY_NOT_VALID: Запрос завершается неудачей, так как статус ключа, на который ссылаетсяcryptoKeyId, недействителен.
Параллелизм и системная интеграция
Согласно [SWS_Crypto_91009] функция является реентерабельной, однако не для одной и той же cryptoKeyId. Если криптодрайверу для внутренних целей, таких как Crypto_KeyExchangeCalcPubVal, требуются службы генератора случайных чисел (RNG), первый Crypto Driver Object (номер объекта 0) должен быть настроен для этой цели ([SWS_Crypto_00224]).
Этот текст был сгенерирован ИИ. Все данные основаны на спецификации AUTOSAR Classic R20-11.
Руководство разработчика реализации в подготовке (сложность I1)
функция 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.
Синхронная функция Crypto_KeyExchangeCalcSecret служит для вычисления общего секрета (Shared Secret Key) для протокола обмена ключами [SWS_Crypto_91010]. Она обрабатывает ключевой материал ключа, специфицированного через cryptoKeyId, вместе с переданным через partnerPublicValuePtr открытым значением партнера, количество байт которого указывается через partnerPublicValueLength [SWS_Crypto_91010]. Вычисленный общий секрет сохраняется непосредственно в качестве ключевого элемента внутри того же ключа [SWS_Crypto_91010].
В качестве возвращаемого значения функция передает статус через Std_ReturnType [SWS_Crypto_91010]:
E_OK: Вычисление и сохранение секрета успешно завершены [SWS_Crypto_91010].E_NOT_OK: запрос завершился сбоем [SWS_Crypto_91010].CRYPTO_E_BUSY: Выполнение не удалось, так как соответствующий Crypto Driver Object занят [SWS_Crypto_91010].CRYPTO_E_KEY_EMPTY: исходный элемент ключа не инициализирован [SWS_Crypto_91010].CRYPTO_E_KEY_NOT_VALID: Состояние ключа, на который ссылаетсяcryptoKeyId, недействительно [SWS_Crypto_91010].
Интерфейс реализован как реентерабельный, однако не должен вызываться параллельно для одной и той же cryptoKeyId [SWS_Crypto_91010]. Вызывающие стороны должны гарантировать, что одновременные вызовы с идентичным ID ключа исключены, а адресуемый ключевой материал предварительно инициализирован и находится в валидном состоянии во избежание ошибочных состояний [SWS_Crypto_91010].
Данное указание по использованию было сгенерировано автоматически на основе спецификации SWS_Crypto_91010.
функция 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
Функция Crypto_MainFunction служит для циклической обработки поставленных в очередь криптографических заданий в очередях заданий криптодрайвера [SWS_Crypto_91012]. Условием ее применения является то, что в модуле настроена асинхронная обработка заданий и присутствуют соответствующие очереди заданий [SWS_Crypto_91012].
Вызов и семантика
Функция имеет сигнатуру void Crypto_MainFunction(void) и специфицирована с идентификатором службы 0x0c [SWS_Crypto_91012]. Она не принимает входных параметров и не возвращает значения. Интерфейс предоставляется через заголовочный файл SchM_Crypto.h [SWS_Crypto_91012]. Это допускает интерпретацию, что циклический вызов штатно инициируется планировщиком BSW (Schedule Manager) в контексте периодической задачи операционной системы.
Параллелизм и ограничения
Вызов строго привязан к конфигурации асинхронных очередей заданий [SWS_Crypto_91012]. Поскольку в спецификации не указана реентерабельность для Crypto_MainFunction, функцию, вероятно, следует рассматривать как нереентерабельную; поэтому параллельных вызовов из нескольких потоков или задач следует избегать. Вопрос Q-038d384305c8c5c3 (открытый)
Обработка ошибок
В спецификации для этой функции не зафиксированы конкретные коды ошибок или записи DET [SWS_Crypto_91012]. Поскольку функция не предоставляет возвращаемых значений, возможные ошибки во время асинхронной обработки, предположительно, передаются на вышестоящие уровни через опросы статуса или каналы обратной связи соответствующих заданий. Вопрос (открытый)
Это указание по использованию было сгенерировано ИИ на основе спецификации AUTOSAR CP R20-11.
тип 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#d4e858bf- Content hash
d4e858bf- 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 · Немецкий оригинал