软件接口
这段文字是一份技术文档的一部分,描述了一个名为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 | 服务 |
---|---|
0x00 | CryIf_Init |
0x01 | CryIf_GetVersionInfo |
0x02 | CryIf_ProcessJob |
0x03 | CryIf_CancelJob |
0x04 | CryIf_KeyElementSet |
0x05 | CryIf_KeySetValid |
0x06 | CryIf_KeyElementGet |
0x0F | CryIf_KeyElementCopy |
0x10 | CryIf_KeyCopy |
0x07 | CryIf_RandomSeed |
0x08 | CryIf_KeyGenerate |
0x09 | CryIf_KeyDerive |
0x0A | CryIf_KeyExchangeCalcPubVal |
0x0B | CryIf_KeyExchangeCalcSecret |
0x0C | CryIf_CertificateParse |
0x11 | CryIf_CertificateVerify |
0x12 | CryIf_KeyElementCopyPartial |
错误代码 | 描述 |
---|---|
0x00 | API服务在使用前未初始化模块 |
0x01 | CRYIF模块初始化失败 |
0x02 | API请求调用时使用了无效参数(空指针) |
0x03 | API请求调用时使用了无效参数(超出范围) |
0x04 | API请求调用时使用了无效参数(无效值) |
0x11 | 模块已经初始化时调用了CryIf_Init() |
集成
静态文件:
文件名 | 描述 |
---|---|
CryIf.c | 包含CRYIF源代码的文件。 |
CryIf.h | CRYIF的头文件。 |
CryIf_Cbk.h | CRYIF的回调头文件。 |
动态文件:
文件名 | 描述 |
---|---|
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 )