DEENESPTFRRUARHIKOZHNL

Crypto Interface (CryIf)

ModulCryIf (Crypto Interface)
BSW-Modul-ID112
Standard-Header#include "CryIf.h"
SWS-SpezifikationAUTOSAR_SWS_CryptoInterface.pdf
ClusterCrypto Services

模块指南人工智能生成

通过配置的通道将 CSM 的加密作业和密钥调用转发给负责的 Crypto 驱动程序。
AI 生成 未审核 模型: claude-opus-5-5 · 推理强度: high · 温度: 不可控 · 提示词: 6b37c73ee677 来源 未决问题(4)
因果锚点:R20-11 自 R20-11 起有效 为此规范版本重新合成。
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

通过配置的通道将 CSM 的加密作业和密钥调用转发给负责的 Crypto 驱动程序。

CryIf 在 Classic 加密协议栈中负责在 CSM 与 Crypto Driver 之间进行中介,并通过配置的通道将作业和密钥调用转发给负责的 Crypto Driver Object SWS CSM 第26页。核心接口是 CryIf_ProcessJob,它根据配置以同步或异步方式工作 [SWS_CryIf_91003]。驱动程序通过回调向 CryIf 报告异步结果,CryIf 再将其传递给 CSM。在转发之前,CryIf 将其自身的密钥 ID 映射到驱动程序的密钥 ID,并检查其范围。对于 R20-11,需要注意的是后续 release 已更改了错误代码和同步性规则。

CryIf 在 Classic 加密协议栈中负责在 Service Layer 中的 CSM 与 MCAL 中的 Crypto Driver 之间进行中介。应用程序的请求通过逻辑通道一直传递到 HSM 的硬件引擎 SWS CSM 图 7.4 第27页。通道是从 CSM 队列经由 CryIf 到 Crypto Driver Object 的路径;每个 CSM 队列恰好分配给一个通道 SWS CSM 第26页。通道在容器 CryIfChannel 中通过 CryIfChannelId 和 CryIfDriverObjectRef 进行配置 SWS CryIf 第51页。在每次使用前,CryIf_Init 使用特定于实现的配置初始化该模块 [SWS_CryIf_91000]。

kontext cluster_app Application Layer cluster_srv Service Layer cluster_ecu ECU Abstraction Layer cluster_mcal MCAL cluster_hw Microcontroller (HSM) app1 App1 (AES) rte RTE app1->rte app2 App2 (AES) app2->rte app3 App3 (RSA) app3->rte csm CSM Queue je Kanal rte->csm Krypto-Dienste cryif CryIf CryIfChannel csm->cryif CryIf_ProcessJob, CryIf_CancelJob, CryIf_Key… cryif->csm Csm_CallbackNotification crypto Crypto Driver Crypto Driver Objects cryif->crypto Weiterleitung je Kanal an Crypto Driver Object det DET cryif->det Det_ReportError, Det_ReportRuntimeError crypto->cryif CryIf_CallbackNotification hwaes HW-AES crypto->hwaes Kanal AES hwrsa HW-RSA crypto->hwrsa Kanal RSA

上下文图:CryIf 按通道将 CSM 的作业转发给 Crypto Driver Object,并将结果报告回 CSM。来源:SWS CSM 图 7.4 第27页,[SWS_CryIf_91100]

核心接口是 CryIf_ProcessJob。该函数是可重入的,并根据配置以同步或异步方式工作 [SWS_CryIf_91003]。运行模式 START、UPDATE 和 FINISH 可以组合使用,从而使同一函数能够覆盖单次调用和流式处理 SWS CryIf 第22页。驱动程序通过 CryIf_CallbackNotification 报告异步结果 [SWS_CryIf_91013]。CryIf 通过 Csm_CallbackNotification 将其转发给 CSM [SWS_CryIf_91100]。CryIf_CancelJob 在驱动程序处中止正在运行的作业 [SWS_CryIf_91014]。

通过 CryIf_ProcessJob 进行作业处理CSMCryIfCrypto Driver ObjectDETCryIf_ProcessJob(channelId, job)检查密钥 ID并映射到驱动程序 IDopt密钥 ID 超出范围CRYPTO_E_PARAM_HANDLE meldenE_NOT_OKCrypto_ProcessJob(…, job)altsynchron konfiguriertBerechnungErgebnis (E_OK / CRYPTO_E_…)透传返回值asynchron konfiguriert传递的返回值透传返回值Berechnung,例如来自 Main 函数CryIf_CallbackNotification(job, result)Csm_CallbackNotification(job, result)

时序图:CryIf 检查密钥 ID,然后转发作业。结果以同步方式作为返回值返回,或通过两个回调阶段以异步方式返回。来源:[SWS_CryIf_91003],[SWS_CryIf_91013],SWS Crypto 第27页

在转发之前,CryIf 将其自身的密钥 ID 映射到驱动程序的 ID。如果它们超出范围,它会向 DET 报告 CRYPTO_E_PARAM_HANDLE 并返回 E_NOT_OK [SWS_CryIf_00133] [SWS_CryIf_00134]。此外,CryIf 还提供用于设置、置为有效和置为无效、读取、生成、派生、交换和复制密钥的同步函数。在部分复制时,如果源和目标位于不同的驱动程序中,CryIf 会读取该元素并自行将其写入目标 [SWS_CryIf_00140]。

诸如 CRYIF_E_UNINIT 或 CRYIF_E_PARAM_POINTER 之类的开发错误进入 DET [SWS_CryIf_00009]。诸如 CRYPTO_E_BUSY 或 CRYPTO_E_KEY_NOT_VALID 之类的运行时错误作为返回值返回 [SWS_CryIf_91020]。后续 release 与 R20-11 有所偏离:它们统一了 CRYIF_E_PARAM_HANDLE,并将 CryIf_RandomSeed 以及 CryIf_KeyGenerate 确定为同步 SWS CryIf 第1页。

CryIf 在 Crypto Service Manager 与 Crypto Driver 之间的角色

Crypto Interface (CryIf) 位于 Classic 加密协议栈中的 ECU Abstraction Layer。应用程序通过 RTE 和 CSM 请求加密服务。这些请求通过逻辑通道穿过 CryIf 到达 MCAL 中的 Crypto Driver,并进一步到达其硬件引擎,例如 HSM 中的 HW-AES 和 HW-RSA SWS CSM 图 7.4 第27页。Crypto Driver Object 代表硬件或软件中独立的加密“设施”,例如 AES 加速器或软件中的 RSA 实现 SWS CSM 第26页。CryIf 本身不执行计算。其函数将各自的调用转发给配置的 Crypto Driver Object,例如 [SWS_CryIf_91005]、[SWS_CryIf_91007]、[SWS_CryIf_91009] 和 [SWS_CryIf_91014]。

向上,CryIf 提供三组接口:

对于处于“ACTIVE”状态的作业,CSM 调用 CryIf_ProcessJob 并原样传递其返回值 SWS CSM 第22页。向下,CryIf 通过 CryIf_CallbackNotification [SWS_CryIf_91013] 接收驱动程序的完成通知 SWS Crypto 第27页。它从其他模块需要 Csm_CallbackNotification 和 Det_ReportRuntimeError [SWS_CryIf_91100],可选地还需要 Det_ReportError [SWS_CryIf_91101]。

kontext cluster_app Application Layer cluster_srv Service Layer cluster_ecu ECU Abstraction Layer cluster_mcal MCAL cluster_hw Microcontroller (HSM) app1 App1 (AES) rte RTE app1->rte app2 App2 (AES) app2->rte app3 App3 (RSA) app3->rte csm CSM Queue je Kanal rte->csm Krypto-Dienste cryif CryIf CryIfChannel csm->cryif CryIf_ProcessJob, CryIf_CancelJob, CryIf_Key… cryif->csm Csm_CallbackNotification crypto Crypto Driver Crypto Driver Objects cryif->crypto Weiterleitung je Kanal an Crypto Driver Object det DET cryif->det Det_ReportError, Det_ReportRuntimeError crypto->cryif CryIf_CallbackNotification hwaes HW-AES crypto->hwaes Kanal AES hwrsa HW-RSA crypto->hwrsa Kanal RSA

上下文图:CryIf 按通道将 CSM 队列与 Crypto Driver Object 连接起来,并将结果报告回 CSM。来源:SWS CSM 图 7.4 第27页,[SWS_CryIf_91100],[SWS_CryIf_91013]

通道、配置与初始化

通道是从 CSM 队列经由 CryIf 到 Crypto Driver Object 的路径。CSM 的每个队列恰好分配给一个通道;可选地,Crypto Driver 也拥有自己的队列 SWS CSM 第26页。通道在容器 CryIfChannel 中进行配置,多重度为 0..*,且在所有变体中均采用 pre-compile 配置。该容器包含参数 CryIfChannelId 和 CryIfDriverObjectRef SWS CryIf 第51页。CryIfChannelId 确定 CSM 队列连接到哪个通道。在运行时,[SWS_CryIf_91003] 和 [SWS_CryIf_91014] 的参数 channelId 同样表示加密通道。解释:CryIfDriverObjectRef 大概是将通道绑定到执行该通道作业的 Crypto Driver Object。 问题 Q-5f8f778dc8552b7f (未决)

在每次使用前必须调用 CryIf_Init [SWS_CryIf_91000]。该函数是同步且不可重入的。它接收一个指向类型为 CryIf_ConfigType 的所选配置的指针,其内容是特定于实现的 [SWS_CryIf_91118] SWS CryIf 第20页。针对失败的初始化,错误列表规定了 CRYIF_E_INIT_FAILED (0x01) [SWS_CryIf_00009]。CryIf_GetVersionInfo 是可重入的,并提供模块的版本信息 [SWS_CryIf_91001]。

除了通道之外,CryIf 还维护自身的密钥标识符(cryIfKeyId)。它将它们映射到负责的驱动程序的密钥 ID [SWS_CryIf_00133]。如果作业使用了作业处理重定向 (job processing redirection),CryIf 还会额外将传入的密钥和密钥元素引用调整为驱动程序的引用 [SWS_CryIf_00136]。密钥由一个或多个密钥元素组成,例如密钥材料、初始化向量或种子 SWS CSM 第30页。

从 CryIf_ProcessJob 到返回确认的作业处理

单次调用和流式处理通过相同的函数 CryIf_ProcessJob 进行。字段 job->jobPrimitiveInputOutput.mode 包含操作模式“START”、“UPDATE”和“FINISH”,这些模式可以组合。在单次调用中完成的完整服务对应于所有三种模式的组合 SWS CryIf 第22页。该函数是可重入的,并根据配置以同步或异步方式工作 [SWS_CryIf_91003]。作业的状态转换由 Crypto Driver 执行,而非 CSM SWS CSM 第22页。

在异步情况下,驱动程序仅将必要的信息传递给原语。随后可以从 main 函数触发计算。完成后,驱动程序通过 CryIf_CallbackNotification 向 CryIf 报告作业和结果 SWS Crypto 第27页。该函数是同步且不可重入的;传入的作业包含用于标识该作业的回调 ID [SWS_CryIf_91013]。然后 CryIf 通过 Csm_CallbackNotification 向 CSM 报告结束;该函数明确专用于其下层 CRYIF [SWS_CryIf_91100]。如果设置了 FINISH 位,CSM 将调用配置的回调 SWS CSM 第82页。

通过 CryIf_ProcessJob 进行作业处理CSMCryIfCrypto Driver ObjectDETCryIf_ProcessJob(channelId, job)检查密钥 ID并映射到驱动程序 IDopt密钥 ID 超出范围CRYPTO_E_PARAM_HANDLE meldenE_NOT_OKCrypto_ProcessJob(…, job)altsynchron konfiguriertBerechnungErgebnis (E_OK / CRYPTO_E_…)透传返回值asynchron konfiguriert传递的返回值透传返回值Berechnung,例如来自 Main 函数CryIf_CallbackNotification(job, result)Csm_CallbackNotification(job, result)

时序图:CryIf 首先检查密钥 ID,然后转发作业。结果要么以同步方式作为返回值返回,要么通过两个回调阶段以异步方式返回。来源:[SWS_CryIf_91003],[SWS_CryIf_00134],[SWS_CryIf_91013],[SWS_CryIf_91100],SWS Crypto 第27页

运行中的异步作业和流式作业可以被中止。为此,CSM 将作业从其自身的队列中移除,或调用 CryIf_CancelJob SWS CSM 第80页。CryIf_CancelJob 是同步且可重入的,并将中止转发给配置的 Crypto Driver Object。E_OK 表示作业已被移除;E_NOT_OK 表示无法执行此操作 [SWS_CryIf_91014] SWS CryIf 第24页。后续 release (R24-11/R25-11) 的文档段落还提到了 CRYPTO_E_JOB_CANCELED。在这种情况下,中止仅在下一个合适的处理步骤中发生,并通过负完成回调进行报告 SWS CSM 第80页。

取消作业应用CSMCryIfCrypto Driver ObjectCsm_CancelJob(job, mode)alt作业仍在 CSM 队列中从自有队列中移除作业作业已在驱动程序中CryIf_CancelJob(channelId, job)Abbruch weiterleiten(Crypto_CancelJob)E_OK / E_NOT_OK(后续也是 CRYPTO_E_JOB_CANCELED)返回值E_OK:CSM 调用作业的完成回调CRYPTO_E_JOB_CANCELED:在下一次时取消geeigneten Schritt, negativer Abschluss-Callback返回值

时序图:中止要么在 CSM 队列中即结束,要么通过 CryIf 转发给 Crypto Driver Object。来源:[SWS_CryIf_91014],SWS CSM 第80页,SWS CryIf 第45页

映射并检查作业中的密钥 ID

某些 Job 会携带密钥管理服务:CRYPTO_KEYSETVALID、CRYPTO_KEYSETINVALID、CRYPTO_RANDOMSEED、CRYPTO_KEYGENERATE、CRYPTO_KEYDERIVE、CRYPTO_KEYEXCHANGECALCPUBVAL 或 CRYPTO_KEYEXCHANGECALCSECRET。对于这些 Job,CryIf 会检查 job->jobPrimitiveInputOutput->cryIfKeyId 以及在适当时检查 targetCryIfKeyId 是否处于有效范围内。如果是,则它会将 job->cryptoKeyId 或 job->targetCryptoKeyId 设置为驱动的密钥 ID [SWS_CryIf_00133] [SWS_CryIf_00141]。如果源 ID 超出范围,CryIf_ProcessJob 会向 DET 报告 CRYPTO_E_PARAM_HANDLE 并返回 E_NOT_OK [SWS_CryIf_00134]。对于 CRYPTO_KEYDERIVE,同样的处理也适用于目标 ID [SWS_CryIf_00135]。

与密钥相关的原语也会被检查。在 CRYPTO_MACGENERATE、CRYPTO_MACVERIFY、CRYPTO_ENCRYPT、CRYPTO_DECRYPT、CRYPTO_AEADENCRYPT、CRYPTO_AEADDECRYPT、CRYPTO_RANDOMGENERATE、CRYPTO_SIGNATUREGENERATE 和 CRYPTO_SIGNATUREVERIFY 中,会对 job->jobPrimitiveInfo->cryIfKeyId 检查其是否处于有效范围内 [SWS_CryIf_00143]。

keyid start CryIf_ProcessJob(channelId, job) d1 密钥管理服务? KEYSETVALID、KEYSETINVALID、RANDOMSEED、 KEYGENERATE、KEYDERIVE、 KEYEXCHANGECALCPUBVAL、KEYEXCHANGECALCSECRET start->d1 c1 jobPrimitiveInputOutput->cryIfKeyId 是否在有效范围内? d1->c1 是 d3 带密钥的原语? MACGENERATE/-VERIFY、(AEAD)ENCRYPT/DECRYPT、 RANDOMGENERATE、SIGNATUREGENERATE/-VERIFY d1->d3 不 d2 Dienst = CRYPTO_KEYDERIVE? c1->d2 是 err 向 DET 报告 CRYPTO_E_PARAM_HANDLE 返回 E_NOT_OK c1->err 不 c2 targetCryIfKeyId 是否在有效范围内? d2->c2 是 map 将 job->cryptoKeyId(适当时包含 job->targetCryptoKeyId) 设置为驱动程序密钥 ID d2->map 不 c2->map 是 c2->err 不 fwd 转发至通道的 Crypto Driver Object map->fwd c3 jobPrimitiveInfo->cryIfKeyId 是否在有效范围内? d3->c3 是 d3->fwd 不 c3->err 不 c3->fwd 是

活动图:CryIf 根据服务类型检查密钥 ID,并在转发 Job 之前将其映射到驱动 ID。来源:[SWS_CryIf_00133]、[SWS_CryIf_00134]、[SWS_CryIf_00135]、[SWS_CryIf_00143]

该范围在各 Release 之间发生了变化。R20-11 在检查中提及了 CRYPTO_E_PARAM_HANDLE,而模块的错误列表则定义了 CRYIF_E_PARAM_HANDLE (0x03) [SWS_CryIf_00009]。根据变更历史,直到 R22-11 才将其统一为 CRYIF_E_PARAM_HANDLE SWS CryIf 第1页。在同一次变更中,移除了 DET 报告后的返回值。此外还新增了服务 CRYPTO_CUSTOM,该服务在文档后续位置已包含在列表中 SWS CryIf 第23页。对于 R20-11,需求以在此引用的形式为准。

密钥管理:材料、状态、生成与交换

直接密钥 API 是同步的。非可重入的有 CryIf_KeyElementSet [SWS_CryIf_91004]、CryIf_KeySetValid [SWS_CryIf_91005]、CryIf_KeySetInvalid [SWS_CryIf_91021] 和 CryIf_KeyGetStatus [SWS_CryIf_91012]。根据变更历史,用于密钥状态的功能是在 R20-11 中新增的 SWS CryIf 第1页。如果设置某个元素失败,根据 CSM 规范,其状态被视为未知 SWS CSM 第62页。该状态可通过 Csm_KeyGetStatus 进行检查,后者本身会调用 CryIf_KeyGetStatus SWS CSM 第63页。

CryIf_KeyElementGet 是可重入的 [SWS_CryIf_91006]。参数 resultLengthPtr 用作输入和输出。在调用时,它包含缓冲区大小;对于部分访问的元素,则包含要读取的数据量。完成后,它包含实际存放的数据量 SWS CryIf 第30页。

schluesselstatus start 开始 gesetzt 元素已设置 (尚未声明为有效, 推断) start->gesetzt CryIf_KeyElementSet valid 有效 (valid) gesetzt->valid CryIf_KeySetValid valid->valid Nutzung in Jobs, CryIf_KeyGetStatus invalid 无效 (invalid) valid->invalid CryIf_KeySetInvalid invalid->valid CryIf_KeySetValid invalid->invalid Nutzung scheitert: CRYPTO_E_KEY_NOT_VALID

状态图:密钥在设置其元素后被声明为有效,并且可以重新置为无效。当密钥无效时,带有 CRYPTO_E_KEY_NOT_VALID 的操作将失败。CryIf_KeySetValid 之前的初始状态为一种解释。来源:[SWS_CryIf_91004]、[SWS_CryIf_91005]、[SWS_CryIf_91021]、[SWS_CryIf_91012]、SWS CSM 第70页

对于密钥生成,CryIf_RandomSeed [SWS_CryIf_91007] 提供初始值,而 CryIf_KeyGenerate [SWS_CryIf_91008] 生成密钥。根据 CSM 规范,密钥在元素 CRYPTO_KE_KEYGENERATE_KEY 中生成。其基础是 CRYPTO_KE_KEYGENERATE_SEED 中的种子以及 CRYPTO_KE_KEYGENERATE_ALGORITHM SWS CSM 第67页 中的算法。在 R20-11 中,这两个函数根据配置以同步或异步方式工作 [SWS_CryIf_91007] [SWS_CryIf_91008]。直到 R21-11 才将它们定为同步 SWS CryIf 第1页。CryIf_KeyDerive 是同步且可重入的,它从源密钥派生出一个密钥,并存放在目标密钥中 [SWS_CryIf_91009] SWS CryIf 第42页。

对于 Diffie-Hellman 密钥交换,存在两个函数。CryIf_KeyExchangeCalcPubVal [SWS_CryIf_91010] 计算自身的公钥值。CryIf_KeyExchangeCalcSecret [SWS_CryIf_91011] 根据通信伙伴的值计算共享秘密。密钥材料位于元素 CRYPTO_KE_KEYEXCHANGE_BASE、CRYPTO_KE_KEYEXCHANGE_PRIVKEY 和 CRYPTO_KE_KEYEXCHANGE_OWNPUBKEY SWS CSM 第70页 中。驱动将该秘密作为元素存放在同一密钥中 SWS Crypto 第84页。解释:即使在直接密钥 API 中,CryIf 可能也会像在 Job 路径中一样,将 cryIfKeyId 映射到驱动的密钥 ID [SWS_CryIf_00133]。 问题 Q-f146ad33e972fa97 (未决)

通过 CryIf 进行密钥交换Anwendung / CSMCryIfCrypto Driver ObjectKommunikationspartnerUse Case: 计算自有的公开值CryIf_KeyExchangeCalcPubVal(cryIfKeyId,publicValuePtr, publicValueLengthPtr)an konfiguriertes Crypto Driver Object weiterleiten公开值,返回值公开值,返回值Use Case: 在 CryIf 外部交换发送自有的公开值发送对方的公开值Use Case: Gemeinsames Geheimnis berechnenCryIf_KeyExchangeCalcSecret(cryIfKeyId,partnerPublicValuePtr, partnerPublicValueLength)Crypto_KeyExchangeCalcSecret(…)将共享密钥作为密钥元素存放在同一个密钥中返回值返回值

时序图:密钥交换在两次 CryIf 调用中进行。在此期间,应用程序在 CryIf 外部与通信伙伴交换公钥值。来源:[SWS_CryIf_91010]、[SWS_CryIf_91011]、SWS CSM 第70页、SWS Crypto 第84页

在 Crypto Driver 内部及之间复制密钥

对于复制操作,存在 CryIf_KeyElementCopy [SWS_CryIf_91015]、CryIf_KeyCopy [SWS_CryIf_91016] 和 CryIf_KeyElementCopyPartial [SWS_CryIf_91018]。三者均为同步且可重入,但针对同一 cryIfKeyId 时不可重入。除 E_OK 和 E_NOT_OK 外,它们还可以返回 CRYPTO_E_KEY_READ_FAIL、CRYPTO_E_KEY_WRITE_FAIL、CRYPTO_E_KEY_SIZE_MISMATCH 以及 CRYPTO_E_KEY_EMPTY 等 SWS CryIf 第35页。

在部分复制时,规范区分了两种情况:

  • 源密钥与目标密钥位于同一 Crypto Driver 中:CryIf 调用所分配驱动的 Crypto_<vi>_<ai>_KeyElementCopyPartial(),并转发其返回值 [SWS_CryIf_00139]。
  • 密钥位于不同的驱动中:CryIf 使用 Crypto_<vi>_<ai>_KeyElementGet() 读取该元素,将部分数据复制到目标位置,并使用 Crypto_<vi>_<ai>_KeyElementSet() [SWS_CryIf_00140] 写入目标元素。

驱动的复制函数是可选接口。如果某个元素直接位于 Flash 中,则调用可能会耗费明显更长的时间 SWS CryIf 第45页。

copypartial start CryIf_KeyElementCopyPartial(…) fehler Fehler durch CryIf erkannt? start->fehler abbruch 不转发 (参见错误情况下的行为) fehler->abbruch 是 gleich cryIfKeyId 和 targetCryIfKeyId 是否在同一个 Crypto Driver 中? fehler->gleich 不 ende Ende abbruch->ende partial 调用 Crypto_<vi>_<ai>_KeyElementCopyPartial(), 透传返回值 gleich->partial 是 lesen 使用 Crypto_<vi>_<ai>_KeyElementGet() 读取源元素 gleich->lesen 不 partial->ende kopieren Teildaten an Zielposition kopieren lesen->kopieren schreiben 使用 Crypto_<vi>_<ai>_KeyElementSet() 写入目标元素 kopieren->schreiben schreiben->ende

活动图:CryIf 是直接委托给驱动,还是自行通过读取和写入进行复制,取决于密钥是否位于同一驱动中。来源:[SWS_CryIf_00139]、[SWS_CryIf_00140]

发生错误时的行为

CryIf 向 DET 报告开发错误。该模块的错误列表包括 [SWS_CryIf_00009]:

错误代码值原因
CRYIF_E_UNINIT0x00初始化前调用 API
CRYIF_E_INIT_FAILED0x01初始化失败
CRYIF_E_PARAM_POINTER0x02空指针作为参数
CRYIF_E_PARAM_HANDLE0x03参数超出范围
CRYIF_E_PARAM_VALUE0x04无效的参数值
CRYIF_E_KEY_SIZE_MISMATCH0x05源元素与目标元素的大小不匹配

在初始化前报告 CRYIF_E_UNINIT 已在多个函数中得到证实:CryIf_KeyDerive SWS CryIf 第42页、CryIf_RandomSeed SWS CryIf 第37页、CryIf_CancelJob SWS CryIf 第24页、CryIf_KeyGetStatus SWS CryIf 第29页 和 CryIf_CallbackNotification SWS CryIf 第44页。对于其余服务,推测应该同样适用。其他检查也同样得到了证实。CryIf_CancelJob 在 channelId 不允许时报告 CRYIF_E_PARAM_HANDLE,在 cryIfKeyId 不允许时报告 CryIf_KeyGetStatus。CryIf_CallbackNotification 检查其指针并在适当时报告 CRYIF_E_PARAM_POINTER SWS CryIf 第44页。 问题 (未决)

运行时错误作为来自驱动的返回值给出。CryIf 会将其转发,正如 [SWS_CryIf_00139] 对部分复制所规定的那样。CSM 则会进一步传递 CryIf_ProcessJob 的返回值 SWS CSM 第22页。取值范围包括但不限于 [SWS_CryIf_91020]:

  • CRYPTO_E_BUSY (0x02):服务仍处于繁忙状态
  • CRYPTO_E_ENTROPY_EXHAUSTED (0x04)
  • CRYPTO_E_KEY_READ_FAIL (0x06)
  • CRYPTO_E_KEY_WRITE_FAIL (0x07)
  • CRYPTO_E_KEY_NOT_AVAILABLE (0x08)
  • CRYPTO_E_KEY_NOT_VALID (0x09)

如果 CSM 队列已满,CSM 本身就会以 CRYPTO_E_BUSY 拒绝该请求 SWS CSM 第22页。

关于返回值,值得查看 Release 历史。CRYPTO_E_QUEUE_FULL 直到 R23-11 才从 [SWS_CryIf_91003] 中移除。CRYPTO_E_KEY_EMPTY 直到 R24-11 才新增用于 CryIf_RandomSeed SWS CryIf 第1页。因此,对于 R20-11,应以该 Release 的 API 需求为准,而非日期较晚的文档出处。

进一步详细证据

基于 R20-11 需求及部分来自后续 Release 的关联文档出处的 AI 生成指南。一切以 AUTOSAR 规范为准。

Crypto Interface (CryIf)

Abstracts cryptographic hardware and software acceleration engines.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

函数 CryIf_Init [SWS_CryIf_91000] 📄 PDF

void CryIf_Init (const CryIf_ConfigType* configPtr);

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

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 2b39ab06c8cb 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

同步函数 CryIf_Init 用于根据 AUTOSAR Classic Platform 完整初始化 Crypto Interface(CryIf)模块 [SWS_CryIf_91000]。该函数在头文件 CryIf.h 中声明,且具备服务 ID 0x00 [SWS_CryIf_91000]。作为唯一的输入参数,接口需要 configPtr,即指向所选类型为 CryIf_ConfigType 的配置结构的指针 [SWS_CryIf_91000]。该函数不返回返回值(void),且既无 inout 参数也无 out 参数 [SWS_CryIf_91000]。

语义与并发性

对 CryIf_Init 的调用以同步方式执行 [SWS_CryIf_91000]。因此,该模块在将执行控制权返回给调用方之前完成所有必需的初始化工作。关于并发性,该函数被归类为不可重入(Non Reentrant)[SWS_CryIf_91000]。因此,任何时候都不得并行或嵌套调用该例程。

限制与集成

Interpretation:对 CryIf_Init 的调用通常可能在系统启动期间的基础软件初始化阶段集中执行,随后才允许调用下游的加密接口服务。 问题 Q-31b82ca9b144c843 (未决)由于载荷中未提及具体的错误处理、DET 报告或 DEM 事件,调用方必须预先确保指向配置的指针有效。相关需求在载荷中未作定义。

本使用说明由自动化系统生成,并完全基于关于 SWS_CryIf_91000 的规范数据。

实现者指南即将推出(复杂度 I1)

函数 CryIf_ProcessJob [SWS_CryIf_91003] 📄 PDF

Std_ReturnType CryIf_ProcessJob (uint32 channelId, Crypto_JobType* job);

Service CryIf_ProcessJob.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 7b2b73dd3704 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

通过头文件CryIf.h提供的函数CryIf_ProcessJob(服务 ID 0x03)将加密处理任务转发给相应配置的加密驱动对象[SWS_CryIf_91003]。它接受加密通道标识符(channelId)以及指向任务配置的指针(job)作为参数[SWS_CryIf_91003]。结构体job包含对用户以及特定加密原语重要的所有信息[SWS_CryIf_91003]。任务处理根据配置以同步或异步方式进行;此外,该接口被实现为可重入[SWS_CryIf_91003]。

在正确接收时,函数返回E_OK [SWS_CryIf_91003]。如果请求失败,返回值将指示E_NOT_OK或驱动程序的特定错误状态:CRYPTO_E_BUSY(驱动对象忙)、CRYPTO_E_QUEUE_FULL(队列已满)、关于密钥状态的错误例如CRYPTO_E_KEY_NOT_VALID、CRYPTO_E_KEY_SIZE_MISMATCH、CRYPTO_E_KEY_NOT_AVAILABLE、CRYPTO_E_KEY_EMPTY、CRYPTO_E_KEY_READ_FAIL或CRYPTO_E_KEY_WRITE_FAIL,以及在同步任务中止时的CRYPTO_E_JOB_CANCELED和CRYPTO_E_ENTROPY_EXHAUSTED [SWS_CryIf_91003]。

此外,该接口还对密钥标识符执行预检查:

  • 如果job->jobPrimitiveInfo->primitiveInfo->service设置为CRYPTO_KEYSETVALID、CRYPTO_KEYSETINVALID、CRYPTO_RANDOMSEED、CRYPTO_KEYGENERATE、CRYPTO_KEYDERIVE、CRYPTO_KEYEXCHANGECALCPUBVAL或CRYPTO_KEYEXCHANGECALCSECRET,则job->cryIfKeyId必须位于有效值范围内[SWS_CryIf_00134]。否则,函数向 DET 报告错误CRYPTO_E_PARAM_HANDLE,并以E_NOT_OK中止[SWS_CryIf_00134]。
  • 如果请求服务CRYPTO_KEYDERIVE,则目标密钥标识符job->cryIfTargetKeyId还必须位于有效范围内;否则同样向 DET 报告CRYPTO_E_PARAM_HANDLE并返回E_NOT_OK [SWS_CryIf_00135]。

本文由 AI 生成,基于 AUTOSAR CP R20-11 规范。

函数 CryIf_CancelJob [SWS_CryIf_91014] 📄 PDF

Std_ReturnType CryIf_CancelJob (uint32 channelId, Crypto_JobType* job);

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

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: feb9ccdcc6c2 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 CryIf_CancelJob 用于将加密作业的中止请求转发给已配置的加密驱动程序对象 [SWS_CryIf_91014]。它提供了 Crypto Interface 的标准化接口,通过头文件 CryIf.h 进行声明,其服务 ID 为 0x0e [SWS_CryIf_91014]。

调用时必须传递目标通道的标识符以及作业的配置 [SWS_CryIf_91014]:

  • channelId(输入,uint32):保存相应加密通道的标识 [SWS_CryIf_91014]。
  • job(输入/输出,Crypto_JobType*):指向作业配置的指针,该配置包含具有用户相关和原语相关信息的结构体 [SWS_CryIf_91014]。

该执行以同步方式进行,并向调用方返回类型为 Std_ReturnType 的状态 [SWS_CryIf_91014]:

关于并发行为,CryIf_CancelJob 被指定为可重入(reentrant)[SWS_CryIf_91014]。这允许并行调用以取消作业,其中处理过程被阻塞式委托给底层驱动程序对象 [SWS_CryIf_91014]。

本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。

函数 CryIf_KeyElementSet [SWS_CryIf_91004] 📄 PDF

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

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

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: b1d8a6a46a48 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 CryIf_KeyElementSet(服务 ID 0x04)将设置密钥元素的请求转发至配置的加密驱动对象 [SWS_CryIf_91004]。函数声明通过头文件 CryIf.h 提供 [SWS_CryIf_91004]。

调用通过四个输入参数进行 [SWS_CryIf_91004]:

  • cryIfKeyId:标识需要更新其密钥元素的密钥的标识符。
  • keyElementId:标识需要设置的具体密钥元素的标识符。
  • keyPtr:指向包含拟作为元素载入的密钥数据的缓冲区的指针。
  • keyLength:以字节为单位指定要设置的密钥元素的长度。

该函数被指定为不可重入(Non Reentrant)[SWS_CryIf_91004]。因此,调用方必须确保调用不会在未经协调的情况下并发发生。

类型为 Std_ReturnType 的返回值指示转发或执行的结果 [SWS_CryIf_91004]:

  • E_OK:请求成功。
  • E_NOT_OK:请求失败。
  • CRYPTO_E_BUSY:关联的加密驱动对象当前正忙。
  • CRYPTO_E_KEY_WRITE_FAIL:对密钥元素的写访问被拒绝。
  • CRYPTO_E_KEY_NOT_AVAILABLE:请求的密钥不可用。
  • CRYPTO_E_KEY_SIZE_MISMATCH:密钥元素的大小与所提供数据的长度不匹配。

此使用说明由 AI 基于 AUTOSAR R20-11 规范生成。

实现者指南即将推出(复杂度 I1)

函数 CryIf_KeySetValid [SWS_CryIf_91005] 📄 PDF

Std_ReturnType CryIf_KeySetValid (uint32 cryIfKeyId);

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

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: f4147bfa82e2 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

同步接口 CryIf_KeySetValid(服务 ID 0x05)通过头文件 CryIf.h 提供,并将使密钥生效的请求转发至相应配置的加密驱动对象 [SWS_CryIf_91005]。作为唯一的参数,传入的标识符 cryIfKeyId 用于确定目标密钥,该密钥的密钥元素应被标记为有效 [SWS_CryIf_91005]。该函数不存在额外的输入/输出或输出参数 [SWS_CryIf_91005]。

返回值与错误处理

类型为 Std_ReturnType 的返回值向调用方通知驱动中转发和处理的结果 [SWS_CryIf_91005]:

  • E_OK:操作已成功转发至加密驱动对象并成功完成 [SWS_CryIf_91005]。
  • E_NOT_OK:请求的转发或执行失败 [SWS_CryIf_91005]。
  • CRYPTO_E_BUSY:由于负责的加密驱动对象当前正忙,无法执行该请求 [SWS_CryIf_91005]。

并发性与限制

该函数在规范中被明确指定为不可重入(Non Reentrant)[SWS_CryIf_91005]。因此,调用实例必须确保绝不并发或中断性地执行对 CryIf_KeySetValid 的调用,以可靠地防止转发至驱动对象时发生冲突。

本使用说明基于规范自动生成。

函数 CryIf_KeySetInvalid [SWS_CryIf_91021] 📄 PDF

Std_ReturnType CryIf_KeySetInvalid (uint32 cryIfKeyId);

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

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: de4f767c5cce 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步接口 CryIf_KeySetInvalid(服务 ID 0x14)将通过参数 cryIfKeyId 识别的密钥的状态设置为无效 [SWS_CryIf_91021]。该函数的声明通过头文件 CryIf.h 提供 [SWS_CryIf_91021]。

使用该函数适用以下参数及返回值 [SWS_CryIf_91021]:

  • 传入参数:通过类型为 uint32 的输入参数 cryIfKeyId 传递要使其失效的密钥标识符。不存在输入输出参数。
  • 返回值(Std_ReturnType):
    • E_OK:状态更改请求成功。
    • E_NOT_OK:请求失败。
    • CRYPTO_E_BUSY:执行失败,因为负责的 Crypto Driver Object 处于占用状态。

关于并发性和执行上下文,CryIf_KeySetInvalid 被指定为不可重入(Non Reentrant)[SWS_CryIf_91021]。因此,调用实体必须确保调用按顺序进行且不会相互重叠。如果出现返回值 CRYPTO_E_BUSY,则表示 Crypto Driver Object 被临时阻塞 [SWS_CryIf_91021];在这种情况下,调用方应负责稍后重试状态失效操作。 问题 Q-4377065d4d4eecab (未决)

该文本由 AI 生成,且完全基于 AUTOSAR R20-11 的规范数据。

实现者指南即将推出(复杂度 I1)

函数 CryIf_KeyGetStatus [SWS_CryIf_91012] 📄 PDF

Std_ReturnType CryIf_KeyGetStatus (uint32 cryIfKeyId, Crypto_KeyStatusType* keyStatusPtr);

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

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 5bef488620f3 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

用法与调用上下文

函数 CryIf_KeyGetStatus 用于在 Crypto Interface 内部同步查询加密密钥的状态 [SWS_CryIf_91012]。它可通过头文件 CryIf.h 使用,服务 ID 为 0x13 [SWS_CryIf_91012]。调用时会传递以下参数:

  • cryIfKeyId(输入):待确定状态的密钥的唯一标识符 [SWS_CryIf_91012]。
  • keyStatusPtr(输出):指向 Crypto_KeyStatusType 类型变量的指针,密钥状态将写入该变量 [SWS_CryIf_91012]。

错误处理与返回值

类型为 Std_ReturnType 的返回值指示执行结果 [SWS_CryIf_91012]:

元素规范中未列出特定的错误代码、DET 报告或 DEM 事件;调用方的错误处理主要依赖于对返回值的评估。

并发性与限制

该函数被指定为不可重入(Non Reentrant)[SWS_CryIf_91012]。因此,调用方必须确保不会对相同或不同的密钥实例发生并发或中断调用。此外,调用方可能需要为输出指针 keyStatusPtr 提供有效的内存区域,因为该函数会直接对其进行写入。 问题 Q-da3a034d4f2e9442 (未决)

本段文本由人工智能基于 AUTOSAR 规范 R20-11 生成。

实现者指南即将推出(复杂度 I1)

函数 CryIf_KeyElementGet [SWS_CryIf_91006] 📄 PDF

Std_ReturnType CryIf_KeyElementGet (uint32 cryIfKeyId, uint32 keyElementId, uint8* resultPtr, uint32* resultLengthPtr);

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

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: ab8ed66ea380 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 CryIf_KeyElementGet 将对密钥元素的查询转发至配置的 Crypto Driver Object [SWS_CryIf_91006]。它通过头文件 CryIf.h 声明,并被指定为可重入 [SWS_CryIf_91006]。

用法与参数

在调用时,cryIfKeyId 标识相关密钥,keyElementId 标识要获取的密钥元素 [SWS_CryIf_91006]。有效载荷数据存放在缓冲区 resultPtr 中 [SWS_CryIf_91006]。指针 resultLengthPtr 用作长度控制的组合输入和输出参数 [SWS_CryIf_91006]:

  • 在执行前,调用方在其中传入 resultPtr 的可用缓冲区大小 [SWS_CryIf_91006]。
  • 如果密钥元素允许部分访问,则该值改为定义要获取的数据量,该数据量不必与缓冲区大小一致 [SWS_CryIf_91006]。
  • 操作完成后,函数会将实际写入的数据量存储在该存储位置 [SWS_CryIf_91006]。

错误处理与返回值

类型为 Std_ReturnType 的返回值指示成功或错误状态 [SWS_CryIf_91006]:

本使用说明是基于 AUTOSAR R20-11 的规范自动生成的。

实现者指南即将推出(复杂度 I1)

函数 CryIf_KeyElementCopy [SWS_CryIf_91015] 📄 PDF

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

Service CryIf_KeyElementCopy.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 98ca892724e4 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

根据 [SWS_CryIf_91015],同步函数 CryIf_KeyElementCopy 用于将密钥元素从源密钥复制到目标密钥。该服务可通过头文件 CryIf.h 使用。

调用时,通过输入参数传递源密钥(cryIfKeyId)、待复制的源元素(keyElementId)以及目标密钥(targetCryIfKeyId)和目标元素(targetKeyElementId)[SWS_CryIf_91015]。该函数设计为可重入,但明确不适用于同一个 cryIfKeyId [SWS_CryIf_91015]。合理的解释应当是,为了避免数据冲突,调用方还应对同一目标密钥(targetCryIfKeyId)的并发写访问进行同步。 问题 Q-cba3554c537dd498 (未决)

Std_ReturnType 类型的返回值指示操作的结果 [SWS_CryIf_91015]:

  • E_OK:复制过程成功。
  • E_NOT_OK:请求失败。
  • CRYPTO_E_BUSY:关联的 Crypto Driver Object 正忙。
  • CRYPTO_E_KEY_NOT_AVAILABLE:请求的密钥元素不可用。
  • CRYPTO_E_KEY_READ_FAIL:读取源密钥元素是不允许的。
  • CRYPTO_E_KEY_WRITE_FAIL:不允许写入目标密钥元素。
  • CRYPTO_E_KEY_SIZE_MISMATCH:所涉及密钥元素的大小不兼容。
  • CRYPTO_E_KEY_EMPTY:源密钥元素未初始化。

此使用说明基于 AUTOSAR R20-11 自动生成。

实现者指南即将推出(复杂度 I1)

函数 CryIf_KeyElementCopyPartial [SWS_CryIf_91018] 📄 PDF

Std_ReturnType CryIf_KeyElementCopyPartial (uint32 cryIfKeyId, uint32 keyElementId, uint32 keyElementSourceOffset, uint32 keyElementTargetOffset, uint32 keyElementCopyLength, uint32 targetCryIfKeyId, uint32 targetKeyElementId);

Service CryIf_KeyElementCopyPartial.

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 1703918a24fa 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

通过头文件 CryIf.h 提供的同步函数 CryIf_KeyElementCopyPartial 将某个密钥元素的部分区域复制到另一个密钥元素中 [SWS_CryIf_91018]。源密钥和目标密钥以及各自的元素通过参数 cryIfKeyId、keyElementId、targetCryIfKeyId 和 targetKeyElementId 指定 [SWS_CryIf_91018]。两个元素内的起始位置由 keyElementSourceOffset 和 keyElementTargetOffset 确定,而 keyElementCopyLength 决定要传输的确切字节数 [SWS_CryIf_91018]。

关于并发性,该例程设计为可重入,但明确指出对于相同的源密钥(cryIfKeyId)不可重入 [SWS_CryIf_91018]。因此,使用相同源密钥 ID 的并行调用必须由调用方进行同步或予以避免。

返回值报告同步请求的详细执行状态 [SWS_CryIf_91018]:

  • E_OK:复制过程已成功执行。
  • E_NOT_OK:请求失败。
  • CRYPTO_E_BUSY:负责的 Crypto Driver Object 正忙。
  • CRYPTO_E_KEY_NOT_AVAILABLE:所请求的源或目标密钥元素不可用。
  • CRYPTO_E_KEY_READ_FAIL:读取源密钥元素是不允许的。
  • CRYPTO_E_KEY_WRITE_FAIL:不允许写入目标密钥元素。
  • CRYPTO_E_KEY_SIZE_MISMATCH:元素大小或者偏移量和长度指定不兼容。
  • CRYPTO_E_KEY_EMPTY:源密钥元素未初始化。

本使用说明是基于 AUTOSAR R20-11 的规范自动生成的。

实现者指南即将推出(复杂度 I1)

函数 CryIf_KeyCopy [SWS_CryIf_91016] 📄 PDF

Std_ReturnType CryIf_KeyCopy (uint32 cryIfKeyId, uint32 targetCryIfKeyId);

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

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: e2c4b04b20c3 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

同步函数 CryIf_KeyCopy 将所有密钥元素从源密钥复制到指定的目标密钥([SWS_CryIf_91016])。它通过头文件 CryIf.h 提供,且具备服务 ID 0x10([SWS_CryIf_91016])。

该函数需要两个输入参数([SWS_CryIf_91016]):

  • cryIfKeyId:密钥元素用作源的密钥标识符。
  • targetCryIfKeyId:接收密钥元素作为目标的密钥标识符。

并发性与限制

该接口被指定为可重入,但不得针对相同的源密钥标识符(cryIfKeyId)同时调用([SWS_CryIf_91016])。

错误处理

类型为 Std_ReturnType 的返回值指示操作结果([SWS_CryIf_91016]):

  • E_OK:复制过程已成功完成。
  • E_NOT_OK:请求失败。
  • CRYPTO_E_BUSY:失败,因为底层的 Crypto-Driver-Objekt 正忙。
  • CRYPTO_E_KEY_NOT_AVAILABLE:请求的密钥元素不可用。
  • CRYPTO_E_KEY_READ_FAIL:不允许读取该密钥元素。
  • CRYPTO_E_KEY_WRITE_FAIL:写入目标密钥元素是不允许的。
  • CRYPTO_E_KEY_SIZE_MISMATCH:密钥元素的大小彼此不兼容。
  • CRYPTO_E_KEY_EMPTY:源密钥元素未初始化。

本使用说明基于规范自动生成。

函数 CryIf_RandomSeed [SWS_CryIf_91007] 📄 PDF

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

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

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: cb0539e3124c 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

函数 CryIf_RandomSeed 用于将随机种子(Random Seed)的生成或馈入转发给配置的加密驱动对象 [SWS_CryIf_91007]。该函数可通过头文件 CryIf.h 获取,其服务 ID 为 0x07 [SWS_CryIf_91007]。

该接口需要三个输入参数 [SWS_CryIf_91007]:

  • cryIfKeyId:要为其生成新种子的密钥的标识符。
  • seedPtr:指向包含用于馈入种子的数据的内存区域的指针。
  • seedLength:种子的字节长度。

执行行为(同步或异步)并非固定指定,而是取决于各自的配置 [SWS_CryIf_91007]。在并发性方面,该函数被指定为可重入 [SWS_CryIf_91007]。

作为返回值,该函数提供一个 Std_ReturnType,具有以下状态值 [SWS_CryIf_91007]:

  • E_OK:请求成功。
  • E_NOT_OK:请求失败。
  • CRYPTO_E_KEY_NOT_VALID:请求失败,因为该密钥的密钥状态为“invalid”。

Interpretation:在返回 CRYPTO_E_KEY_NOT_VALID 时,校验可能针对所传入的密钥 cryIfKeyId,尽管规范文本中有差异地提到了 cryptoKeyId [SWS_CryIf_91007]。 问题 Q-22b20256f21f131b (未决)

本文由 AI 生成,基于 AUTOSAR CP R20-11 规范。

函数 CryIf_KeyGenerate [SWS_CryIf_91008] 📄 PDF

Std_ReturnType CryIf_KeyGenerate (uint32 cryIfKeyId);

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

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: d582a843edfa 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

函数 CryIf_KeyGenerate 将用于密钥生成的函数调用转发至配置的 Crypto-Driver-Objekt [SWS_CryIf_91008]。通过输入参数 cryIfKeyId 传递密钥的唯一标识符,该密钥将使用新生成的密钥值进行更新 [SWS_CryIf_91008]。该接口的声明通过头文件 CryIf.h 提供 [SWS_CryIf_91008]。

同步行为与并发性

执行根据底层配置以同步或异步方式进行 [SWS_CryIf_91008]。关于调用上下文和并发性,该函数被指定为可重入 [SWS_CryIf_91008]。

返回值与错误处理

调用返回类型为 Std_ReturnType 的状态值 [SWS_CryIf_91008]:

  • E_OK:密钥生成请求已成功执行 [SWS_CryIf_91008]。
  • E_NOT_OK:请求失败 [SWS_CryIf_91008]。
  • CRYPTO_E_BUSY:请求失败,因为所寻址的 Crypto-Driver-Objekt 当前正忙 [SWS_CryIf_91008]。
  • CRYPTO_E_KEY_EMPTY:请求失败,因为所需的源密钥元素未初始化 [SWS_CryIf_91008]。
  • CRYPTO_E_KEY_NOT_VALID:请求失败,因为由密钥标识符引用的密钥状态无效 [SWS_CryIf_91008]。

此使用说明基于 AUTOSAR Release R20-11 的规范自动生成。

函数 CryIf_KeyDerive [SWS_CryIf_91009] 📄 PDF

Std_ReturnType CryIf_KeyDerive (uint32 cryIfKeyId, uint32 targetCryIfKeyId);

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

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: e0c725352dab 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

使用

函数CryIf_KeyDerive用于将密钥派生请求同步转发给相应配置的 Crypto Driver Object [SWS_CryIf_91009]。该接口通过头文件CryIf.h以服务 ID 0x09进行声明[SWS_CryIf_91009]。

调用时会传入两个密钥标识符[SWS_CryIf_91009]:

  • cryIfKeyId:用作派生基础的密钥标识符。
  • targetCryIfKeyId:存放派生密钥的密钥标识符。

错误处理与返回值

操作结果通过返回类型Std_ReturnType传递[SWS_CryIf_91009]:

并发性与边界条件

该接口被指定为可重入(reentrant)[SWS_CryIf_91009]。由于该流程同步执行,调用方可能需要在各自的调用上下文中考虑驱动程序的执行时间。 问题 Q-2b2fd50249878177 (未决)

本使用说明基于 AUTOSAR 规范 R20-11 自动生成。

函数 CryIf_KeyExchangeCalcPubVal [SWS_CryIf_91010] 📄 PDF

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

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

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 5f03ab0336af 来源
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步且可重入的函数 CryIf_KeyExchangeCalcPubVal 将计算密钥交换公钥值的操作转发至配置的 Crypto-Driver-Objekt [SWS_CryIf_91010]。该服务可通过头文件 CryIf.h 获取 [SWS_CryIf_91010]。

在函数调用时处理以下参数 [SWS_CryIf_91010]:

  • cryIfKeyId:用于密钥交换协议的密钥标识符。
  • publicValuePtr:指向用于存放计算出的公钥值的内存区域的指针。
  • publicValueLengthPtr:指向长度信息的指针。调用时该参数必须包含所提供的缓冲区大小;完成后它存储计算值的实际长度。

该函数返回类型为 Std_ReturnType 的状态 [SWS_CryIf_91010]:

  • E_OK:请求成功。
  • E_NOT_OK:请求失败。
  • CRYPTO_E_BUSY:错误,因为负责的 Crypto-Driver-Objekt 正忙。
  • CRYPTO_E_KEY_EMPTY:由于源密钥元素未初始化而导致的错误。
  • CRYPTO_E_KEY_NOT_VALID:错误,因为寻址的密钥处于无效状态。

本段文本由 AI 辅助系统生成,完全基于来自 AUTOSAR R20-11 的规范数据。

函数 CryIf_KeyExchangeCalcSecret [SWS_CryIf_91011] 📄 PDF

Std_ReturnType CryIf_KeyExchangeCalcSecret (uint32 cryIfKeyId, const uint8* partnerPublicValuePtr, uint32 partnerPublicValueLength);

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

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: ecfeb27c89f0 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

同步函数 CryIf_KeyExchangeCalcSecret 将密钥交换中共享秘密的计算转发至配置的 Crypto-Driver-Objekt [SWS_CryIf_91011]。向该服务传递密钥的标识符(cryIfKeyId)、指向通信伙伴公钥值的指针(partnerPublicValuePtr)以及其以字节为单位的长度(partnerPublicValueLength)[SWS_CryIf_91011]。

错误处理:该函数通过 Std_ReturnType 返回结果 [SWS_CryIf_91011]:

并发性:该接口被指定为可重入 [SWS_CryIf_91011]。由于该流程以同步方式执行,调用通常可能在任务上下文中进行。 问题 Q-b3bca3645b0ef468 (未决)该服务通过头文件 CryIf.h 提供 [SWS_CryIf_91011]。

本使用说明基于 AUTOSAR R20-11 的规范自动生成。

函数 CryIf_CallbackNotification [SWS_CryIf_91013] 📄 PDF

void CryIf_CallbackNotification (Crypto_JobType* job, Crypto_ResultType result);

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

AI 生成 未审核 模型: gemini-3.8-flash-medium · 推理强度: medium · 温度: 不可控 · 提示词: 781636a3f50e 来源 未决问题(1)
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

根据 [SWS_CryIf_91013],函数 CryIf_CallbackNotification 用于通知 Crypto Interface (CryIf) 加密操作的完成情况及其结果。该声明可通过头文件 CryIf.h 获取,其服务 ID 为 0x0d [SWS_CryIf_91013]。

该调用以同步方式进行,并处理两个必选输入参数 [SWS_CryIf_91013]:

  • job(输入,Crypto_JobType*):指向已完成作业的信息结构体,并包含用于关联已终止作业的回调 ID [SWS_CryIf_91013]。
  • result(输入,Crypto_ResultType):传递已执行加密操作的结果 [SWS_CryIf_91013]。

未为此服务定义特定的错误代码或错误消息(DET/DEM);功能性错误检查通过参数 result 进行,该参数反映操作的成功或错误状态 [SWS_CryIf_91013]。

关于并发性,根据 [SWS_CryIf_91013],该函数被指定为不可重入(Non Reentrant),且没有返回值(void)。因此,调用方必须确保调用按顺序进行,并且不会发生嵌套或并行执行。Interpretation:该通知通常由底层加密驱动程序调用,以将异步处理的加密作业的结果返回给 Crypto Interface。 问题 Q-ae17af188a970e00 (未决)

本使用说明是基于 AUTOSAR R20-11 的规范自动生成的。

Request a governed re-review of this record. The record is not changed immediately.

Record
AUTOSAR/AP/record/CP_MOD_CryIf
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_CryIf@rel:R20-11#654851f5
Content hash
654851f5
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_CryptoInterface.pdf#nameddest=SWS_CryIf_91000

初始化与状态

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);

服务 · KeyElement…

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);

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);

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);

服务 · Key…

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

Std_ReturnType CryIf_KeyCopy (uint32 cryIfKeyId, uint32 targetCryIfKeyId);

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

Std_ReturnType CryIf_KeyDerive (uint32 cryIfKeyId, uint32 targetCryIfKeyId);

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);

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

Std_ReturnType CryIf_KeyGenerate (uint32 cryIfKeyId);

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

Std_ReturnType CryIf_KeyGetStatus (uint32 cryIfKeyId, Crypto_KeyStatusType* keyStatusPtr);

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

Std_ReturnType CryIf_KeySetInvalid (uint32 cryIfKeyId);

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

Std_ReturnType CryIf_KeySetValid (uint32 cryIfKeyId);

服务 · 其他

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);

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

Std_ReturnType CryIf_CancelJob (uint32 channelId, Crypto_JobType* job);

Service CryIf_ProcessJob.

Std_ReturnType CryIf_ProcessJob (uint32 channelId, Crypto_JobType* job);

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