CryIf 产品参考手册
缩写词注解
缩写词 |
英文全称 |
中文解释 |
HSM |
Hardware Security Module |
硬件安全模块 |
SHE |
Security Hardware Extension |
安全硬件扩展 |
SW |
Software |
软件加密算法 |
HW |
Hardware |
硬件加密算法 |
CDD |
Complex Device Driver |
复杂驱动 |
CSM |
Crypto Service Manager |
AUTOSAR 中的加密服务管理 模块 |
CRYIF |
Crypto Interface |
AUTOSAR 中的加密接口模块 |
1 简介
CryIf 模块位于底层密码解决方案(Crypto Driver 和基于 sw 的 CDD)和上层 服务层(CSM)之间。它表示到上层服务层的密码驱动程序服务的接口。CryIf 模块 提供了一个独特的接口来管理不同的密码 HW 和 SW 解决方案,如 HSM、SHE 或基于 SW 的 CDD。因此,基于 Crypto 接口维护的映射方案,Crypto 服务管理 模块可以利用多种底层的内部和外部加密 HW 以及 SW 解决方案。
图 1-1 AUTOSAR 加密栈
CryIf 模块的主要功能为:
1、接收 CSM 传输的数据并传输给 Crypto Driver。 2、接收 Crypto Driver 返回的信息并返回给 CSM。
1.1 参考资料
[1] AUTOSAR_SWS_CryptoInterface.pdf,R19-11
2 功能描述
2.1 基本功能
CryIf 位于 CSM 和 Crypto Driver 之间,是访问所有上层(BSW)密码操作的 唯一接口。密码接口也是密码驱动程序的唯一用户,并提供了一个独特的接口 来管理不同的密码硬件和软件解决方案。抽象层封装了不同的硬件和软件访问 机制,因此加密接口的实现独立于底层的加密驱动程序,可以在硬件或软件中 实现。它还保证了对加密服务的并发访问,使同时处理多个加密任务成为可 能。
除此之外,CryIf 支持多驱动,当需要支持多驱动时,打开 CryIfMulDriverSupport 开关,并填写不同驱动接口的前缀,即可根据接口名使 用不同的驱动。
3 源文件描述
表 3-1 CryIf 文件描述
文件 |
说明 |
CryIf.c |
CryIf 模块源文件,包含了 API 函数的实现。 |
CryIf.h |
CryIf 模块头文件,包含了 API 函数的扩展声明并定义了配置的 数据结构。 |
CryIf_Cfg.h |
定义 CryIf 模块预编译时用到的配置参数。 |
CryIf_cfg.c |
CryIf 模块配置生成文件。 |
4 API 接口
4.1 类型定义
4.1.1 CryIf_ConfigType 类型定义
名称 |
CryIf_ConfigType |
类型 |
Structure |
范围 |
无 |
描述 |
CryIf 模块配置数据结构 |
4.2 输入函数描述
输入模块 |
API |
Det |
Det_ReportError |
CSM |
Csm_CallbackNotification |
Crypto Driver |
pto_<vi>_<ai>_KeyExchangeCalcPubVal()
pto_<vi>_<ai>_KeyExchangeCalcSecret() |
4.3 静态接口函数定义
CryIf_Init
函数名称: |
CryIf_Init |
||
函数原型: |
|
||
服务编号: |
0x00 |
||
同步/异步: |
同步 |
||
否可重入: |
否 |
||
输入参数: |
configPtr |
值域: |
无 |
输出参数: |
无 |
||
输出参数: |
无 |
||
返回值: |
无 |
||
功能概述: |
初始化 CRYIF 模块 |
CryIf_GetVersionInfo
函数名称: |
CryIf_GetVersionInfo |
函数原型: |
FUNC(void, CRYIF_CODE) CryIf_GetVersionInfo( |
DATA)versioninfo
|
||||
服务编号: |
0x01 |
|||
同步/异步: |
同步 |
|||
否可重入: |
是 |
|||
输入参数: |
versioninfo |
值域: |
无 |
|
输出参数: |
无 |
|||
输出参数: |
无 |
|||
返回值: |
无 |
|||
功能概述: |
获取版本信息 |
CryIf_ProcessJob
函数名称: |
ProcessJob |
||
函数原型: |
FUNC(Std_R eturnType,
rocessJob(
channelId,
2VAR(Crypt o_JobType, AUTOMATIC,
L_DATA)job
|
||
服务编号: |
0x03 |
||
同步/异步: |
取决于配置 |
||
否可重入: |
是 |
||
输入参数: |
channelId |
域: |
CRYIF_CHANNELS_MAX_CONFIGURED |
输出参数: |
job |
||
输出参数: |
无 |
||
返回值: |
:请求成功
:请求失败 |
|
||
功能概述: |
将接收到的 Job 分派给配置的加密驱动程序对象 |
CryIf_CancelJob
函数名称: |
CryIf_CancelJob |
||
函数原型: |
YIF_APPL_DATA)job
|
||
服务编号: |
0x0e |
||
同步/异步: |
同步 |
||
否可重入: |
是 |
||
输入参数: |
channelId |
值域: |
CRYIF_CHANNELS_MAX_ CONFIGURED |
输出参数: |
job |
|
输出参数: |
无 |
|
返回值: |
E_OK:请求成功,作业已被删除 E_NOT_OK:请求失败,无法删除作业 |
|
功能概述: |
将 Job 取消函数分派给配置的加密驱动程序对象 |
CryIf_KeyElementSet
函数名称: |
_KeyElementSet |
||
函数原型: |
KeyElementSet(
L_DATA)keyPtr,
|
||
服务编号: |
0x04 |
||
同步/异步: |
同步 |
||
否可重入: |
否 |
||
输入参数: |
cryIfKeyId |
值域: |
CRYIF_KEY_MAX_ CONFIGURED |
keyElementId |
CRYIF_KEYELEMENT_MAX_ CONFIGURED |
||
keyPtr |
无 |
||
keyLength |
无 |
||
输出参数: |
无 |
||
输出参数: |
无 |
||
返回值: |
E_OK:请求成功 |
E_NOT_OK:请求失败 |
||
功能概述: |
将把 set key element 函数分配给配置好的 crypto driver 对象 |
CryIf_KeySetValid
函数名称: |
CryIf_KeySetValid |
||
函数原型: |
ryIf_KeySetValid(
|
||
服务编号: |
0x05 |
||
同步/异步: |
同步 |
||
否可重入: |
否 |
||
输入参数: |
cryIfKeyId |
值域: |
CRYIF_KEY_MAX_ CONFIGURED |
输出参数: |
无 |
||
输出参数: |
无 |
||
返回值: |
_NOT_OK:请求失败
|
||
功能概述: |
设置的密钥有效函 数分派给配置的密 码驱动程序对象。 |
CryIf_KeyElementGet
函数名称: |
CryIf_KeyElementGet |
函数原型: |
FUNC(Std_ReturnType, CRYIF_CODE) CryIf_KeyElementGet( uint32 cryIfKeyId, uint32 keyElementId, |
CRYIF_APPL_DATA)
|
||||
服务编号: |
0x06 |
|||
同步/异步: |
同步 |
|||
否可重入: |
是 |
|||
输入参数: |
cryIfKeyId |
值域: |
CRYIF_KEY_MAX_ CONFIGURED |
|
keyElementId |
CRYIF_KEYELEMENT_MAX_
|
|||
输出参数: |
resultPtr |
|||
输出参数: |
resultLengthPtr |
|||
返回值: |
OK:请求加密失败 E_BUSY:请求失败 ,密码驱动对象忙
_E_KEY_NOT_AVAIL ABLE:请求失败, 被请求的密钥元素
_E_KEY_READ_FAIL :请求失败,因为
O_E_SMALL_BUFFER :提供的缓冲区太 小,无法存储结果
_E_KEY_EMPTY:由 于未初始化源密钥 元素而导致请求失
|
|||
功能概述: |
数分派给已配置的 密码驱动程序对象 |
CryIf_KeyElementCopy
函数名称: |
CryIf_KeyElementCopy |
函数原型: |
FUNC(Std_ReturnType, CRYIF_CODE) |
etCryIfKeyId,
tKeyElementId
|
||||
服务编号: |
0x0f |
|||
步/异步: |
同步 |
|||
否可重入: |
是 |
|||
输入参数: |
cryIfKeyId |
域: |
CRYIF_KEY_MAX_CONFIGURED |
|
keyElementId |
CRYIF_KEYELEMENT_MAX_ CONFIGURED |
|||
getCryIfKeyId |
CRYIF_KEY_MAX_CONFIGURED |
|||
tKeyElementId |
CRYIF_KEYELEMENT_MAX_ CONFIGURED |
|||
输 入 输 出 参 数: |
无 |
|||
输出参数: |
无 |
|||
返回值: |
_OK:请求失败
YPTO_E_BUSY: 请求失败,密 码驱动对象忙
TO_E_KEY_NOT_ AVAILABLE:请 求失败,请求 的密钥元素不
_E_KEY_READ_F AIL:请求失败 ,不允许提取
PTO_E_KEY_WRI TE_FAIL:请求 失败,不允许 写入密钥元素
YPTO_E_KEY_SI ZE_MISMATCH: 请求失败,key
素大小不兼容 E_KEY_EMPTY: 由于未初始化 源密钥元素而 导致请求失败 |
功能概述: |
将一个 key 元素从一个 key 复制到一个目标 key |
CryIf_KeyElementCopyPartial
函数名称: |
lementCopyPartial |
||
函数原型: |
ementCopyPartial(
targetCryIfKeyId,
argetKeyElementId
|
||
服务编号: |
0x12 |
||
步/异步: |
同步 |
||
否可重入: |
是 |
||
输入参数: |
cryIfKeyId |
值域: |
CRYIF_KEY_MAX_ CONFIGURED |
keyElementId |
CRYIF_KEYELEMENT_MAX_ CONFIGURED |
||
ementSourceOffset |
无 |
||
ementTargetOffset |
无 |
||
ElementCopyLength |
无 |
||
targetCryIfKeyId |
CRYIF_KEY_MAX_ CONFIGURED |
||
argetKeyElementId |
CRYIF_KEYELEMENT_MAX_ |
CONFIGURED |
|||
输出参数: |
无 |
||
输出参数: |
无 |
||
返回值: |
_NOT_OK:请求失败
_E_BUSY:请求失败 ,密码驱动对象忙
_E_KEY_NOT_AVAILA BLE:请求失败,请 求的密钥元素不可
Y_READ_FAIL:请求 失败,不允许提取
PTO_E_KEY_WRITE_F AIL:请求失败,不 允许写入密钥元素 E_KEY_SIZE_MISMAT CH:请求失败,key
E_KEY_EMPTY:由于 未初始化源密钥元 素而导致请求失败 |
||
功能概述: |
源键元素的一部分 复制到目标键元素
|
CryIf_KeyCopy
函数名称: |
CryIf_KeyCopy |
||
函数原型: |
|
||
服务编号: |
0x10 |
||
同步/异步: |
同步 |
||
否可重入: |
是 |
||
输入参数: |
cryIfKeyId |
值域: |
CRYIF_KEY_MAX_ |
CONFIGURED |
||||
targetCryIfKeyId |
CRYIF_KEY_MAX_ CONFIGURED |
|||
输出参数: |
无 |
|||
输出参数: |
无 |
|||
返回值: |
NOT_OK:请求失败 E_BUSY:请求失败 ,密码驱动对象忙
_E_KEY_NOT_AVAIL ABLE:请求失败, 请求的密钥元素不
_READ_FAIL:请求 失败,不允许提取
O_E_KEY_WRITE_FA IL:请求失败,不 允许写入密钥元素 KEY_SIZE_MISMATC H:请求失败,key
_E_KEY_EMPTY:由 于未初始化源密钥 元素而导致请求失
|
|||
功能概述: |
复制到目标密钥中 |
CryIf_RandomSeed
函数名称: |
CryIf_RandomSeed |
函数原型: |
Std_ReturnType CryIf_RandomSeed( uint32 cryIfKeyId, const uint8* seedPtr, uint32 seedLength) |
服务编号: |
0x07 |
步/异步: |
同步或异步,取决于配置 |
否可重入: |
是 |
入参数: |
cryIfKeyId |
值域: |
CRYIF_KEY_MAX_ CONFIGURED |
|
子提供数据的指
|
无 |
|||
长度,以字节为
|
uint32 |
|||
输 入 输 出 参 数: |
无 |
|||
出参数: |
无 |
|||
返回值: |
OT_OK:请求失败 |
|||
能概述: |
数将随机种子函 数分配给配置好 的密码驱动对象 |
CryIf_KeyGenerate
函数名称: |
CryIf_KeyGenerate |
||
函数原型: |
ryIf_KeyGenerate(
|
||
服务编号: |
0x07 |
||
同步/异步: |
取决于配置 |
||
否可重入: |
是 |
||
输入参数: |
cryIfKeyId |
值域: |
CRYIF_KEY_MAX_ |
CONFIGURED |
||||
输出参数: |
无 |
|||
输出参数: |
无 |
|||
返回值: |
NOT_OK:请求失败 |
|||
功能概述: |
子函数分配给配置 好的密码驱动对象 |
CryIf_KeyDerive
函数名称: |
CryIf_KeyDerive |
||
函数原型: |
|
||
服务编号: |
0x08 |
||
同步/异步: |
取决于配置 |
||
否可重入: |
是 |
||
输入参数: |
cryIfKeyId |
值域: |
CRYIF_KEY_MAX_ CONFIGURED |
targetCryIfKeyId |
CRYIF_KEY_MAX_ CONFIGURED |
||
输出参数: |
无 |
||
输出参数: |
无 |
||
返回值: |
_NOT_OK:请求失败
O_E_KEY_EMPTY:由 于未初始化源密钥 元素而导致请求失
|
功能概述: |
将密钥派生函数分配给已配置的密码驱动程序对象 |
CryIf_KeyExchangeCalcPubVal
函数名称: |
xchangeCalcPubVal |
||
函数原型: |
changeCalcPubVal(
A)publicValuePtr,
YIF_APPL_DATA)pub licValueLengthPtr
|
||
服务编号: |
0x0a |
||
同步/异步: |
同步 |
||
否可重入: |
是 |
||
输入参数: |
cryIfKeyId |
值域: |
CRYIF_KEY_MAX_ CONFIGURED |
输出参数: |
licValueLengthPtr |
||
输出参数: |
publicValuePtr |
||
返回值: |
_NOT_OK:请求失败
_E_BUSY:请求失败 ,密码驱动对象忙
PTO_E_SMALL_BUFFE R:提供的缓冲区太 小,无法存储结果 EMPTY:请求失败, 因为没有初始化源
|
||
功能概述: |
密钥交换公共值计 算函数分配给配置 好的密码驱动对象 |
CryIf_KeyExchangeCalcSecret
函数名称: |
eyExchangeCalcSecret |
||
函数原型: |
yExchangeCalcSecret(
nerPublicValueLength
|
||
服务编号: |
0x0b |
||
同步/异步: |
同步 |
||
否可重入: |
是 |
||
输入参数: |
cryIfKeyId |
值域: |
CRYIF_KEY_MAX_ CONFIGURED |
artnerPublicValuePtr |
无 |
||
nerPublicValueLength |
无 |
||
输出参数: |
无 |
||
输出参数: |
无 |
||
返回值: |
L_BUFFER:提供的缓冲 区太小,无法存储结果
_E_KEY_EMPTY:请求失 败,因为没有初始化源
|
||
功能概述: |
享秘密计算函数分配给 配置好的密码驱动对象 |
CryIf_CallbackNotification
函数名称: |
lbackNotification |
||
函数原型: |
backNotification(
|
||
服务编号: |
0x0d |
||
同步/异步: |
同步 |
||
否可重入: |
否 |
||
输入参数: |
job |
值域: |
无 |
result |
无 |
||
输出参数: |
无 |
||
输出参数: |
无 |
||
返回值: |
无 |
||
功能概述: |
结果的请求的完成 |
4.4 可配置函数定义
无。
5 配置
CryIfGeneralConfig
UI 名称 |
描述 |
|||
|
取值范围 |
TRUE/FALSE |
默认取值 |
FALSE |
参数描述 |
发错误检测和通知。
检测和通知被禁用。 |
|||
依赖关系 |
无 |
|||
|
取值范围 |
TRUE/FALSE |
默认取值 |
FALSE |
参数描述 |
rsionInfo()不可用。 |
|||
依赖关系 |
无 |
CryIfChannelConfig
UI 名称 |
描述 |
|||
fChannelId |
取值范围 |
0 .. 4294967295 |
默认取值 |
无 |
参数描述 |
接到哪个加密通道。 |
|||
依赖关系 |
创建后自动生成 ID |
|||
|
取值范围 |
无 |
默认取值 |
无 |
参数描述 |
定密码通道连接到哪 个密码驱动程序对象 |
|||
依赖关系 |
依赖于 Crypto Driver 中配置的 Channel |
CryIfKeyConfig
UI 名称 |
描述 |
|||
CryIfKeyId |
取值范围 |
0 .. 4294967295 |
默认取值 |
无 |
参数描述 |
CryIfkey 的标识符。 指定 CSM 密钥映射到哪个 CryIf 密钥。 |
|||
依赖关系 |
创建后自动生成 ID |
|||
ryIfKeyRef |
取值范围 |
无 |
默认取值 |
无 |
参数描述 |
密码驱动程序密钥。
加密驱动程序密钥。 |
|||
依赖关系 |
依赖于 Crypto Driver 中配置的 Key |