DEENESPTFRRUARHIKOZHNL

AUTOSAR Classic Crypto Services

Руководство по кластеруСОЗДАНО ИИ

Предоставляет стандартизированные сервисы криптографических вычислений и управления ключами через аппаратные и программные драйверы.
СОЗДАНО ИИ не проверено Модель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: b0f0d6315c89 Происхождение Открытые вопросы (1)
Причинный якорь: R20-11 Действует с R20-11 Заново синтезировано для этой версии спецификации.
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал

Предоставляет стандартизированные сервисы криптографических вычислений и управления ключами через аппаратные и программные драйверы.

Кластер объединяет модули CSM, CryIf и Crypto Driver для аппаратно-независимого предоставления криптографических сервисов и функций управления ключами в AUTOSAR Classic Platform EXP_UtilizationOfCryptoServices с. 8. Криптографические задания приоритизируются через CSM, маршрутизируются в CryIf по логическим каналам и синхронно или асинхронно выполняются в Crypto Driver [SWS_CryIf_91003]. Сохранение ключей в NVM из соображений согласованности осуществляется строго после успешной валидации с помощью KeySetValid SWS_CryptoDriver с. 37.

Кластер модулей «Crypto Services & Hardware Abstraction» включает в себя модули AUTOSAR Classic: Crypto Service Manager (csm), Crypto Interface (cryif) и Crypto Driver (crypto) EXP_UtilizationOfCryptoServices с. 8. Он предоставляет аппаратно-независимый уровень абстракции для криптографических операций (включая шифрование, подписи, вычисление MAC и генерацию случайных чисел), а также для безопасного управления ключами [SWS_Csm_00982], [SWS_Csm_00984], SWS_CryptoDriver с. 15.

Криптографические запросы инкапсулируются в виде Crypto_JobType, который определяет приоритеты, входные и выходные буферы, а также режимы работы (Start, Update, Finish для потоковой обработки или SingleCall) [SWS_Csm_01013], [SWS_Csm_01039]. CSM принимает задания, распределяет их по программным очередям и перенаправляет их через CryIf_ProcessJob() [SWS_Csm_00017], [SWS_CryIf_91003]. CryIf берет на себя маршрутизацию по каналам к драйверам и транслирует идентификаторы ключей CSM в модулеспецифичные идентификаторы ключей драйверов [SWS_CryIf_00133].

CryptoArchitecture cluster_app Application Layer / BSW Users cluster_csm Service Layer cluster_cryif ECU Abstraction Layer cluster_crypto Microcontroller Abstraction Layer (MCAL) SecOC SecOC / TLS / SW-C CSM Crypto Service Manager (csm) - Service-APIs (Csm_MacGenerate, ...) - Priorisierte Job-Queues - Csm_MainFunction SecOC->CSM Job / Service Request CSM->SecOC Application Callback CryIf Crypto Interface (cryif) - Channel Dispatching (CryIf_ProcessJob) - Key-ID Mapping (cryIfKeyId -> cryptoKeyId) - Callback Notification Dispatching CSM->CryIf CryIf_ProcessJob() / CryIf_Key*() CryIf->CSM Csm_CallbackNotification() CryptoDrv1 Crypto Driver (crypto) - HW - Crypto Driver Object 0 (напр., AES / HSM) - синхронизация NVM CryIf->CryptoDrv1 Crypto_ProcessJob() [Kanal 0] CryptoDrv2 Crypto Driver (crypto) - SW - Crypto Driver Object 1 (напр., программный RSA) CryIf->CryptoDrv2 Crypto_ProcessJob() [Kanal 1] CryptoDrv1->CryIf CryIf_CallbackNotification() CryptoDrv2->CryIf CryIf_CallbackNotification()

Контекстная диаграмма: многоуровневая архитектура и каскад интерфейсов криптографического стека AUTOSAR. Источники: SWS_CryptoDriver с. 15, SWS_CryptoServiceManager с. 29

Для синхронизации асинхронных криптографических заданий служит периодическая Csm_MainFunction(), которая опустошает очереди и инициирует ожидающие вычисления [SWS_Csm_00479]. После завершения асинхронного аппаратного вычисления Crypto Driver уведомляет CryIf через CryIf_CallbackNotification(), который передает сообщение в Csm_CallbackNotification() и в конечном счете вызывающему приложению [SWS_CryIf_91013], [SWS_Csm_00970].

Асинхронный процесс криптографического задания в кластере CryptoApplicationcsmcryifcryptoCsm_MacGenerate(jobId, mode, ...)Проверить задание / проверка очередиaltTreiberobjekt freiCryIf_ProcessJob(channelId, job)Key-ID Mapping (cryIfKeyId -> cryptoKeyId)Crypto_ProcessJob(objectId, job)E_OK (Auftrag angenommen)E_OKTreiberobjekt belegt / Queuing aktivJob in CSM-Queue einreihenE_OK (Asynchron gepuffert)Csm_MainFunction(): Dequeue JobCryIf_ProcessJob(channelId, job)Crypto_ProcessJob(objectId, job)E_OKUse Case: Hardware-/Treiber-Berechnung & AbschlussKrypto-Primitive berechnen (HW/ISR)CryIf_CallbackNotification(job, result)Csm_CallbackNotification(job, result)CallbackNotification(result)

Диаграмма последовательности: процесс выполнения асинхронного криптографического задания с постановкой в очередь и каскадом функций обратного вызова. Источники: [SWS_Csm_00970], [SWS_CryIf_91013], AUTOSAR_CP_SWS_CryptoServiceManager с. 146

Управление ключами осуществляется через стандартизированные интерфейсы, такие как Csm_KeyElementSet() и CryIf_KeyElementCopy(), при строгом соблюдении сконфигурированных прав доступа [SWS_Csm_00957], [SWS_CryIf_91015], [SWS_Crypto_00219]. Сохранение в NVM инициируется только при явной валидации через Crypto_KeySetValid(), благодаря чему предотвращается неполное сохранение ключей [SWS_Crypto_91014], SWS_CryptoDriver с. 37. Ошибки, такие как перегрузки или недопустимые состояния ключей, надежно перехватываются через CRYPTO_E_BUSY или CRYPTO_E_KEY_NOT_VALID [SWS_Csm_00018], [SWS_CryIf_91003].

1. Системная архитектура и роль модульного кластера

Кластер модулей «Crypto Services & Hardware Abstraction» образует функциональный фундамент для криптографических операций, программного и аппаратного управления ключами, а также защищенной внутрибортовой коммуникации в AUTOSAR Classic Platform EXP_UtilizationOfCryptoServices с. 8. Архитектура строго разделена в соответствии с многоуровневой моделью AUTOSAR на три стандартизированных модуля BSW: Crypto Service Manager (csm) на сервисном уровне, Crypto Interface (cryif) на уровне ECU Abstraction Layer и как минимум один Crypto Driver (crypto) на уровне Microcontroller Abstraction Layer (MCAL) SWS_CryptoDriver с. 15. Данная многоуровневая структура полностью абстрагирует приложения безопасности (например, SecOC, установление соединений TLS и аутентификацию диагностики UDS) от проприетарных криптографических сопроцессоров, таких как Hardware Security Modules (HSM) или Secure Hardware Extensions (SHE) SWS_SecureOnboardCommunication с. 78.

Crypto Service Manager (CSM) выступает в качестве основного поставщика сервисов для компонентов приложений (SW-C) и вышележащих модулей BSW. Он предоставляет стандартизированные программные интерфейсы для симметричных и асимметричных алгоритмов (например, AES, RSA), хеширования, кодов аутентификации сообщений (MAC), генерации случайных чисел (RNG) и методов AEAD [SWS_Csm_00980], [SWS_Csm_00982], [SWS_Csm_00984], [SWS_Csm_01023]. Кроме того, CSM реализует программные очереди заданий и управляет приоритизацией параллельных криптографических заданий [SWS_Csm_00022], SWS_CryptoServiceManager с. 29.

Crypto Interface (CryIf) в качестве уровня абстракции предоставляет унифицированный интерфейс 1:n между CSM и любым количеством криптографических драйверов. Его центральной задачей является диспетчеризация: он перенаправляет задания на основе сконфигурированных логических каналов (channelId) в соответствующий экземпляр Crypto Driver и преобразует логические ссылки на ключи (cryIfKeyId) в драйвероспецифичные идентификаторы (cryptoKeyId) [SWS_CryIf_00133], [SWS_CryIf_91003]. Crypto Driver инкапсулирует физический модуль выполнения (Crypto Driver Object) и обслуживает либо чистые программные криптографические примитивы, либо специальные аппаратные модули безопасности [SWS_Crypto_00224], SWS_CryptoDriver с. 15.

CryptoArchitecture cluster_app Application Layer / BSW Users cluster_csm Service Layer cluster_cryif ECU Abstraction Layer cluster_crypto Microcontroller Abstraction Layer (MCAL) SecOC SecOC / TLS / SW-C CSM Crypto Service Manager (csm) - Service-APIs (Csm_MacGenerate, ...) - Priorisierte Job-Queues - Csm_MainFunction SecOC->CSM Job / Service Request CSM->SecOC Application Callback CryIf Crypto Interface (cryif) - Channel Dispatching (CryIf_ProcessJob) - Key-ID Mapping (cryIfKeyId -> cryptoKeyId) - Callback Notification Dispatching CSM->CryIf CryIf_ProcessJob() / CryIf_Key*() CryIf->CSM Csm_CallbackNotification() CryptoDrv1 Crypto Driver (crypto) - HW - Crypto Driver Object 0 (напр., AES / HSM) - синхронизация NVM CryIf->CryptoDrv1 Crypto_ProcessJob() [Kanal 0] CryptoDrv2 Crypto Driver (crypto) - SW - Crypto Driver Object 1 (напр., программный RSA) CryIf->CryptoDrv2 Crypto_ProcessJob() [Kanal 1] CryptoDrv1->CryIf CryIf_CallbackNotification() CryptoDrv2->CryIf CryIf_CallbackNotification()

Контекстная диаграмма: многоуровневая архитектура и каскад интерфейсов криптографического стека AUTOSAR. Источники: SWS_CryptoDriver с. 15, SWS_CryptoServiceManager с. 29

2. Взаимодействие и пути интеракции между модулями

Обработка заданий внутри кластера осуществляется преимущественно по модели на основе заданий с помощью структуры Crypto_JobType [SWS_Csm_01013], AUTOSAR_CP_SWS_CryptoServiceManager с. 21. Криптографическое задание объединяет ID задания, информацию о приоритете, ссылки на ключи, метаданные примитива и структуру Crypto_JobPrimitiveInputOutputType для управления указателями входных, выходных параметров и параметров длины [SWS_Csm_01012]. С помощью битовой маски Crypto_OperationModeType (с флагами START, UPDATE, FINISH) управляется, вычисляется ли задание как единый непрерывный вызов (SINGLECALL) или инкрементально в потоковом режиме [SWS_Csm_01039], [SWS_Csm_01029].

Если сервисная функция CSM вызывается синхронно, CSM проверяет статус задания. Если драйвер свободен или запрос сконфигурирован как синхронный, CSM напрямую вызывает CryIf_ProcessJob() [SWS_Csm_00017], [SWS_CryIf_91003]. Модуль CryIf сопоставляет идентификаторы ключей и диспетчеризует задание в назначенную инстанцию драйвера через Crypto_ProcessJob() [SWS_CryIf_00133]. При асинхронных запросах, если объект драйвера занят, задание помещается в очередь CSM [SWS_Csm_00018], AUTOSAR_CP_SWS_CryptoServiceManager с. 30. После завершения асинхронного вычисления драйвер запускает CryIf_CallbackNotification() [SWS_CryIf_91013], CryIf перенаправляет сообщение в Csm_CallbackNotification() [SWS_Csm_00970], и в конечном счете CSM уведомляет запрашивающее приложение через его сконфигурированный обратный вызов [SWS_Csm_01044], [SWS_Csm_00928].

Асинхронный процесс криптографического задания в кластере CryptoApplicationcsmcryifcryptoCsm_MacGenerate(jobId, mode, ...)Проверить задание / проверка очередиaltTreiberobjekt freiCryIf_ProcessJob(channelId, job)Key-ID Mapping (cryIfKeyId -> cryptoKeyId)Crypto_ProcessJob(objectId, job)E_OK (Auftrag angenommen)E_OKTreiberobjekt belegt / Queuing aktivJob in CSM-Queue einreihenE_OK (Asynchron gepuffert)Csm_MainFunction(): Dequeue JobCryIf_ProcessJob(channelId, job)Crypto_ProcessJob(objectId, job)E_OKUse Case: Hardware-/Treiber-Berechnung & AbschlussKrypto-Primitive berechnen (HW/ISR)CryIf_CallbackNotification(job, result)Csm_CallbackNotification(job, result)CallbackNotification(result)

Диаграмма последовательности: процесс выполнения асинхронного криптографического задания с постановкой в очередь и каскадом функций обратного вызова. Источники: [SWS_Csm_00970], [SWS_CryIf_91013], AUTOSAR_CP_SWS_CryptoServiceManager с. 146

Наряду с первичным криптографическим выполнением управление ключами образует неотъемлемый тракт взаимодействия кластера SWS_CryptoDriver с. 24. Ключ состоит из нескольких логических элементов ключа (таких как ключевой материал, векторы инициализации или значения итераций) [SWS_Csm_00954], [SWS_Csm_01022]. Такие операции, как установка ключевого материала через Csm_KeyElementSet(), копирование с помощью Csm_KeyElementCopy() или формирование производного ключа через Csm_KeyDerive(), синхронно передаются через CryIf (CryIf_KeyElementCopy(), CryIf_KeyDerive()) в функции драйвера [SWS_Csm_00957], [SWS_Csm_00969], [SWS_CryIf_91015], [SWS_CryIf_91009]. При этом доступ к элементам ключа строго контролируется на основе сконфигурированных прав доступа (CRYPTO_RA_ALLOWED, CRYPTO_RA_ENCRYPTED, CRYPTO_RA_INTERNAL_COPY) [SWS_Crypto_00219].

3. Синхронизация, реентерабельность и контексты задач

Криптографические операции существенно различаются по продолжительности выполнения. В то время как быстрые блочные шифры или вычисления хэшей могут выполняться синхронно в контексте задачи вызывающей стороны, асимметричные вычисления (например, генерация подписи RSA) или длительные аппаратные процессы требуют асинхронной обработки [SWS_Csm_00984], [SWS_Csm_00992]. Для развязки CSM предоставляет циклически вызываемую главную функцию Csm_MainFunction() [SWS_Csm_00479]. Она контролирует очереди, диспетчеризует ожидающие задания в CryIf и продвигает внутренние конечные автоматы асинхронных примитивов [SWS_Csm_00019].

В современных многоядерных и многосекторных архитектурах CSM поддерживает несколько инстанций Csm_MainFunction_<shortName>(), которые назначаются выделенным разделам OS [SWS_Csm_00479], AUTOSAR_SWS_CryptoServiceManager с. 170. При асинхронном выполнении драйвером вычисления завершаются либо путем опроса в MainFunction драйвера, либо с помощью подпрограмм обработки прерываний (ISR) аппаратных криптографических движков [SWS_Crypto_00027], [SWS_Crypto_00028]. Отдельный Crypto Driver Object по определению может одновременно обрабатывать ровно одно криптографическое задание; драйвер с n объектами обрабатывает n заданий истинно параллельно [SWS_Crypto_00014], [SWS_Crypto_00117].

Что касается реентерабельности, сервисные интерфейсы, такие как Csm_MacGenerate() или CryIf_ProcessJob(), спроектированы как реентерабельные для различных заданий, однако запрещают параллельную множественную выдачу запросов для одной и той же инстанции задания [SWS_Csm_00016], [SWS_CryIf_91003]. Функции управления ключами, такие как Csm_KeyElementCopy(), CryIf_KeyElementCopy() или Crypto_KeyCopy(), реализованы реентерабельными, однако не должны применяться параллельно к одному и тому же исходному идентификатору ключа (keyId или cryptoKeyId) во избежание несогласованности данных и состояний гонки [SWS_Csm_00969], [SWS_CryIf_91015], [SWS_Crypto_00155]. Аппаратным драйверам для модификации внутренних рабочих областей и регистров ключей, по-видимому, разрешено использовать внутренние исключительные зоны (Exclusive Areas), чтобы предотвращать состояния гонки между ISR и уровнем задач SWS_CryptoDriver с. 27. Вопрос Q-b1e9578255723a0e (открытый)

CsmDispatchLogic Start Eintritt Csm_<Service>() CheckActive Job aktiv? (jobState == ACTIVE) Start->CheckActive CheckSync Synchroner Modus? (CRYPTO_PROCESSING_SYNC) CheckActive->CheckSync Nein DirectCall Выполнить CryIf_ProcessJob() CheckActive->DirectCall Ja (Streaming Update/Finish) CheckSync->DirectCall Ja CheckQueueEmpty CSM-Queue leer? CheckSync->CheckQueueEmpty Nein (Asynchron) CheckPrio Приоритет выше наивысшего задания в очереди? CheckQueueEmpty->CheckPrio Nein ForwardCryIf Job sofort dispatchen: CryIf_ProcessJob() CheckQueueEmpty->ForwardCryIf Ja CheckQueueFull CSM-Queue voll? CheckPrio->CheckQueueFull Nein CheckPrio->ForwardCryIf Ja EnqueueJob Job in CSM-Queue einreihen Return E_OK CheckQueueFull->EnqueueJob Nein ReturnBusy Return CRYPTO_E_BUSY (Det: CSM_E_QUEUE_FULL) CheckQueueFull->ReturnBusy Ja

Диаграмма деятельности: логика принятия решений и развязка через очереди при приеме заданий в CSM. Источники: AUTOSAR_CP_SWS_CryptoServiceManager с. 30, [SWS_Csm_00017], [SWS_Csm_00018]

4. Типичные жизненные циклы и режимы работы

Инициализация криптографического кластера выполняется во время запуска BSW в иерархическом порядке. Сначала EcuM или BswM инициализирует уровень драйверов через Crypto_Init() с передачей конфигурации Crypto_ConfigType [SWS_Crypto_91016], после чего следует интерфейсный уровень через CryIf_Init() с CryIf_ConfigType [SWS_CryIf_91118]. Наконец, запускается CSM с помощью Csm_Init(), при этом его указатель конфигурации согласно спецификации всегда должен быть установлен в NULL_PTR [SWS_Csm_00646]. Только после полной инициализации всех уровней разрешается принимать криптографические задания или обращения к ключам [SWS_CryIf_00076], [SWS_Crypto_00196].

Центральным аспектом жизненного цикла ключа является валидация и сохранение в энергонезависимой памяти (NVM). После загрузки новых значений ключа через Csm_KeyElementSet() ключ остается в статусе «неполный или неизвестный» [SWS_Csm_00957]. Только явный вызов Csm_JobKeySetValid() или Crypto_KeySetValid() проверяет согласованность и переводит статус ключа в действительный [SWS_Csm_91027], [SWS_Crypto_91014]. Для сохраняемых ключей исключительно эта валидация инициирует сохранение в NVM [SWS_Crypto_91026], SWS_CryptoDriver с. 37. Это предотвращает многократные фрагментированные циклы записи в NVM и защищает от неполных наборов ключей SWS_CryptoDriver с. 37. Для синхронизации с NVRAM Manager модуль Crypto Driver использует обратные вызовы Crypto_<vi>_<ai>_NvBlock_ReadFrom_<NvBlock>() и Crypto_<vi>_<ai>_NvBlock_WriteTo_<NvBlock>(), а также NvM_WriteBlock() [SWS_Crypto_91024], [SWS_Crypto_91025], [SWS_Crypto_91017].

Текущие потоковые задания при необходимости могут быть приостановлены через Csm_SaveContextJob(), сохранены в собственном буфере приложения и возобновлены позже путем восстановления контекста [SWS_Csm_91063], [SWS_Csm_01029]. Перед отключением блока управления или переходом в режимы пониженного энергопотребления асинхронные задания могут быть контролируемо отменены через Csm_CancelJob(), в результате чего CryIf через CryIf_CancelJob() удаляет задания из очередей драйвера и аппаратных каналов [SWS_Csm_00968], [SWS_CryIf_91014].

5. Обработка ошибок, трассировка DET и деградация

Кластер реализует многоуровневую стратегию обнаружения ошибок и защиты от них. Ошибки разработки при включенной трассировке сообщаются напрямую в модуль Default Error Tracer (DET) [SWS_Csm_91101], [SWS_Crypto_91017]. К типичным событиям DET относятся вызовы модулей до завершения инициализации (CRYIF_E_UNINIT, CRYPTO_E_UNINIT), недействительные параметры дескрипторов или ключей (CRYIF_E_PARAM_HANDLE, CRYPTO_E_PARAM_HANDLE), а также передача нулевых указателей [SWS_CryIf_00076], [SWS_CryIf_00134], [SWS_Crypto_00196], [SWS_Crypto_00217].

Перегрузки во время выполнения и дефицит ресурсов детерминированно перехватываются с помощью определенных возвращаемых значений. Если очередь CSM для асинхронного задания исчерпана, CSM отклоняет задание с кодом статуса CRYPTO_E_BUSY и генерирует ошибку времени выполнения CSM_E_QUEUE_FULL [SWS_Csm_00018], [SWS_Csm_01089]. Если предоставленный буфер результатов имеет недостаточный размер, драйвер прерывает операцию с CRYPTO_E_SMALL_BUFFER [SWS_Crypto_00195]. Если криптографический сервис ссылается на неинициализированный или явно инвалидированный ключ (например, после вызова Csm_JobKeySetInvalid() или Crypto_KeySetInvalid()), сервисные запросы контролируемо завершаются с ошибкой с возвратом CRYPTO_E_KEY_NOT_VALID или CRYPTO_E_KEY_EMPTY [SWS_Csm_91002], [SWS_CryIf_91003], [SWS_Crypto_91020].

Механизмы деградации и аварийного переключения реализуются на системном уровне: приложения могут проверять статус целостности ключей перед отправкой задания через Csm_KeyGetStatus() [SWS_Csm_91047], [SWS_CryIf_91012]. Если аппаратный криптографический ускоритель постоянно занят или выходит из строя, конфигурация каналов CryIf допускает программный обходной маршрут при условии интеграции избыточного программного драйвера SWS_CryptoDriver с. 15.

Это руководство основано исключительно на спецификации AUTOSAR Classic R20-11 и сгенерировано ассистентом курации autodocs.

Die Crypto Services bieten hardware- und softwaregestützte Kryptographie-Primitive (CSM, CryIf, Crypto-Treiber) für symmetrische/asymmetrische Verschlüsselung, Signaturen und Hashing.

Module im Cluster

Crypto Abstraction Library (Cal)

AUTOSAR Classic Crypto Services-Modul Crypto Abstraction Library (Cal, Spezifikation: AUTOSAR_SWS_CryptoAbstractionLibrary.pdf).

BSW ID 206 Keine C-API · 0 Records #include "Cal.h"

Crypto Interface (CryIf)

Abstracts cryptographic hardware and software acceleration engines.

BSW ID 112 19 APIs (18 Funktionen, 1 Typen) #include "CryIf.h"

Crypto Driver (Crypto)

Low-level driver executing cryptographic primitives on hardware security modules (HSM) or software libraries.

BSW ID 114 20 APIs (19 Funktionen, 1 Typen) #include "Crypto.h"

Crypto Service Manager (CSM)

Provides standardized cryptographic services (encryption, hashing, digital signatures, key management) to applications and BSW.

BSW ID 110 82 APIs (38 Funktionen, 44 Typen) #include "Csm.h"

Карта тем

CSM

82
<Csm_ApplicationCallbackNotification>Csm_AEADDecryptCsm_AEADEncryptCsm_CallbackNotificationCsm_CancelJobCsm_DecryptCsm_EncryptCsm_GetVersionInfoCsm_HashCsm_InitCsm_JobKeyDeriveCsm_JobKeyExchangeCalcPubValCsm_JobKeyExchangeCalcSecretCsm_JobKeyGenerateCsm_JobKeySetInvalidCsm_JobKeySetValidCsm_JobRandomSeedCsm_KeyCopyCsm_KeyDeriveCsm_KeyElementCopyCsm_KeyElementCopyPartialCsm_KeyElementGetCsm_KeyElementSetCsm_KeyExchangeCalcPubValCsm_KeyExchangeCalcSecretCsm_KeyGenerateCsm_KeyGetStatusCsm_KeySetInvalidCsm_KeySetValidCsm_MacGenerateCsm_MacVerifyCsm_MainFunctionCsm_RandomGenerateCsm_RandomSeedCsm_RestoreContextJobCsm_SaveContextJobCsm_SignatureGenerateCsm_SignatureVerifyCrypto_AlgorithmFamilyTypeCrypto_AlgorithmInfoTypeCrypto_AlgorithmModeTypeCrypto_InputOutputRedirectionConfigTypeCrypto_JobPrimitiveInfoTypeCrypto_JobPrimitiveInputOutputTypeCrypto_JobRedirectionInfoTypeCrypto_JobStateTypeCrypto_JobTypeCrypto_KeyStatusTypeCrypto_OperationModeTypeCrypto_PrimitiveInfoTypeCrypto_ProcessingTypeCrypto_ResultTypeCrypto_ServiceInfoTypeCrypto_VerifyResultTypeCsm_AEADDecryptAssociatedDataTypeCsm_AEADDecryptCiphertextTypeCsm_AEADDecryptPlaintextTypeCsm_AEADDecryptTagTypeCsm_AEADEncryptAssociatedDataTypeCsm_AEADEncryptCiphertextTypeCsm_AEADEncryptPlaintextTypeCsm_AEADEncryptTagTypeCsm_ConfigIdTypeCsm_ConfigTypeCsm_DecryptDataTypeCsm_DecryptResultTypeCsm_EncryptDataTypeCsm_EncryptResultTypeCsm_HashDataTypeCsm_HashResultTypeCsm_KeyDataTypeCsm_LengthPtrCsm_MacGenerateDataTypeCsm_MacGenerateResultTypeCsm_MacVerifyCompareTypeCsm_MacVerifyDataTypeCsm_RandomGenerateResultTypeCsm_SignatureGenerateDataTypeCsm_SignatureGenerateResultTypeCsm_SignatureVerifyCompareTypeCsm_SignatureVerifyDataTypeCsm_VerifyResultPtr

Подробный вид

Выберите элемент в оглавлении.

CryIf

Notifies the CRYIF about the completion of the request with the result of the cryptographic operation.

void CryIf_CallbackNotification (Crypto_JobType* job, Crypto_ResultType result);
CryIf_CancelJob функция

This interface dispatches the job cancellation function to the configured crypto driver object.

Std_ReturnType CryIf_CancelJob (uint32 channelId, Crypto_JobType* job);
CryIf_GetVersionInfo функция

Returns the version information of this module.

void CryIf_GetVersionInfo (Std_VersionInfoType* versioninfo);
CryIf_Init функция

Initializes the CRYIF module. AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_CryptoInterface

void CryIf_Init (const CryIf_ConfigType* configPtr);
CryIf_KeyCopy функция

This function shall co py all key elements from the source key to a target key.

Std_ReturnType CryIf_KeyCopy (uint32 cryIfKeyId, uint32 targetCryIfKeyId);
CryIf_KeyDerive функция

This function shall dispatch th e key derive function to the configured crypto driver object.

Std_ReturnType CryIf_KeyDerive (uint32 cryIfKeyId, uint32 targetCryIfKeyId);
CryIf_KeyElementCopy функция

Service CryIf_KeyElementCopy.

Std_ReturnType CryIf_KeyElementCopy (uint32 cryIfKeyId, uint32 keyElementId, uint32 targetCryIfKeyId, uint32 targetKeyElementId);

Service CryIf_KeyElementCopyPartial.

Std_ReturnType CryIf_KeyElementCopyPartial (uint32 cryIfKeyId, uint32 keyElementId, uint32 keyElementSourceOffset, uint32 keyElementTargetOffset, uint32 keyElementCopyLength, uint32 targetCryIfKeyId, uint32 targetKeyElementId);
CryIf_KeyElementGet функция

This function shall dispatch the get key ele ment function to the configured crypto driver object.

Std_ReturnType CryIf_KeyElementGet (uint32 cryIfKeyId, uint32 keyElementId, uint8* resultPtr, uint32* resultLengthPtr);
CryIf_KeyElementSet функция

This function shall dispatch the set key element function to the configured crypto driver object.

Std_ReturnType CryIf_KeyElementSet (uint32 cryIfKeyId, uint32 keyElementId, const uint8* keyPtr, uint32 keyLength);

This function shall dispatch the key exchange public value calculation function to the configured crypto driver object. Available

Std_ReturnType CryIf_KeyExchangeCalcPubVal (uint32 cryIfKeyId, uint8* publicValuePtr, uint32* publicValueLengthPtr);

This function shall dispatch the key exchange common shared secret calculation function to the configured crypto driver object.

Std_ReturnType CryIf_KeyExchangeCalcSecret (uint32 cryIfKeyId, const uint8* partnerPublicValuePtr, uint32 partnerPublicValueLength);
CryIf_KeyGenerate функция

This function shall dispatch the key generate function to the configured crypto driver object.

Std_ReturnType CryIf_KeyGenerate (uint32 cryIfKeyId);
CryIf_KeyGetStatus функция

Returns the key state of the key identified by cry If Key Id.

Std_ReturnType CryIf_KeyGetStatus (uint32 cryIfKeyId, Crypto_KeyStatusType* keyStatusPtr);
CryIf_KeySetInvalid функция

Sets invalid for the status of the key identifi ed by cry If Key Id.

Std_ReturnType CryIf_KeySetInvalid (uint32 cryIfKeyId);
CryIf_KeySetValid функция

This function shall dispatch the set key valid function to the configured crypto driver object.

Std_ReturnType CryIf_KeySetValid (uint32 cryIfKeyId);
CryIf_ProcessJob функция

Service CryIf_ProcessJob.

Std_ReturnType CryIf_ProcessJob (uint32 channelId, Crypto_JobType* job);
CryIf_RandomSeed функция

This function shall dispatch the random seed function to the configured crypto driver object.

Std_ReturnType CryIf_RandomSeed (uint32 cryIfKeyId, const uint8* seedPtr, uint32 seedLength);

Configuration data structure of Cry If module

Crypto

Crypto_CancelJob функция

This interface removes the provided job from the queue and cancels the processing of the job if possible.

Std_ReturnType Crypto_CancelJob (uint32 objectId, Crypto_JobType* job);
Crypto_GetVersionInfo функция

Returns the version information of this module.

void Crypto_GetVersionInfo (Std_VersionInfoType* versioninfo);
Crypto_Init функция

Initializes the Crypto Driver.

void Crypto_Init (const Crypto_ConfigType* configPtr);
Crypto_KeyCopy функция

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)

Std_ReturnType Crypto_KeyCopy (uint32 cryptoKeyId, uint32 targetCryptoKeyId);
Crypto_KeyDerive функция

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.

Std_ReturnType Crypto_KeyDerive (uint32 cryptoKeyId, uint32 targetCryptoKeyId);
Crypto_KeyElementCopy функция

Service Crypto_KeyElementCopy.

Std_ReturnType Crypto_KeyElementCopy (uint32 cryptoKeyId, uint32 keyElementId, uint32 targetCryptoKeyId, uint32 targetKeyElementId);

Service Crypto_KeyElementCopyPartial.

Std_ReturnType Crypto_KeyElementCopyPartial (uint32 cryptoKeyId, uint32 keyElementId, uint32 keyElementSourceOffset, uint32 keyElementTargetOffset, uint32 keyElementCopyLength, uint32 targetCryptoKeyId, uint32 targetKeyElementId);
Crypto_KeyElementGet функция

This interface shall be used to get a key element of the key identified by the crypto

Std_ReturnType Crypto_KeyElementGet (uint32 cryptoKeyId, uint32 keyElementId, uint8* resultPtr, uint32* resultLengthPtr);

Used to retrieve information which key elements are available in a given key.

Std_ReturnType Crypto_KeyElementIdsGet (uint32 cryptoKeyId, uint32* keyElementIdsPtr, uint32* keyElementIdsLengthPtr);
Crypto_KeyElementSet функция

Sets the given key element bytes to the key identified by crypto Key Id.

Std_ReturnType Crypto_KeyElementSet (uint32 cryptoKeyId, uint32 keyElementId, const uint8* keyPtr, uint32 keyLength);

Calculates the public value for the key exchange a nd stores the public key in the memory location pointed by the public value pointer.

Std_ReturnType Crypto_KeyExchangeCalcPubVal (uint32 cryptoKeyId, uint8* publicValuePtr, uint32* publicValueLengthPtr);

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.

Std_ReturnType Crypto_KeyExchangeCalcSecret (uint32 cryptoKeyId, const uint8* partnerPublicValuePtr, uint32 partnerPublicValueLength);
Crypto_KeyGenerate функция

Generates new key material store it in the key identified by crypto Key Id.

Std_ReturnType Crypto_KeyGenerate (uint32 cryptoKeyId);
Crypto_KeyGetStatus функция

Returns the key state of the key identified by crypto Key Id.

Std_ReturnType Crypto_KeyGetStatus (uint32 cryptoKeyId, Crypto_KeyStatusType* keyStatusPtr);
Crypto_KeySetInvalid функция

Sets invalid for the status of the key identifi ed by crypto Key Id.

Std_ReturnType Crypto_KeySetInvalid (uint32 cryptoKeyId);
Crypto_KeySetValid функция

Sets the key state of the key identified by crypto Key Id to valid.

Std_ReturnType Crypto_KeySetValid (uint32 cryptoKeyId);
Crypto_MainFunction функция

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

void Crypto_MainFunction (void);
Crypto_ProcessJob функция

Service Crypto_ProcessJob.

Std_ReturnType Crypto_ProcessJob (uint32 objectId, Crypto_JobType* job);
Crypto_RandomSeed функция

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

Std_ReturnType Crypto_RandomSeed (uint32 cryptoKeyId, const uint8* seedPtr, uint32 seedLength);

Configuration data structure of Cry If module

CSM

CSM notifies the application that a job has finished. The function name is configurable. The function name itself is derived from "{CSM Job/ CSM Job Primitive Callback Ref}/CSM Callback Func".

void <Csm_ApplicationCallbackNotification> (uint32 jobId, Crypto_ResultType result);
Csm_AEADDecrypt функция

Service Csm_AEADDecryptManager.

Std_ReturnType Csm_AEADDecrypt (uint32 jobId, Crypto_OperationModeType mode, const uint8* ciphertextPtr, uint32 ciphertextLength, const uint8* associatedDataPtr, uint32 associatedDataLength, const uint8* tagPtr, uint32 tagLength, uint8* plaintextPtr, uint32* plaintextLengthPtr, Crypto_VerifyResultType* verifyPtr);
Csm_AEADEncrypt функция

Service Csm_AEADEncrypt.

Std_ReturnType Csm_AEADEncrypt (uint32 jobId, Crypto_OperationModeType mode, const uint8* plaintextPtr, uint32 plaintextLength, const uint8* associatedDataPtr, uint32 associatedDataLength, uint8* ciphertextPtr, uint32* ciphertextLengthPtr, uint8* tagPtr, uint32* tagLengthPtr);

Notifies the CSM that a job has finished. This function is used by the underlying layer (CRYIF).

void Csm_CallbackNotification (Crypto_JobType* job, Crypto_ResultType result);
Csm_CancelJob функция

Cancels the job processing from asynchronous or streaming jobs .

Csm_Decrypt функция

Service Csm_Decrypt.

Std_ReturnType Csm_Decrypt (uint32 jobId, Crypto_OperationModeType mode, const uint8* dataPtr, uint32 DataLength, uint8* resultPtr, uint32* resultLengthPtr);
Csm_Encrypt функция

Service Csm_Encrypt.

Std_ReturnType Csm_Encrypt (uint32 jobId, Crypto_OperationModeType mode, const uint8* dataPtr, uint32 DataLength, uint8* resultPtr, uint32* resultLengthPtr);
Csm_GetVersionInfo функция

Returns the version information of this module.

void Csm_GetVersionInfo (Std_VersionInfoType* versioninfo);
Csm_Hash функция

Uses the given data to perform the hash calculation and stores the hash.

Std_ReturnType Csm_Hash (uint32 jobId, Crypto_OperationModeType mode, const uint8* dataPtr, uint32 DataLength, uint8* resultPtr, uint32* resultLengthPtr);
Csm_Init функция

Initializes the CSM module. In configurations, in which CSM is assigned to more than one partition (i.e. Csm_ Main Functions are mapped to partitions), CSM may provide one init function per partition.

void Csm_Init (const Csm_ConfigType* configPtr);
Csm_JobKeyDerive функция

Derives a new key by using the key elements in the given key identified by the key Id. The given key contains the key elements for the password and salt. The derived key is stored in the key element with the id 1 of the key identified by target Crypto

Std_ReturnType Csm_JobKeyDerive (uint32 jobId, uint32 keyId, uint32 targetKeyId);

Calculates the public value of the current user for the key exchange and stores the

Std_ReturnType Csm_JobKeyExchangeCalcPubVal (uint32 jobId, uint32 keyId, uint8* publicValuePtr, uint32* publicValueLengthPtr);

Calculates the shared secret key for the key exchange with the key material of the key identified by the key Id and the partner public key. The shared secret key is stored as a key element in the same key.

Std_ReturnType Csm_JobKeyExchangeCalcSecret (uint32 jobId, uint32 keyId, const uint8* partnerPublicValuePtr, uint32 partnerPublicValueLength);
Csm_JobKeyGenerate функция

Generates new key material and stores it in the key identified by key Id.

Std_ReturnType Csm_JobKeyGenerate (uint32 jobId, uint32 keyId);
Csm_JobKeySetInvalid функция

Sets the key status to invalid. The key cannot be used any longer for cryptographic operations until it has been set to valid state again.

Std_ReturnType Csm_JobKeySetInvalid (uint32 jobId, uint32 keyId);
Csm_JobKeySetValid функция

Stores the key if necessary and sets the key state of the key identified by key Id to valid.

Std_ReturnType Csm_JobKeySetValid (uint32 jobId, uint32 keyId);
Csm_JobRandomSeed функция

Provides a new seed for the specified key that is used for an associated random number generator.

Std_ReturnType Csm_JobRandomSeed (uint32 jobId, uint32 keyId, const uint8* seedPtr, Manager uint32 seedLength);
Csm_KeyCopy функция

This function shall copy all key elements from the source key to a target key. Ava ilable via Csm.h

Std_ReturnType Csm_KeyCopy (const uint32 keyId, const uint32 targetKeyId);
Csm_KeyDerive функция

Derives a new key by using the key elements in the given key identified by the key Id. The given key contains the key elements for the password and salt. The derived key is stored in the k ey element with the id 1 of the key identified by target Crypto Key Id.

Std_ReturnType Csm_KeyDerive (uint32 keyId, uint32 targetKeyId);
Csm_KeyElementCopy функция

Service Csm_KeyElementCopyManager.

Std_ReturnType Csm_KeyElementCopy (const uint32 keyId, const uint32 keyElementId, const uint32 targetKeyId, const uint32 targetKeyElementId);

Service Csm_KeyElementCopyPartial.

Std_ReturnType Csm_KeyElementCopyPartial (uint32 keyId, uint32 keyElementId, uint32 keyElementSourceOffset, uint32 keyElementTargetOffset, uint32 keyElementCopyLength, uint32 targetKeyId, uint32 targetKeyElementId);
Csm_KeyElementGet функция

Service Csm_KeyElementGet.

Std_ReturnType Csm_KeyElementGet (uint32 keyId, uint32 keyElementId, uint8* keyElementPtr, Manager uint32* keyElementLengthPtr);
Csm_KeyElementSet функция

Sets the given key element bytes to the key identified by key Id.

Std_ReturnType Csm_KeyElementSet (uint32 keyId, uint32 keyElementId, const uint8* keyElementPtr, uint32 keyElementLength);

Calculates the public value of the current user for the key exchange and stores the pub lic key in the memory location pointed by the public value pointer.

Std_ReturnType Csm_KeyExchangeCalcPubVal (uint32 keyId, uint8* publicValuePtr, uint32* publicValueLengthPtr);

Calculates the shared secret key for the key exchange with the key material of the key identified by the key Id and the partner public key. The shared secret key is stored as a key element in the same key.

Std_ReturnType Csm_KeyExchangeCalcSecret (uint32 keyId, const uint8* partnerPublicValuePtr, uint32 partnerPublicValueLength);
Csm_KeyGenerate функция

Generates new key material and store it in the key identified by key Id.

Std_ReturnType Csm_KeyGenerate (uint32 keyId);
Csm_KeyGetStatus функция

Returns the key state of the key identified by key Id.

Std_ReturnType Csm_KeyGetStatus (uint32 keyId, Crypto_KeyStatusType* keyStatusPtr);
Csm_KeySetInvalid функция

Sets the key status to invalid. The key cannot be used any longer for cryptographic operations until it has been set to valid state again.

Std_ReturnType Csm_KeySetInvalid (uint32 keyId);
Csm_KeySetValid функция

Sets the key state of the key identified by key Id to valid.

Std_ReturnType Csm_KeySetValid (uint32 keyId);
Csm_MacGenerate функция

Service Csm_MacGenerate.

Std_ReturnType Csm_MacGenerate (uint32 jobId, Crypto_OperationModeType mode, const uint8* dataPtr, uint32 DataLength, uint8* macPtr, uint32* macLengthPtr);
Csm_MacVerify функция

Service Csm_MacVerify.

Std_ReturnType Csm_MacVerify (uint32 jobId, Crypto_OperationModeType mode, const uint8* dataPtr, uint32 DataLength, const uint8* macPtr, const uint32 macLength, Crypto_VerifyResultType* verifyPtr);
Csm_MainFunction функция

API to be called cyclically to process the requested jobs. The Csm_ Main Function shall check the queues for jobs to pass to the underlying CRYIF. Per configured CSM Main Function ins tance one Csm_ Main Function_ shall be implemented. Hereby is the short name of the CSM Main Function configuration container in the ECU configuration.

void Csm_MainFunction (void);
Csm_RandomGenerate функция

Generate a random number and stores it in the memory location pointed by th e result pointer.

Std_ReturnType Csm_RandomGenerate (uint32 jobId, uint8* resultPtr, uint32* resultLengthPtr);
Csm_RandomSeed функция

Feeds the key element CRYPTO_ KE_ RANDOM_ SEED with a random seed. Manager AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_CryptoServiceManager

Std_ReturnType Csm_RandomSeed (uint32 keyId, const uint8* seedPtr, uint32 seedLength);
Csm_RestoreContextJob функция

The Crypto Driver extracts the context data from the context Buffer and restores the internal state so that further crypto operation of this crypto service will continue at the exact point when the context was taken.

Std_ReturnType Csm_RestoreContextJob (uint32 jobId, uint8* contextBufferPtr, uint32 contextBufferLength);
Csm_SaveContextJob функция

The Crypto Driver stores the internal context of the respective crypto operation to the context Buffer.

Std_ReturnType Csm_SaveContextJob (uint32 jobId, uint8* contextBufferPtr, uint32* contextBufferLengthPtr);
Csm_SignatureGenerate функция

Service Csm_SignatureGenerate.

Std_ReturnType Csm_SignatureGenerate (uint32 jobId, Crypto_OperationModeType mode, const uint8* dataPtr, uint32 DataLength, uint8* signaturePtr, uint32* signatureLengthPtr);
Csm_SignatureVerify функция

Service Csm_SignatureVerify.

Std_ReturnType Csm_SignatureVerify (uint32 jobId, Crypto_OperationModeType mode, const uint8* dataPtr, uint32 DataLength, const uint8* signaturePtr, uint32 signatureLength, Crypto_VerifyResultType* verifyPtr);

Type Crypto_AlgorithmFamilyType.

Structure which determines the exact algorithm. Note, not every algorithm needs to specify all fields. AUTOSAR shall only allow valid combinations.

Type Crypto_AlgorithmModeType.

Defines which of the input/ output parameters are re - directed to a key element. The values can be combined to define a bit field.

Structure which contains further information, which depends on the job and the crypto primitive.

Type Crypto_JobPrimitiveInputOutputType.

Type Crypto_JobRedirectionInfoType.

Enumeration of the current job state.

Structure which contains further information, which depends on the job and the crypto primitive.

Enumeration for key status.

Enume ration which operation shall be performed. This enumeration is constructed from a bit mask, where the first bit indicates "Start", the second "Update" and the third "Finish".

Structure which contains basic information about the crypto primitive. Manager AUTOSAR CP R20 - of Document ID : AUTOSAR_SWS_CryptoServiceManager

Enumeration of the processing type.

Return for Std_ Return Type for Cryptostack.

Enumeration of the kind of the service.

Enumeration of the result type of verification operations.

Array long enough to store the data of the header.

Array long enough to store the ciphertext to be decrypted with AEAD.

Array long enough to store the data of the plaintext.

Array long enough to store the data of the Tag.

Array long enough to store the data of the header.

Array long enough to store the data of the cipher.

Array long enough to store the plaintext to be encrypted with AEAD.

Array long enough to store the data of the Tag.

Identification of a CSM service configuration via a numeric identifier, that is unique within a service. The name of a CSM service configuration, i.e. the name of the container Csm_Config, shall serve as a symbolic name for this parameter Avail able via Csm.h

Configuration data structure of CSM module

Array long enough to store the data to be decrypted.

Array long enough to store the data of the decrypted plaintext.

Array long enough to store the data to be encrypted.

Array long enough to store the data of the cipher.

Array long enough to store the data which shall be hashed.

Array long enough to store the data of the hash.

Array long enough to store any key element of the considered key

Implementation Data Type of category DATA_ REFERENCE with the pointer target uint32 to be able to return asynchronously the length.

Array long enough to store the data from which a MAC shall be generated.

Array long enough to store the data of the MAC.

Array long enough to store a MAC to be verified.

Array long enough to store the data for whichs MAC shall be verified.

Array long enough to store the data of the random number.

Array long enough to store the data from which the signature shall be generated.

Array long enough to store the signature and its length.

Array long enough to store a signature to be verified.

Array long enough to store the data for whichs signature shall be verified.

Implementation Data Type of category DATA_ REFERENCE with the pointer target Csm_ Verify Result Type to be able to return asynchronously the verify result.