DEENESPTFRRUARHIKOZHNL

Key Manager (KeyM)

ModulKeyM (Key Manager)
BSW-Modul-ID109
Standard-Header#include "KeyM.h"
SWS-SpezifikationAUTOSAR_SWS_KeyManager.pdf
ClusterSecurity & Intrusion Detection

模块指南人工智能生成

管理 ECU 的密钥和证书:证书链的更新、解析和校验。
AI 生成 未审核 模型: claude-opus-5-5 · 推理强度: high · 温度: 不可控 · 提示词: a0c67f50ff24 来源 未决问题(2)
因果锚点:R20-11 自 R20-11 起有效 为此规范版本重新合成。
译自德文指南gemini-3.8-flash-low · 2026-10-13 · 德文原文

管理 ECU 的密钥和证书:证书链的更新、解析和校验。

Key Manager 在 AUTOSAR 加密栈中管理 ECU 的密钥材料和证书,并为此依托于 CSM。Crypto-Key 子模块在来自 KeyM_Start、KeyM_Prepare、KeyM_Update 和 KeyM_Finalize 的可选会话中接收密钥;可以集成特定于制造商的 Key Handler。证书子模块存储证书、解析证书并针对配置的证书链异步校验它们;回调 [SWS_KeyM_00153] 报告其结果。证书仅在校验无误后才生效,并且只有在此之后其公钥才会在 CSM 中启用 [SWS_KeyM_00170]。

Key Manager 在加密栈中管理 ECU 的密钥材料和证书。为此它包含两个子模块:Crypto-Key 子模块从车辆中或后端的 Key Master 接收密钥,主要通过诊断命令接收。证书子模块存储证书、解析证书并针对其证书链进行校验(SWS KeyM 第24页)。向下,KeyM 使用 CSM,强制要求实现 Csm_KeyElementGet、Csm_KeyElementSet 和 Csm_KeySetValid [SWS_KeyM_00076]。

密钥操作可以采用类似会话的方式进行(SWS KeyM 第25页)。KeyM_Start() 开启会话,KeyM_Prepare() 同步提供用于 Key Server 的数据,而 KeyM_Finalize() 关闭会话。KeyM_Update() 异步运行并通过 KeyM_CryptoKeyUpdateCallbackNotification() 给出返回反馈([SWS_KeyM_00052],[SWS_KeyM_00077])。可选地,由 Key Handler 承担特定于制造商的步骤。在此过程中,KeyM_KH_Update() 会被持续调用,直到其报告 KEYM_KH_UPDATE_FINISH([SWS_KeyM_00092],[SWS_KeyM_00096])。

带有可选 Key Handler 的密钥会话Applikation / Key MasterKeyMKeyHandlerCsmUse Case: 打开会话KeyM_Start(StartType, RequestData, …)optKeyMCryptoKeyHandlerStartFinalizeEnabled = TRUEKeyM_KH_Start(gleiche Parameter)返回值Std_ReturnTypeUse Case: Vorbereiten (synchron)KeyM_Prepare(RequestData, …)optKeyMCryptoKeyPrepareFunctionEnabled 且 KeyMCryptoKeyHandlerPrepareEnabled = TRUEKeyM_KH_Prepare(…)ResponseDataResponseData, Std_ReturnTypeUse Case: Aktualisieren (asynchron)KeyM_Update(KeyNamePtr, RequestDataPtr,ResultDataPtr, …)E_OK (angenommen)在后台继续处理,例如来自 KeyM_MainBackgroundFunction()optKeyMCryptoKeyHandlerUpdateEnabled = TRUEKeyM_KH_Update(…) (ggf. wiederholt)UpdateOperation, KeymId, ResultDataCsm_KeyElementSet() 或 Csm_KeyDerive()Csm_KeySetValid()KeyM_CryptoKeyUpdateCallbackNotification(Result, …)Use Case: 关闭会话(异步)KeyM_Finalize(RequestDataPtr, …)optKeyMCryptoKeyHandlerStartFinalizeEnabled = TRUEKeyM_KH_Finalize(…)返回值E_OK (angenommen)optKeyMCryptoKeyStartFinalizeFunctionEnabled = TRUEKeyM_CryptoKeyFinalizeCallbackNotification(Result, …)

时序图:会话从 Start 经过 Prepare 以及异步的 Update 一直运行到 Finalize,并带有可选的 Key Handler 和结果回调。来源:SWS KeyM 第25页、[SWS_KeyM_00052]、[SWS_KeyM_00079]

证书通过两种途径引入。持久性引入通过 KeyM_ServiceCertificate() 进行,由 Key Master 触发 [SWS_KeyM_00021]。临时性引入则是由调用方使用 KeyM_SetCertificate() 传递证书进行校验 [SWS_KeyM_00057]。每个证书都根据 KeyM_CertificateStatusType 维护一个状态 [SWS_KeyM_91003]。只有在校验无误后它才会变为 KEYM_CERTIFICATE_VALID,并且只有在此之后其公钥才会在 CSM 中启用 [SWS_KeyM_00170]。

zertstatus start 开始 na KEYM_CERTIFICATE_NOT_AVAILABLE start->na KeyM_Init() np KEYM_CERTIFICATE_NOT_PARSED (transient) na->np KeyM_SetCertificate(长度 ≠ 0)、 KeyM_ServiceCertificate()、 启动时加载 pnv KEYM_CERTIFICATE_PARSED_NOT_VALIDATED np->pnv Parsing erfolgreich ep Parsing-Fehler: KEYM_E_CERTIFICATE_INVALID_FORMAT, KEYM_E_CERTIFICATE_INVALID_TYPE, KEYM_E_CERTIFICATE_INVALID_CONTENT (Zuordnung angenommen) np->ep Parsing fehlgeschlagen pnv->na KeyM_SetCertificate(长度 = 0) valid KEYM_CERTIFICATE_VALID pnv->valid 检查成功, Csm_KeySetValid() ev 检查错误: KEYM_E_CERTIFICATE_VALIDITY_PERIOD_FAIL、 KEYM_E_CERTIFICATE_SIGNATURE_FAIL、 KEYM_E_CERTIFICATE_INVALID_CHAIN_OF_TRUST、 KEYM_E_CERTIFICATE_REVOKED(归属假定) pnv->ev 检查失败 valid->na KeyM_SetCertificate(长度 = 0) ep->na KeyM_SetCertificate(长度 = 0) ev->na KeyM_SetCertificate(长度 = 0)

状态图:证书从 NOT_AVAILABLE 经过解析进入 PARSED_NOT_VALIDATED,校验后进入 VALID 或进入错误状态;长度为 0 的复位将使其返回。对 INVALID_CONTENT 和 REVOKED 的分配属于一种解释。来源:SWS KeyM 第24页、[SWS_KeyM_91003]

校验通过 KeyM_VerifyCertificate()、KeyM_VerifyCertificates() 或 KeyM_VerifyCertificateChain() 异步进行。可配置的回调 [SWS_KeyM_00153] 报告其结果。通过 KeyM_CertElementGet() 读取单个内容;迭代器 [SWS_KeyM_00064] 遍历多次分配的元素。KeyM 通过三种途径报告错误:作为开发错误(例如 KEYM_E_UNINIT [SWS_KeyM_00036])、作为回调 [SWS_KeyM_91008] 中的 KeyM_ResultType,以及在链校验失败时额外作为安全事件 [SWS_KeyM_00172]。

在加密栈中的角色:位于 CSM 之上的密钥和证书管理

Key Manager (KeyM) 是 AUTOSAR 加密栈中的一个服务模块,由两个子模块组成。Crypto-Key 子模块初始化、更新和维护 ECU 的密钥材料。证书子模块存储证书、解析证书并针对其证书链进行校验(SWS KeyM 第23页,SWS KeyM 第28页)。Crypto-Key 子模块的一个典型用例是将用于安全车载通信的密钥分发给 CSM 密钥。数据由位于车辆中或后端中的 Key Master 提供;通信主要通过诊断命令进行(SWS KeyM 第24页)。

向下,KeyM 依托于 CSM。[SWS_KeyM_00076] 指出的强制接口为 Csm_KeyElementGet、Csm_KeyElementSet 和 Csm_KeySetValid。此外,[SWS_KeyM_00078] 列出了 Csm_KeyDerive、Csm_SignatureVerify、Det_ReportError 和 IdsM_SetSecurityEvent。对于时间有效性校验,KeyM 导入 StbM 的类型 [SWS_KeyM_00037]。向上,KeyM 针对证书、证书元素和加密密钥提供 C API 和 RTE 服务接口([SWS_KeyM_00082],[SWS_KeyM_00083],[SWS_KeyM_00084])。特定于制造商的逻辑通过可配置的 Key Handler 函数集成,例如通过 KeyM_KH_Start() [SWS_KeyM_00067]。

kontext cluster_keym KeyM master Key Master / Key Server (例如通过诊断) ck Crypto-Key-Submodul master->ck KeyM_Start / KeyM_Prepare / KeyM_Update / KeyM_Finalize cert Zertifikats-Submodul master->cert KeyM_ServiceCertificate() nutzer SW-C / BSW-Nutzer (z. B. Dcm, TcpIp) nutzer->cert KeyM_SetCertificate(), KeyM_Verify*(), KeyM_CertElementGet*(), KeyM_GetCertificate() ck->master KeyM_CryptoKey*CallbackNotification() kh Key Handler (KeyM_KH_*) ck->kh optionale Key-Handler-Aufrufe csm Csm ck->csm Csm_KeyElementSet(), Csm_KeyDerive(), Csm_KeySetValid() det Det ck->det Det_ReportError() cert->master KeyM_ServiceCertificateCallbackNotification() cert->nutzer KeyM_CertificateVerifyCallbackNotification() cert->kh KeyM_KH_ServiceCertificate() (optional) cert->csm Csm_SignatureVerify(), Csm_KeySetValid() stbm StbM cert->stbm 用于有效性检查的 当前时间 nvm NvM cert->nvm persistente Zertifikate (optional) idsm IdsM cert->idsm IdsM_SetSecurityEvent()

上下文图:KeyM 在 Key Master 或用户、可选的 Key Handler 以及服务 CSM、StbM、NvM、IdsM 和 DET 之间进行中介协调。来源:SWS KeyM 第23页、[SWS_KeyM_00076]、[SWS_KeyM_00078]、[SWS_KeyM_00037]、SWS KeyM 第119页

初始化、调度和安全拆除

KeyM_Init() 初始化模块 [SWS_KeyM_00043]。KeyM_ConfigType 的内容取决于具体实现 [SWS_KeyM_00157],并且配置指针应始终为 NULL_PTR [SWS_KeyM_00158]。初始化后,所有证书的状态均为 KEYM_CERTIFICATE_NOT_AVAILABLE(SWS KeyM 第34页)。KeyM_Deinit() 将模块重置为未初始化状态 [SWS_KeyM_00047]。相应的文档位置还要求 Crypto-Key 子模块主动覆盖 RAM 中的密钥材料和中间结果(SWS KeyM 第49页)。

在运行期间,KeyM_MainFunction() 按配置的周期被周期性调用 [SWS_KeyM_00074]。KeyM_MainBackgroundFunction() 在抢占式操作系统没有其他任务时运行。它可以调用耗时的同步函数,例如 KeyM_KH_Update() [SWS_KeyM_00075]。该周期是容器 KeyMGeneral 的一个参数(SWS KeyM 第131页)。KeyM_GetVersionInfo() 提供版本信息 [SWS_KeyM_00049]。

密钥会话:从 KeyM_Start 到 KeyM_Finalize

密钥操作可以配置为类似会话的方式。KeyM_Start() 开启会话。此后 KeyM 接收 KeyM_Prepare() 和 KeyM_Update(),直到 KeyM_Finalize() 关闭会话(SWS KeyM 第25页)。KeyM_StartType 区分 OEM 生产模式和车间售后模式;生产模式拥有更高的权限 [SWS_KeyM_00038]。默认情况下,KeyM_Start() 不评估任何输入数据。如果设置了 KeyMCryptoKeyHandlerStartFinalizeEnabled,它会使用相同的参数调用 KeyM_KH_Start() 并接管其返回值,例如用于 OEM 特定的签名校验([SWS_KeyM_00050],[SWS_KeyM_00067])。

会话的各个步骤:

在会话之外,KeyM_Verify()以同步或异步方式验证密钥[SWS_KeyM_00054]。当 KeyMCryptoKeyVerifyAsyncMode = TRUE 时,结果通过 KeyM_CryptoKeyVerifyCallbackNotification() 返回([SWS_KeyM_00081]、[SWS_KeyM_00151])。可以通过 KeyM_KH_Verify() 集成 Key Handler [SWS_KeyM_00071]。

带有可选 Key Handler 的密钥会话Applikation / Key MasterKeyMKeyHandlerCsmUse Case: 打开会话KeyM_Start(StartType, RequestData, …)optKeyMCryptoKeyHandlerStartFinalizeEnabled = TRUEKeyM_KH_Start(gleiche Parameter)返回值Std_ReturnTypeUse Case: Vorbereiten (synchron)KeyM_Prepare(RequestData, …)optKeyMCryptoKeyPrepareFunctionEnabled 且 KeyMCryptoKeyHandlerPrepareEnabled = TRUEKeyM_KH_Prepare(…)ResponseDataResponseData, Std_ReturnTypeUse Case: Aktualisieren (asynchron)KeyM_Update(KeyNamePtr, RequestDataPtr,ResultDataPtr, …)E_OK (angenommen)在后台继续处理,例如来自 KeyM_MainBackgroundFunction()optKeyMCryptoKeyHandlerUpdateEnabled = TRUEKeyM_KH_Update(…) (ggf. wiederholt)UpdateOperation, KeymId, ResultDataCsm_KeyElementSet() 或 Csm_KeyDerive()Csm_KeySetValid()KeyM_CryptoKeyUpdateCallbackNotification(Result, …)Use Case: 关闭会话(异步)KeyM_Finalize(RequestDataPtr, …)optKeyMCryptoKeyHandlerStartFinalizeEnabled = TRUEKeyM_KH_Finalize(…)返回值E_OK (angenommen)optKeyMCryptoKeyStartFinalizeFunctionEnabled = TRUEKeyM_CryptoKeyFinalizeCallbackNotification(Result, …)

时序图:会话从 Start 经 Prepare 以及异步 Update 运行至 Finalize;Key Handler 是可选的,结果通过回调返回。来源:SWS KeyM 第25页、SWS KeyM 第116页、[SWS_KeyM_00052]、[SWS_KeyM_00075]、[SWS_KeyM_00079]

KeyM_Update 详解:密钥选择与 Key Handler 循环

首先,KeyM 确定目标密钥:

  • KeyM 使用密钥名称查找具有匹配 KeyMCryptoKeyName 的 KeyMCryptoKey 容器[SWS_KeyM_00091]。
  • 在没有有效名称且定义了 KeyMCryptoKeyCryptoProps 的情况下,KeyM 将 RequestData 解释为 SHE 值 M1M2M3,并比对位 121..124 [SWS_KeyM_00154]。
  • 如果无法确定 KeyID 且没有激活 Update-Key-Handler,则调用以 KEYM_E_PARAMETER_MISMATCH 结束[SWS_KeyM_00155]。

在配置了 KeyMCryptoKeyHandlerUpdateEnabled 的情况下,KeyM_Update()调用函数 KeyM_KH_Update()。它传递请求数据、名称以及找到的 KeymId,否则传递 0xFFFFFFFFul [SWS_KeyM_00092]。为此,KeyM 提供一个内部缓冲区,在 Handler 返回之前不对其进行修改[SWS_KeyM_00097]。Handler 的反馈控制后续流程[SWS_KeyM_00055]:

  • 带数据的 KEYM_KH_UPDATE_KEY_UPDATE_REPEAT:KeyM 将密钥存储在 CSM 中或在其中派生密钥,并再次调用 Handler [SWS_KeyM_00096]。
  • KEYM_KH_UPDATE_FINISH:KeyM 复制结果数据并触发更新回调[SWS_KeyM_00093]。

KeyM 是存储还是派生,由 KeyMCryptoKeyGenerationType 确定,其取值为 KEYM_STORED_KEY 或 KEYM_DERIVED_KEY(SWS KeyM 第164页)。派生时,Csm_KeyDerive取代对 Csm_KeyElementSet 的调用(SWS KeyM 第118页)。在两种情况下,Csm_KeySetValid随后都会释放密钥(SWS KeyM 第116页)。

update start KeyM_Update() aufgerufen qname 是否指定了密钥名称 (KeyNameLength > 0)? start->qname suche 查找具有匹配 KeyMCryptoKeyName 的 KeyMCryptoKey qname->suche 是 qprops KeyMCryptoKeyCryptoProps definiert? qname->qprops 不 qkh KeyMCryptoKeyHandlerUpdateEnabled? suche->qkh she 将 RequestData 解释为 SHE M1M2M3, 根据 CryptoProps 检查位 121..124 qprops->she 是 qprops->qkh 不 she->qkh qid KeyID ermittelt? qkh->qid FALSE kh 带有 KeymId 的 KeyM_KH_Update() (否则为 0xFFFFFFFFul) qkh->kh TRUE fehler 返回 KEYM_E_PARAMETER_MISMATCH qid->fehler 不 direkt 根据 KeyMCryptoKey 在 Csm 中存储或派生密钥 qid->direkt 是 ende Ergebnisdaten kopieren, KeyM_CryptoKeyUpdateCallbackNotification() direkt->ende qop UpdateOperation? kh->qop csm 在 Csm 中存储 或派生密钥(配置) qop->csm KEYM_KH_UPDATE_KEY_UPDATE_REPEAT, 结果长度 > 0 qop->ende KEYM_KH_UPDATE_FINISH csm->kh 成功时再次调用

活动图:KeyM_Update 通过名称或 SHE 标识符选择密钥,在没有 KeyID 且没有 Key Handler 时中止,并重复调用 Key Handler 直至 KEYM_KH_UPDATE_FINISH。来源:[SWS_KeyM_00091]、[SWS_KeyM_00154]、[SWS_KeyM_00155]、[SWS_KeyM_00092]、[SWS_KeyM_00096]、[SWS_KeyM_00093]

证书:持久与临时存储、层级与状态

对于持久存储的证书,提供了 KeyM_ServiceCertificate()。当设置了 KeyMServiceCertificateFunctionEnabled 和 KeyMCertificateManagerEnabled 时,证书子模块提供该函数;它由 Key Master 调用[SWS_KeyM_00021]。KeyM_ServiceCertificateType区分以下服务[SWS_KeyM_00039]:

  • 请求 CSR 并返回已签名的 CSR,
  • 设置或更新根证书与中间证书,
  • 提供或更新 CRL。

该服务异步运行并通过 KeyM_ServiceCertificateCallbackNotification() 报告([SWS_KeyM_00056]、[SWS_KeyM_00149]、[SWS_KeyM_00152])。安装或更新根证书或中间证书的尝试被定义为安全事件([SWS_KeyM_00172]、SWS KeyM 第38页)。

通过 KeyM_ServiceCertificate 写入根证书或中间证书Key Master / ApplikationKeyMStbMCsmNvMIdsMKeyM_ServiceCertificate(KEYM_SERVICE_CERT_SET_ROOT或 KEYM_SERVICE_CERT_SET_INTERMEDIATE,…)E_OK (angenommen, asynchron)安装尝试属于安全事件:KEYM_SEV_INST_ROOT_CERT_OP 或 KEYM_SEV_INST_INTERMEDIATE_CERT_OPParsing查找 KeyMCertificateStbM_GetCurrentTime(…)aktuelle Zeit时间戳检查、Subject 检查VerifyingoptVerifikation erfolgreichalt为存储配置了 NvMZertifikat dauerhaft ablegen为存储配置了 CsmCsm_KeyElementSet(…)Csm_KeySetValid(…)KeyM_ServiceCertificateCallbackNotification(CertId, Result, …)

时序图:引入根证书或中间证书时,首先进行解析和验证;仅在验证成功后才存入 NvM 或 CSM,随后是服务回调。来源:SWS KeyM 第120页、[SWS_KeyM_00039]、[SWS_KeyM_00056]、[SWS_KeyM_00149]、[SWS_KeyM_00172]

与此相对,调用者通过 KeyM_SetCertificate() 临时传递出示的证书[SWS_KeyM_00057]。它存入配置的 KeyMCertificateStorage(通常在 RAM 中),并非用于持久保存(SWS KeyM 第31页)。数据在 KeyM_CertDataType 中连同长度和指针一起传递[SWS_KeyM_00041]。证书链本身是静态配置的。每个 KeyMCertificate 指向其上级证书,根证书指向其自身。此外,每个证书都引用一个 CSM 作业和一个 CSM 密钥以进行签名验证(SWS KeyM 第22页)。

pki cluster_keym KeyM (KeyMCertificate) cluster_csm CSM root Root-Zertifikat root->root UpperHierarchicalCertRef (selbstsigniert) job1 CsmJob1 root->job1 SignatureVerifyJobRef key1 CsmKey1 root->key1 SignatureVerifyKeyRef inter Zwischenzertifikat inter->root UpperHierarchicalCertRef job2 CsmJob2 inter->job2 SignatureVerifyJobRef key2 CsmKey2 inter->key2 SignatureVerifyKeyRef work Arbeitszertifikat work->inter UpperHierarchicalCertRef job3 CsmJob3 work->job3 SignatureVerifyJobRef key3 CsmKey3 work->key3 SignatureVerifyKeyRef

结构图:在三级证书链中,每个 KeyMCertificate 指向其上级证书(根证书指向自身),并指向用于签名验证的 CSM 作业和 CSM 密钥。来源:SWS KeyM 第22页、SWS KeyM 第31页、[SWS_KeyM_00170]

每个证书都有一个类型为 KeyM_CertificateStatusType 的状态[SWS_KeyM_91003],KeyM_CertGetStatus()对其进行查询[SWS_KeyM_00066]。生命周期:

  • 在 KeyM_Init() 之后,状态为 KEYM_CERTIFICATE_NOT_AVAILABLE。
  • certDataLength = 0 的 KeyM_SetCertificate() 会重置证书和状态(SWS KeyM 第34页)。
  • 已设置的数据经历解析(NOT_PARSED → PARSED_NOT_VALIDATED),随后进行验证(SWS KeyM 第24页)。
  • 仅在无错验证之后,KeyM 才通过 Csm_KeySetValid() 释放公钥并设置 KEYM_CERTIFICATE_VALID [SWS_KeyM_00170]。

解读:KEYM_E_CERTIFICATE_INVALID_CONTENT应属于解析错误,而 KEYM_E_CERTIFICATE_REVOKED 应属于验证错误。 问题 Q-5d110deddf2d912e (未决)这仅针对 INVALID_FORMAT 和 INVALID_TYPE 有明确证明(SWS KeyM 第33页)。

zertstatus start 开始 na KEYM_CERTIFICATE_NOT_AVAILABLE start->na KeyM_Init() np KEYM_CERTIFICATE_NOT_PARSED (transient) na->np KeyM_SetCertificate(长度 ≠ 0)、 KeyM_ServiceCertificate()、 启动时加载 pnv KEYM_CERTIFICATE_PARSED_NOT_VALIDATED np->pnv Parsing erfolgreich ep Parsing-Fehler: KEYM_E_CERTIFICATE_INVALID_FORMAT, KEYM_E_CERTIFICATE_INVALID_TYPE, KEYM_E_CERTIFICATE_INVALID_CONTENT (Zuordnung angenommen) np->ep Parsing fehlgeschlagen pnv->na KeyM_SetCertificate(长度 = 0) valid KEYM_CERTIFICATE_VALID pnv->valid 检查成功, Csm_KeySetValid() ev 检查错误: KEYM_E_CERTIFICATE_VALIDITY_PERIOD_FAIL、 KEYM_E_CERTIFICATE_SIGNATURE_FAIL、 KEYM_E_CERTIFICATE_INVALID_CHAIN_OF_TRUST、 KEYM_E_CERTIFICATE_REVOKED(归属假定) pnv->ev 检查失败 valid->na KeyM_SetCertificate(长度 = 0) ep->na KeyM_SetCertificate(长度 = 0) ev->na KeyM_SetCertificate(长度 = 0)

状态图:证书从 NOT_AVAILABLE 经解析进入 PARSED_NOT_VALIDATED,并在成功验证后进入 VALID;错误会导致进入错误状态,长度为 0 的重置会导致返回初始状态。INVALID_CONTENT 和 REVOKED 的归类属于一种解读。来源:SWS KeyM 第24页、[SWS_KeyM_91003]、[SWS_KeyM_00170]、SWS KeyM 第34页

证书验证与证书内容访问

对于验证,有三个异步、非重入的作业:

如果 KeyM 以 E_OK 接受了作业且配置了 KeyMCertificateVerifyCallbackNotificationFunc,则回调将结果报告为 KeyM_CertificateStatusType([SWS_KeyM_00153]、[SWS_KeyM_00073])。如果该函数为 NULL,则改为提供 Required Port KeyMCertificateNotification [SWS_KeyM_00161]。根据后续版本现有的 DCM 文档出处,DCM 使用此途径进行身份验证(SWS DCM 第147页、SWS DCM 第245页)。

设置并检查操作证书ApplikationKeyMNvMStbMCsmUse Case: 传递证书KeyM_SetCertificate(CertId, CertificateDataPtr)E_OKParsing:NOT_PARSED → PARSED_NOT_VALIDATEDKeyM_CertGetStatus(CertId)StatusUse Case: 检查(异步)KeyM_VerifyCertificate(CertId)E_OK (Auftrag angenommen)optZertifikat in NvM abgelegtNvM_ReadBlock(…)ZertifikatsdatenStbM_GetCurrentTime(…)aktuelle Zeit时间戳检查Subject 检查Csm_SignatureVerify(…)检查结果Csm_KeyElementSet(…)(公钥)Csm_KeySetValid(…)Status: KEYM_CERTIFICATE_VALIDKeyM_CertificateVerifyCallbackNotification(CertId, Result)KeyM_CertGetStatus(CertId)KEYM_CERTIFICATE_VALID

时序图:设置并解析工作证书;随后的验证使用 StbM 时间、Subject 验证和 CSM 签名验证,并以密钥释放和回调结束。来源:SWS KeyM 第119页、[SWS_KeyM_00057]、[SWS_KeyM_00060]、[SWS_KeyM_00170]、[SWS_KeyM_00153]

对于证书内容的访问,提供了多个函数:

通过迭代,DCM 从证书中读取白名单(SWS DCM 第155页)。

发生错误时的行为

在启用开发错误检测时,KeyM 在每次调用时检查:

其他开发错误包括 KEYM_E_INIT_FAILED 和 KEYM_E_CONFIG_FAILURE [SWS_KeyM_00036]。如果证书的存储类为 KEYM_STORAGE_IN_CSM 或 KEYM_STORAGE_IN_NVM,KeyM 报告 KEYM_E_CONFIG_FAILURE;在非开发模式下返回 E_NOT_OK [SWS_KeyM_00166]。解读:这大概涉及通过 KeyM_SetCertificate() 进行的临时存储途径,根据文档出处该途径是为 RAM 设计的(SWS KeyM 第31页)。 问题 Q-4308e537bf1d9e0b (未决)

运行时错误发生在三个层级:

  • 同步返回值使用诸如 KEYM_E_BUSY、KEYM_E_PENDING、KEYM_E_KEY_CERT_SIZE_MISMATCH 或 KEYM_E_PARAMETER_MISMATCH 等 KeyM 代码[SWS_KeyM_00040]。验证作业在接收时就拒绝空证书槽(KEYM_E_KEY_CERT_EMPTY)和无效的上级证书(KEYM_E_CERT_INVALID_CHAIN_OF_TRUST)([SWS_KeyM_00060]、SWS KeyM 第68页)。
  • 异步密钥与证书服务将它们的结果报告为 KeyM_ResultType,例如 KEYM_RT_KEY_CERT_WRITE_FAIL 或 KEYM_RT_CERT_INVALID_CHAIN_OF_TRUST [SWS_KeyM_91008]。
  • 验证结果带有诸如有效期限错误、签名错误或信任链错误等错误状态[SWS_KeyM_91003]。失败的证书链验证还会作为安全事件 KEYM_SEV_CERT_VERIF_FAILED 进行报告[SWS_KeyM_00172]。

进一步详细证据

基于有效载荷中所含 KeyM(Classic Platform,R20-11)规范摘录的 AI 生成模块指南。引用的需求具有规范性;来自其他版本的文档出处用于说明并已相应标明。解读在文本中进行了标记。

Key Manager (KeyM)

Manages lifecycle, storage, and distribution of cryptographic keys and certificates.

Funktionen — Übersicht

Typen — Übersicht

Funktionen & Typen — Detailansicht

函数 KeyM_Init [SWS_KeyM_00043] 📄 PDF

void KeyM_Init (const KeyM_ConfigType* ConfigPtr);

This function initializes the key management module.

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

函数 KeyM_Init 用于初始化密钥管理模块([SWS_KeyM_00043])。调用以同步方式进行,并定义为不可重入([SWS_KeyM_00043])。作为唯一的传入参数,期望传入 ConfigPtr,它表示指向 VARIANT-POST-BUILD 配置数据集的指针;该函数没有返回值([SWS_KeyM_00043])。

关于与其他模块函数的交互,KeyM_Init 是一项强制性的前置条件:在启用开发错误检测时,Key Manager 的所有其他函数都会检查该模块之前是否已通过 KeyM_Init 初始化且尚未通过 KeyM_Deinit 进行去初始化([SWS_KeyM_00144])。如果在未初始化状态下调用模块函数,Key Manager 将报告开发错误 KEYM_E_UNINIT([SWS_KeyM_00144])。

由于 KeyM_Init 被指定为不可重入([SWS_KeyM_00043]),因此在系统初始化阶段该函数只能执行一次,并且必须排除并发调用。成功执行后,该模块可通过头文件 KeyM.h 获取([SWS_KeyM_00043])。

本使用说明是基于 AUTOSAR 规范载荷自动创建的。

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

函数 KeyM_Deinit [SWS_KeyM_00047] 📄 PDF

void KeyM_Deinit (void);

This function resets the key management module to the uninitialized state.

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

函数 KeyM_Deinit 用于将模块 Key Manager 重新复位为未初始化状态 ([SWS_KeyM_00047])。

用法与调用上下文

对 KeyM_Deinit 的调用同步进行,并被指定为不可重入 (Non Reentrant)。该函数具有服务 ID 0x02,不接受任何参数,且不返回任何返回值 ([SWS_KeyM_00047])。

并发性与交互

由于其不可重入性,不得并发调用 KeyM_Deinit 自身,也不得在与正在运行的操作冲突的情况下调用它。执行此去初始化后,该模块处于未初始化状态。如果启用了开发错误,Key Manager 将在每次后续函数调用时检查该模块先前是否已通过 KeyM_Init() 初始化且尚未通过 KeyM_Deinit() 去初始化;否则将报告开发错误 KEYM_E_UNINIT ([SWS_KeyM_00144])。

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

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

函数 KeyM_Start [SWS_KeyM_00050] 📄 PDF

Std_ReturnType KeyM_Start (KeyM_StartType StartType, const uint8* RequestData, uint16 RequestDataLength, uint8* ResponseData, uint16* ResponseDataLength);

This function is optional and only used if the configuration item Key MCrypto Key Start Finalize Function Enabled is set to true. It intents to allow key update operation.

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

同步函数 KeyM_Start 用于允许在 Key Manager 中执行密钥更新操作([SWS_KeyM_00050])。它是可选的,仅当配置参数 KeyMCryptoKeyStartFinalizeFunctionEnabled 配置为 true 时才可用(AUTOSAR_SWS_KeyManager 第35页)。该函数通过 KeyM.h 提供,并通过 StartType 期望接收要执行的操作模式,并通过 Request Data 和 Request Data Length 期望接收附加请求数据(例如签名)。

响应数据通过输出缓冲区 Response Data 返回。参数 Response Data Length 在此用作输入和输出参数:在调用之前,它定义缓冲区中可用的最大字节数,执行后,它包含实际写入的数据长度([SWS_KeyM_00050])。

错误处理与返回值:

  • E_OK:启动操作成功执行;现在允许进行密钥更新。
  • E_NOT_OK:启动操作未被接受。
  • KEYM_E_PARAMETER_MISMATCH:传入参数与预期值不符。
  • KEYM_E_KEY_CERT_SIZE_MISMATCH:传入的参数大小与预期大小不符。

该函数被指定为不可重入(Non Reentrant)([SWS_KeyM_00050])。由于未描述模块内部锁,调用方可能必须确保协调、串行化的执行。 问题 Q-82276b712a8dd170 (未决)

本段文本基于 AUTOSAR R20-11 自动生成。

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

函数 KeyM_Prepare [SWS_KeyM_00051] 📄 PDF

Std_ReturnType KeyM_Prepare (const uint8* RequestData, uint16 RequestDataLength, uint8* ResponseData, uint16* ResponseDataLength);

This function is used to prepare a key update operation. The main intent is to provide information for the key operation to the key server. Other operations may start the negotiation for a common secret that is used further to derive key material. This function is only av ailable if Key MCrypto Key Prepare Function Enabled is set to TRUE.

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

同步函数 KeyM_Prepare 用于准备密钥更新操作(Key Update Operation),并将所需信息传输到密钥服务器,或发起用于密钥派生的共享密钥协商 [SWS_KeyM_00051]。该函数具有服务 ID 0x05,通过头文件 KeyM.h 声明,并且仅在配置参数 Key MCrypto Key Prepare Function Enabled 设置为 TRUE 时可用 [SWS_KeyM_00051]。

调用时必须传递以下缓冲区和长度规范 [SWS_KeyM_00051]:

  • Request Data 和 Request Data Length:请求的输入数据及其长度 [SWS_KeyM_00051]。
  • Response Data:指向用于接收输出数据的缓冲区的指针 [SWS_KeyM_00051]。
  • Response Data Length:输入/输出参数,在调用前指示最大可用缓冲区大小,在返回时包含实际写入的字节数 [SWS_KeyM_00051]。

若调用以 E_OK 确认,则该服务已被接受并将在内部进行处理;最终结果随后通过回调提供 [SWS_KeyM_00051]。如果接受失败,该函数在发生内部错误时返回 E_NOT_OK,在参数值不符时返回 KEYM_E_PARAMETER_MISMATCH,或在大小规范不匹配时返回 KEYM_E_KEY_CERT_SIZE_MISMATCH [SWS_KeyM_00051]。

由于 KeyM_Prepare 被指定为不可重入(Non Reentrant),因此不得发生同时调用或嵌套调用 [SWS_KeyM_00051]。

本段文本基于 AUTOSAR R20-11 规范自动生成。

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

函数 KeyM_Finalize [SWS_KeyM_00053] 📄 PDF

Std_ReturnType KeyM_Finalize (const uint8* RequestDataPtr, uint16 RequestDataLength, uint8* ResponseDataPtr, uint16 ResponseMaxDataLength);

The function is used to finalize key update operations. It is typi cally used in conjunction with the Key M_

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

函数 KeyM_Finalize 完成密钥更新过程并将密钥操作转换回空闲状态(Idle 模式)[SWS_KeyM_00053]。它通常与先前的 KeyM_Start 操作结合使用。调用后,该模块不再接受进一步的准备或更新操作(Prepare/Update),直到通过 KeyM_Start 启动新的流程 [SWS_KeyM_00053]。此外,更新后的密钥材料将被持久化,并通过调用 Csm_KeySetValid 转换至有效状态 [SWS_KeyM_00053]。

使用与并发性:KeyM_Finalize 是不可重入的(Non Reentrant)并且以异步方式工作 [SWS_KeyM_00053]。理解:由于缺乏重入性,该调用通常应当在任务上下文中进行。 问题 Q-895ebec2d0d2e635 (未决)该接口仅在配置参数 KeyMCryptoKeyStartFinalizeFunctionEnabled 设置为 TRUE 时可用,并通过 KeyM.h 声明 [SWS_KeyM_00053]。

参数和返回值:通过 RequestDataPtr 和 RequestDataLength 传递特定于请求的数据。响应数据通过 ResponseDataPtr 提供;ResponseMaxDataLength 在输入时用作缓冲区大小,并在同步返回时提供实际字节数 [SWS_KeyM_00053]。若操作被接受并在内部处理,该函数返回 E_OK(结果随后通过回调异步返回),且 ResponseMaxDataLength 保持不变 [SWS_KeyM_00053]。

错误处理:在发生错误时,KeyM_Finalize 通过特定返回值指示失败 [SWS_KeyM_00053]:

  • E_NOT_OK:由于内部错误,操作未被接受。
  • KEYM_E_BUSY:KeyM 正在忙于其他作业;尚无法执行验证。
  • KEYM_E_PARAMETER_MISMATCH:参数与预期值不符。
  • KEYM_E_KEY_CERT_SIZE_MISMATCH:参数大小不符。

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

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

函数 KeyM_SetCertificate [SWS_KeyM_00057] 📄 PDF

Std_ReturnType KeyM_SetCertificate (KeyM_CertificateIdType CertId, const KeyM_CertDataType* CertificateDataPtr);

This function provides the certificate data to the key managem ent module to temporarily store the certificate.

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

使用

同步函数 KeyM_SetCertificate 将证书数据传递给密钥管理模块,以临时存储证书 [SWS_KeyM_00057]。它期望接收证书标识符 CertId(类型 KeyM_CertificateIdType)以及指向要提供的证书结构体的指针 CertificateDataPtr(类型 const KeyM_CertDataType*)作为输入参数 [SWS_KeyM_00057]。该接口通过头文件 KeyM.h 声明,且其服务 ID 为 0x0a [SWS_KeyM_00057]。

返回值与错误处理

类型为 Std_ReturnType 的返回值提供了有关数据接受情况的信息 [SWS_KeyM_00057]:

并发性与限制

该函数被归类为不可重入(Non Reentrant)[SWS_KeyM_00057]。因此,并发调用必须在调用方进行同步或予以排除。由于规范明确规定了临时存储,因此传入的证书数据推测在进行持久存储或验证之前,首先保留在该模块的易失性内存中。 问题 Q-c35c4b02344d5bc9 (未决)

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

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

函数 KeyM_GetCertificate [SWS_KeyM_00058] 📄 PDF

Std_ReturnType KeyM_GetCertificate (KeyM_CertificateIdType CertId, KeyM_CertDataType* CertificateDataPtr);

This function provides the certificate data

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

使用

同步函数 KeyM_GetCertificate 用于提供指定证书标识符的证书数据 [SWS_KeyM_00058]。调用方通过参数 CertId 传递所需证书的标识符,并通过输入输出参数 CertificateDataPtr 传递指向证书数据结构的指针。调用方负责提供该结构中指针所指向的缓冲区 [SWS_KeyM_00058]。在调用之前,必须在该结构中指定此缓冲区的最大长度;成功返回(E_OK)时,长度字段将包含所提供证书数据的实际长度 [SWS_KeyM_00058]。

错误处理

该函数通过类型为 Std_ReturnType 的返回值指示成功或特定错误 [SWS_KeyM_00058]:

  • E_OK:证书数据可用且已成功传递。
  • KEYM_E_PARAMETER_MISMATCH:传递的证书ID(CertId)无效。
  • KEYM_E_KEY_CERT_SIZE_MISMATCH:提供的缓冲区过小,无法容纳该证书。
  • KEYM_E_KEY_CERT_EMPTY:不存在证书数据,因为证书槽位为空。
  • KEYM_E_KEY_CERT_READ_FAIL:由于访问被拒绝,无法提供该证书。
  • E_NOT_OK:由于内部错误,操作未被接受。

并发性与限制

该函数被指定为不可重入(Non Reentrant),并通过头文件 KeyM.h 提供 [SWS_KeyM_00058]。因此,调用方必须确保对该函数的并行调用相互同步。

此文本由 AI 生成,仅供参考。一切以 AUTOSAR 官方规范为准。

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

函数 KeyM_VerifyCertificates [SWS_KeyM_00059] 📄 PDF

Std_ReturnType KeyM_VerifyCertificates (KeyM_CertificateIdType CertId, KeyM_CertificateIdType CertUpperId);

This function verifies two certificates that are stored and parsed internally against each other. The certificat e referenced with Cert Id was signed by the certificate referenced with cert Upper Id. Only these two certificates are validated against each other.

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

根据 [SWS_KeyM_00059],函数 KeyM_VerifyCertificates 用于对两个内部存储并解析的证书进行异步相互校验。在此过程中,验证通过 CertId 引用的下级证书是否由通过 CertUpperId 引用的上级证书签名。

由于该服务被定义为不可重入 (Non Reentrant),因此不得针对重叠的操作并发调用它 [SWS_KeyM_00059]。执行在后台异步进行:返回值 E_OK 仅表示验证任务已被成功接受。实际的校验结果将通过配置的回调函数 KeyMCertificateVerifyCallbackNotificationFunc 通知调用方,前提是该函数已被有效配置 [SWS_KeyM_00153]。

如果请求未被接受,该函数将提供用于错误处理的特定返回值 [SWS_KeyM_00059]:

  • KEYM_E_BUSY:Key Manager 正忙于其他任务;此时校验尚无法启动。
  • KEYM_E_PARAMETER_MISMATCH:所传递的证书 ID 中至少有一个无效。
  • KEYM_E_KEY_CERT_EMPTY:所引用的证书槽位之一为空。
  • KEYM_E_CERT_INVALID_CHAIN_OF_TRUST:上级证书 (CertUpperId) 无效。
  • E_NOT_OK:由于内部错误,任务已被拒绝。

本文本由 AI 生成,用于基于 AUTOSAR 规范进行技术参考。

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

函数 KeyM_VerifyCertificate [SWS_KeyM_00060] 📄 PDF

Std_ReturnType KeyM_VerifyCertificate (KeyM_CertificateIdType CertId);

Service KeyM_VerifyCertificate.

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

函数 KeyM_VerifyCertificate 用于对先前通过 KeyM_SetCertificate() 提供的证书进行异步验证 [SWS_KeyM_00060]。验证基于传入的证书标识符 CertId,针对 Key Manager 中已存储的其他证书 ID 的证书进行 [SWS_KeyM_00060]。该声明可通过头文件 KeyM.h 获取 [SWS_KeyM_00060]。

调用语义与返回值

返回值 E_OK 确认验证请求已成功被接受,且操作正在后台执行 [SWS_KeyM_00060]。若无法接受该任务,则会通过特定错误码进行同步反馈 [SWS_KeyM_00060]:

  • E_NOT_OK:由于内部错误,操作被拒绝 [SWS_KeyM_00060]。
  • KEYM_E_BUSY:KeyM 模块当前正忙于其他任务,因此尚无法执行验证 [SWS_KeyM_00060]。
  • KEYM_E_PARAMETER_MISMATCH:传入的 CertId 无效 [SWS_KeyM_00060]。
  • KEYM_E_KEY_CERT_EMPTY:所需证书槽位中至少有一个为空 [SWS_KeyM_00060]。
  • KEYM_E_CERT_INVALID_CHAIN_OF_TRUST:信任链中的某个上级证书无效 [SWS_KeyM_00060]。

并发性与异步性

由于 KeyM_VerifyCertificate 被指定为不可重入(Non Reentrant),调用方必须确保不会发生同时调用或中断性调用 [SWS_KeyM_00060]。在成功接受验证任务(返回 E_OK)后,后台操作的结果将传递给配置的回调函数 KeyMCertificateVerifyCallbackNotificationFunc,前提是该回调函数已指定有效的函数名称 [SWS_KeyM_00153]。

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

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

函数 KeyM_VerifyCertificateChain [SWS_KeyM_00061] 📄 PDF

Std_ReturnType KeyM_VerifyCertificateChain (KeyM_CertificateIdType CertId, const KeyM_CertDataType[] certChainData, uint8 NumberOfCertificates);

Service KeyM_VerifyCertificateChain.

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

函数 KeyM_VerifyCertificateChain 用于证书针对传入证书链的异步验证 [SWS_KeyM_00061]。作为参数传递的是该链中最后一个证书的标识符 (CertId)、指向按 PKI 顺序排序的证书数组的指针 (certChainData) 以及证书数量 (NumberOfCertificates) [SWS_KeyM_00061]。在调用之前,待校验的证书必须已通过 KeyM_SetCertificate() 注册,并且根证书必须要么包含在列表中,要么已经分配给其他证书之一 [SWS_KeyM_00061]。

该函数为不可重入 (Non Reentrant),并通过头文件 KeyM.h 提供 [SWS_KeyM_00061]。以下同步返回值指示任务接受的状态 [SWS_KeyM_00061]:

如果任务以 E_OK 被接受,则在后台进行评估。只要 KeyMCertificateVerifyCallbackNotificationFunc 配置了有效的函数,KeyM 就会通过此回调函数将验证操作的最终结果反馈给调用应用程序 [SWS_KeyM_00061] [SWS_KeyM_00153]。

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

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

函数 KeyM_CertElementGet [SWS_KeyM_00063] 📄 PDF

Std_ReturnType KeyM_CertElementGet (KeyM_CertificateIdType CertId, KeyM_CertElementIdType CertElementId, uint8* CertElementData, uint32* CertElementDataLength);

Service KeyM_CertElementGet.

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

用法与调用上下文

同步函数 KeyM_CertElementGet 用于将证书槽位中特定证书元素的数据读取到调用方提供的缓冲区中 [SWS_KeyM_00063]。当证书配置中存储的对象标识符(OID)恰好对应单个元素时,将使用此函数 [SWS_KeyM_00063]。

调用方传递证书标识符 CertId、元素标识符 CertElementId 以及指向目标缓冲区的指针 CertElementData [SWS_KeyM_00063]。参数 CertElementDataLength 用作组合输入输出值:在调用前,它必须包含最大缓冲区大小。在成功的情况下(E_OK),它将被覆写为所写入数据的实际长度;在出错的情况下,该函数将引用的值重置为零 [SWS_KeyM_00063]。

错误处理与返回值

该函数通过以下返回值报告执行状态 [SWS_KeyM_00063]:

  • E_OK:已找到该元素并成功复制到缓冲区中 [SWS_KeyM_00063]。
  • E_NOT_OK:未找到元素数据 [SWS_KeyM_00063]。
  • KEYM_E_PARAMETER_MISMATCH:无效的 CertId 或 CertElementId [SWS_KeyM_00063]。
  • KEYM_E_KEY_CERT_SIZE_MISMATCH:提供的缓冲区过小,无法容纳该元素的数据 [SWS_KeyM_00063]。
  • KEYM_E_KEY_CERT_EMPTY:指定的槽位不存在数据,槽位为空 [SWS_KeyM_00063]。
  • KEYM_E_KEY_CERT_INVALID:证书无效或尚未验证 [SWS_KeyM_00063]。

并发性

该函数被指定为不可重入(Non Reentrant)[SWS_KeyM_00063]。因此,来自不同任务或上下文的并发调用可能需要在调用方进行同步。 问题 Q-238a3e53ce0e3a45 (未决)

本文由 AI 生成。所有信息均仅基于 AUTOSAR 标准 Release R20-11。

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

函数 KeyM_CertificateElementGetByIndex [SWS_KeyM_91014] 📄 PDF

Std_ReturnType KeyM_CertificateElementGetByIndex (KeyM_CertificateIdType CertId, KeyM_CertElementIdType CertElementId, uint32 Index, uint8* CertElementDataPtr, uint32* CertElementDataLengthPtr);

Service KeyM_CertificateElementGetByIndex.

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

当某元素类型存在多个条目时,同步函数 KeyM_CertificateElementGetByIndex 用于基于从零开始的索引(0..N)针对性地读取证书元素的数据 [SWS_KeyM_91014]。因此,它构成了顺序迭代的直接访问替代方案。

用法与参数

调用方传递证书标识符 CertId、元素标识符 CertElementId 以及所需的 Index [SWS_KeyM_91014]。此外,调用方必须为 CertElementDataPtr 分配内存,并通过 CertElementDataLengthPtr 传递最大可用缓冲区大小。成功返回时,CertElementDataLengthPtr 将被覆写为复制数据的实际长度 [SWS_KeyM_91014]。

返回值与错误处理

该函数通过特定的 Std_ReturnType 返回值指示结果 [SWS_KeyM_91014]:

  • E_OK:已找到该元素并成功复制到目标缓冲区中。
  • KEYM_E_PARAMETER_MISMATCH:无效的 CertId、无效的 CertElementId 或传入的 Index 超出有效范围。
  • KEYM_E_KEY_CERT_SIZE_MISMATCH:提供的缓冲区过小,无法容纳该证书元素。
  • KEYM_E_KEY_CERT_EMPTY:指定的证书不包含数据或为空。
  • KEYM_E_CERT_INVALID:证书无效或验证未成功。
  • E_NOT_OK:读取元素数据失败。

并发性

根据规范,该服务被归类为不可重入(Non Reentrant)[SWS_KeyM_91014]。因此,不得在无保护的情况下并发执行调用。

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

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

函数 KeyM_CertificateElementGetCount [SWS_KeyM_91015] 📄 PDF

Std_ReturnType KeyM_CertificateElementGetCount (KeyM_CertificateIdType CertId, KeyM_CertElementIdType CertElementId, uint16* CountPtr);

This function provides the total number of data elements that a re available for the specified certificate element. Typically, only one data element is available. But in some cases, several data elements can be assigned to one certificate element in a row. This function retrieves the total number of elements. The indiv idual data elements can then accessed with Key M_ Certificate Element Get By Index(). It is similar to the functions Key M_ Cert Element Get First/ Key M_ Cert Element Get Next to retrieve a group of data elements of one certificate element. AUTOSAR CP R20 - of

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

同步接口 KeyM_CertificateElementGetCount 确定为特定证书元素存储的数据元素总数,并将结果写入缓冲区 CountPtr [SWS_KeyM_91015]。

用法与参数

该函数通过头文件 KeyM.h 声明,并具有服务 ID 0x1c [SWS_KeyM_91015]。它处理以下参数:

  • CertId(IN):要查询的证书的唯一标识符([SWS_KeyM_91015])。
  • CertElementId(IN):指定证书内的具体元素([SWS_KeyM_91015])。
  • CountPtr(OUT):指向类型为 uint16 的缓冲区的指针,可用的数据元素数量将被复制到该缓冲区中([SWS_KeyM_91015])。

错误处理与返回值

类型为 Std_ReturnType 的返回值提供有关执行结果的信息 [SWS_KeyM_91015]:

  • E_OK:计数值已成功写入缓冲区([SWS_KeyM_91015])。
  • E_NOT_OK:无法提供计数值([SWS_KeyM_91015])。
  • KEYM_E_PARAMETER_MISMATCH:证书 ID(CertId)或元素 ID(CertElementId)无效或超出允许范围([SWS_KeyM_91015])。

并发性与交互

执行为同步进行,但被归类为不可重入(Non Reentrant),因此必须协调同时进行的调用 [SWS_KeyM_91015]。尽管证书元素通常仅分配有单个数据元素,但在某些情况下可能连续存在多个数据元素 [SWS_KeyM_91015]。确定的总数用作随后通过 KeyM_CertificateElementGetByIndex() 针对性读取各个元素的基础,这在功能上类似于使用 KeyM_CertElementGetFirst 和 KeyM_CertElementGetNext 的迭代方法 [SWS_KeyM_91015]。

本使用说明基于 AUTOSAR 规范 SWS_KeyM_91015。

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

函数 KeyM_CertElementGetFirst [SWS_KeyM_00064] 📄 PDF

Std_ReturnType KeyM_CertElementGetFirst (KeyM_CertificateIdType CertId, KeyM_CertElementIdType CertElementId, KeyM_CertElementIteratorType* CertElementIterator, uint8* CertElementData, uint32* CertElementDataLength);

Service KeyM_CertElementGetFirst.

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

根据 [SWS_KeyM_00064],同步函数 KeyM_CertElementGetFirst 用于启动证书数据的迭代提取。它从证书 CertId 中读取通过 CertElementId 寻址的证书元素的最顶层元素,并为后续调用 KeyM_CertElementGetNext() 初始化迭代器结构 CertElementIterator。

调用时须遵守 [SWS_KeyM_00064] 规定的以下参数和内存要求:

  • CertElementIterator:指向调用方分配并管理的结构的指针;在通过 KeyM_CertElementGetNext() 获取所有数据之前,应用程序既不能销毁也不能修改该结构。
  • CertElementData:指向调用方提供的输出缓冲区的指针,成功找到(E_OK)时,有效负载数据将被复制到其中。
  • CertElementDataLength:作为输入传递数据缓冲区的最大长度,并在返回 E_OK 时被覆写为实际写入的数据长度。

关于并发性,根据 [SWS_KeyM_00064],该服务是重入的,但仅针对单个迭代器(“Reentrant for one iterator”)。

在出错的情况下,该函数根据 [SWS_KeyM_00064] 通过特定返回值进行区分:E_NOT_OK 表示未找到元素数据(此后迭代器不得用于进一步调用)。KEYM_E_PARAMETER_MISMATCH 指示无效的证书 ID 或元素 ID,KEYM_E_KEY_CERT_SIZE_MISMATCH 指示数据缓冲区过小,KEYM_E_KEY_CERT_EMPTY 指示无可用数据的空证书,KEYM_E_CERT_INVALID 指示无效或未成功验证的证书。

本使用说明基于 AUTOSAR R20-11 规范数据自动创建。

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

函数 KeyM_CertElementGetNext [SWS_KeyM_00065] 📄 PDF

Std_ReturnType KeyM_CertElementGetNext (KeyM_CertElementIteratorType* CertElementIterator, uint8* CertElementData, uint32* CertElementDataLength);

Service KeyM_CertElementGetNext.

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

若证书元素中按顺序存储了多个数据记录,同步函数 KeyM_CertElementGetNext(服务 ID 0x11,通过 KeyM.h 提供)用于持续读取该证书元素的更多数据 [SWS_KeyM_00065]。作为强制性调用条件,规范要求此前必须至少调用过一次函数 KeyM_CertElementGetFirst() [SWS_KeyM_00065]。

所有参数的内存区域都必须由调用应用程序提供 [SWS_KeyM_00065]:

  • CertElementIterator:指向已分配迭代器结构的指针,在遍历过程中,直到所有元素被完全读取之前,应用程序既不能修改也不能销毁该结构 [SWS_KeyM_00065]。
  • CertElementData:指向输出缓冲区的指针,函数在成功执行时将有效负载数据复制到其中 [SWS_KeyM_00065]。
  • CertElementDataLength:在调用时传递数据缓冲区的最大容量,并在成功返回时被覆写为复制数据的实际长度 [SWS_KeyM_00065]。

若调用返回 E_OK,则表示已找到下一个元素并写入缓冲区,且迭代器已相应前进 [SWS_KeyM_00065]。若返回 E_NOT_OK,则未能找到更多元素数据;在这种情况下,迭代器不得再用于任何进一步的调用 [SWS_KeyM_00065]。错误情况通过特定返回值报告:KEYM_E_KEY_CERT_SIZE_MISMATCH 表示数据缓冲区尺寸过小,KEYM_E_PARAMETER_MISMATCH 表示无效的证书 ID 或元素 ID,KEYM_E_KEY_CERT_EMPTY 表示空证书,KEYM_E_CERT_INVALID 表示无效或未成功验证的证书 [SWS_KeyM_00065]。

关于并发性,该同步函数被指定为分别针对单个迭代器可重入 [SWS_KeyM_00065]。

本使用说明基于 AUTOSAR 规范自动创建。

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

函数 KeyM_CertGetStatus [SWS_KeyM_00066] 📄 PDF

Std_ReturnType KeyM_CertGetStatus (KeyM_CertificateIdType CertId, KeyM_CertificateStatusType* Status);

This function provides the sta tus of a certificate.

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

同步函数 KeyM_CertGetStatus 用于查询证书的状态并通过输出参数提供 [SWS_KeyM_00066]。该函数的声明可通过头文件 KeyM.h 访问,且该服务被分配了十六进制服务 ID 0x12 [SWS_KeyM_00066]。

调用时使用以下参数 [SWS_KeyM_00066]:

  • CertId(IN):包含要查询的证书的标识符,以数据类型 KeyM_CertificateIdType 传递 [SWS_KeyM_00066]。
  • Status(OUT):指向类型为 KeyM_CertificateStatusType 的内存区域的指针,函数将确定的证书状态写入其中 [SWS_KeyM_00066]。

类型为 Std_ReturnType 的返回值通报状态查询的结果 [SWS_KeyM_00066]:

  • E_OK:证书状态已成功确定并提供 [SWS_KeyM_00066]。
  • E_NOT_OK:当前无法提供状态 [SWS_KeyM_00066]。例如,当传递了无效的证书 ID 时会发生此情况,记录有错误码 KEYM_E_PARAMETER_MISMATCH [SWS_KeyM_00066]。

在执行和并发性方面,该接口表现为完全同步,并被指定为不可重入(Non Reentrant)[SWS_KeyM_00066]。因此,不允许跨多个执行上下文进行同时调用。该接口未规定额外的输入和输出参数 [SWS_KeyM_00066]。

本使用说明由 AI 基于规范生成。

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

函数 KeyM_MainFunction [SWS_KeyM_00074] 📄 PDF

void KeyM_MainFunction (void);

Function is called periodically according the specified time interval.

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

函数 KeyM_MainFunction 用作 Classic AUTOSAR 模块 KeyM 的周期性主函数 [SWS_KeyM_00074]。根据规范,该函数具有十六进制表示的服务 ID 0x19 以及签名 void KeyM_MainFunction (void) [SWS_KeyM_00074]。因此,调用实例不传递任何输入参数,也不接收返回值 [SWS_KeyM_00074]。

对于时间控制规定,该函数须根据定义的时间间隔周期性调用 [SWS_KeyM_00074]。头文件 SchM_KeyM.h 被声明为接口文件 [SWS_KeyM_00074]。由此得出 Interpretation:通过经由 SchM_KeyM.h 提供,该函数的规律调用预计在基础软件调度器 (SchM) 的上下文中进行 [SWS_KeyM_00074]。 问题 Q-761ff71812bda3c2 (未决)此外,周期性触发可能用于模块内时间依赖型流程的内部处理 KeyM。

在错误处理和错误行为方面,规范元素中未针对该服务记录返回值代码、错误常量或向 DET 或 DEM 的报告 [SWS_KeyM_00074]。由于不存在输入参数,因此在调用时也无需对传入值进行检查 [SWS_KeyM_00074]。

本使用说明由 AI 系统基于 AUTOSAR Release R20-11 规范自动生成。

函数 KeyM_MainBackgroundFunction [SWS_KeyM_00075] 📄 PDF

void KeyM_MainBackgroundFunction (void);

Function is called from a pre - emptive operating system when no other task operation is needed. Can be used for calling time consuming synchronous functions such as Key M_ KH_ Update().

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

用法与调用上下文

函数 KeyM_MainBackgroundFunction 具有签名 void KeyM_MainBackgroundFunction(void),并在服务 ID 0x1a 下指定 [SWS_KeyM_00075]。它不接收传入参数,也不向调用者返回返回值 [SWS_KeyM_00075]。为了集成,该接口通过头文件 SchM_KeyM.h 进行声明和提供 [SWS_KeyM_00075]。

一旦没有其他任务操作等待处理,抢占式操作系统就会在后台执行该调用 [SWS_KeyM_00075]。此函数的主要目的是为 KeyM 模块耗时的同步操作提供非关键的后台上下文,例如针对执行 KeyM_KH_Update() 所描述的情况 [SWS_KeyM_00075]。

并发与错误处理

由于该函数在抢占式操作系统的后台上下文中执行,因此它应当可在任何时候被任意常规的更高优先级任务打断。 问题 Q-a2394a51ba63467f (未决)对于该后台服务,标准既未指定特定的错误代码,也未指定向 DET 或 DEM 发送的通知 [SWS_KeyM_00075]。此外,在给定的数据状态下,未规定相对于其他模块函数的特殊重入属性或固定顺序条件 [SWS_KeyM_00075]。

此文本由 AI 创建,仅基于有效负载中的规范数据。

函数 KeyM_KH_Start [SWS_KeyM_00067] 📄 PDF

Std_ReturnType KeyM_KH_Start (KeyM_StartType StartType, const uint8* RequestData, uint16 RequestDataLength, uint8* ResponseData, uint16* ResponseDataLength);

If Key MCrypto Key Start Finalize Function Enabled and Key MCrypto Key

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

同步且不可重入的函数 KeyM_KH_Start 通过头文件 KeyM_Externals.h 声明 [SWS_KeyM_00067]。当配置参数 KeyMCryptoKeyStartFinalizeFunctionEnabled 和 KeyMCryptoKeyHandlerStartFinalizeEnabled 设置为 TRUE 时,它会在调用 KeyM_Start 时直接执行 [SWS_KeyM_00067]。

通过参数 StartType 指定密钥操作的执行模式。函数通过 RequestData 和 RequestDataLength 接收请求特定的伴随数据(例如签名)。调用方通过输入/输出参数 ResponseDataLength 传递缓冲区 ResponseData 中可用的最大字节数;在成功的情况下,函数通过该参数返回实际写入的响应字节数 [SWS_KeyM_00067]。

作为返回值,该函数提供类型为 Std_ReturnType 的状态[SWS_KeyM_00067]:

  • E_OK:启动操作成功。仅凭此返回值,Key Manager 才会转换到激活状态,从而允许后续的密钥更新(Key Update)。
  • E_NOT_OK:启动操作未被接受。
  • KEYM_E_PARAMETER_MISMATCH:传递的参数与预期值不匹配。
  • KEYM_E_KEY_CERT_SIZE_MISMATCH:指定的参数大小与预期大小不符。

由于 KeyM_KH_Start 被定义为不可重入,因此针对并行密钥操作的调用不得并发进行 [SWS_KeyM_00067]。

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

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

函数 KeyM_KH_Prepare [SWS_KeyM_00068] 📄 PDF

Std_ReturnType KeyM_KH_Prepare (const uint8* RequestData, uint16 RequestDataLength, uint8* ResponseDataPtr, uint16* ResponseDataLength);

If the configuration parameters Key MCrypto Key Prepare Function Enabled and Key MCrypto Key Handler Prepare Enabled are both set to TRUE, then this function w ill be called immediately when Key M_ Prepare gets called. The function takes over the task to prepare a key management operation. The response data will be passed on as is to the caller of Key_ Prepare.

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

用法与调用上下文

函数 KeyM_KH_Prepare 通过头文件 KeyM_Externals.h 声明,用于准备密钥管理操作 [SWS_KeyM_00068]。当配置参数 KeyMCryptoKeyPrepareFunctionEnabled 和 KeyMCryptoKeyHandlerPrepareEnabled 均设置为 TRUE 时,它会在调用 KeyM_Prepare 时直接触发 [SWS_KeyM_00068]。其执行为同步进行,并被指定为不可重入 [SWS_KeyM_00068]。

数据传递通过四个参数进行 [SWS_KeyM_00068]:

  • RequestData:随请求一起传递的输入数据 [SWS_KeyM_00068]。
  • RequestDataLength:数组中数据的长度 RequestData [SWS_KeyM_00068]。
  • ResponseDataPtr:指向用于存放函数返回的响应数据的缓冲区的指针,该响应数据将原封不动地转发给 Key_Prepare 的调用方 [SWS_KeyM_00068]。
  • ResponseDataLength:输入和输出参数;在调用时传递缓冲区中可用的最大字节数,并在返回后提供实际写入的字节量 [SWS_KeyM_00068]。

返回值与错误行为

该函数返回状态值 Std_ReturnType 作为结果 [SWS_KeyM_00068]:

  • E_OK:服务已被接受并将在内部继续处理;结果将通过回调传递 [SWS_KeyM_00068]。
  • E_NOT_OK:由于内部错误,服务未被接受 [SWS_KeyM_00068]。
  • KEYM_E_PARAMETER_MISMATCH:某个参数与期望值不一致 [SWS_KeyM_00068]。
  • KEYM_E_KEY_CERT_SIZE_MISMATCH:参数的大小不匹配 [SWS_KeyM_00068]。

本文由 AI 生成。所有信息均仅基于 AUTOSAR 标准 Release R20-11。

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

函数 KeyM_KH_Finalize [SWS_KeyM_00070] 📄 PDF

Std_ReturnType KeyM_KH_Finalize (const uint8* RequestData, uint16 RequestDataLength, uint8* ResponseData, uint16* ResponseDataLength);

If Key MCrypto Key Start Finalize Function Enabled and Key MCrypto Key Handler Start Finalize Enabled is set to TRUE, this function will be called immediately when Key M_

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

使用与委托

函数 KeyM_KH_Finalize 通过头文件 KeyM_Externals.h 声明,并用作用户特定的密钥处理程序 [SWS_KeyM_00070]。如果在配置中 KeyMCryptoKeyStartFinalizeFunctionEnabled 和 KeyMCryptoKeyHandlerStartFinalizeEnabled 均设置为 TRUE,则 KeyM_Finalize() 不执行独立操作,而是直接将处理委托给该处理程序函数 [SWS_KeyM_00070]。

调用上下文与参数

对 KeyM_KH_Finalize 的调用是同步进行的,但被归类为不可重入(Non Reentrant),并需要受保护的调用上下文 [SWS_KeyM_00070]。数据传递通过以下参数进行:

  • RequestData 和 RequestDataLength:指向随请求传递的输入数据以及数据数组长度的指针 [SWS_KeyM_00070]。
  • ResponseData:用于存放函数提供的输出数据的缓冲区 [SWS_KeyM_00070]。
  • ResponseDataLength:输入/输出参数,调用时指定响应缓冲区中可用的最大字节数,返回时包含实际写入的字节数 [SWS_KeyM_00070]。

返回值与错误处理

操作结果通过 Std_ReturnType 返回 [SWS_KeyM_00070]:

  • E_OK:操作已被接受并在内部继续处理;结果将通过回调提供 [SWS_KeyM_00070]。解释:尽管函数接口被定义为同步,但实际处理可能会在后台继续进行。 问题 Q-02c4aac040570c03 (未决)
  • E_NOT_OK:由于内部错误,操作未被接受 [SWS_KeyM_00070]。
  • KEYM_E_BUSY:Key Manager 正忙于其他任务,因此当前无法执行验证 [SWS_KeyM_00070]。
  • KEYM_E_PARAMETER_MISMATCH:某个参数与期望值不一致 [SWS_KeyM_00070]。
  • KEYM_E_KEY_CERT_SIZE_MISMATCH:传入的参数大小不符合要求 [SWS_KeyM_00070]。

本文本由 AI 生成,仅供参考。一切以 AUTOSAR 规范为准。

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

函数 KeyM_CryptoKeyUpdateCallbackNotification [SWS_KeyM_00077] 📄 PDF

void KeyM_CryptoKeyUpdateCallbackNotification (KeyM_ResultType Result, uint16 ResultDataLength, const uint8* ResultDataPtr);

Notifies the application that a crypto key update operation has been finished. This function is used by the key manager.

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

回调函数 KeyM_CryptoKeyUpdateCallbackNotification() 通知应用程序加密密钥的更新已完成([SWS_KeyM_00077])。该函数通过 KeyM_Externals.h 提供,是同步且可重入的,并且没有返回值([SWS_KeyM_00077])。

范围

交互与缓冲区管理

一旦密钥处理程序返回并提供操作类型 KEYM_KH_UPDATE_FINISH,KeyM_Update() 就会调用 KeyM_CryptoKeyUpdateCallbackNotification()([SWS_KeyM_00093])。在此过程中,来自 KeyM_KH_Update::ResultDataPtr 的结果数据将被复制到调用 KeyM_Update() 时传递的缓冲区中,并采用密钥处理程序的返回值([SWS_KeyM_00093])。

若 KeyM_Update() 已通过 E_OK 接受该过程,则在回调通知 KeyM_CryptoKeyUpdateCallbackNotification() 发生之前,调用函数绝不能修改缓冲区 ResultDataPtr([SWS_KeyM_00156])。相同的缓冲区指针将在回调中作为 ResultDataPtr 连同复制到其中的操作结果一起传递([SWS_KeyM_00156])。

本使用说明基于 AUTOSAR Classic R20-11 规范。

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

函数 KeyM_CryptoKeyFinalizeCallbackNotification [SWS_KeyM_00079] 📄 PDF

void KeyM_CryptoKeyFinalizeCallbackNotification (KeyM_ResultType Result, uint16 ResultDataLength, const uint8* ResultDataPtr);

Service KeyM_CryptoKeyFinalizeCallbackNotification.

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

回调函数 KeyM_CryptoKeyFinalizeCallbackNotification 通知应用程序密钥完成操作已结束 [SWS_KeyM_00079]。它被指定为同步且可重入,没有返回值,并通过头文件 KeyM_Externals.h 声明 [SWS_KeyM_00079]。

该接口在调用时向应用程序传递以下参数 [SWS_KeyM_00079]:

  • Result(类型 KeyM_ResultType):传递已完成操作的结果和状态信息 [SWS_KeyM_00079]。
  • Result Data Length(类型 uint16):指定此操作的结果数据长度 [SWS_KeyM_00079]。
  • Result Data Ptr(类型 const uint8*):指向包含结果数据的缓冲区的指针,该缓冲区此前已提供给服务函数 [SWS_KeyM_00079]。

在配置方面,仅当配置参数 KeyMCryptoKeyStartFinalizeFunctionEnabled 设置为 TRUE 时,才调用并需要该回调函数 [SWS_KeyM_00079]。未为此回调函数定义特定的 DET 或 DEM 错误消息。推测应用程序实现此回调以接收先前启动的密钥完成操作的异步结果。 问题 Q-6d9e4e062b008832 (未决)

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

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

函数 KeyM_CryptoKeyVerifyCallbackNotification [SWS_KeyM_00081] 📄 PDF

void KeyM_CryptoKeyVerifyCallbackNotification (KeyM_ResultType Result, uint32 KeyId, uint16 ResultDataLength, const uint8* ResultDataPtr);

Notifies the application that a crypto key verify operation has been finished. This function is used by the key manager.

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

用法与参数

回调函数 KeyM_CryptoKeyVerifyCallbackNotification 通知应用程序 KeyM 模块针对加密密钥的验证操作已完成 [SWS_KeyM_00081]。解释:根据规范,由于该元素通过头文件 KeyM_Externals.h 提供并用于通知应用程序,因此实现可能由应用软件组件完成,而调用则由 Key Manager 执行 [SWS_KeyM_00081]。 问题 Q-e88e332a7d2cac40 (未决)

为调用定义了四个纯输入参数 [SWS_KeyM_00081]:

  • Result(KeyM_ResultType):传递已完成验证的结果 [SWS_KeyM_00081]。
  • KeyId(uint32):标识为其启动验证的密钥标识符 [SWS_KeyM_00081]。
  • ResultDataLength(uint16):包含所得结果数据的长度(若存在)[SWS_KeyM_00081]。
  • ResultDataPtr(const uint8*):指向验证结果的数据 [SWS_KeyM_00081]。

并发性与限制

该函数没有返回值(void),也没有输出参数或输入/输出参数 [SWS_KeyM_00081]。调用执行为同步且可重入 [SWS_KeyM_00081]。未针对此回调指定特定错误码或 DET/DEM 消息;状态和错误信息仅通过参数 Result 传递给应用程序 [SWS_KeyM_00081]。

该文本由人工智能基于规范生成。

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

函数 KeyM_ServiceCertificateCallbackNotification [SWS_KeyM_00147] 📄 PDF

void KeyM_ServiceCertificateCallbackNotification (KeyM_CertificateIdType CertId, KeyM_ResultType Result, uint16 ResultDataLength, const uint8* ResultDataPtr);

Notifies the application that the certificate service operation has been finished. This function is used by the certificate submodule. Thi s callback is only provided if Key MService Certificate Function Enabled is set to TRUE. The function name is configurable by Key MService Certificate Callback Notification Func.

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

用法与语义

回调函数 KeyM_ServiceCertificateCallbackNotification 由 KeyM 的证书子模块调用,以通知应用程序证书服务操作已完成 [SWS_KeyM_00147]。先前的证书操作异步运行,并在其结束时执行此回调,以便将结果传递给应用程序 [SWS_KeyM_00149]。

通过函数参数传递所有相关的结果数据 [SWS_KeyM_00147]:

  • CertId:为其发起操作的证书的标识符。
  • Result:包含操作状态或结果的类型 KeyM_ResultType。
  • ResultDataLength:结果数据的长度(如果存在)。
  • ResultDataPtr:指向结果数据的指针。

函数本身没有返回值(void),并具有同步执行语义 [SWS_KeyM_00147]。

配置与限制

该回调通过头文件 KeyM_Externals.h 提供,但仅在配置参数 KeyMServiceCertificateFunctionEnabled 设置为 TRUE 时可用 [SWS_KeyM_00147]。通知函数的实际名称可通过配置参数 KeyMServiceCertificateCallbackNotificationFunc 进行自定义 [SWS_KeyM_00147]。

并发与错误处理

根据规范,该函数被归类为可重入 [SWS_KeyM_00147]。先前异步操作的错误或成功状态通过传入参数 Result 指示;在有效负载中未为此回调接口定义特定的 DET 或 DEM 消息 [SWS_KeyM_00147]。

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

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

函数 KeyM_CertificateVerifyCallbackNotification [SWS_KeyM_00073] 📄 PDF

Std_ReturnType KeyM_CertificateVerifyCallbackNotification (KeyM_CertificateIdType CertId, KeyM_CertificateStatusType Result);

Notifies the application that a certificate verification has been finished. The function name is configurable by Key MCertificate Verify Callback Notification Func. Availabl e via Key M_ Externals.h

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

使用

回调函数 KeyM_CertificateVerifyCallbackNotification 用于在证书验证完成时通知应用程序 [SWS_KeyM_00073]。声明可通过头文件 KeyM_Externals.h 获取,其中函数名称可以通过配置参数 KeyMCertificateVerifyCallbackNotificationFunc 进行配置 [SWS_KeyM_00073]。

调用时会传递两个输入参数 [SWS_KeyM_00073]:

  • CertId(类型 KeyM_CertificateIdType):已验证证书的标识符 [SWS_KeyM_00073]。
  • Result(类型 KeyM_CertificateStatusType):包含有关验证操作结果的信息 [SWS_KeyM_00073]。

该函数返回 E_OK 作为类型为 Std_ReturnType 的状态值 [SWS_KeyM_00073]。

执行与错误处理

通知的执行被定义为同步且可重入 [SWS_KeyM_00073]。未为该回调定义特定错误码、不同的返回值或向 DET 或 DEM 发送的消息 [SWS_KeyM_00073]。解释:应用程序侧的实现可能需要设计为线程安全,以便在无副作用的情况下处理针对不同证书的同时调用。 问题 Q-6bf5313c425fe1a8 (未决)

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

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

类型 KeyM_ConfigType [SWS_KeyM_00157] 📄 PDF

This structure is the base type to initialize the Key Manager module. A pointer to an instance of this structure will be used in the initialization of the Key Manager module.

类型 KeyM_KH_UpdateOperationType [SWS_KeyM_00055] 📄 PDF

Specifies the type of key handler update operation that was performed in the callback.

类型 KeyM_CertElementIteratorType [SWS_KeyM_00042] 📄 PDF

This structure is used to iterate through a number of elements of a certificate.

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

使用

根据 [SWS_KeyM_00042],数据类型 KeyM_CertElementIteratorType 定义为结构体(Structure),并通过头文件 KeyM.h 提供。根据规范,该类型用于遍历证书的一系列元素([SWS_KeyM_00042])。由于数据结构的具体内容被明确指定为与实现相关([SWS_KeyM_00042]),用户应将该类型视为不透明的迭代状态,而不直接访问内部结构体字段。 问题 Q-81b5deb7dcdf2812 (未决)

处理与限制

规范为使用提出了以下实际框架条件:

  • 特定于实现的结构:由于 KeyM_CertElementIteratorType 的字段是由特定供应商实现的([SWS_KeyM_00042]),因此内部内存布局取决于相应的 BSW 实现。
  • 状态管理:理解:调用方应当将该结构体的一个实例分配为迭代器上下文,并传递给相应的证书元素遍历函数,以跟踪检查或提取证书字段时的进度。 问题 Q-5ddb438001abe656 (未决)
  • 并发性:当对同一证书进行并行访问时,如果没有跨多个任务的外部同步,迭代器实例推测无法并发使用。 问题 Q-6b4b8b1cdc35f021 (未决)

本段文本由人工智能生成。它完全基于 AUTOSAR Classic R20-11 的规范数据。

类型 KeyM_StartType [SWS_KeyM_00038] 📄 PDF

This type specifies in which mode the key operation will start. The OEM production mode provides higher privileges compared to workshop mode.

类型 KeyM_ServiceCertificateType [SWS_KeyM_00039] 📄 PDF

This type specifies the requested service operation and what information is provided with this function.

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

枚举类型 KeyM_ServiceCertificateType 通过头文件 Rte_KeyM_Type.h 提供,并指定密钥服务器请求的证书服务操作以及随该函数传递的信息类型 [SWS_KeyM_00039]。RTE 头文件中的声明可能表明该类型主要用于软件组件与 Key Manager 模块之间的数据交换。 问题 Q-37ed693ea3eda646 (未决)

为证书管理定义了以下标准化操作码 [SWS_KeyM_00039]:

  • KEYM_SERVICE_CERT_REQUEST_CSR(0x01):密钥服务器请求密钥客户端生成证书或证书签名请求(CSR)[SWS_KeyM_00039]。
  • KEYM_SERVICE_CERT_UPDATE_SIGNED_CSR(0x02):服务器返回先前接收的、现已由证书颁发机构(CA)签名的证书 [SWS_KeyM_00039]。
  • KEYM_SERVICE_CERT_SET_ROOT(0x03)和 KEYM_SERVICE_CERT_UPDATE_ROOT(0x04):创建新的或更新现有的根证书 [SWS_KeyM_00039]。
  • KEYM_SERVICE_CERT_SET_INTERMEDIATE(0x05)和 KEYM_SERVICE_CERT_UPDATE_INTERMEDIATE(0x06):添加或更新中间证书(CA 证书)[SWS_KeyM_00039]。
  • KEYM_SERVICE_CERT_UPDATE_CRL(0x07):提供或更新证书吊销列表(CRL)[SWS_KeyM_00039]。

作为重要的前置条件,KEYM_SERVICE_CERT_SET_INTERMEDIATE 要求在设置中间证书之前必须已存有对应的根证书,以确保成功进行验证 [SWS_KeyM_00039]。对于特定于项目的扩展,该规范预留了从 0x80 到 0x9F 的取值范围 [SWS_KeyM_00039]。

此文本由 AI 创建,并基于 AUTOSAR R20-11 规范。

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

类型 KeyM_CertificateStatusType [SWS_KeyM_91003] 📄 PDF

Type KeyM_CertificateStatusType.

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

枚举类型 KeyM_CertificateStatusType 表示证书检查的结果,并映射 Key Manager 中证书的当前验证和处理状态 [SWS_KeyM_91003]。该类型通过头文件 Rte_KeyM_Type.h 提供,用于供调用者差异化评估证书验证的状态或具体错误原因 [SWS_KeyM_91003]。

枚举值既涵盖常规的中间状态和成功状态,也涵盖明确的错误情况 [SWS_KeyM_91003]:

  • KEYM_CERTIFICATE_VALID (0x00):证书已成功解析并验证 [SWS_KeyM_91003]。
  • KEYM_CERTIFICATE_INVALID (0x01):由于未详细说明的错误,证书无效 [SWS_KeyM_91003]。
  • KEYM_CERTIFICATE_NOT_PARSED (0x02):证书目前尚未解析 [SWS_KeyM_91003]。
  • KEYM_CERTIFICATE_PARSED_NOT_VALIDATED (0x03):证书已解析,但尚未校验 [SWS_KeyM_91003]。
  • KEYM_CERTIFICATE_NOT_AVAILABLE (0x04):未设置证书 [SWS_KeyM_91003]。
  • 特定错误检查结果:有效期检查失败 (KEYM_E_CERTIFICATE_VALIDITY_PERIOD_FAIL, 0x05)、签名错误 (KEYM_E_CERTIFICATE_SIGNATURE_FAIL, 0x06)、信任链无效 (KEYM_E_CERTIFICATE_INVALID_CHAIN_OF_TRUST, 0x07)、类型无效 (KEYM_E_CERTIFICATE_INVALID_TYPE, 0x08)、格式错误 (KEYM_E_CERTIFICATE_INVALID_FORMAT, 0x09)、内容无效 (KEYM_E_CERTIFICATE_INVALID_CONTENT, 0x0A) 以及吊销或有效范围无效 (KEYM_E_CERTIFICATE_REVOKED, 0x0B) [SWS_KeyM_91003]。

调用者应在使用加密密钥之前检查该状态;通常只有当状态明确指示为 KEYM_CERTIFICATE_VALID 时,操作才可在证书上执行。由于该类型通过 Rte_KeyM_Type.h 声明,因此它应当主要用于 KeyM 与应用程序 SWC 之间交互的标准服务接口和端口中。 问题 Q-f3ca10ee673798df (未决)

此文本由 AI 创建。它不能替代对官方 AUTOSAR 规范的研究。

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

类型 KeyM_CertificateElementType [SWS_KeyM_91004] 📄 PDF

Array long enough to store data

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

使用与结构

数据类型 KeyM_CertificateElementType 被指定为元素类型为 uint8 的字节数组,根据规范用作足够大的存储区域以存放证书元素的数据 [SWS_KeyM_91004]。对于 KeyM 模块,该数据类型的提供和声明通过头文件 Rte_KeyM_Type.h 进行 [SWS_KeyM_91004]。

配置与变体构建

该数据类型的形态受制于依赖于配置的名称和大小变体,这些变体派生自模块的已配置参数 [SWS_KeyM_91004]:

  • 名称模式:具体的类型名称根据模式 KeyM_CertificateElementType_{KeyMCertificate}_{KeyMCertificateElement} 按元素特定生成,其中占位符对应于证书和证书元素相应实例的已配置短名称 SHORT-NAME [SWS_KeyM_91004]。
  • 数组大小:uint8 元素的数量由配置参数 KeyMCertificateElementMaxLength 确定,以使该数组为相应元素的原始数据提供足够的存储空间 [SWS_KeyM_91004]。

限制与假定

由于该定义在 Rte_KeyM_Type.h 中提供,因此该类型大概主要用作与软件组件接口处的标准化缓冲区,用于交换证书内容 [SWS_KeyM_91004]。 问题 Q-994f8ac6772de3c1 (未决)此时,可处理的最大数据长度静态绑定到配置时定义的最大长度 [SWS_KeyM_91004]。

本使用说明由 AI 基于 AUTOSAR 规范生成。

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

类型 KeyM_CryptoKeyDataType [SWS_KeyM_91012] 📄 PDF

Byte - pointer to the input or output data

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

使用与类型定义

数据类型 KeyM_CryptoKeyDataType 被定义为指向 uint8* 的指针类型,并在 KeyM 模块内用作输入或输出数据的字节指针 [SWS_KeyM_91012]。类型定义通过头文件 Rte_KeyM_Type.h 提供 [SWS_KeyM_91012]。

限制和内存管理

将 KeyM_CryptoKeyDataType 用作指向字节缓冲区的指针时,必须注意特定的边界条件:

  • 解释:由于该类型被指定为简单的字节指针(uint8*)[SWS_KeyM_91012],所引用内存的分配、大小确定以及有效性大概由各调用方负责。 问题 Q-07c167f400cbfb9c (未决)
  • 解释:当作为输出缓冲区传递时,应该确保所引用的存储区域足够大以容纳要接收的密钥或加密数据,从而防止缓冲区溢出。 问题 (未决)
  • 解释:对于对所引用缓冲区的并发访问,调用软件可能需要采取额外的同步措施,因为该类型本身不提供同步机制。 问题 (未决)

集成

向 KeyM 接口传递加密密钥或证书数据或从其中接收这些数据的调用方,应包含 Rte_KeyM_Type.h 以获得对 KeyM_CryptoKeyDataType 的类型化指针定义的访问 [SWS_KeyM_91012]。

本使用说明为自动生成,完全基于 KeyM 模块的 AUTOSAR 规范。

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

类型 KeyM_ResultType [SWS_KeyM_91008] 📄 PDF

Specifies the result type of an asynchronous key management fu nction.

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

枚举类型 KeyM_ResultType 指定用于密钥和证书管理的模块 KeyM 的异步函数的结果 [SWS_KeyM_91008]。该类型通过头文件 Rte_KeyM_Type.h 提供,用于反馈请求的异步工作任务的结果 [SWS_KeyM_91008]。

取值范围包括标准化的状态和错误代码,以供调用方进行区分评估 [SWS_KeyM_91008]:

  • KEYM_RT_OK(0x00):密钥管理操作已成功完成 [SWS_KeyM_91008]。
  • KEYM_RT_NOT_OK(0x01):在密钥管理操作期间发生了通用错误 [SWS_KeyM_91008]。
  • KEYM_RT_KEY_CERT_INVALID(0x02):引用的密钥或证书无效,无法用于该操作 [SWS_KeyM_91008]。
  • KEYM_RT_KEY_CERT_WRITE_FAIL(0x03):将密钥或证书写入预期目标存储失败 [SWS_KeyM_91008]。
  • KEYM_RT_KEY_CERT_UPDATE_FAIL(0x04):更新密钥或证书时发生通用错误,无法通过更具体的代码予以明确 [SWS_KeyM_91008]。
  • KEYM_RT_CERT_INVALID_CHAIN_OF_TRUST(0x05):由于信任链无效,证书验证失败 [SWS_KeyM_91008]。

异步 KeyM 函数的调用方必须对该返回类型进行评估,以便在出错时能够针对无效信任链、存储访问错误或不正确的密钥材料做出针对性响应 [SWS_KeyM_91008]。

本文本由 AI 基于规范生成。

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

类型 KeyM_CertDataType [SWS_KeyM_00041] 📄 PDF

This structure is used to exchange certificate data through interface functions.

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

结构体 KeyM_CertDataType 在模块 KeyM 中用于通过接口函数传递和交换证书数据 [SWS_KeyM_00041]。类型定义可通过头文件 KeyM.h 获取 [SWS_KeyM_00041]。

该结构体捆绑了两个核心元素 [SWS_KeyM_00041]:

  • certDataLength:类型为 uint32 的元素,指示证书数据的长度 [SWS_KeyM_00041]。
  • certData:类型为 VoidPtr 的元素,作为指针直接引用调用方本地数据区中的证书数据 [SWS_KeyM_00041]。

由于 certData 引用调用方本地上下文中的内存区域 [SWS_KeyM_00041],因此缓冲区管理由调用实例负责。理解:调用方可能必须确保引用的内存在相应接口函数的整个执行持续时间内保持有效,并且至少包含 certDataLength 中指定的字节数。 问题 Q-7da9d5ed0975ddbd (未决)此外可以推测,当长度大于零时,必须传递非 NULL 的有效指针,以避免接口函数内部出现错误的内存访问。

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

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

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

Record
AUTOSAR/AP/record/CP_MOD_KeyM
Status
unspecified
Version
AUTOSAR/AP/record/CP_MOD_KeyM@rel:R20-11#02c1b7b3
Content hash
02c1b7b3
Source
https://www.autosar.org/fileadmin/standards/R20-11/CP/AUTOSAR_SWS_KeyManager.pdf#nameddest=SWS_KeyM_00043

初始化与状态

This function resets the key management module to the uninitialized state.

void KeyM_Deinit (void);

Provides the version information of this module.

void KeyM_GetVersionInfo (Std_VersionInfoType* VersionInfo);
KeyM_Init 函数

This function initializes the key management module.

void KeyM_Init (const KeyM_ConfigType* ConfigPtr);

服务 · Cert…

Service KeyM_CertElementGet.

Std_ReturnType KeyM_CertElementGet (KeyM_CertificateIdType CertId, KeyM_CertElementIdType CertElementId, uint8* CertElementData, uint32* CertElementDataLength);

Service KeyM_CertElementGetFirst.

Std_ReturnType KeyM_CertElementGetFirst (KeyM_CertificateIdType CertId, KeyM_CertElementIdType CertElementId, KeyM_CertElementIteratorType* CertElementIterator, uint8* CertElementData, uint32* CertElementDataLength);

Service KeyM_CertElementGetNext.

Std_ReturnType KeyM_CertElementGetNext (KeyM_CertElementIteratorType* CertElementIterator, uint8* CertElementData, uint32* CertElementDataLength);

This function provides the sta tus of a certificate.

Std_ReturnType KeyM_CertGetStatus (KeyM_CertificateIdType CertId, KeyM_CertificateStatusType* Status);

服务 · Certificate…

Service KeyM_CertificateElementGetByIndex.

Std_ReturnType KeyM_CertificateElementGetByIndex (KeyM_CertificateIdType CertId, KeyM_CertElementIdType CertElementId, uint32 Index, uint8* CertElementDataPtr, uint32* CertElementDataLengthPtr);

This function provides the total number of data elements that a re available for the specified certificate element. Typically, only one data element is available. But in some cases, several data elements can be assigned to one certificate element in a row. This function retrieves the total number of elements. The indiv idual data elements can then accessed with Key M_ Certificate Element Get By Index(). It is similar to the functions Key M_ Cert Element Get First/ Key M_ Cert Element Get Next to retrieve a group of data elements of one certificate element. AUTOSAR CP R20 - of

Std_ReturnType KeyM_CertificateElementGetCount (KeyM_CertificateIdType CertId, KeyM_CertElementIdType CertElementId, uint16* CountPtr);

Notifies the application that a certificate verification has been finished. The function name is configurable by Key MCertificate Verify Callback Notification Func. Availabl e via Key M_ Externals.h

Std_ReturnType KeyM_CertificateVerifyCallbackNotification (KeyM_CertificateIdType CertId, KeyM_CertificateStatusType Result);

服务 · Crypto…

Service KeyM_CryptoKeyFinalizeCallbackNotification.

void KeyM_CryptoKeyFinalizeCallbackNotification (KeyM_ResultType Result, uint16 ResultDataLength, const uint8* ResultDataPtr);

Notifies the application that a crypto key update operation has been finished. This function is used by the key manager.

void KeyM_CryptoKeyUpdateCallbackNotification (KeyM_ResultType Result, uint16 ResultDataLength, const uint8* ResultDataPtr);

Notifies the application that a crypto key verify operation has been finished. This function is used by the key manager.

void KeyM_CryptoKeyVerifyCallbackNotification (KeyM_ResultType Result, uint32 KeyId, uint16 ResultDataLength, const uint8* ResultDataPtr);

服务 · K…

If Key MCrypto Key Start Finalize Function Enabled and Key MCrypto Key Handler Start Finalize Enabled is set to TRUE, this function will be called immediately when Key M_

Std_ReturnType KeyM_KH_Finalize (const uint8* RequestData, uint16 RequestDataLength, uint8* ResponseData, uint16* ResponseDataLength);

If the configuration parameters Key MCrypto Key Prepare Function Enabled and Key MCrypto Key Handler Prepare Enabled are both set to TRUE, then this function w ill be called immediately when Key M_ Prepare gets called. The function takes over the task to prepare a key management operation. The response data will be passed on as is to the caller of Key_ Prepare.

Std_ReturnType KeyM_KH_Prepare (const uint8* RequestData, uint16 RequestDataLength, uint8* ResponseDataPtr, uint16* ResponseDataLength);

If Key MCrypto Key Start Finalize Function Enabled and Key MCrypto Key

Std_ReturnType KeyM_KH_Start (KeyM_StartType StartType, const uint8* RequestData, uint16 RequestDataLength, uint8* ResponseData, uint16* ResponseDataLength);

服务 · Verify…

Service KeyM_VerifyCertificate.

Std_ReturnType KeyM_VerifyCertificate (KeyM_CertificateIdType CertId);

Service KeyM_VerifyCertificateChain.

Std_ReturnType KeyM_VerifyCertificateChain (KeyM_CertificateIdType CertId, const KeyM_CertDataType[] certChainData, uint8 NumberOfCertificates);

This function verifies two certificates that are stored and parsed internally against each other. The certificat e referenced with Cert Id was signed by the certificate referenced with cert Upper Id. Only these two certificates are validated against each other.

Std_ReturnType KeyM_VerifyCertificates (KeyM_CertificateIdType CertId, KeyM_CertificateIdType CertUpperId);

服务 · 其他

The function is used to finalize key update operations. It is typi cally used in conjunction with the Key M_

Std_ReturnType KeyM_Finalize (const uint8* RequestDataPtr, uint16 RequestDataLength, uint8* ResponseDataPtr, uint16 ResponseMaxDataLength);

This function provides the certificate data

Std_ReturnType KeyM_GetCertificate (KeyM_CertificateIdType CertId, KeyM_CertDataType* CertificateDataPtr);

Function is called from a pre - emptive operating system when no other task operation is needed. Can be used for calling time consuming synchronous functions such as Key M_ KH_ Update().

void KeyM_MainBackgroundFunction (void);

This function is used to prepare a key update operation. The main intent is to provide information for the key operation to the key server. Other operations may start the negotiation for a common secret that is used further to derive key material. This function is only av ailable if Key MCrypto Key Prepare Function Enabled is set to TRUE.

Std_ReturnType KeyM_Prepare (const uint8* RequestData, uint16 RequestDataLength, uint8* ResponseData, uint16* ResponseDataLength);

Notifies the application that the certificate service operation has been finished. This function is used by the certificate submodule. Thi s callback is only provided if Key MService Certificate Function Enabled is set to TRUE. The function name is configurable by Key MService Certificate Callback Notification Func.

void KeyM_ServiceCertificateCallbackNotification (KeyM_CertificateIdType CertId, KeyM_ResultType Result, uint16 ResultDataLength, const uint8* ResultDataPtr);

This function provides the certificate data to the key managem ent module to temporarily store the certificate.

Std_ReturnType KeyM_SetCertificate (KeyM_CertificateIdType CertId, const KeyM_CertDataType* CertificateDataPtr);
KeyM_Start 函数

This function is optional and only used if the configuration item Key MCrypto Key Start Finalize Function Enabled is set to true. It intents to allow key update operation.

Std_ReturnType KeyM_Start (KeyM_StartType StartType, const uint8* RequestData, uint16 RequestDataLength, uint8* ResponseData, uint16* ResponseDataLength);

周期性

Function is called periodically according the specified time interval.

void KeyM_MainFunction (void);

类型

Byte - pointer to the data of the certificate

This structure is used to exchange certificate data through interface functions.

Certificate Element handle.

This structure is used to iterate through a number of elements of a certificate.

Array long enough to store data

Certificate handle.

Type KeyM_CertificateStatusType.

This structure is the base type to initialize the Key Manager module. A pointer to an instance of this structure will be used in the initialization of the Key Manager module.

Byte - pointer to the input or output data

Crypto key handle.

Specifies the type of key handler update operation that was performed in the callback.

Specifies the result type of an asynchronous key management fu nction.

This type specifies the requested service operation and what information is provided with this function.

This type specifies in which mode the key operation will start. The OEM production mode provides higher privileges compared to workshop mode.

Max 类型

Array long enough to store the key or certificate name. base Type Encoding = UTF -