本文档规约密码接口(Crypto Interface, CRYIF)模块的功能、API 与配置。CRYIF 是密码栈中的硬件抽象层(HAL)模块,位于密码服务管理器(CSM)与密码驱动(CRYPTO)之间。
CRYIF 的主要功能:
| 缩略语 | 描述 |
|---|---|
| API | Application Programming Interface(应用程序编程接口) |
| BSW | Basic Software(基础软件) |
| CDO | Crypto Driver Object(密码驱动对象) |
| CRYIF | Crypto Interface(密码接口) |
| CRYPTO | Crypto Driver(密码驱动) |
| CSM | Crypto Service Manager(密码服务管理器) |
| DET | Default Error Tracer(默认错误追踪器) |
| ECU | Electronic Control Unit(电子控制单元) |
| HSM | Hardware Security Module(硬件安全模块) |
| OS | Operating System(操作系统) |
本节定义贯穿全文使用的核心术语:
AUTOSAR_SRS_CryptoStack — 密码栈需求;AUTOSAR_SRS_BSWGeneral — 基础软件通用需求;AUTOSAR_SWS_CryptoDriver — 密码驱动规范;AUTOSAR_SWS_CryptoServiceManager — 密码服务管理器规范;AUTOSAR_SWS_DefaultErrorTracer — 默认错误追踪器规范。本 SWS 仅适用于 CRYIF 模块,不涵盖 CSM、CRYPTO 与 KeyM 的完整规范。
CRYIF 适用于所有汽车域。
CryIf.c # 主源文件
CryIf_Cfg.c # Link-time 配置
头文件结构遵循 SPAL 通用结构。
CRYIF 满足的 RS_BRF_NNNNN 需求:
| 需求 | 描述 |
|---|---|
| RS_BRF_01000 | AUTOSAR 架构应将 BSW 组织为硬件独立与硬件依赖两层 |
| RS_BRF_01016 | AUTOSAR 应在软件层内提供模块化设计 |
| RS_BRF_01456 | AUTOSAR 服务应提供系统范围的密码功能 |
| RS_BRF_02032 | AUTOSAR 安全应允许密码原语集成到密码服务管理器 |
CRYIF 自身的 SWS_CryIf_NNNNN 规范项 ID 约 70+ 条(详细列表见原文第 6 章追溯表)。
| 错误码 | 值 | 含义 |
|---|---|---|
CRYIF_E_UNINIT | 0x00 | CRYIF 未初始化 |
CRYIF_E_INV_DRIVER_ID | 0x01 | 无效的驱动 ID |
CRYIF_E_INV_CHANNEL_ID | 0x02 | 无效的通道 ID |
CRYIF_E_INV_KEY_ID | 0x03 | 无效的密钥 ID |
CRYIF_E_INV_KEY_ELEMENT_ID | 0x04 | 无效的密钥元素 ID |
CRYIF_E_INV_POINTER | 0x05 | 无效的指针 |
CRYIF_E_PARAM_HANDLE | 0x06 | 无效的句柄 |
CRYIF_E_PARAM_VALUE | 0x07 | 无效的参数值 |
CRYIF_E_JOB_CANCELLED | 0x08 | 作业被取消 |
无(CRYIF 不在运行时产生错误)。
无。
无。
无。
Std_ReturnType(来自 Std_Types.h)Std_VersionInfoType(来自 Std_Types.h)Crypto_JobType、Crypto_PrimitiveInfoType、Crypto_OperationModeType(来自 Crypto_GeneralTypes.h)Crypto_KeyElementIdType、Crypto_KeyFormat、Crypto_KeyState(来自 Crypto_KeyManagementTypes.h)typedef uint16 CryIf_ChannelIdType;
typedef uint16 CryIf_KeyIdType;
typedef uint32 CryIf_CryptoKeyElementIdType;
| API | 签名 | 功能 |
|---|---|---|
CryIf_Init | void CryIf_Init(const CryIf_ConfigType* ConfigPtr) | 初始化 CRYIF |
CryIf_GetVersionInfo | void CryIf_GetVersionInfo(Std_VersionInfoType* VersionInfoPtr) | 获取版本信息 |
| API | 签名 | 功能 |
|---|---|---|
CryIf_ProcessJob | Std_ReturnType CryIf_ProcessJob(uint32 channelId, Crypto_JobType* job) | 处理作业 |
CryIf_GetJobType | ... | 获取作业类型 |
CryIf_GetNumberOfCryptoKeys | ... | 获取密钥数量 |
CryIf_GetCryptoKeyElementIdsLength | ... | 获取密钥元素 ID 长度 |
CryIf_GetCryptoKeyElementIds | ... | 获取密钥元素 ID 列表 |
CryIf_SetCryptoKeyElement | ... | 设置密钥元素 |
| API | 签名 | 功能 |
|---|---|---|
CryIf_CancelJob | Std_ReturnType CryIf_CancelJob(uint32 channelId, Crypto_JobType* job) | 取消作业 |
CryIf_CancelJobs | ... | 取消多个作业 |
| API | 签名 | 功能 |
|---|---|---|
CryIf_GetKeyElement | ... | 获取密钥元素 |
CryIf_SetKeyElement | ... | 设置密钥元素 |
CryIf_SetKey | ... | 设置密钥 |
CryIf_UpdateKey | ... | 更新密钥 |
CryIf_GenerateKey | ... | 生成密钥 |
CryIf_DeriveKey | ... | 派生密钥 |
CryIf_ExchangeKey | ... | 交换密钥 |
CryIf_WrapKey | ... | 包装密钥 |
CryIf_VerifyKey | ... | 验证密钥 |
CryIf_CertificateParse | ... | 解析证书 |
CryIf_CertificateVerify | ... | 验证证书 |
CryIf_GetCertElementIdsLength | ... | 获取证书元素 ID 长度 |
CryIf_GetCertElement | ... | 获取证书元素 |
CryIf_KeyElementCopy | ... | 复制密钥元素 |
CryIf_KeyCopy | ... | 复制密钥 |
共 15+ 密钥管理 API 函数。
void CryIf_CallbackNotification(Crypto_JobType* job, Crypto_ResultType result);
CRYIF 提供回调函数:
Det_ReportError() — 开发错误报告;Crypto_<vi>_<ai>_ProcessJob() — CRYPTO 驱动接口;Crypto_<vi>_<ai>_CancelJob() — 取消接口;Crypto_<vi>_<ai>_<KeyElement_*>() — 密钥元素接口;Crypto_<vi>_<ai>_<Key_*>() — 密钥管理接口。Dem_SetEventStatus() — 扩展生产错误报告(若支持)。序列图 9.1 描述 CRYIF 在同步作业处理中的角色:
CryIf_ProcessJob();Crypto_<vi>_<ai>_ProcessJob();序列图 9.2 描述异步作业处理(带回调);序列图 9.3 描述作业取消流程;序列图 9.4 描述密钥设置流程。
CRYIF 支持 PreCompile 变体。
| 参数 | 描述 |
|---|---|
| CryIfDevErrorDetect | 开发错误检测开关 |
| CryIfVersionInfoApi | CryIf_GetVersionInfo() API 开关 |
| CryIfEcucPartitionRef | ECU 分区引用 |
| 参数 | 描述 |
|---|---|
| CryIfNumberOfChannels | 虚拟通道数量 |
| CryIfNumberOfKeys | 密钥数量 |
| 参数 | 描述 |
|---|---|
| CryIfChannelId | 通道 ID |
| CryIfDriverRef | CRYPTO 驱动引用 |
| CryIfChannelRedirectionRef | 作业重定向目标引用(可选) |
| 参数 | 描述 |
|---|---|
| CryIfKeyId | 密钥 ID |
| CryIfKeyElementList | 密钥元素列表引用 |
| CryIfKeyCryptoDriverRef | CRYPTO 驱动引用 |
发布信息包括 CRYIF 模块版本、配置变体、支持的密码算法列表等。
校对轮次:L1 自动校对(2026-06-13)
CRYIF_E_UNINIT=0x00/INV_DRIVER_ID=0x01/INV_CHANNEL_ID=0x02/INV_KEY_ID=0x03/INV_KEY_ELEMENT_ID=0x04/INV_POINTER=0x05/PARAM_HANDLE=0x06/PARAM_VALUE=0x07/JOB_CANCELLED=0x08)完整翻译。