嵌入式系统与单片机|技术阅读
登录|注册

您现在的位置是:嵌入式系统与单片机 > 技术阅读 > [Classic AUTOSAR学习] 简单理解Crypto Stack的配置以及执行流程

[Classic AUTOSAR学习] 简单理解Crypto Stack的配置以及执行流程

一般来说,提供Crypto模块的时候应当有一个预配置,这个预配置代表了Crypto模块的能力,能够提供什么样的加密功能。如果Crypto不能提供某种加密方式的处理,那么Csm里也不可能配置的出来。

从项目角度来说,通常的配置方式是从Csm开始,然后配置CryIf,再然后配置Crypto。

Csm的配置基本概念可参考


从Csm开始,用户先选择好使用哪种加密方式以及对应的key。之后用户可以定义Job以及队列。

在CryIf中,用户需要定义Csm需要用到的功能以及Crypro能够提供的功能之间的关联关系。

在Crypto中,用户调整或者扩展预配置的算法以及密钥。

以MAC为例

我们来看一个消息认证码的例子:用户创建了一个使用MAC算法的job,选择了对应的key,并且选择了同步(或者异步)处理方式。

相关API

如果是启用了RTE port,那么RTE会生成对应的C/S接口CsmMacGenerate_{Primitive}(),这个接口有一个Port Defined Argument(Crypto_OperationModeType),其值为CRYPTO_OPERATIONMODE_SINGLECALL。因此,SWC通过调用这个接口,将所有数据传进去,请求执行MAC计算。

如果是上图所示,没有启用RTE port,那么对应的模块只需要直接调用Csm_MacGenerate(), 传入对应的Job和模式,以及数据。

我们在Primitive里配置了同步模式,所以job会以同步方式被处理。Csm将MAC请求通过CryIf_ProcessJob()接口分配给CryIf,然后CryIf通过Crypto_ProcessJob()接口将请求传递给Crypto模块,Crypto模块根据job参数中的Primitive信息,最终执行MAC计算。计算结果最终会放入调用Csm接口的macPtr输入输出参数。