很多项目都开始使用SecOC来完成对消息的加密传输,其基本概念可以阅读:
今天,我们来看看应用如何监控SecOC对于消息接收时的验证结果。
在AUTOSAR规范中,定义了两类服务,可供开发人员选择,将消息的验证结果进行上传:也即S/R接口以及C/S接口。
其中,20-11版本规范以前,仅定义了S/R接口,20-11版本开始,加入了C/S接口,需要开发人员在设计阶段决定好,集成时选择正确的使用版本,保证其类型定义保持一致。
类型定义不一样的在于其上报状态时使用的数据类型SecOC_VerificationStatusType,ASR4.3版本的verificationStatus定义只有三个值:
分别代表验证成功,验证失败,新鲜值验证失败。
而在20-11版本规范中,其定义值就多了几个,
除了4.3已有的之外,新增超过最大验证次数,未作验证,验证失败但强制覆写结果。
无论是选用的S/R还是C/S,都需要对应地连接SecOC与上层SWC接口。(下方示例为S/R连接)
写入后同时触发事件,通知到SWC,SWC调用函数读取结果:
结构体中,除了上述解释过的验证状态,还有新鲜值ID和Data ID,分别对应于:
因此SWC就能知道获取的监控结果是和哪个消息相关,并且关联的新鲜值标识是多少,相应做后续操作。
当然,通常情况下,验证通过的结果并不需要上传,如果项目决定只关心错误结果,或者不关心某个特定的Pdu结果,那么就需要配置SecOCVerificationStatusPropagationMode
如果,项目不关心验证过程中每次的尝试结果,只关心最终的成功与否,那么就需要开启SecOCPropagateOnlyFinalVerificationStatus选项。