英飞凌HSM内核开发-CryIf模块

软件接口

在这里插入图片描述

这段文字是一份技术文档的一部分,描述了一个名为CRYIF的软件模块的功能描述。CRYIF是按照AUTOSAR标准设计的加密接口模块。下面是对这段文字的中文翻译:

功能描述

  • 将作业调度到配置的加密驱动程序

  • 调度密钥管理功能

  • 转发回调通知

  • 重定向输入和输出缓冲区到密钥元素

  • KeyElementCopyPartial API

  • 异步密钥管理作业的处理

  • KeyElementCopyPartial
    如果底层加密驱动程序不支持Crypto_KeyElementCopyPartial API,则CryIf将自行处理部分复制。即使cryIfKeyId和targetCryIfKeyId指向不同的加密驱动程序,CryIf的复制操作也会进行。
    首先,程序通过Crypto_KeyElementGet API获取两个密钥元素的内容。
    然后,通过将源密钥元素的请求部分复制到目标密钥元素的请求位置来进行部分复制。
    最后,通过Crypto_KeyElementSet API将构建的密钥元素写入加密驱动程序。
    如果目标偏移量大于目标密钥元素的长度,则在中间应用零填充。

初始化

在调用CRYIF模块的其他任何功能之前,必须由BSWM调用初始化函数CryIf_Init()。
对于RAM变量的手动空初始化,CRYIF提供了函数CryIf_InitMemory(),该函数可以在CryIf_Init()之前调用。

状态

CRYIF没有状态机。

主要功能

CRYIF不提供主函数。所有调用都是同步的。

错误处理

默认情况下,如果启用了开发错误报告(即预编译参数CRYIF_DEV_ERROR_REPORT==STD_ON),则使用服务Det_ReportError()向DET报告开发错误。
如果使用另一个模块进行开发错误报告,则集成商可以配置报告错误的函数原型,但它必须具有与服务Det_ReportError()相同的声明。

服务 ID服务
0x00CryIf_Init
0x01CryIf_GetVersionInfo
0x02CryIf_ProcessJob
0x03CryIf_CancelJob
0x04CryIf_KeyElementSet
0x05CryIf_KeySetValid
0x06CryIf_KeyElementGet
0x0FCryIf_KeyElementCopy
0x10CryIf_KeyCopy
0x07CryIf_RandomSeed
0x08CryIf_KeyGenerate
0x09CryIf_KeyDerive
0x0ACryIf_KeyExchangeCalcPubVal
0x0BCryIf_KeyExchangeCalcSecret
0x0CCryIf_CertificateParse
0x11CryIf_CertificateVerify
0x12CryIf_KeyElementCopyPartial
错误代码描述
0x00API服务在使用前未初始化模块
0x01CRYIF模块初始化失败
0x02API请求调用时使用了无效参数(空指针)
0x03API请求调用时使用了无效参数(超出范围)
0x04API请求调用时使用了无效参数(无效值)
0x11模块已经初始化时调用了CryIf_Init()

集成

静态文件:

文件名描述
CryIf.c包含CRYIF源代码的文件。
CryIf.hCRYIF的头文件。
CryIf_Cbk.hCRYIF的回调头文件。

动态文件:

文件名描述
CryIf_Cfg.c配置源文件。
CryIf_Cfg.h配置头文件。

Services provided by CRYIF

API函数原型简单描述
void CryIf_InitMemory(void)电源上电内存初始化。
void CryIf_Init(void)初始化函数。
void CryIf_GetVersionInfo(Std_VersionInfoType *versioninfo)返回版本信息。
Std_ReturnType CryIf_ProcessJob(uint32 channelId, Crypto_JobType *job)处理接收到的作业。
Std_ReturnType CryIf_CancelJob(uint32 channelId, Crypto_JobType *job)取消接收到的作业。
Std_ReturnType CryIf_KeyElementSet(uint32 cryIfKeyId, uint32 keyElementId, const uint8 *keyPtr, uint32 keyLength)设置密钥元素。
Std_ReturnType CryIf_KeySetValid(uint32 cryIfKeyId)将密钥设置为有效。
Std_ReturnType CryIf_KeyElementGet(uint32 cryIfKeyId, uint32 keyElementId, uint8 *resultPtr, uint32 *resultLengthPtr)导出密钥元素。
Std_ReturnType CryIf_KeyElementCopy(uint32 cryIfKeyId, uint32 keyElementId, uint32 targetCryIfKeyId, uint32 targetKeyElementId)复制密钥元素。
Std_ReturnType CryIf_KeyElementCopyPartial(uint32 cryIfKeyId, uint32 keyElementId, uint32 keyElementSourceOffset, uint32 keyElementTargetOffset, uint32 keyElementCopyLength, uint32 targetCryIfKeyId, uint32 targetKeyElementId)部分复制密钥元素。
Std_ReturnType CryIf_KeyCopy(uint32 cryIfKeyId, uint32 targetCryIfKeyId)复制密钥。
Std_ReturnType CryIf_RandomSeed(uint32 cryIfKeyId, const uint8 *seedPtr, uint32 seedLength)初始化种子。
Std_ReturnType CryIf_KeyGenerate(uint32 cryIfKeyId)生成密钥。
Std_ReturnType CryIf_KeyDerive(uint32 cryIfKeyId, uint32 targetCryIfKeyId)派生密钥。
Std_ReturnType CryIf_KeyExchangeCalcPubVal(uint32 cryIfKeyId, uint8 *publicValuePtr, uint32 *publicValueLengthPtr)计算公钥值。
Std_ReturnType CryIf_KeyExchangeCalcSecret(uint32 cryIfKeyId, const uint8 *partnerPublicValuePtr, uint32 partnerPublicValueLength)计算秘密值。
Std_ReturnType CryIf_CertificateParse(uint32 cryIfKeyId)解析存储的证书。
Std_ReturnType CryIf_CertificateVerify(uint32 cryIfKeyId, uint32 verifyCryIfKeyId, Crypto_VerifyResultType *verifyPtr)验证证书。

Services used by CRYIF

Det_ReportError

Callback Functions

void CryIf_CallbackNotification ( Crypto_JobType *job, Std_ReturnType result )

  • 16
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

美好生活丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值